Mercurial > hg > sonic-visualiser
comparison main/OSCHandler.cpp @ 2441:3612bfc24950 spectrogram-export
More comprehensive debug output
author | Chris Cannam |
---|---|
date | Wed, 08 Jan 2020 15:40:58 +0000 |
parents | d811380516f6 |
children | b3330c31ea0e |
comparison
equal
deleted
inserted
replaced
2440:d811380516f6 | 2441:3612bfc24950 |
---|---|
31 #include "widgets/AudioDial.h" | 31 #include "widgets/AudioDial.h" |
32 | 32 |
33 #include <bqaudioio/SystemPlaybackTarget.h> | 33 #include <bqaudioio/SystemPlaybackTarget.h> |
34 | 34 |
35 #include <QFileInfo> | 35 #include <QFileInfo> |
36 #include <QTime> | |
37 #include <QElapsedTimer> | |
38 | |
39 #define NOW (QTime::currentTime().toString(Qt::ISODateWithMs)) | |
36 | 40 |
37 void | 41 void |
38 MainWindow::handleOSCMessage(const OSCMessage &message) | 42 MainWindow::handleOSCMessage(const OSCMessage &message) |
39 { | 43 { |
40 SVDEBUG << "OSCHandler: method = \"" | 44 QElapsedTimer timer; |
41 << message.getMethod() << "\"" << endl; | 45 timer.start(); |
46 | |
47 SVDEBUG << "OSCHandler at " << NOW << ": handling message: " | |
48 << message.toString() << endl; | |
42 | 49 |
43 if (message.getMethod() == "open") { | 50 if (message.getMethod() == "open") { |
44 | 51 |
45 if (message.getArgCount() == 1 && | 52 if (message.getArgCount() == 1 && |
46 message.getArg(0).canConvert(QVariant::String)) { | 53 message.getArg(0).canConvert(QVariant::String)) { |
47 QString path = message.getArg(0).toString(); | 54 QString path = message.getArg(0).toString(); |
48 if (open(path, ReplaceMainModel) != FileOpenSucceeded) { | 55 if (open(path, ReplaceMainModel) == FileOpenSucceeded) { |
49 cerr << "OSCHandler: File open failed for path \"" | 56 SVDEBUG << "OSCHandler: Opened path \"" |
50 << path << "\"" << endl; | 57 << path << "\"" << endl; |
58 } else { | |
59 SVCERR << "OSCHandler: File open failed for path \"" | |
60 << path << "\"" << endl; | |
51 } | 61 } |
52 //!!! we really need to spin here and not return until the | 62 //!!! we really need to spin here and not return until the |
53 // file has been completely decoded... | 63 // file has been completely decoded... |
54 } | 64 } |
55 | 65 |
56 } else if (message.getMethod() == "openadditional") { | 66 } else if (message.getMethod() == "openadditional") { |
57 | 67 |
58 if (message.getArgCount() == 1 && | 68 if (message.getArgCount() == 1 && |
59 message.getArg(0).canConvert(QVariant::String)) { | 69 message.getArg(0).canConvert(QVariant::String)) { |
60 QString path = message.getArg(0).toString(); | 70 QString path = message.getArg(0).toString(); |
61 if (open(path, CreateAdditionalModel) != FileOpenSucceeded) { | 71 if (open(path, CreateAdditionalModel) == FileOpenSucceeded) { |
62 cerr << "OSCHandler: File open failed for path \"" | 72 SVDEBUG << "OSCHandler: Opened additional path \"" |
73 << path << "\"" << endl; | |
74 } else { | |
75 SVCERR << "OSCHandler: File open failed for path \"" | |
63 << path << "\"" << endl; | 76 << path << "\"" << endl; |
64 } | 77 } |
65 } | 78 } |
66 | 79 |
67 } else if (message.getMethod() == "recent" || | 80 } else if (message.getMethod() == "recent" || |
73 message.getArg(0).canConvert(QVariant::Int)) { | 86 message.getArg(0).canConvert(QVariant::Int)) { |
74 n = message.getArg(0).toInt() - 1; | 87 n = message.getArg(0).toInt() - 1; |
75 } | 88 } |
76 std::vector<QString> recent = m_recentFiles.getRecent(); | 89 std::vector<QString> recent = m_recentFiles.getRecent(); |
77 if (n >= 0 && n < int(recent.size())) { | 90 if (n >= 0 && n < int(recent.size())) { |
78 if (open(recent[n], ReplaceMainModel) != FileOpenSucceeded) { | 91 QString path = recent[n]; |
79 cerr << "OSCHandler: File open failed for path \"" | 92 if (open(path, ReplaceMainModel) == FileOpenSucceeded) { |
80 << recent[n] << "\"" << endl; | 93 SVDEBUG << "OSCHandler: Opened recent path \"" |
94 << path << "\"" << endl; | |
95 } else { | |
96 SVCERR << "OSCHandler: File open failed for path \"" | |
97 << path << "\"" << endl; | |
81 } | 98 } |
82 } | 99 } |
83 | 100 |
84 } else if (message.getMethod() == "save") { | 101 } else if (message.getMethod() == "save") { |
85 | 102 |
86 QString path; | 103 QString path; |
87 if (message.getArgCount() == 1 && | 104 if (message.getArgCount() == 1 && |
88 message.getArg(0).canConvert(QVariant::String)) { | 105 message.getArg(0).canConvert(QVariant::String)) { |
89 path = message.getArg(0).toString(); | 106 path = message.getArg(0).toString(); |
90 if (QFileInfo(path).exists()) { | 107 if (QFileInfo(path).exists()) { |
91 SVDEBUG << "OSCHandler: Refusing to overwrite existing file in save" << endl; | 108 SVCERR << "OSCHandler: Refusing to overwrite existing file in save" << endl; |
109 } else if (saveSessionFile(path)) { | |
110 SVDEBUG << "OSCHandler: Saved session to path \"" | |
111 << path << "\"" << endl; | |
92 } else { | 112 } else { |
93 saveSessionFile(path); | 113 SVCERR << "OSCHandler: Save failed to path \"" |
114 << path << "\"" << endl; | |
94 } | 115 } |
95 } | 116 } |
96 | 117 |
97 } else if (message.getMethod() == "export") { | 118 } else if (message.getMethod() == "export") { |
98 | 119 |
100 if (getMainModel()) { | 121 if (getMainModel()) { |
101 if (message.getArgCount() == 1 && | 122 if (message.getArgCount() == 1 && |
102 message.getArg(0).canConvert(QVariant::String)) { | 123 message.getArg(0).canConvert(QVariant::String)) { |
103 path = message.getArg(0).toString(); | 124 path = message.getArg(0).toString(); |
104 if (QFileInfo(path).exists()) { | 125 if (QFileInfo(path).exists()) { |
105 SVDEBUG << "OSCHandler: Refusing to overwrite existing file in export" << endl; | 126 SVCERR << "OSCHandler: Refusing to overwrite existing file in export" << endl; |
106 } else { | 127 } else { |
107 WavFileWriter writer(path, | 128 WavFileWriter writer(path, |
108 getMainModel()->getSampleRate(), | 129 getMainModel()->getSampleRate(), |
109 getMainModel()->getChannelCount(), | 130 getMainModel()->getChannelCount(), |
110 WavFileWriter::WriteToTemporary); | 131 WavFileWriter::WriteToTemporary); |
111 MultiSelection ms = m_viewManager->getSelection(); | 132 MultiSelection ms = m_viewManager->getSelection(); |
112 if (!ms.getSelections().empty()) { | 133 if (writer.writeModel |
113 //!!! todo: update WavFileWriter! | 134 (getMainModel().get(), |
114 writer.writeModel(getMainModel().get(), &ms); | 135 ms.getSelections().empty() ? nullptr : &ms)) { |
136 SVDEBUG << "OSCHandler: Exported audio to path \"" | |
137 << path << "\"" << endl; | |
115 } else { | 138 } else { |
116 writer.writeModel(getMainModel().get()); | 139 SVCERR << "OSCHandler: Export failed to path \"" |
140 << path << "\"" << endl; | |
117 } | 141 } |
118 } | 142 } |
119 } | 143 } |
120 } | 144 } |
121 | 145 |
211 if (message.getArgCount() == 1) { | 235 if (message.getArgCount() == 1) { |
212 | 236 |
213 if (message.getArg(0).canConvert(QVariant::String) && | 237 if (message.getArg(0).canConvert(QVariant::String) && |
214 message.getArg(0).toString() == "similar") { | 238 message.getArg(0).toString() == "similar") { |
215 | 239 |
240 SVDEBUG << "OSCHandler: Calling ffwdSimilar" << endl; | |
216 ffwdSimilar(); | 241 ffwdSimilar(); |
217 } | 242 } |
218 } else { | 243 } else { |
219 | 244 |
245 SVDEBUG << "OSCHandler: Calling ffwd" << endl; | |
220 ffwd(); | 246 ffwd(); |
221 } | 247 } |
222 | 248 |
223 } else if (message.getMethod() == "rewind") { | 249 } else if (message.getMethod() == "rewind") { |
224 | 250 |
225 if (message.getArgCount() == 1) { | 251 if (message.getArgCount() == 1) { |
226 | 252 |
227 if (message.getArg(0).canConvert(QVariant::String) && | 253 if (message.getArg(0).canConvert(QVariant::String) && |
228 message.getArg(0).toString() == "similar") { | 254 message.getArg(0).toString() == "similar") { |
229 | 255 |
256 SVDEBUG << "OSCHandler: Calling rewindSimilar" << endl; | |
230 rewindSimilar(); | 257 rewindSimilar(); |
231 } | 258 } |
232 } else { | 259 } else { |
233 | 260 |
261 SVDEBUG << "OSCHandler: Calling rewind" << endl; | |
234 rewind(); | 262 rewind(); |
235 } | 263 } |
236 | 264 |
237 } else if (message.getMethod() == "stop") { | 265 } else if (message.getMethod() == "stop") { |
238 | 266 |
239 if (m_playSource->isPlaying()) { | 267 if (m_playSource->isPlaying()) { |
240 // As with play, we want to use the MainWindow | 268 // As with play, we want to use the MainWindow function |
241 // function rather than call m_playSource directly | 269 // rather than call m_playSource directly because that way |
242 // because that way the audio driver suspend/resume | 270 // the audio driver suspend/resume etc is handled properly |
243 // etc is handled properly | 271 SVDEBUG << "OSCHandler: Calling stop" << endl; |
244 MainWindow::stop(); | 272 MainWindow::stop(); |
245 } | 273 } else { |
274 SVDEBUG << "OSCHandler: Not playing, doing nothing" << endl; | |
275 } | |
246 | 276 |
247 } else if (message.getMethod() == "loop") { | 277 } else if (message.getMethod() == "loop") { |
248 | 278 |
249 if (message.getArgCount() == 1 && | 279 if (message.getArgCount() == 1 && |
250 message.getArg(0).canConvert(QVariant::String)) { | 280 message.getArg(0).canConvert(QVariant::String)) { |
251 | 281 |
252 QString str = message.getArg(0).toString(); | 282 QString str = message.getArg(0).toString(); |
253 if (str == "on") { | 283 if (str == "on") { |
284 SVDEBUG << "OSCHandler: Enabling loop mode" << endl; | |
254 m_viewManager->setPlayLoopMode(true); | 285 m_viewManager->setPlayLoopMode(true); |
255 } else if (str == "off") { | 286 } else if (str == "off") { |
287 SVDEBUG << "OSCHandler: Disabling loop mode" << endl; | |
256 m_viewManager->setPlayLoopMode(false); | 288 m_viewManager->setPlayLoopMode(false); |
257 } | 289 } |
258 } | 290 } |
259 | 291 |
260 } else if (message.getMethod() == "solo") { | 292 } else if (message.getMethod() == "solo") { |
262 if (message.getArgCount() == 1 && | 294 if (message.getArgCount() == 1 && |
263 message.getArg(0).canConvert(QVariant::String)) { | 295 message.getArg(0).canConvert(QVariant::String)) { |
264 | 296 |
265 QString str = message.getArg(0).toString(); | 297 QString str = message.getArg(0).toString(); |
266 if (str == "on") { | 298 if (str == "on") { |
299 SVDEBUG << "OSCHandler: Enabling solo mode" << endl; | |
267 m_viewManager->setPlaySoloMode(true); | 300 m_viewManager->setPlaySoloMode(true); |
268 } else if (str == "off") { | 301 } else if (str == "off") { |
302 SVDEBUG << "OSCHandler: Disabling solo mode" << endl; | |
269 m_viewManager->setPlaySoloMode(false); | 303 m_viewManager->setPlaySoloMode(false); |
270 } | 304 } |
271 } | 305 } |
272 | 306 |
273 } else if (message.getMethod() == "select" || | 307 } else if (message.getMethod() == "select" || |
290 if (t0 < 0.0) t0 = 0.0; | 324 if (t0 < 0.0) t0 = 0.0; |
291 if (t1 < 0.0) t1 = 0.0; | 325 if (t1 < 0.0) t1 = 0.0; |
292 | 326 |
293 f0 = lrint(t0 * getMainModel()->getSampleRate()); | 327 f0 = lrint(t0 * getMainModel()->getSampleRate()); |
294 f1 = lrint(t1 * getMainModel()->getSampleRate()); | 328 f1 = lrint(t1 * getMainModel()->getSampleRate()); |
329 | |
330 SVDEBUG << "OSCHandler: Converted selection extents to frames " | |
331 << f0 << " and " << f1 << endl; | |
295 | 332 |
296 Pane *pane = m_paneStack->getCurrentPane(); | 333 Pane *pane = m_paneStack->getCurrentPane(); |
297 Layer *layer = nullptr; | 334 Layer *layer = nullptr; |
298 if (pane) layer = pane->getSelectedLayer(); | 335 if (pane) layer = pane->getSelectedLayer(); |
299 if (layer) { | 336 if (layer) { |
300 int resolution; | 337 int resolution; |
301 layer->snapToFeatureFrame(pane, f0, resolution, | 338 layer->snapToFeatureFrame(pane, f0, resolution, |
302 Layer::SnapLeft, -1); | 339 Layer::SnapLeft, -1); |
303 layer->snapToFeatureFrame(pane, f1, resolution, | 340 layer->snapToFeatureFrame(pane, f1, resolution, |
304 Layer::SnapRight, -1); | 341 Layer::SnapRight, -1); |
342 | |
343 SVDEBUG << "OSCHandler: Snapped selection extents to " | |
344 << f0 << " and " << f1 << " for current layer \"" | |
345 << layer->getLayerPresentationName() << "\"" | |
346 << endl; | |
305 } | 347 } |
306 | 348 |
307 } else if (message.getArgCount() == 1 && | 349 } else if (message.getArgCount() == 1 && |
308 message.getArg(0).canConvert(QVariant::String)) { | 350 message.getArg(0).canConvert(QVariant::String)) { |
309 | 351 |
310 QString str = message.getArg(0).toString(); | 352 QString str = message.getArg(0).toString(); |
311 if (str == "none") { | 353 if (str == "none") { |
354 SVDEBUG << "OSCHandler: Clearing selection" << endl; | |
312 m_viewManager->clearSelections(); | 355 m_viewManager->clearSelections(); |
313 done = true; | 356 done = true; |
357 } else if (str == "all") { | |
358 SVDEBUG << "OSCHandler: Selecting all" << endl; | |
359 f0 = getModelsStartFrame(); | |
360 f0 = getModelsEndFrame(); | |
314 } | 361 } |
315 } | 362 } |
316 | 363 |
317 if (!done) { | 364 if (!done) { |
318 if (message.getMethod() == "select") { | 365 if (message.getMethod() == "select") { |
319 m_viewManager->setSelection(Selection(f0, f1)); | 366 m_viewManager->setSelection(Selection(f0, f1)); |
320 } else { | 367 } else { |
321 m_viewManager->addSelection(Selection(f0, f1)); | 368 m_viewManager->addSelection(Selection(f0, f1)); |
322 } | 369 } |
323 } | 370 } |
371 | |
372 SVDEBUG << "OSCHandler: Selection now is " | |
373 << m_viewManager->getSelection().toString() << endl; | |
374 | |
375 } else { | |
376 SVCERR << "OSCHandler: No main model, can't modify selection" | |
377 << endl; | |
324 } | 378 } |
325 | 379 |
326 } else if (message.getMethod() == "add") { | 380 } else if (message.getMethod() == "add") { |
327 | 381 |
328 if (getMainModel()) { | 382 if (getMainModel()) { |
334 if (message.getArgCount() == 2 && | 388 if (message.getArgCount() == 2 && |
335 message.getArg(0).canConvert(QVariant::Int)) { | 389 message.getArg(0).canConvert(QVariant::Int)) { |
336 channel = message.getArg(0).toInt(); | 390 channel = message.getArg(0).toInt(); |
337 if (channel < -1 || | 391 if (channel < -1 || |
338 channel > int(getMainModel()->getChannelCount())) { | 392 channel > int(getMainModel()->getChannelCount())) { |
339 cerr << "WARNING: OSCHandler: channel " | 393 SVCERR << "WARNING: OSCHandler: channel " |
340 << channel << " out of range" << endl; | 394 << channel << " out of range" << endl; |
341 channel = -1; | 395 channel = -1; |
342 } | 396 } |
343 } | 397 } |
344 | 398 |
346 | 400 |
347 LayerFactory::LayerType type = | 401 LayerFactory::LayerType type = |
348 LayerFactory::getInstance()->getLayerTypeForName(str); | 402 LayerFactory::getInstance()->getLayerTypeForName(str); |
349 | 403 |
350 if (type == LayerFactory::UnknownLayer) { | 404 if (type == LayerFactory::UnknownLayer) { |
351 cerr << "WARNING: OSCHandler: unknown layer " | 405 SVCERR << "WARNING: OSCHandler: unknown layer " |
352 << "type " << str << endl; | 406 << "type " << str << endl; |
353 } else { | 407 } else { |
354 | 408 |
355 LayerConfiguration configuration(type, | 409 LayerConfiguration configuration(type, |
356 getMainModelId(), | 410 getMainModelId(), |
357 channel); | 411 channel); |
412 | |
413 QString pname = LayerFactory::getInstance()-> | |
414 getLayerPresentationName(type); | |
358 | 415 |
359 addPane(configuration, | 416 addPane(configuration, tr("Add %1 Pane") .arg(pname)); |
360 tr("Add %1 Pane") | 417 |
361 .arg(LayerFactory::getInstance()-> | 418 SVDEBUG << "OSCHandler: Added pane \"" << pname |
362 getLayerPresentationName(type))); | 419 << "\"" << endl; |
363 } | 420 } |
364 } | 421 } |
365 } | 422 } |
366 | 423 |
367 } else if (message.getMethod() == "undo") { | 424 } else if (message.getMethod() == "undo") { |
368 | 425 |
426 SVDEBUG << "OSCHandler: Calling undo" << endl; | |
369 CommandHistory::getInstance()->undo(); | 427 CommandHistory::getInstance()->undo(); |
370 | 428 |
371 } else if (message.getMethod() == "redo") { | 429 } else if (message.getMethod() == "redo") { |
372 | 430 |
431 SVDEBUG << "OSCHandler: Calling redo" << endl; | |
373 CommandHistory::getInstance()->redo(); | 432 CommandHistory::getInstance()->redo(); |
374 | 433 |
375 } else if (message.getMethod() == "set") { | 434 } else if (message.getMethod() == "set") { |
376 | 435 |
377 if (message.getArgCount() == 2 && | 436 if (message.getArgCount() == 2 && |
472 } | 531 } |
473 | 532 |
474 if (paneIndex >= 0 && paneIndex < m_paneStack->getPaneCount()) { | 533 if (paneIndex >= 0 && paneIndex < m_paneStack->getPaneCount()) { |
475 Pane *pane = m_paneStack->getPane(paneIndex); | 534 Pane *pane = m_paneStack->getPane(paneIndex); |
476 m_paneStack->setCurrentPane(pane); | 535 m_paneStack->setCurrentPane(pane); |
536 SVDEBUG << "OSCHandler: Set current pane to index " | |
537 << paneIndex << " (pane id " << pane->getId() | |
538 << ")" << endl; | |
477 if (layerIndex >= 0 && layerIndex < pane->getLayerCount()) { | 539 if (layerIndex >= 0 && layerIndex < pane->getLayerCount()) { |
478 Layer *layer = pane->getFixedOrderLayer(layerIndex); | 540 Layer *layer = pane->getFixedOrderLayer(layerIndex); |
479 m_paneStack->setCurrentLayer(pane, layer); | 541 m_paneStack->setCurrentLayer(pane, layer); |
542 SVDEBUG << "OSCHandler: Set current layer to index " | |
543 << layerIndex << " (layer \"" | |
544 << layer->getLayerPresentationName() << "\")" << endl; | |
480 } else if (wantLayer && layerIndex == -1) { | 545 } else if (wantLayer && layerIndex == -1) { |
481 m_paneStack->setCurrentLayer(pane, nullptr); | 546 m_paneStack->setCurrentLayer(pane, nullptr); |
482 } | 547 } else if (wantLayer) { |
548 SVCERR << "OSCHandler: Layer index " | |
549 << layerIndex << " out of range for pane" << endl; | |
550 } | |
483 } | 551 } |
484 | 552 |
485 } else if (message.getMethod() == "delete") { | 553 } else if (message.getMethod() == "delete") { |
486 | 554 |
487 if (message.getArgCount() == 1 && | 555 if (message.getArgCount() == 1 && |
489 | 557 |
490 QString target = message.getArg(0).toString(); | 558 QString target = message.getArg(0).toString(); |
491 | 559 |
492 if (target == "pane") { | 560 if (target == "pane") { |
493 | 561 |
562 SVDEBUG << "OSCHandler: Calling deleteCurrentPane" << endl; | |
494 deleteCurrentPane(); | 563 deleteCurrentPane(); |
495 | 564 |
496 } else if (target == "layer") { | 565 } else if (target == "layer") { |
497 | 566 |
567 SVDEBUG << "OSCHandler: Calling deleteCurrentLayer" << endl; | |
498 deleteCurrentLayer(); | 568 deleteCurrentLayer(); |
499 | 569 |
500 } else { | 570 } else { |
501 | 571 |
502 cerr << "WARNING: OSCHandler: Unknown delete target " << target << endl; | 572 SVCERR << "WARNING: OSCHandler: Unknown delete target \"" |
573 << target << "\"" << endl; | |
503 } | 574 } |
504 } | 575 } |
505 | 576 |
506 } else if (message.getMethod() == "zoom") { | 577 } else if (message.getMethod() == "zoom") { |
507 | 578 |
528 } else { | 599 } else { |
529 zoomLevel = ZoomLevel(ZoomLevel::PixelsPerFrame, | 600 zoomLevel = ZoomLevel(ZoomLevel::PixelsPerFrame, |
530 int(round(1.0 / level))); | 601 int(round(1.0 / level))); |
531 } | 602 } |
532 if (currentPane) { | 603 if (currentPane) { |
604 SVDEBUG << "OSCHandler: Setting zoom level to " | |
605 << zoomLevel << endl; | |
533 currentPane->setZoomLevel(zoomLevel); | 606 currentPane->setZoomLevel(zoomLevel); |
607 } else { | |
608 SVCERR << "OSCHandler: No current pane, can't set zoom" | |
609 << endl; | |
534 } | 610 } |
535 } | 611 } |
536 } | 612 } |
537 | 613 |
538 } else if (message.getMethod() == "zoomvertical") { | 614 } else if (message.getMethod() == "zoomvertical") { |
599 } | 675 } |
600 } | 676 } |
601 | 677 |
602 } else if (message.getMethod() == "transform") { | 678 } else if (message.getMethod() == "transform") { |
603 | 679 |
604 Pane *pane = m_paneStack->getCurrentPane(); | 680 if (message.getArgCount() == 1 && |
605 | |
606 if (getMainModel() && | |
607 pane && | |
608 message.getArgCount() == 1 && | |
609 message.getArg(0).canConvert(QVariant::String)) { | 681 message.getArg(0).canConvert(QVariant::String)) { |
610 | 682 |
611 TransformId transformId = message.getArg(0).toString(); | 683 Pane *pane = m_paneStack->getCurrentPane(); |
612 | |
613 Transform transform = TransformFactory::getInstance()-> | |
614 getDefaultTransformFor(transformId); | |
615 | 684 |
616 Layer *newLayer = m_document->createDerivedLayer | 685 if (getMainModel() && pane) { |
617 (transform, getMainModelId()); | 686 |
618 | 687 TransformId transformId = message.getArg(0).toString(); |
619 if (newLayer) { | 688 |
620 m_document->addLayerToView(pane, newLayer); | 689 Transform transform = TransformFactory::getInstance()-> |
621 m_recentTransforms.add(transformId); | 690 getDefaultTransformFor(transformId); |
622 m_paneStack->setCurrentLayer(pane, newLayer); | 691 |
623 } | 692 SVDEBUG << "OSCHandler: Running transform on main model:" |
624 } | 693 << transform.toXmlString() << endl; |
694 | |
695 Layer *newLayer = m_document->createDerivedLayer | |
696 (transform, getMainModelId()); | |
697 | |
698 if (newLayer) { | |
699 m_document->addLayerToView(pane, newLayer); | |
700 m_recentTransforms.add(transformId); | |
701 m_paneStack->setCurrentLayer(pane, newLayer); | |
702 } else { | |
703 SVCERR << "OSCHandler: Transform failed to run" << endl; | |
704 } | |
705 } else { | |
706 SVCERR << "OSCHandler: Lack main model or pane, " | |
707 << "can't run transform" << endl; | |
708 } | |
709 } | |
625 | 710 |
626 } else { | 711 } else { |
627 cerr << "WARNING: OSCHandler: Unknown or unsupported " | 712 SVCERR << "WARNING: OSCHandler: Unknown or unsupported " |
628 << "method \"" << message.getMethod() | 713 << "method \"" << message.getMethod() |
629 << "\"" << endl; | 714 << "\"" << endl; |
630 } | 715 } |
716 | |
717 SVDEBUG << "OSCHandler at " << NOW << ": finished message: " | |
718 << message.toString() << " in " << timer.elapsed() << "ms" << endl; | |
631 } | 719 } |