1
2
3 #include "menubar.h"
4
5 // Tnz6 includes
6 #include "menubarcommandids.h"
7 #include "tapp.h"
8 #include "cellselection.h"
9 #include "mainwindow.h"
10 #include "menubarpopup.h"
11
12 // TnzQt includes
13 #include "toonzqt/tselectionhandle.h"
14 #include "toonzqt/dvdialog.h"
15 #include "toonzqt/menubarcommand.h"
16 #include "toonzqt/gutil.h"
17
18 // TnzLib includes
19 #include "toonz/toonzscene.h"
20 #include "toonz/childstack.h"
21 #include "toonz/tscenehandle.h"
22 #include "toonz/txsheethandle.h"
23 #include "toonz/tframehandle.h"
24 #include "toonz/tcolumnhandle.h"
25 #include "toonz/toonzfolders.h"
26
27 // TnzTools includes
28 #include "tools/toolcommandids.h"
29
30 // TnzBase includes
31 #include "tenv.h"
32
33 // TnzCore includes
34 #include "tconvert.h"
35 #include "tsystem.h"
36
37 // Qt includes
38 #include <QIcon>
39 #include <QPainter>
40 #include <QMouseEvent>
41 #include <QHBoxLayout>
42 #include <QMenuBar>
43 #include <QShortcut>
44 #include <QDesktopServices>
45 #include <QCheckBox>
46 #include <QtDebug>
47 #include <QXmlStreamReader>
48
open()49 void UrlOpener::open() { QDesktopServices::openUrl(m_url); }
50
51 UrlOpener dvHome(QUrl("http://www.toonz.com/"));
52 UrlOpener manual(QUrl("file:///C:/gmt/butta/M&C in EU.pdf"));
53
54 TEnv::IntVar LockRoomTabToggle("LockRoomTabToggle", 0);
55
56 //=============================================================================
57 // RoomTabWidget
58 //-----------------------------------------------------------------------------
59
RoomTabWidget(QWidget * parent)60 RoomTabWidget::RoomTabWidget(QWidget *parent)
61 : QTabBar(parent)
62 , m_clickedTabIndex(-1)
63 , m_tabToDeleteIndex(-1)
64 , m_renameTabIndex(-1)
65 , m_renameTextField(new DVGui::LineEdit(this))
66 , m_isLocked(LockRoomTabToggle != 0) {
67 m_renameTextField->hide();
68 connect(m_renameTextField, SIGNAL(editingFinished()), this,
69 SLOT(updateTabName()));
70 }
71
72 //-----------------------------------------------------------------------------
73
~RoomTabWidget()74 RoomTabWidget::~RoomTabWidget() {}
75
76 //-----------------------------------------------------------------------------
77
swapIndex(int firstIndex,int secondIndex)78 void RoomTabWidget::swapIndex(int firstIndex, int secondIndex) {
79 QString firstText = tabText(firstIndex);
80 removeTab(firstIndex);
81 insertTab(secondIndex, firstText);
82 emit indexSwapped(firstIndex, secondIndex);
83
84 setCurrentIndex(secondIndex);
85 }
86
87 //-----------------------------------------------------------------------------
88
mousePressEvent(QMouseEvent * event)89 void RoomTabWidget::mousePressEvent(QMouseEvent *event) {
90 m_renameTextField->hide();
91 if (event->button() == Qt::LeftButton) {
92 m_clickedTabIndex = tabAt(event->pos());
93 if (m_clickedTabIndex < 0) return;
94 setCurrentIndex(m_clickedTabIndex);
95 }
96 }
97
98 //-----------------------------------------------------------------------------
99
mouseMoveEvent(QMouseEvent * event)100 void RoomTabWidget::mouseMoveEvent(QMouseEvent *event) {
101 if (m_isLocked) return;
102 if (event->buttons()) {
103 int tabIndex = tabAt(event->pos());
104 if (tabIndex == m_clickedTabIndex || tabIndex < 0 || tabIndex >= count() ||
105 m_clickedTabIndex < 0)
106 return;
107 swapIndex(m_clickedTabIndex, tabIndex);
108 m_clickedTabIndex = tabIndex;
109 }
110 }
111
112 //-----------------------------------------------------------------------------
113
mouseReleaseEvent(QMouseEvent * event)114 void RoomTabWidget::mouseReleaseEvent(QMouseEvent *event) {
115 m_clickedTabIndex = -1;
116 }
117
118 //-----------------------------------------------------------------------------
119 /*! Set a text field with focus in event position to edit tab name.
120 */
mouseDoubleClickEvent(QMouseEvent * event)121 void RoomTabWidget::mouseDoubleClickEvent(QMouseEvent *event) {
122 if (m_isLocked) return;
123 int index = tabAt(event->pos());
124 if (index < 0) return;
125 m_renameTabIndex = index;
126 DVGui::LineEdit *fld = m_renameTextField;
127 fld->setText(tabText(index));
128 fld->setGeometry(tabRect(index));
129 fld->show();
130 fld->selectAll();
131 fld->setFocus(Qt::OtherFocusReason);
132 }
133
134 //-----------------------------------------------------------------------------
135
contextMenuEvent(QContextMenuEvent * event)136 void RoomTabWidget::contextMenuEvent(QContextMenuEvent *event) {
137 if (m_isLocked) return;
138 m_tabToDeleteIndex = -1;
139 QMenu *menu = new QMenu(this);
140 QAction *newRoom = menu->addAction(tr("New Room"));
141 connect(newRoom, SIGNAL(triggered()), SLOT(addNewTab()));
142
143 int index = tabAt(event->pos());
144 if (index >= 0) {
145 m_tabToDeleteIndex = index;
146 if (index != currentIndex()) {
147 QAction *deleteRoom =
148 menu->addAction(tr("Delete Room \"%1\"").arg(tabText(index)));
149 connect(deleteRoom, SIGNAL(triggered()), SLOT(deleteTab()));
150 }
151 #if defined(_WIN32) || defined(_CYGWIN_)
152 /*- customize menubar -*/
153 QAction *customizeMenuBar = menu->addAction(
154 tr("Customize Menu Bar of Room \"%1\"").arg(tabText(index)));
155 connect(customizeMenuBar, SIGNAL(triggered()), SLOT(onCustomizeMenuBar()));
156 #endif
157 }
158 menu->exec(event->globalPos());
159 }
160
161 //-----------------------------------------------------------------------------
162
updateTabName()163 void RoomTabWidget::updateTabName() {
164 int index = m_renameTabIndex;
165 if (index < 0) return;
166 m_renameTabIndex = -1;
167 QString newName = m_renameTextField->text();
168 setTabText(index, newName);
169 m_renameTextField->hide();
170 emit renameTabRoom(index, newName);
171 }
172
173 //-----------------------------------------------------------------------------
174
addNewTab()175 void RoomTabWidget::addNewTab() {
176 insertTab(0, tr("Room"));
177 emit insertNewTabRoom();
178 }
179
180 //-----------------------------------------------------------------------------
181
deleteTab()182 void RoomTabWidget::deleteTab() {
183 assert(m_tabToDeleteIndex != -1);
184
185 QString question(tr("Are you sure you want to remove room %1")
186 .arg(tabText(m_tabToDeleteIndex)));
187 int ret = DVGui::MsgBox(question, QObject::tr("Yes"), QObject::tr("No"));
188 if (ret == 0 || ret == 2) return;
189
190 emit deleteTabRoom(m_tabToDeleteIndex);
191 removeTab(m_tabToDeleteIndex);
192 m_tabToDeleteIndex = -1;
193 }
194
195 //-----------------------------------------------------------------------------
196
setIsLocked(bool lock)197 void RoomTabWidget::setIsLocked(bool lock) {
198 m_isLocked = lock;
199 LockRoomTabToggle = (lock) ? 1 : 0;
200 }
201
202 //-----------------------------------------------------------------------------
203
onCustomizeMenuBar()204 void RoomTabWidget::onCustomizeMenuBar() {
205 /*- use m_tabToDeleteIndex for index of a room of which menubar is to be
206 * customized -*/
207 assert(m_tabToDeleteIndex != -1);
208
209 emit customizeMenuBar(m_tabToDeleteIndex);
210 }
211
212 //=============================================================================
213 // StackedMenuBar
214 //-----------------------------------------------------------------------------
215
StackedMenuBar(QWidget * parent)216 StackedMenuBar::StackedMenuBar(QWidget *parent) : QStackedWidget(parent) {
217 setObjectName("StackedMenuBar");
218 }
219
220 //---------------------------------------------------------------------------------
221
createMenuBarByName(const QString & roomName)222 void StackedMenuBar::createMenuBarByName(const QString &roomName) {
223 std::cout << "create " << roomName.toStdString() << std::endl;
224 #if defined(_WIN32) || defined(_CYGWIN_)
225 if (roomName == "Cleanup")
226 addWidget(createCleanupMenuBar());
227 else if (roomName == "PltEdit")
228 addWidget(createPltEditMenuBar());
229 else if (roomName == "InknPaint")
230 addWidget(createInknPaintMenuBar());
231 else if (roomName == "Xsheet" || roomName == "Schematic" ||
232 roomName == "QAR" || roomName == "Flip")
233 addWidget(createXsheetMenuBar());
234 else if (roomName == "Batches")
235 addWidget(createBatchesMenuBar());
236 else if (roomName == "Browser")
237 addWidget(createBrowserMenuBar());
238 else /*-- どれにもあてはまらない場合は全てのコマンドの入ったメニューバーを作る
239 --*/
240 addWidget(createFullMenuBar());
241 #else
242 /* OSX では stacked menu が動いていないのでとりあえず full のみ作成する */
243 addWidget(createFullMenuBar());
244 #endif
245 }
246
247 //---------------------------------------------------------------------------------
248
loadAndAddMenubar(const TFilePath & fp)249 void StackedMenuBar::loadAndAddMenubar(const TFilePath &fp) {
250 #if defined(_WIN32) || defined(_CYGWIN_)
251 QMenuBar *menuBar = loadMenuBar(fp);
252 if (menuBar)
253 addWidget(menuBar);
254 else
255 addWidget(createFullMenuBar());
256 #else
257 /* OSX では stacked menu が動いていないのでとりあえず full のみ作成する */
258 addWidget(createFullMenuBar());
259 #endif
260 }
261
262 //---------------------------------------------------------------------------------
263
loadMenuBar(const TFilePath & fp)264 QMenuBar *StackedMenuBar::loadMenuBar(const TFilePath &fp) {
265 QFile file(toQString(fp));
266 if (!file.open(QFile::ReadOnly | QFile::Text)) {
267 qDebug() << "Cannot read file" << file.errorString();
268 return 0;
269 }
270
271 QXmlStreamReader reader(&file);
272
273 QMenuBar *menuBar = new QMenuBar(this);
274 if (reader.readNextStartElement()) {
275 if (reader.name() == "menubar") {
276 while (reader.readNextStartElement()) {
277 if (reader.name() == "menu") {
278 QString title = reader.attributes().value("title").toString();
279 /*- Menu title will be translated if the title is registered in
280 * translation file -*/
281 QMenu *menu = new QMenu(tr(title.toStdString().c_str()));
282
283 if (readMenuRecursive(reader, menu))
284 menuBar->addMenu(menu);
285 else {
286 reader.raiseError(tr("Failed to load menu %1").arg(title));
287 delete menu;
288 }
289
290 } else if (reader.name() == "command") {
291 QString cmdName = reader.readElementText();
292
293 QAction *action = CommandManager::instance()->getAction(
294 cmdName.toStdString().c_str());
295 if (action)
296 menuBar->addAction(action);
297 else
298 reader.raiseError(tr("Failed to add command %1").arg(cmdName));
299 } else
300 reader.skipCurrentElement();
301 }
302 } else
303 reader.raiseError(QObject::tr("Incorrect file"));
304 }
305
306 if (reader.hasError()) {
307 delete menuBar;
308 return 0;
309 }
310 return menuBar;
311 }
312
313 //---------------------------------------------------------------------------------
314
readMenuRecursive(QXmlStreamReader & reader,QMenu * menu)315 bool StackedMenuBar::readMenuRecursive(QXmlStreamReader &reader, QMenu *menu) {
316 while (reader.readNextStartElement()) {
317 if (reader.name() == "menu") {
318 QString title = reader.attributes().value("title").toString();
319 QMenu *subMenu = new QMenu(tr(title.toStdString().c_str()));
320
321 if (readMenuRecursive(reader, subMenu))
322 menu->addMenu(subMenu);
323 else {
324 reader.raiseError(tr("Failed to load menu %1").arg(title));
325 delete subMenu;
326 return false;
327 }
328
329 } else if (reader.name() == "command") {
330 QString cmdName = reader.readElementText();
331 addMenuItem(menu, cmdName.toStdString().c_str());
332 } else if (reader.name() == "command_debug") {
333 #ifndef NDEBUG
334 QString cmdName = reader.readElementText();
335 addMenuItem(menu, cmdName.toStdString().c_str());
336 #else
337 reader.skipCurrentElement();
338 #endif
339 } else if (reader.name() == "separator") {
340 menu->addSeparator();
341 reader.skipCurrentElement();
342 } else
343 reader.skipCurrentElement();
344 }
345
346 return !reader.hasError();
347 }
348
349 //---------------------------------------------------------------------------------
350
createCleanupMenuBar()351 QMenuBar *StackedMenuBar::createCleanupMenuBar() {
352 QMenuBar *cleanupMenuBar = new QMenuBar(this);
353 //----Files Menu
354 QMenu *filesMenu = addMenu(tr("Files"), cleanupMenuBar);
355 addMenuItem(filesMenu, MI_LoadLevel);
356 addMenuItem(filesMenu, MI_LoadFolder);
357 addMenuItem(filesMenu, MI_SaveLevel);
358 addMenuItem(filesMenu, MI_SaveLevelAs);
359 addMenuItem(filesMenu, MI_ExportLevel);
360 addMenuItem(filesMenu, MI_OpenRecentLevel);
361 filesMenu->addSeparator();
362 addMenuItem(filesMenu, MI_LoadScene);
363 addMenuItem(filesMenu, MI_SaveScene);
364 addMenuItem(filesMenu, MI_SaveSceneAs);
365 addMenuItem(filesMenu, MI_SaveAll);
366 addMenuItem(filesMenu, MI_OpenRecentScene);
367 addMenuItem(filesMenu, MI_RevertScene);
368 filesMenu->addSeparator();
369 addMenuItem(filesMenu, MI_ConvertFileWithInput);
370 filesMenu->addSeparator();
371 addMenuItem(filesMenu, MI_NewScene);
372 filesMenu->addSeparator();
373 addMenuItem(filesMenu, MI_Quit);
374
375 //----Scan Menu
376 QMenu *scanMenu = addMenu(tr("Scan"), cleanupMenuBar);
377 addMenuItem(scanMenu, MI_DefineScanner);
378 addMenuItem(scanMenu, MI_ScanSettings);
379 addMenuItem(scanMenu, MI_Scan);
380 addMenuItem(scanMenu, MI_SetScanCropbox);
381 addMenuItem(scanMenu, MI_ResetScanCropbox);
382
383 //----Settings Menu
384 QMenu *settingsMenu = addMenu(tr("Settings"), cleanupMenuBar);
385 addMenuItem(settingsMenu, MI_CleanupSettings);
386 settingsMenu->addSeparator();
387 addMenuItem(settingsMenu, MI_OutputSettings);
388 addMenuItem(settingsMenu, MI_LevelSettings);
389
390 //----Processing Menu
391 QMenu *processingMenu = addMenu(tr("Processing"), cleanupMenuBar);
392 addMenuItem(processingMenu, MI_CameraTest);
393 addMenuItem(processingMenu, MI_OpacityCheck);
394 addMenuItem(processingMenu, MI_CleanupPreview);
395 addMenuItem(processingMenu, MI_Cleanup);
396
397 //---Edit Menu
398 QMenu *editMenu = addMenu(tr("Edit"), cleanupMenuBar);
399 addMenuItem(editMenu, MI_Undo);
400 addMenuItem(editMenu, MI_Redo);
401 editMenu->addSeparator();
402 addMenuItem(editMenu, MI_NextFrame);
403 addMenuItem(editMenu, MI_PrevFrame);
404 addMenuItem(editMenu, MI_FirstFrame);
405 addMenuItem(editMenu, MI_LastFrame);
406 addMenuItem(editMenu, MI_TestAnimation);
407 editMenu->addSeparator();
408 addMenuItem(editMenu, MI_Copy);
409 addMenuItem(editMenu, MI_Cut);
410 addMenuItem(editMenu, MI_Paste);
411 addMenuItem(editMenu, MI_PasteAbove);
412 addMenuItem(editMenu, MI_PasteInto);
413 editMenu->addSeparator();
414 addMenuItem(editMenu, MI_Clear);
415 addMenuItem(editMenu, MI_Insert);
416 addMenuItem(editMenu, MI_InsertAbove);
417 addMenuItem(editMenu, MI_SelectAll);
418 addMenuItem(editMenu, MI_InvertSelection);
419
420 //----Windows Menu
421 QMenu *windowsMenu = addMenu(tr("Windows"), cleanupMenuBar);
422 addMenuItem(windowsMenu, MI_OpenFileBrowser);
423 addMenuItem(windowsMenu, MI_OpenStyleControl);
424 addMenuItem(windowsMenu, MI_OpenComboViewer);
425 addMenuItem(windowsMenu, MI_OpenXshView);
426 addMenuItem(windowsMenu, MI_OpenTimelineView);
427 windowsMenu->addSeparator();
428 QMenu *otherWindowsMenu = windowsMenu->addMenu(tr("Other Windows"));
429 {
430 addMenuItem(otherWindowsMenu, MI_OpenBatchServers);
431 addMenuItem(otherWindowsMenu, MI_OpenTasks);
432 addMenuItem(otherWindowsMenu, MI_OpenColorModel);
433 addMenuItem(otherWindowsMenu, MI_OpenFileViewer);
434 addMenuItem(otherWindowsMenu, MI_OpenFunctionEditor);
435 addMenuItem(otherWindowsMenu, MI_OpenFilmStrip);
436 addMenuItem(otherWindowsMenu, MI_OpenPalette);
437 addMenuItem(otherWindowsMenu, MI_OpenFileBrowser2);
438 addMenuItem(otherWindowsMenu, MI_OpenSchematic);
439 addMenuItem(otherWindowsMenu, MI_OpenStudioPalette);
440 addMenuItem(otherWindowsMenu, MI_OpenToolbar);
441 addMenuItem(otherWindowsMenu, MI_OpenToolOptionBar);
442 addMenuItem(otherWindowsMenu, MI_OpenHistoryPanel);
443 addMenuItem(otherWindowsMenu, MI_OpenTMessage);
444 }
445
446 //----Customize Menu
447 QMenu *customizeMenu = addMenu(tr("Customize"), cleanupMenuBar);
448 addMenuItem(customizeMenu, MI_Preferences);
449 addMenuItem(customizeMenu, MI_ShortcutPopup);
450 addMenuItem(customizeMenu, MI_SceneSettings);
451 customizeMenu->addSeparator();
452 QMenu *viewPartsMenu = customizeMenu->addMenu(tr("View"));
453 {
454 addMenuItem(viewPartsMenu, MI_ViewCamera);
455 addMenuItem(viewPartsMenu, MI_ViewTable);
456 addMenuItem(viewPartsMenu, MI_FieldGuide);
457 addMenuItem(viewPartsMenu, MI_SafeArea);
458 addMenuItem(viewPartsMenu, MI_ViewBBox);
459 addMenuItem(viewPartsMenu, MI_ViewColorcard);
460 }
461 customizeMenu->addSeparator();
462 addMenuItem(customizeMenu, MI_DockingCheck);
463 customizeMenu->addSeparator();
464 addMenuItem(customizeMenu, "MI_RunScript");
465 addMenuItem(customizeMenu, "MI_OpenScriptConsole");
466 #ifndef NDEBUG
467 addMenuItem(customizeMenu, "MI_ReloadStyle");
468 #endif
469
470 //----Help Menu
471 QMenu *helpMenu = addMenu(tr("Help"), cleanupMenuBar);
472 addMenuItem(helpMenu, MI_About);
473
474 return cleanupMenuBar;
475 }
476
477 //---------------------------------------------------------------------------------
478
createPltEditMenuBar()479 QMenuBar *StackedMenuBar::createPltEditMenuBar() {
480 QMenuBar *pltEditMenuBar = new QMenuBar(this);
481
482 //---Files Menu
483 QMenu *filesMenu = addMenu(tr("Files"), pltEditMenuBar);
484 addMenuItem(filesMenu, MI_LoadLevel);
485 addMenuItem(filesMenu, MI_LoadFolder);
486 addMenuItem(filesMenu, MI_SaveLevel);
487 addMenuItem(filesMenu, MI_SaveLevelAs);
488 addMenuItem(filesMenu, MI_ExportLevel);
489 addMenuItem(filesMenu, MI_OpenRecentLevel);
490 addMenuItem(filesMenu, MI_LevelSettings);
491 filesMenu->addSeparator();
492 addMenuItem(filesMenu, MI_NewLevel);
493 filesMenu->addSeparator();
494 addMenuItem(filesMenu, MI_OverwritePalette);
495 addMenuItem(filesMenu, MI_SavePaletteAs);
496 filesMenu->addSeparator();
497 addMenuItem(filesMenu, MI_LoadScene);
498 addMenuItem(filesMenu, MI_SaveScene);
499 addMenuItem(filesMenu, MI_SaveSceneAs);
500 addMenuItem(filesMenu, MI_SaveAll);
501 addMenuItem(filesMenu, MI_OpenRecentScene);
502 addMenuItem(filesMenu, MI_RevertScene);
503 filesMenu->addSeparator();
504 addMenuItem(filesMenu, MI_ConvertFileWithInput);
505 filesMenu->addSeparator();
506 addMenuItem(filesMenu, MI_NewScene);
507 filesMenu->addSeparator();
508 addMenuItem(filesMenu, MI_Quit);
509
510 //---Tools Menu
511 QMenu *toolsMenu = addMenu(tr("Tools"), pltEditMenuBar);
512 addMenuItem(toolsMenu, T_StylePicker);
513 addMenuItem(toolsMenu, T_RGBPicker);
514 addMenuItem(toolsMenu, T_Tape);
515 toolsMenu->addSeparator();
516 addMenuItem(toolsMenu, T_Fill);
517 addMenuItem(toolsMenu, T_Brush);
518 addMenuItem(toolsMenu, T_PaintBrush);
519 addMenuItem(toolsMenu, T_Geometric);
520 addMenuItem(toolsMenu, T_Type);
521 toolsMenu->addSeparator();
522 addMenuItem(toolsMenu, T_Eraser);
523 QMenu *moreToolsMenu = toolsMenu->addMenu(tr("More Tools"));
524 {
525 addMenuItem(moreToolsMenu, T_Edit);
526 addMenuItem(moreToolsMenu, T_Selection);
527 moreToolsMenu->addSeparator();
528 addMenuItem(moreToolsMenu, T_ControlPointEditor);
529 addMenuItem(moreToolsMenu, T_Pinch);
530 addMenuItem(moreToolsMenu, T_Pump);
531 addMenuItem(moreToolsMenu, T_Magnet);
532 addMenuItem(moreToolsMenu, T_Bender);
533 addMenuItem(moreToolsMenu, T_Iron);
534 addMenuItem(moreToolsMenu, T_Cutter);
535 moreToolsMenu->addSeparator();
536 addMenuItem(moreToolsMenu, T_Skeleton);
537 addMenuItem(moreToolsMenu, T_Tracker);
538 addMenuItem(moreToolsMenu, T_Hook);
539 addMenuItem(moreToolsMenu, T_Plastic);
540 moreToolsMenu->addSeparator();
541 addMenuItem(moreToolsMenu, T_Zoom);
542 addMenuItem(moreToolsMenu, T_Rotate);
543 addMenuItem(moreToolsMenu, T_Hand);
544 }
545
546 //---Edit Menu
547 QMenu *editMenu = addMenu(tr("Edit"), pltEditMenuBar);
548 addMenuItem(editMenu, MI_Undo);
549 addMenuItem(editMenu, MI_Redo);
550 editMenu->addSeparator();
551 addMenuItem(editMenu, MI_NextFrame);
552 addMenuItem(editMenu, MI_PrevFrame);
553 addMenuItem(editMenu, MI_FirstFrame);
554 addMenuItem(editMenu, MI_LastFrame);
555 addMenuItem(editMenu, MI_TestAnimation);
556 editMenu->addSeparator();
557 addMenuItem(editMenu, MI_Copy);
558 addMenuItem(editMenu, MI_Cut);
559 addMenuItem(editMenu, MI_Paste);
560 addMenuItem(editMenu, MI_PasteAbove);
561 addMenuItem(editMenu, MI_PasteInto);
562 editMenu->addSeparator();
563 addMenuItem(editMenu, MI_Clear);
564 addMenuItem(editMenu, MI_Insert);
565 addMenuItem(editMenu, MI_InsertAbove);
566 addMenuItem(editMenu, MI_SelectAll);
567 addMenuItem(editMenu, MI_InvertSelection);
568
569 //---Checks Menu
570 QMenu *checksMenu = addMenu(tr("Checks"), pltEditMenuBar);
571 addMenuItem(checksMenu, MI_TCheck);
572 addMenuItem(checksMenu, MI_BCheck);
573 addMenuItem(checksMenu, MI_ICheck);
574 addMenuItem(checksMenu, MI_Ink1Check);
575 addMenuItem(checksMenu, MI_PCheck);
576
577 //---Render Menu
578 QMenu *renderMenu = addMenu(tr("Render"), pltEditMenuBar);
579 addMenuItem(renderMenu, MI_PreviewSettings);
580 addMenuItem(renderMenu, MI_Preview);
581 addMenuItem(renderMenu, MI_SavePreviewedFrames);
582 renderMenu->addSeparator();
583 addMenuItem(renderMenu, MI_OutputSettings);
584 addMenuItem(renderMenu, MI_Render);
585
586 //---Windows Menu
587 QMenu *windowsMenu = addMenu(tr("Windows"), pltEditMenuBar);
588 addMenuItem(windowsMenu, MI_OpenFileBrowser);
589 addMenuItem(windowsMenu, MI_OpenFileViewer);
590 addMenuItem(windowsMenu, MI_OpenFilmStrip);
591 addMenuItem(windowsMenu, MI_OpenPalette);
592 addMenuItem(windowsMenu, MI_OpenStudioPalette);
593 addMenuItem(windowsMenu, MI_OpenStyleControl);
594 addMenuItem(windowsMenu, MI_OpenLevelView);
595 addMenuItem(windowsMenu, MI_OpenComboViewer);
596 addMenuItem(windowsMenu, MI_OpenXshView);
597 addMenuItem(windowsMenu, MI_OpenTimelineView);
598 windowsMenu->addSeparator();
599 QMenu *otherWindowsMenu = windowsMenu->addMenu(tr("Other Windows"));
600 {
601 addMenuItem(otherWindowsMenu, MI_OpenBatchServers);
602 addMenuItem(otherWindowsMenu, MI_OpenColorModel);
603 addMenuItem(otherWindowsMenu, MI_OpenFunctionEditor);
604 addMenuItem(otherWindowsMenu, MI_OpenFileBrowser2);
605 addMenuItem(otherWindowsMenu, MI_OpenSchematic);
606 addMenuItem(otherWindowsMenu, MI_OpenTasks);
607 addMenuItem(otherWindowsMenu, MI_OpenToolbar);
608 addMenuItem(otherWindowsMenu, MI_OpenToolOptionBar);
609 addMenuItem(otherWindowsMenu, MI_OpenHistoryPanel);
610 addMenuItem(otherWindowsMenu, MI_OpenTMessage);
611 }
612
613 //---Customize Menu
614 QMenu *customizeMenu = addMenu(tr("Customize"), pltEditMenuBar);
615 addMenuItem(customizeMenu, MI_Preferences);
616 addMenuItem(customizeMenu, MI_ShortcutPopup);
617 addMenuItem(customizeMenu, MI_SceneSettings);
618 customizeMenu->addSeparator();
619 QMenu *viewPartsMenu = customizeMenu->addMenu(tr("View"));
620 {
621 addMenuItem(viewPartsMenu, MI_ViewCamera);
622 addMenuItem(viewPartsMenu, MI_ViewTable);
623 addMenuItem(viewPartsMenu, MI_FieldGuide);
624 addMenuItem(viewPartsMenu, MI_SafeArea);
625 addMenuItem(viewPartsMenu, MI_ViewColorcard);
626 }
627 customizeMenu->addSeparator();
628 addMenuItem(customizeMenu, MI_DockingCheck);
629 customizeMenu->addSeparator();
630 addMenuItem(customizeMenu, "MI_RunScript");
631 addMenuItem(customizeMenu, "MI_OpenScriptConsole");
632 #ifndef NDEBUG
633 addMenuItem(customizeMenu, "MI_ReloadStyle");
634 #endif
635
636 //---Help Menu
637 QMenu *helpMenu = addMenu(tr("Help"), pltEditMenuBar);
638 addMenuItem(helpMenu, MI_About);
639
640 return pltEditMenuBar;
641 }
642
643 //---------------------------------------------------------------------------------
644
createInknPaintMenuBar()645 QMenuBar *StackedMenuBar::createInknPaintMenuBar() {
646 QMenuBar *inknPaintMenuBar = new QMenuBar(this);
647
648 //---Files Menu
649 QMenu *filesMenu = addMenu(tr("Files"), inknPaintMenuBar);
650 addMenuItem(filesMenu, MI_LoadLevel);
651 addMenuItem(filesMenu, MI_LoadFolder);
652 addMenuItem(filesMenu, MI_SaveLevel);
653 addMenuItem(filesMenu, MI_SaveLevelAs);
654 addMenuItem(filesMenu, MI_OpenRecentLevel);
655 addMenuItem(filesMenu, MI_ExportLevel);
656 addMenuItem(filesMenu, MI_LevelSettings);
657 addMenuItem(filesMenu, MI_CanvasSize);
658 filesMenu->addSeparator();
659 addMenuItem(filesMenu, MI_NewLevel);
660 filesMenu->addSeparator();
661 addMenuItem(filesMenu, MI_OverwritePalette);
662 addMenuItem(filesMenu, MI_SavePaletteAs);
663 filesMenu->addSeparator();
664 addMenuItem(filesMenu, MI_LoadColorModel);
665 filesMenu->addSeparator();
666 addMenuItem(filesMenu, MI_ApplyMatchLines);
667 addMenuItem(filesMenu, MI_DeleteMatchLines);
668 addMenuItem(filesMenu, MI_DeleteInk);
669 addMenuItem(filesMenu, MI_MergeCmapped);
670 addMenuItem(filesMenu, MI_MergeColumns);
671 filesMenu->addSeparator();
672 addMenuItem(filesMenu, MI_LoadScene);
673 addMenuItem(filesMenu, MI_SaveScene);
674 addMenuItem(filesMenu, MI_SaveSceneAs);
675 addMenuItem(filesMenu, MI_SaveAll);
676 addMenuItem(filesMenu, MI_OpenRecentScene);
677 filesMenu->addSeparator();
678 addMenuItem(filesMenu, MI_NewScene);
679 filesMenu->addSeparator();
680 addMenuItem(filesMenu, MI_Quit);
681
682 //---Tools Menu
683 QMenu *toolsMenu = addMenu(tr("Tools"), inknPaintMenuBar);
684 addMenuItem(toolsMenu, T_StylePicker);
685 addMenuItem(toolsMenu, T_RGBPicker);
686 addMenuItem(toolsMenu, T_Tape);
687 toolsMenu->addSeparator();
688 addMenuItem(toolsMenu, T_Fill);
689 addMenuItem(toolsMenu, T_Brush);
690 addMenuItem(toolsMenu, T_PaintBrush);
691 addMenuItem(toolsMenu, T_Geometric);
692 addMenuItem(toolsMenu, T_Type);
693 toolsMenu->addSeparator();
694 addMenuItem(toolsMenu, T_Eraser);
695 toolsMenu->addSeparator();
696 QMenu *moreToolsMenu = toolsMenu->addMenu(tr("More Tools"));
697 {
698 addMenuItem(moreToolsMenu, T_Edit);
699 addMenuItem(moreToolsMenu, T_Selection);
700 moreToolsMenu->addSeparator();
701 addMenuItem(moreToolsMenu, T_ControlPointEditor);
702 addMenuItem(moreToolsMenu, T_Pinch);
703 addMenuItem(moreToolsMenu, T_Pump);
704 addMenuItem(moreToolsMenu, T_Magnet);
705 addMenuItem(moreToolsMenu, T_Bender);
706 addMenuItem(moreToolsMenu, T_Iron);
707 addMenuItem(moreToolsMenu, T_Cutter);
708 moreToolsMenu->addSeparator();
709 addMenuItem(moreToolsMenu, T_Skeleton);
710 addMenuItem(moreToolsMenu, T_Tracker);
711 addMenuItem(moreToolsMenu, T_Hook);
712 addMenuItem(moreToolsMenu, T_Plastic);
713 moreToolsMenu->addSeparator();
714 addMenuItem(moreToolsMenu, T_Zoom);
715 addMenuItem(moreToolsMenu, T_Rotate);
716 addMenuItem(moreToolsMenu, T_Hand);
717 }
718
719 //---Draw Menu
720 QMenu *drawMenu = addMenu(tr("Draw"), inknPaintMenuBar);
721 addMenuItem(drawMenu, MI_ShiftTrace);
722 addMenuItem(drawMenu, MI_EditShift);
723 addMenuItem(drawMenu, MI_NoShift);
724 addMenuItem(drawMenu, MI_ResetShift);
725 drawMenu->addSeparator();
726 addMenuItem(drawMenu, MI_RasterizePli);
727
728 //---Edit Menu
729 QMenu *editMenu = addMenu(tr("Edit"), inknPaintMenuBar);
730 addMenuItem(editMenu, MI_Undo);
731 addMenuItem(editMenu, MI_Redo);
732 editMenu->addSeparator();
733 addMenuItem(editMenu, MI_NextFrame);
734 addMenuItem(editMenu, MI_PrevFrame);
735 addMenuItem(editMenu, MI_FirstFrame);
736 addMenuItem(editMenu, MI_LastFrame);
737 addMenuItem(editMenu, MI_TestAnimation);
738 editMenu->addSeparator();
739 addMenuItem(editMenu, MI_Copy);
740 addMenuItem(editMenu, MI_Cut);
741 addMenuItem(editMenu, MI_Paste);
742 addMenuItem(editMenu, MI_PasteAbove);
743 addMenuItem(editMenu, MI_PasteInto);
744 editMenu->addSeparator();
745 addMenuItem(editMenu, MI_Clear);
746 addMenuItem(editMenu, MI_Insert);
747 addMenuItem(editMenu, MI_InsertAbove);
748 addMenuItem(editMenu, MI_SelectAll);
749 addMenuItem(editMenu, MI_InvertSelection);
750
751 //---Checks Menu
752 QMenu *checksMenu = addMenu(tr("Checks"), inknPaintMenuBar);
753 addMenuItem(checksMenu, MI_TCheck);
754 addMenuItem(checksMenu, MI_BCheck);
755 addMenuItem(checksMenu, MI_ICheck);
756 addMenuItem(checksMenu, MI_Ink1Check);
757 addMenuItem(checksMenu, MI_PCheck);
758 addMenuItem(checksMenu, MI_GCheck);
759 addMenuItem(checksMenu, MI_ACheck);
760 addMenuItem(checksMenu, MI_IOnly);
761
762 //---Windows Menu
763 QMenu *windowsMenu = addMenu(tr("Windows"), inknPaintMenuBar);
764 addMenuItem(windowsMenu, MI_OpenStyleControl);
765 addMenuItem(windowsMenu, MI_OpenPltGizmo);
766 addMenuItem(windowsMenu, MI_OpenPalette);
767 addMenuItem(windowsMenu, MI_OpenStudioPalette);
768 addMenuItem(windowsMenu, MI_OpenComboViewer);
769 addMenuItem(windowsMenu, MI_OpenXshView);
770 addMenuItem(windowsMenu, MI_OpenTimelineView);
771 addMenuItem(windowsMenu, MI_OpenColorModel);
772 addMenuItem(windowsMenu, MI_OpenFileBrowser);
773 addMenuItem(windowsMenu, MI_OpenFilmStrip);
774 addMenuItem(windowsMenu, MI_OpenToolbar);
775 addMenuItem(windowsMenu, MI_OpenToolOptionBar);
776 windowsMenu->addSeparator();
777 QMenu *otherWindowsMenu = windowsMenu->addMenu(tr("Other Windows"));
778 {
779 addMenuItem(otherWindowsMenu, MI_OpenBatchServers);
780 addMenuItem(otherWindowsMenu, MI_OpenFileViewer);
781 addMenuItem(otherWindowsMenu, MI_OpenFunctionEditor);
782 addMenuItem(otherWindowsMenu, MI_OpenFileBrowser2);
783 addMenuItem(otherWindowsMenu, MI_OpenSchematic);
784 addMenuItem(otherWindowsMenu, MI_OpenTasks);
785 addMenuItem(otherWindowsMenu, MI_OpenHistoryPanel);
786 addMenuItem(otherWindowsMenu, MI_OpenTMessage);
787 }
788
789 //---Customize Menu
790 QMenu *customizeMenu = addMenu(tr("Customize"), inknPaintMenuBar);
791 addMenuItem(customizeMenu, MI_Preferences);
792 addMenuItem(customizeMenu, MI_ShortcutPopup);
793 addMenuItem(customizeMenu, MI_SceneSettings);
794 customizeMenu->addSeparator();
795 QMenu *viewPartsMenu = customizeMenu->addMenu(tr("View"));
796 {
797 addMenuItem(viewPartsMenu, MI_ViewCamera);
798 addMenuItem(viewPartsMenu, MI_ViewTable);
799 addMenuItem(viewPartsMenu, MI_FieldGuide);
800 addMenuItem(viewPartsMenu, MI_SafeArea);
801 addMenuItem(viewPartsMenu, MI_ViewColorcard);
802 }
803 customizeMenu->addSeparator();
804 addMenuItem(customizeMenu, MI_DockingCheck);
805 customizeMenu->addSeparator();
806 addMenuItem(customizeMenu, "MI_RunScript");
807 addMenuItem(customizeMenu, "MI_OpenScriptConsole");
808 #ifndef NDEBUG
809 addMenuItem(customizeMenu, "MI_ReloadStyle");
810 #endif
811
812 //---Help Menu
813 QMenu *helpMenu = addMenu(tr("Help"), inknPaintMenuBar);
814 addMenuItem(helpMenu, MI_About);
815
816 return inknPaintMenuBar;
817 }
818
819 //---------------------------------------------------------------------------------
820
createXsheetMenuBar()821 QMenuBar *StackedMenuBar::createXsheetMenuBar() {
822 QMenuBar *xsheetMenuBar = new QMenuBar(this);
823 //----Xsheet Menu
824 QMenu *xsheetMenu = addMenu(tr("Xsheet"), xsheetMenuBar);
825 addMenuItem(xsheetMenu, MI_LoadScene);
826 addMenuItem(xsheetMenu, MI_SaveScene);
827 addMenuItem(xsheetMenu, MI_SaveSceneAs);
828 addMenuItem(xsheetMenu, MI_SaveAll);
829 addMenuItem(xsheetMenu, MI_OpenRecentScene);
830 addMenuItem(xsheetMenu, MI_RevertScene);
831 xsheetMenu->addSeparator();
832 addMenuItem(xsheetMenu, MI_NewScene);
833 xsheetMenu->addSeparator();
834 addMenuItem(xsheetMenu, MI_PrintXsheet);
835 addMenuItem(xsheetMenu, MI_Export);
836 xsheetMenu->addSeparator();
837 addMenuItem(xsheetMenu, MI_Quit);
838
839 //----Subxsheet Menu
840 QMenu *subxsheetMenu = addMenu(tr("Subxsheet"), xsheetMenuBar);
841 addMenuItem(subxsheetMenu, MI_OpenChild);
842 addMenuItem(subxsheetMenu, MI_CloseChild);
843 addMenuItem(subxsheetMenu, MI_Collapse);
844 addMenuItem(subxsheetMenu, MI_ToggleEditInPlace);
845 addMenuItem(subxsheetMenu, MI_Resequence);
846 addMenuItem(subxsheetMenu, MI_SaveSubxsheetAs);
847 addMenuItem(subxsheetMenu, MI_LoadSubSceneFile);
848 addMenuItem(subxsheetMenu, MI_CloneChild);
849 addMenuItem(subxsheetMenu, MI_ExplodeChild);
850
851 //----Levels Menu
852 QMenu *levelsMenu = addMenu(tr("Levels"), xsheetMenuBar);
853 addMenuItem(levelsMenu, MI_LoadLevel);
854 addMenuItem(levelsMenu, MI_LoadFolder);
855 addMenuItem(levelsMenu, MI_SaveLevel);
856 addMenuItem(levelsMenu, MI_SaveLevelAs);
857 addMenuItem(levelsMenu, MI_ExportLevel);
858 addMenuItem(levelsMenu, MI_OpenRecentLevel);
859 addMenuItem(levelsMenu, MI_LevelSettings);
860 addMenuItem(levelsMenu, MI_CanvasSize);
861 levelsMenu->addSeparator();
862 addMenuItem(levelsMenu, MI_NewLevel);
863 levelsMenu->addSeparator();
864 addMenuItem(levelsMenu, MI_ViewFile);
865 addMenuItem(levelsMenu, MI_FileInfo);
866 levelsMenu->addSeparator();
867 addMenuItem(levelsMenu, MI_CloneLevel);
868 addMenuItem(levelsMenu, MI_ReplaceLevel);
869 levelsMenu->addSeparator();
870 addMenuItem(levelsMenu, MI_AddFrames);
871 addMenuItem(levelsMenu, MI_Renumber);
872 addMenuItem(levelsMenu, MI_RevertToCleanedUp);
873 addMenuItem(levelsMenu, MI_ConvertToVectors);
874 addMenuItem(levelsMenu, MI_ConvertFileWithInput);
875 addMenuItem(levelsMenu, MI_Tracking);
876 addMenuItem(levelsMenu, MI_ExposeResource);
877 addMenuItem(levelsMenu, MI_EditLevel);
878 addMenuItem(levelsMenu, MI_RemoveUnused);
879
880 //----Cells Menu
881 QMenu *cellsMenu = addMenu(tr("Cells"), xsheetMenuBar);
882 addMenuItem(cellsMenu, MI_Dup);
883 addMenuItem(cellsMenu, MI_Reverse);
884 addMenuItem(cellsMenu, MI_Rollup);
885 addMenuItem(cellsMenu, MI_Rolldown);
886 addMenuItem(cellsMenu, MI_Swing);
887 addMenuItem(cellsMenu, MI_Random);
888 addMenuItem(cellsMenu, MI_TimeStretch);
889 cellsMenu->addSeparator();
890 QMenu *reframeSubMenu = cellsMenu->addMenu(tr("Reframe"));
891 {
892 addMenuItem(reframeSubMenu, MI_Reframe1);
893 addMenuItem(reframeSubMenu, MI_Reframe2);
894 addMenuItem(reframeSubMenu, MI_Reframe3);
895 addMenuItem(reframeSubMenu, MI_Reframe4);
896 }
897 QMenu *stepMenu = cellsMenu->addMenu(tr("Step"));
898 {
899 addMenuItem(stepMenu, MI_Step2);
900 addMenuItem(stepMenu, MI_Step3);
901 addMenuItem(stepMenu, MI_Step4);
902 }
903 QMenu *eachMenu = cellsMenu->addMenu(tr("Each"));
904 {
905 addMenuItem(eachMenu, MI_Each2);
906 addMenuItem(eachMenu, MI_Each3);
907 addMenuItem(eachMenu, MI_Each4);
908 }
909
910 //----Edit Menu
911 QMenu *editMenu = addMenu(tr("Edit"), xsheetMenuBar);
912 addMenuItem(editMenu, MI_Undo);
913 addMenuItem(editMenu, MI_Redo);
914 editMenu->addSeparator();
915 addMenuItem(editMenu, MI_Copy);
916 addMenuItem(editMenu, MI_Cut);
917 addMenuItem(editMenu, MI_Paste);
918 addMenuItem(editMenu, MI_PasteAbove);
919 addMenuItem(editMenu, MI_PasteInto);
920 editMenu->addSeparator();
921 addMenuItem(editMenu, MI_Clear);
922 addMenuItem(editMenu, MI_Insert);
923 addMenuItem(editMenu, MI_InsertAbove);
924 addMenuItem(editMenu, MI_SelectAll);
925 addMenuItem(editMenu, MI_InvertSelection);
926 editMenu->addSeparator();
927 addMenuItem(editMenu, MI_InsertSceneFrame);
928 addMenuItem(editMenu, MI_RemoveSceneFrame);
929 addMenuItem(editMenu, MI_InsertGlobalKeyframe);
930 addMenuItem(editMenu, MI_RemoveGlobalKeyframe);
931
932 //---Render Menu
933 QMenu *renderMenu = addMenu(tr("Render"), xsheetMenuBar);
934 addMenuItem(renderMenu, MI_PreviewSettings);
935 addMenuItem(renderMenu, MI_Preview);
936 addMenuItem(renderMenu, MI_SavePreviewedFrames);
937 renderMenu->addSeparator();
938 addMenuItem(renderMenu, MI_OutputSettings);
939 addMenuItem(renderMenu, MI_Render);
940 renderMenu->addSeparator();
941 addMenuItem(renderMenu, MI_Link);
942
943 //----Windows Menu
944 QMenu *windowsMenu = addMenu(tr("Windows"), xsheetMenuBar);
945 addMenuItem(windowsMenu, MI_OpenSchematic);
946 addMenuItem(windowsMenu, MI_OpenComboViewer);
947 addMenuItem(windowsMenu, MI_OpenFileBrowser);
948 addMenuItem(windowsMenu, MI_OpenFunctionEditor);
949 addMenuItem(windowsMenu, MI_OpenFileViewer);
950 addMenuItem(windowsMenu, MI_OpenFilmStrip);
951 addMenuItem(windowsMenu, MI_OpenLevelView);
952 addMenuItem(windowsMenu, MI_OpenXshView);
953 addMenuItem(windowsMenu, MI_OpenTimelineView);
954 windowsMenu->addSeparator();
955 QMenu *otherWindowsMenu = windowsMenu->addMenu(tr("Other Windows"));
956 {
957 addMenuItem(otherWindowsMenu, MI_OpenBatchServers);
958 addMenuItem(otherWindowsMenu, MI_OpenColorModel);
959 addMenuItem(otherWindowsMenu, MI_OpenPalette);
960 addMenuItem(otherWindowsMenu, MI_OpenFileBrowser2);
961 addMenuItem(otherWindowsMenu, MI_OpenStudioPalette);
962 addMenuItem(otherWindowsMenu, MI_OpenStyleControl);
963 addMenuItem(otherWindowsMenu, MI_OpenTasks);
964 addMenuItem(otherWindowsMenu, MI_OpenToolbar);
965 addMenuItem(otherWindowsMenu, MI_OpenToolOptionBar);
966 addMenuItem(otherWindowsMenu, MI_OpenHistoryPanel);
967 addMenuItem(otherWindowsMenu, MI_OpenTMessage);
968 }
969
970 //---Customize Menu
971 QMenu *customizeMenu = addMenu(tr("Customize"), xsheetMenuBar);
972 addMenuItem(customizeMenu, MI_Preferences);
973 addMenuItem(customizeMenu, MI_ShortcutPopup);
974 addMenuItem(customizeMenu, MI_SceneSettings);
975 customizeMenu->addSeparator();
976 QMenu *viewPartsMenu = customizeMenu->addMenu(tr("View"));
977 {
978 addMenuItem(viewPartsMenu, MI_ViewCamera);
979 addMenuItem(viewPartsMenu, MI_ViewTable);
980 addMenuItem(viewPartsMenu, MI_FieldGuide);
981 addMenuItem(viewPartsMenu, MI_SafeArea);
982 addMenuItem(viewPartsMenu, MI_ViewBBox);
983 addMenuItem(viewPartsMenu, MI_ViewColorcard);
984 }
985 customizeMenu->addSeparator();
986 addMenuItem(customizeMenu, MI_DockingCheck);
987 customizeMenu->addSeparator();
988 addMenuItem(customizeMenu, "MI_RunScript");
989 addMenuItem(customizeMenu, "MI_OpenScriptConsole");
990 #ifndef NDEBUG
991 addMenuItem(customizeMenu, "MI_ReloadStyle");
992 #endif
993
994 //---Help Menu
995 QMenu *helpMenu = addMenu(tr("Help"), xsheetMenuBar);
996 addMenuItem(helpMenu, MI_About);
997
998 return xsheetMenuBar;
999 }
1000
1001 //---------------------------------------------------------------------------------
1002
createBatchesMenuBar()1003 QMenuBar *StackedMenuBar::createBatchesMenuBar() {
1004 QMenuBar *batchesMenuBar = new QMenuBar(this);
1005
1006 //---Files Menu
1007 QMenu *filesMenu = addMenu(tr("Files"), batchesMenuBar);
1008 addMenuItem(filesMenu, MI_Quit);
1009
1010 //----Windows Menu
1011 QMenu *windowsMenu = addMenu(tr("Windows"), batchesMenuBar);
1012 addMenuItem(windowsMenu, MI_OpenFileBrowser);
1013 addMenuItem(windowsMenu, MI_OpenBatchServers);
1014 addMenuItem(windowsMenu, MI_OpenTasks);
1015
1016 //---Customize Menu
1017 QMenu *customizeMenu = addMenu(tr("Customize"), batchesMenuBar);
1018 addMenuItem(customizeMenu, MI_Preferences);
1019 addMenuItem(customizeMenu, MI_ShortcutPopup);
1020 customizeMenu->addSeparator();
1021 addMenuItem(customizeMenu, MI_DockingCheck);
1022 customizeMenu->addSeparator();
1023 addMenuItem(customizeMenu, "MI_RunScript");
1024 addMenuItem(customizeMenu, "MI_OpenScriptConsole");
1025 #ifndef NDEBUG
1026 addMenuItem(customizeMenu, "MI_ReloadStyle");
1027 #endif
1028
1029 //---Help Menu
1030 QMenu *helpMenu = addMenu(tr("Help"), batchesMenuBar);
1031 addMenuItem(helpMenu, MI_About);
1032
1033 return batchesMenuBar;
1034 }
1035
1036 //---------------------------------------------------------------------------------
1037
createBrowserMenuBar()1038 QMenuBar *StackedMenuBar::createBrowserMenuBar() {
1039 QMenuBar *browserMenuBar = new QMenuBar(this);
1040
1041 //---Files Menu
1042 QMenu *filesMenu = addMenu(tr("Files"), browserMenuBar);
1043 addMenuItem(filesMenu, MI_NewProject);
1044 addMenuItem(filesMenu, MI_ProjectSettings);
1045 addMenuItem(filesMenu, MI_SaveDefaultSettings);
1046 filesMenu->addSeparator();
1047 addMenuItem(filesMenu, MI_Quit);
1048
1049 //---Customize Menu
1050 QMenu *customizeMenu = addMenu(tr("Customize"), browserMenuBar);
1051 addMenuItem(customizeMenu, MI_Preferences);
1052 addMenuItem(customizeMenu, MI_ShortcutPopup);
1053 customizeMenu->addSeparator();
1054 addMenuItem(customizeMenu, MI_DockingCheck);
1055 customizeMenu->addSeparator();
1056 addMenuItem(customizeMenu, "MI_RunScript");
1057 addMenuItem(customizeMenu, "MI_OpenScriptConsole");
1058 #ifndef NDEBUG
1059 addMenuItem(customizeMenu, "MI_ReloadStyle");
1060 #endif
1061
1062 // iwsw commented out temporarily
1063 // customizeMenu->addSeparator();
1064 // addMenuItem(customizeMenu, "MI_ToonShadedImageToTLVByFolder");
1065
1066 //---Help Menu
1067 QMenu *helpMenu = addMenu(tr("Help"), browserMenuBar);
1068 addMenuItem(helpMenu, MI_About);
1069
1070 return browserMenuBar;
1071 }
1072
1073 //---------------------------------------------------------------------------------
1074
createFullMenuBar()1075 QMenuBar *StackedMenuBar::createFullMenuBar() {
1076 QMenuBar *fullMenuBar = new QMenuBar(this);
1077 // Menu' FILE
1078 QMenu *fileMenu = addMenu(tr("File"), fullMenuBar);
1079 addMenuItem(fileMenu, MI_NewScene);
1080 addMenuItem(fileMenu, MI_LoadScene);
1081 addMenuItem(fileMenu, MI_SaveAll);
1082 addMenuItem(fileMenu, MI_SaveScene);
1083 addMenuItem(fileMenu, MI_SaveSceneAs);
1084 addMenuItem(fileMenu, MI_OpenRecentScene);
1085 addMenuItem(fileMenu, MI_RevertScene);
1086 fileMenu->addSeparator();
1087 addMenuItem(fileMenu, MI_LoadFolder);
1088 addMenuItem(fileMenu, MI_LoadSubSceneFile);
1089 fileMenu->addSeparator();
1090 addMenuItem(fileMenu, MI_ConvertFileWithInput);
1091 fileMenu->addSeparator();
1092 addMenuItem(fileMenu, MI_LoadColorModel);
1093 fileMenu->addSeparator();
1094 QMenu *projectManagementMenu = fileMenu->addMenu(tr("Project Management"));
1095 {
1096 addMenuItem(projectManagementMenu, MI_NewProject);
1097 addMenuItem(projectManagementMenu, MI_ProjectSettings);
1098 projectManagementMenu->addSeparator();
1099 addMenuItem(projectManagementMenu, MI_SaveDefaultSettings);
1100 }
1101 fileMenu->addSeparator();
1102 QMenu *importMenu = fileMenu->addMenu(tr("Import"));
1103 { addMenuItem(importMenu, MI_ImportMagpieFile); }
1104 QMenu *exportMenu = fileMenu->addMenu(tr("Export"));
1105 {
1106 addMenuItem(exportMenu, MI_SoundTrack);
1107 addMenuItem(exportMenu, MI_ExportXDTS);
1108 #if defined(x64)
1109 addMenuItem(exportMenu, MI_StopMotionExportImageSequence);
1110 #endif
1111 }
1112 fileMenu->addSeparator();
1113 addMenuItem(fileMenu, MI_PrintXsheet);
1114 addMenuItem(fileMenu, MI_Print);
1115 addMenuItem(fileMenu, MI_Export);
1116 fileMenu->addSeparator();
1117 QMenu *scriptMenu = fileMenu->addMenu(tr("Script"));
1118 {
1119 addMenuItem(scriptMenu, "MI_RunScript");
1120 addMenuItem(scriptMenu, "MI_OpenScriptConsole");
1121 }
1122 fileMenu->addSeparator();
1123 addMenuItem(fileMenu, MI_Preferences);
1124 addMenuItem(fileMenu, MI_ShortcutPopup);
1125 fileMenu->addSeparator();
1126 addMenuItem(fileMenu, MI_ClearCacheFolder);
1127 fileMenu->addSeparator();
1128 addMenuItem(fileMenu, MI_Quit);
1129
1130 // Menu' EDIT
1131 QMenu *editMenu = addMenu(tr("Edit"), fullMenuBar);
1132 addMenuItem(editMenu, MI_Undo);
1133 addMenuItem(editMenu, MI_Redo);
1134 editMenu->addSeparator();
1135 addMenuItem(editMenu, MI_Cut);
1136 addMenuItem(editMenu, MI_Copy);
1137 addMenuItem(editMenu, MI_Paste);
1138 addMenuItem(editMenu, MI_PasteAbove);
1139 // addMenuItem(editMenu, MI_PasteNew);
1140 addMenuItem(editMenu, MI_PasteInto);
1141 addMenuItem(editMenu, MI_PasteDuplicate);
1142 addMenuItem(editMenu, MI_Insert);
1143 addMenuItem(editMenu, MI_InsertAbove);
1144 addMenuItem(editMenu, MI_Clear);
1145 editMenu->addSeparator();
1146 addMenuItem(editMenu, MI_SelectAll);
1147 addMenuItem(editMenu, MI_InvertSelection);
1148 editMenu->addSeparator();
1149 QMenu *groupMenu = editMenu->addMenu(tr("Group"));
1150 {
1151 addMenuItem(groupMenu, MI_Group);
1152 addMenuItem(groupMenu, MI_Ungroup);
1153 addMenuItem(groupMenu, MI_EnterGroup);
1154 addMenuItem(groupMenu, MI_ExitGroup);
1155 }
1156 editMenu->addSeparator();
1157 QMenu *arrangeMenu = editMenu->addMenu(tr("Arrange"));
1158 {
1159 addMenuItem(arrangeMenu, MI_BringToFront);
1160 addMenuItem(arrangeMenu, MI_BringForward);
1161 addMenuItem(arrangeMenu, MI_SendBackward);
1162 addMenuItem(arrangeMenu, MI_SendBack);
1163 }
1164
1165 // Menu' SCAN CLEANUP
1166 QMenu *scanCleanupMenu = addMenu(tr("Scan && Cleanup"), fullMenuBar);
1167 addMenuItem(scanCleanupMenu, MI_DefineScanner);
1168 addMenuItem(scanCleanupMenu, MI_ScanSettings);
1169 addMenuItem(scanCleanupMenu, MI_Scan);
1170 addMenuItem(scanCleanupMenu, MI_SetScanCropbox);
1171 addMenuItem(scanCleanupMenu, MI_ResetScanCropbox);
1172 scanCleanupMenu->addSeparator();
1173 addMenuItem(scanCleanupMenu, MI_CleanupSettings);
1174 addMenuItem(scanCleanupMenu, MI_CleanupPreview);
1175 addMenuItem(scanCleanupMenu, MI_CameraTest);
1176 addMenuItem(scanCleanupMenu, MI_Cleanup);
1177 scanCleanupMenu->addSeparator();
1178 addMenuItem(scanCleanupMenu, MI_PencilTest);
1179 #ifdef LINETEST
1180 scanCleanupMenu->addSeparator();
1181 addMenuItem(scanCleanupMenu, MI_Autocenter);
1182 #endif
1183
1184 // Menu' LEVEL
1185 QMenu *levelMenu = addMenu(tr("Level"), fullMenuBar);
1186 QMenu *newMenu = levelMenu->addMenu(tr("New"));
1187 {
1188 addMenuItem(newMenu, MI_NewLevel);
1189 newMenu->addSeparator();
1190 addMenuItem(newMenu, MI_NewToonzRasterLevel);
1191 addMenuItem(newMenu, MI_NewVectorLevel);
1192 addMenuItem(newMenu, MI_NewRasterLevel);
1193 addMenuItem(newMenu, MI_NewNoteLevel);
1194 }
1195 addMenuItem(levelMenu, MI_LoadLevel);
1196 addMenuItem(levelMenu, MI_SaveLevel);
1197 addMenuItem(levelMenu, MI_SaveLevelAs);
1198 addMenuItem(levelMenu, MI_SaveAllLevels);
1199 addMenuItem(levelMenu, MI_OpenRecentLevel);
1200 addMenuItem(levelMenu, MI_ExportLevel);
1201 levelMenu->addSeparator();
1202 addMenuItem(levelMenu, MI_AddFrames);
1203 addMenuItem(levelMenu, MI_Renumber);
1204 addMenuItem(levelMenu, MI_ReplaceLevel);
1205 addMenuItem(levelMenu, MI_RevertToCleanedUp);
1206 addMenuItem(levelMenu, MI_RevertToLastSaved);
1207 addMenuItem(levelMenu, MI_Tracking);
1208 levelMenu->addSeparator();
1209 QMenu *adjustMenu = levelMenu->addMenu(tr("Adjust"));
1210 {
1211 addMenuItem(adjustMenu, MI_BrightnessAndContrast);
1212 addMenuItem(adjustMenu, MI_AdjustLevels);
1213 addMenuItem(adjustMenu, MI_AdjustThickness);
1214 addMenuItem(adjustMenu, MI_Antialias);
1215 addMenuItem(adjustMenu, MI_Binarize);
1216 addMenuItem(adjustMenu, MI_LinesFade);
1217 }
1218 QMenu *optimizeMenu = levelMenu->addMenu(tr("Optimize"));
1219 {
1220 addMenuItem(optimizeMenu, MI_RemoveEndpoints);
1221 addMenuItem(optimizeMenu, MI_ConvertVectorToVector);
1222 }
1223 QMenu *convertMenu = levelMenu->addMenu(tr("Convert"));
1224 {
1225 addMenuItem(convertMenu, MI_ConvertToVectors);
1226 addMenuItem(convertMenu, MI_ConvertToToonzRaster);
1227 }
1228 levelMenu->addSeparator();
1229 addMenuItem(levelMenu, MI_ExposeResource);
1230 addMenuItem(levelMenu, MI_EditLevel);
1231 levelMenu->addSeparator();
1232 addMenuItem(levelMenu, MI_CanvasSize);
1233 addMenuItem(levelMenu, MI_LevelSettings);
1234 addMenuItem(levelMenu, MI_FileInfo);
1235 addMenuItem(levelMenu, MI_ReplaceParentDirectory);
1236 levelMenu->addSeparator();
1237 addMenuItem(levelMenu, MI_RemoveUnused);
1238
1239 // Menu' XSHEET
1240 QMenu *xsheetMenu = addMenu(tr("Xsheet"), fullMenuBar);
1241 addMenuItem(xsheetMenu, MI_SceneSettings);
1242 addMenuItem(xsheetMenu, MI_CameraSettings);
1243 xsheetMenu->addSeparator();
1244 addMenuItem(xsheetMenu, MI_OpenChild);
1245 addMenuItem(xsheetMenu, MI_CloseChild);
1246 addMenuItem(xsheetMenu, MI_SaveSubxsheetAs);
1247 addMenuItem(xsheetMenu, MI_Collapse);
1248 addMenuItem(xsheetMenu, MI_Resequence);
1249 addMenuItem(xsheetMenu, MI_CloneChild);
1250 addMenuItem(xsheetMenu, MI_ExplodeChild);
1251 addMenuItem(xsheetMenu, MI_ToggleEditInPlace);
1252 xsheetMenu->addSeparator();
1253 addMenuItem(xsheetMenu, MI_ApplyMatchLines);
1254 addMenuItem(xsheetMenu, MI_MergeCmapped);
1255 xsheetMenu->addSeparator();
1256 addMenuItem(xsheetMenu, MI_MergeColumns);
1257 addMenuItem(xsheetMenu, MI_DeleteMatchLines);
1258 addMenuItem(xsheetMenu, MI_DeleteInk);
1259 xsheetMenu->addSeparator();
1260 addMenuItem(xsheetMenu, MI_InsertFx);
1261 addMenuItem(xsheetMenu, MI_NewOutputFx);
1262 xsheetMenu->addSeparator();
1263 addMenuItem(xsheetMenu, MI_InsertSceneFrame);
1264 addMenuItem(xsheetMenu, MI_RemoveSceneFrame);
1265 addMenuItem(xsheetMenu, MI_InsertGlobalKeyframe);
1266 addMenuItem(xsheetMenu, MI_RemoveGlobalKeyframe);
1267 xsheetMenu->addSeparator();
1268 addMenuItem(xsheetMenu, MI_LipSyncPopup);
1269 xsheetMenu->addSeparator();
1270 addMenuItem(xsheetMenu, MI_RemoveEmptyColumns);
1271
1272 // Menu' CELLS
1273 QMenu *cellsMenu = addMenu(tr("Cells"), fullMenuBar);
1274 addMenuItem(cellsMenu, MI_Reverse);
1275 addMenuItem(cellsMenu, MI_Swing);
1276 addMenuItem(cellsMenu, MI_Random);
1277 addMenuItem(cellsMenu, MI_Increment);
1278 addMenuItem(cellsMenu, MI_Dup);
1279 cellsMenu->addSeparator();
1280 QMenu *reframeMenu = cellsMenu->addMenu(tr("Reframe"));
1281 {
1282 addMenuItem(reframeMenu, MI_Reframe1);
1283 addMenuItem(reframeMenu, MI_Reframe2);
1284 addMenuItem(reframeMenu, MI_Reframe3);
1285 addMenuItem(reframeMenu, MI_Reframe4);
1286 addMenuItem(reframeMenu, MI_ReframeWithEmptyInbetweens);
1287 }
1288 QMenu *stepMenu = cellsMenu->addMenu(tr("Step"));
1289 {
1290 addMenuItem(stepMenu, MI_IncreaseStep);
1291 addMenuItem(stepMenu, MI_DecreaseStep);
1292 addMenuItem(stepMenu, MI_ResetStep);
1293 addMenuItem(stepMenu, MI_Step2);
1294 addMenuItem(stepMenu, MI_Step3);
1295 addMenuItem(stepMenu, MI_Step4);
1296 }
1297 QMenu *eachMenu = cellsMenu->addMenu(tr("Each"));
1298 {
1299 addMenuItem(eachMenu, MI_Each2);
1300 addMenuItem(eachMenu, MI_Each3);
1301 addMenuItem(eachMenu, MI_Each4);
1302 }
1303 addMenuItem(cellsMenu, MI_Rollup);
1304 addMenuItem(cellsMenu, MI_Rolldown);
1305 addMenuItem(cellsMenu, MI_TimeStretch);
1306 addMenuItem(cellsMenu, MI_AutoInputCellNumber);
1307 cellsMenu->addSeparator();
1308 QMenu *drawingSubMenu = cellsMenu->addMenu(tr("Drawing Substitution"));
1309 {
1310 addMenuItem(drawingSubMenu, MI_DrawingSubForward);
1311 addMenuItem(drawingSubMenu, MI_DrawingSubBackward);
1312 addMenuItem(drawingSubMenu, MI_DrawingSubGroupForward);
1313 addMenuItem(drawingSubMenu, MI_DrawingSubGroupBackward);
1314 }
1315 cellsMenu->addSeparator();
1316 addMenuItem(cellsMenu, MI_Autorenumber);
1317 addMenuItem(cellsMenu, MI_CreateBlankDrawing);
1318 addMenuItem(cellsMenu, MI_Duplicate);
1319 addMenuItem(cellsMenu, MI_MergeFrames);
1320 addMenuItem(cellsMenu, MI_CloneLevel);
1321 cellsMenu->addSeparator();
1322 addMenuItem(cellsMenu, MI_FillEmptyCell);
1323
1324 // Menu' PLAY
1325 QMenu *playMenu = addMenu(tr("Play"), fullMenuBar);
1326 addMenuItem(playMenu, MI_Play);
1327 addMenuItem(playMenu, MI_Pause);
1328 addMenuItem(playMenu, MI_Loop);
1329 playMenu->addSeparator();
1330 addMenuItem(playMenu, MI_FirstFrame);
1331 addMenuItem(playMenu, MI_LastFrame);
1332 addMenuItem(playMenu, MI_PrevFrame);
1333 addMenuItem(playMenu, MI_NextFrame);
1334 addMenuItem(playMenu, MI_PrevStep);
1335 addMenuItem(playMenu, MI_NextStep);
1336 playMenu->addSeparator();
1337 addMenuItem(playMenu, MI_PrevDrawing);
1338 addMenuItem(playMenu, MI_NextDrawing);
1339 addMenuItem(playMenu, MI_PrevKeyframe);
1340 addMenuItem(playMenu, MI_NextKeyframe);
1341 playMenu->addSeparator();
1342 addMenuItem(playMenu, MI_Link);
1343
1344 // Menu' RENDER
1345 QMenu *renderMenu = addMenu(tr("Render"), fullMenuBar);
1346 addMenuItem(renderMenu, MI_PreviewSettings);
1347 addMenuItem(renderMenu, MI_Preview);
1348 // addMenuItem(renderMenu, MI_SavePreview);
1349 addMenuItem(renderMenu, MI_SavePreviewedFrames);
1350 renderMenu->addSeparator();
1351 addMenuItem(renderMenu, MI_OutputSettings);
1352 addMenuItem(renderMenu, MI_Render);
1353 renderMenu->addSeparator();
1354 addMenuItem(renderMenu, MI_FastRender);
1355
1356 // Menu' VIEW
1357 QMenu *viewMenu = addMenu(tr("View"), fullMenuBar);
1358 addMenuItem(viewMenu, MI_ViewTable);
1359 addMenuItem(viewMenu, MI_ViewCamera);
1360 addMenuItem(viewMenu, MI_ViewColorcard);
1361 addMenuItem(viewMenu, MI_ViewBBox);
1362 viewMenu->addSeparator();
1363 addMenuItem(viewMenu, MI_SafeArea);
1364 addMenuItem(viewMenu, MI_FieldGuide);
1365 addMenuItem(viewMenu, MI_ViewRuler);
1366 addMenuItem(viewMenu, MI_ViewGuide);
1367 viewMenu->addSeparator();
1368 addMenuItem(viewMenu, MI_TCheck);
1369 addMenuItem(viewMenu, MI_ICheck);
1370 addMenuItem(viewMenu, MI_Ink1Check);
1371 addMenuItem(viewMenu, MI_PCheck);
1372 addMenuItem(viewMenu, MI_IOnly);
1373 addMenuItem(viewMenu, MI_BCheck);
1374 addMenuItem(viewMenu, MI_GCheck);
1375 addMenuItem(viewMenu, MI_ACheck);
1376 viewMenu->addSeparator();
1377 addMenuItem(viewMenu, MI_ShiftTrace);
1378 addMenuItem(viewMenu, MI_EditShift);
1379 addMenuItem(viewMenu, MI_NoShift);
1380 addMenuItem(viewMenu, MI_ResetShift);
1381 viewMenu->addSeparator();
1382 addMenuItem(viewMenu, MI_VectorGuidedDrawing);
1383 viewMenu->addSeparator();
1384 addMenuItem(viewMenu, MI_RasterizePli);
1385
1386 // Menu' WINDOWS
1387 QMenu *windowsMenu = addMenu(tr("Windows"), fullMenuBar);
1388 QMenu *workspaceMenu = windowsMenu->addMenu(tr("Workspace"));
1389 {
1390 addMenuItem(workspaceMenu, MI_DockingCheck);
1391 workspaceMenu->addSeparator();
1392 addMenuItem(workspaceMenu, MI_ResetRoomLayout);
1393 }
1394 addMenuItem(windowsMenu, MI_OpenCommandToolbar);
1395 addMenuItem(windowsMenu, MI_OpenToolbar);
1396 addMenuItem(windowsMenu, MI_OpenToolOptionBar);
1397 windowsMenu->addSeparator();
1398 addMenuItem(windowsMenu, MI_OpenStyleControl);
1399 addMenuItem(windowsMenu, MI_OpenPalette);
1400 addMenuItem(windowsMenu, MI_OpenStudioPalette);
1401 addMenuItem(windowsMenu, MI_OpenColorModel);
1402 windowsMenu->addSeparator();
1403 addMenuItem(windowsMenu, MI_OpenComboViewer);
1404 addMenuItem(windowsMenu, MI_OpenLevelView);
1405 addMenuItem(windowsMenu, MI_OpenFileViewer);
1406 windowsMenu->addSeparator();
1407 addMenuItem(windowsMenu, MI_OpenXshView);
1408 addMenuItem(windowsMenu, MI_OpenTimelineView);
1409 addMenuItem(windowsMenu, MI_OpenFunctionEditor);
1410 addMenuItem(windowsMenu, MI_OpenSchematic);
1411 addMenuItem(windowsMenu, MI_FxParamEditor);
1412 addMenuItem(windowsMenu, MI_OpenFilmStrip);
1413 windowsMenu->addSeparator();
1414 addMenuItem(windowsMenu, MI_OpenFileBrowser);
1415 addMenuItem(windowsMenu, MI_OpenFileBrowser2);
1416 windowsMenu->addSeparator();
1417 addMenuItem(windowsMenu, MI_OpenCleanupSettings);
1418 addMenuItem(windowsMenu, MI_OpenTasks);
1419 addMenuItem(windowsMenu, MI_OpenBatchServers);
1420 addMenuItem(windowsMenu, MI_OpenTMessage);
1421 addMenuItem(windowsMenu, MI_OpenHistoryPanel);
1422 addMenuItem(windowsMenu, MI_AudioRecording);
1423 #if defined(x64)
1424 addMenuItem(windowsMenu, MI_OpenStopMotionPanel);
1425 #endif
1426 addMenuItem(windowsMenu, MI_StartupPopup);
1427 addMenuItem(windowsMenu, MI_OpenGuidedDrawingControls);
1428 // windowsMenu->addSeparator();
1429 // addMenuItem(windowsMenu, MI_OpenExport);
1430 windowsMenu->addSeparator();
1431 addMenuItem(windowsMenu, MI_MaximizePanel);
1432 addMenuItem(windowsMenu, MI_FullScreenWindow);
1433
1434 // Menu' HELP
1435 QMenu *helpMenu = addMenu(tr("Help"), fullMenuBar);
1436 addMenuItem(helpMenu, MI_OpenOnlineManual);
1437 addMenuItem(helpMenu, MI_OpenWhatsNew);
1438 addMenuItem(helpMenu, MI_OpenCommunityForum);
1439 helpMenu->addSeparator();
1440 addMenuItem(helpMenu, MI_OpenReportABug);
1441 helpMenu->addSeparator();
1442 addMenuItem(helpMenu, MI_About);
1443
1444 // addMenuItem(fileMenu, MI_TestAnimation);
1445 // fileMenu->addSeparator();
1446 #ifndef NDEBUG
1447 addMenuItem(fileMenu, "MI_ReloadStyle");
1448 #endif
1449
1450 return fullMenuBar;
1451 }
1452
1453 //-----------------------------------------------------------------------------
1454
addMenu(const QString & menuName,QMenuBar * menuBar)1455 QMenu *StackedMenuBar::addMenu(const QString &menuName, QMenuBar *menuBar) {
1456 QMenu *menu = new QMenu(menuName, menuBar);
1457 menuBar->addMenu(menu);
1458 return menu;
1459 }
1460
1461 //-----------------------------------------------------------------------------
1462
addMenuItem(QMenu * menu,const char * cmdId)1463 void StackedMenuBar::addMenuItem(QMenu *menu, const char *cmdId) {
1464 QAction *action = CommandManager::instance()->getAction(cmdId);
1465 if (!action) return;
1466 assert(action); // check MainWindow::defineActions() if assert fails
1467 menu->addAction(action);
1468 }
1469
1470 //-----------------------------------------------------------------------------
1471
onIndexSwapped(int firstIndex,int secondIndex)1472 void StackedMenuBar::onIndexSwapped(int firstIndex, int secondIndex) {
1473 assert(firstIndex >= 0 && secondIndex >= 0);
1474 QWidget *menuBar = widget(firstIndex);
1475 removeWidget(menuBar);
1476 insertWidget(secondIndex, menuBar);
1477 }
1478
1479 //-----------------------------------------------------------------------------
1480
insertNewMenuBar()1481 void StackedMenuBar::insertNewMenuBar() {
1482 insertWidget(0, createFullMenuBar());
1483 }
1484
1485 //-----------------------------------------------------------------------------
1486
deleteMenuBar(int index)1487 void StackedMenuBar::deleteMenuBar(int index) {
1488 QWidget *menuBar = widget(index);
1489 removeWidget(menuBar);
1490 delete menuBar;
1491 }
1492
1493 //-----------------------------------------------------------------------------
1494
doCustomizeMenuBar(int index)1495 void StackedMenuBar::doCustomizeMenuBar(int index) {
1496 MainWindow *mainWin =
1497 dynamic_cast<MainWindow *>(TApp::instance()->getMainWindow());
1498 assert(mainWin);
1499 Room *room = mainWin->getRoom(index);
1500 if (!room) return;
1501
1502 MenuBarPopup mbPopup(room);
1503
1504 if (mbPopup.exec()) {
1505 /*- OKが押され、roomname_menubar.xmlが更新された状態 -*/
1506 /*- xmlファイルからメニューバーを作り直して格納 -*/
1507 std::string mbFileName = room->getPath().getName() + "_menubar.xml";
1508 TFilePath mbPath = ToonzFolder::getMyRoomsDir() + mbFileName;
1509 if (!TFileStatus(mbPath).isReadable()) {
1510 DVGui::warning(tr("Cannot open menubar settings file %1")
1511 .arg(QString::fromStdString(mbFileName)));
1512 return;
1513 }
1514 QMenuBar *newMenu = loadMenuBar(mbPath);
1515 if (!newMenu) {
1516 DVGui::warning(tr("Failed to create menubar"));
1517 return;
1518 }
1519
1520 QWidget *oldMenu = widget(index);
1521 removeWidget(oldMenu);
1522 insertWidget(index, newMenu);
1523 delete oldMenu;
1524
1525 setCurrentIndex(index);
1526 }
1527 }
1528
1529 //=============================================================================
1530 // DvTopBar
1531 //-----------------------------------------------------------------------------
1532
TopBar(QWidget * parent)1533 TopBar::TopBar(QWidget *parent) : QToolBar(parent) {
1534 setAllowedAreas(Qt::TopToolBarArea);
1535 setMovable(false);
1536 setFloatable(false);
1537 setObjectName("TopBar");
1538
1539 m_containerFrame = new QFrame(this);
1540 m_roomTabBar = new RoomTabWidget(this);
1541 m_stackedMenuBar = new StackedMenuBar(this);
1542 m_lockRoomCB = new QCheckBox(this);
1543
1544 m_containerFrame->setObjectName("TopBarTabContainer");
1545 m_roomTabBar->setObjectName("TopBarTab");
1546 m_roomTabBar->setDrawBase(false);
1547 m_lockRoomCB->setObjectName("EditToolLockButton");
1548 m_lockRoomCB->setToolTip(tr("Lock Rooms Tab"));
1549 m_lockRoomCB->setChecked(m_roomTabBar->isLocked());
1550
1551 QHBoxLayout *mainLayout = new QHBoxLayout();
1552 mainLayout->setSpacing(0);
1553 mainLayout->setMargin(0);
1554 {
1555 QVBoxLayout *menuLayout = new QVBoxLayout();
1556 menuLayout->setSpacing(0);
1557 menuLayout->setMargin(0);
1558 {
1559 menuLayout->addStretch(1);
1560 menuLayout->addWidget(m_stackedMenuBar, 0);
1561 menuLayout->addStretch(1);
1562 }
1563 mainLayout->addLayout(menuLayout);
1564 mainLayout->addStretch(1);
1565 mainLayout->addWidget(m_roomTabBar, 0);
1566 mainLayout->addSpacing(2);
1567 mainLayout->addWidget(m_lockRoomCB, 0);
1568 }
1569 m_containerFrame->setLayout(mainLayout);
1570 addWidget(m_containerFrame);
1571
1572 bool ret = true;
1573 ret = ret && connect(m_roomTabBar, SIGNAL(currentChanged(int)),
1574 m_stackedMenuBar, SLOT(setCurrentIndex(int)));
1575
1576 ret = ret && connect(m_roomTabBar, SIGNAL(indexSwapped(int, int)),
1577 m_stackedMenuBar, SLOT(onIndexSwapped(int, int)));
1578 ret = ret && connect(m_roomTabBar, SIGNAL(insertNewTabRoom()),
1579 m_stackedMenuBar, SLOT(insertNewMenuBar()));
1580 ret = ret && connect(m_roomTabBar, SIGNAL(deleteTabRoom(int)),
1581 m_stackedMenuBar, SLOT(deleteMenuBar(int)));
1582 ret = ret && connect(m_roomTabBar, SIGNAL(customizeMenuBar(int)),
1583 m_stackedMenuBar, SLOT(doCustomizeMenuBar(int)));
1584 ret = ret && connect(m_lockRoomCB, SIGNAL(toggled(bool)), m_roomTabBar,
1585 SLOT(setIsLocked(bool)));
1586 assert(ret);
1587 }
1588