//---------------------------------------------------------------------------- // $Id: QtRpl/RplBlockMenus.cpp 2017/07/23 11:03:08 philw $ // QMenus and menu QActions for RplBlockDlg and RplViewerDlg //---------------------------------------------------------------------------- #include "RplBlockMenus.hpp" // this module #include #include #include #include // constructor RplBlockMenus::RplBlockMenus (QWidget* widParent, bool forViewer) : _forViewer (forViewer) { // Note: The widParent QWidget is provided for only Qt's automatic // life-cycle maintenance of the dynamically instantiated QMenus and // QActions. It can be the client QMainWindow (dialog) using these // menus, or any other high-level container widget. // // Even if a QMainWindow is provided, note that this class DOES NOT // install the top-level QMenus into that QMainWindow's QMenuBar. // That's the the responsibility of the client -- see the public // 'topMenuList' method. This architecture supports the requirement // of the new RPL Viewer to _dynamically_ install a different set of // menus each time a RPL Block or RPL Function tab is selected. buildMenusAndActions (widParent); } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // desctructor RplBlockMenus::~RplBlockMenus() { // Don't delete the QMenus and menu QActions created within this class. // That is done automatically by virtue of those objects being parented // with a parent QWidget (provided by the client in the constructor). } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // public QList RplBlockMenus::topMenuList() const { // Return list of top-level QMenus to be installed into a QMainWindow's // QMenuBar. //------------------------------------- // field: bool _forViewer; -- not used. //------------------------------------- QList retList; retList << _fileMenu << _editMenu << _ruleMenu << _viewMenu; return retList; } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // local helper function static QAction* newAction (QWidget* wid, const char* qObjName, bool checkable=false) { QAction* act = new QAction(wid); act->setObjectName(qObjName); if (checkable) act->setCheckable (true); return act; } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // private void RplBlockMenus::buildMenusAndActions (QWidget* wid) { //------------------------------------- // field: bool _forViewer; -- not used. //------------------------------------- // ************************** // *** (1) Create Menus *** // ************************** // *** Top-Level Menus *** _fileMenu = new QMenu(wid); _editMenu = new QMenu(wid); _ruleMenu = new QMenu(wid); _viewMenu = new QMenu(wid); _fileMenu -> setObjectName("_fileMenu"); _editMenu -> setObjectName("_editMenu"); _ruleMenu -> setObjectName("_ruleMenu"); _viewMenu -> setObjectName("_viewMenu"); _fileMenu -> setTitle (tr ("&File")); _editMenu -> setTitle (tr ("&Edit")); _ruleMenu -> setTitle (tr ("&Rule")); _viewMenu -> setTitle (tr ("View")); // *** SubMenus *** _reopenSetMenu = new LoadSaveMgr::FileItemMenu(_fileMenu); _reopenGlobFuncSetMenu = new LoadSaveMgr::FileItemMenu(_fileMenu); _addObjectiveMenu = new QMenu(_ruleMenu); _softConstraintMenu = new QMenu(_ruleMenu); _extDocMenu = new QMenu(_viewMenu); _reopenSetMenu -> setObjectName("_reopenSetMenu"); _reopenGlobFuncSetMenu -> setObjectName("_reopenGlobFuncSetMenu"); _addObjectiveMenu -> setObjectName("_addObjectiveMenu"); _softConstraintMenu -> setObjectName("_softConstraintMenu"); _extDocMenu -> setObjectName("_extDocMenu"); _reopenSetMenu -> setTitle (tr ("Reopen Set")); _reopenGlobFuncSetMenu -> setTitle (tr ("Reopen Global Functions Set")); _addObjectiveMenu -> setTitle (tr ("Add &Objective")); _softConstraintMenu -> setTitle (tr ("Add &Soft Constraint Set")); _extDocMenu -> setTitle (tr ("External Documentation")); // **************************** // *** (2) Create Actions *** // **************************** _newSetAction = newAction (wid, "_newSetAction"); _openSetAction = newAction (wid, "_openSetAction"); _newGlobFuncSetAction = newAction (wid, "_newGlobFuncSetAction"); _openGlobFuncSetAction = newAction (wid, "_openGlobFuncSetAction"); _saveSetAction = newAction (wid, "_saveSetAction"); _saveSetAsAction = newAction (wid, "_saveSetAsAction"); _printRplSetAction = newAction (wid, "_printRplSetAction"); _closeAction = newAction (wid, "_closeAction"); _cutAction = newAction (wid, "_cutAction"); _copyAction = newAction (wid, "_copyAction"); _pasteAction = newAction (wid, "_pasteAction"); _deleteAction = newAction (wid, "_deleteAction"); _clearAction = newAction (wid, "_clearAction"); _enableAction = newAction (wid, "_enableAction", true); _insertAction = newAction (wid, "_insertAction"); _appendAction = newAction (wid, "_appendAction"); _undoAction = newAction (wid, "_undoAction"); _redoAction = newAction (wid, "_redoAction"); _searchReplaceAction = newAction (wid, "_searchReplaceAction"); _refreshAction = newAction (wid, "_refreshAction"); _addConstraintAction = newAction (wid, "_addConstraintAction"); _addFreezeAction = newAction (wid, "_addFreezeAction"); _addRewardTableAction = newAction (wid, "_addRewardTableAction"); _addAssignmentAction = newAction (wid, "_addAssignmentAction"); _addPrintAction = newAction (wid, "_addPrintAction"); _addForEachAction = newAction (wid, "_addForEachAction"); _addWithStmtAction = newAction (wid, "_addWithStmtAction"); _addIfAction = newAction (wid, "_addIfAction"); _addIfElseAction = newAction (wid, "_addIfElseAction"); _addElseIfBranchAction = newAction (wid, "_addElseIfBranchAction"); _addElseBranchAction = newAction (wid, "_addElseBranchAction"); _addStopRunAction = newAction (wid, "_addStopRunAction"); _addWarningAction = newAction (wid, "_addWarningAction"); _addExecScriptAction = newAction (wid, "_addExecScriptAction"); _addPreDmiAction = newAction (wid, "_addPreDmiAction"); _addPostDmiAction = newAction (wid, "_addPostDmiAction"); _breakBeforeExecAction = newAction (wid, "_breakBeforeExecAction", true); _breakAfterExecAction = newAction (wid, "_breakAfterExecAction", true); _checkValidityAction = newAction (wid, "_checkValidityAction"); _paletteAction = newAction (wid, "_paletteAction"); _displaySettingsAction = newAction (wid, "_displaySettingsAction"); _setAnalysisAction = newAction (wid, "_setAnalysisAction"); _compareSetAction = newAction (wid, "_compareSetAction"); _setEditorAction = newAction (wid, "_setEditorAction"); _openDebuggerDlgAction = newAction (wid, "_openDebuggerDlgAction"); _closeAllEditorsAction = newAction (wid, "_closeAllEditorsAction"); _stopOnNaNAction = newAction (wid, "_stopOnNaNAction"); _addObjectiveMaxAction = newAction (wid, "_addObjectiveMaxAction"); _addObjectiveMinAction = newAction (wid, "_addObjectiveMinAction"); _addSummationAction = newAction (wid, "_addSummationAction"); _addMaximinRepeatAction = newAction (wid, "_addMaximinRepeatAction"); _addMaximinSingleAction = newAction (wid, "_addMaximinSingleAction"); _showConstraintAction = newAction (wid, "_showConstraintAction", true); _showDescriptionAction = newAction (wid, "_showDescriptionAction", true); _showNotesAction = newAction (wid, "_showNotesAction", true); _showCommentsAction = newAction (wid, "_showCommentsAction", true); _viewExtDocAction = newAction (wid, "_viewExtDocAction"); _editExtDocAction = newAction (wid, "_editExtDocAction"); _configExtDocAction = newAction (wid, "_configExtDocAction"); _fileTypeAssocAction = newAction (wid, "_fileTypeAssocAction"); // ***************************** // *** (3) Set Action Text *** // ***************************** _newSetAction -> setText(tr ("&New Set...")); _openSetAction -> setText(tr ("&Open Set...")); _newGlobFuncSetAction -> setText(tr ("New Global Functions Set...")); _openGlobFuncSetAction -> setText(tr ("Open Global Functions Set...")); _saveSetAction -> setText(tr ("&Save Set")); _saveSetAsAction -> setText(tr ("Save Set &As...")); _printRplSetAction -> setText(tr ("&Print Block...")); _closeAction -> setText(tr ("&Close Window")); _cutAction -> setText(tr ("Cu&t")); _copyAction -> setText(tr ("&Copy")); _pasteAction -> setText(tr ("&Paste")); _clearAction -> setText(tr ("Cl&ear")); _deleteAction -> setText(tr ("D&elete")); _enableAction -> setText(tr ("&Enabled")); _insertAction -> setText(tr ("Insert")); _appendAction -> setText(tr ("&Append")); _undoAction -> setText(tr ("Undo")); _redoAction -> setText(tr ("Redo")); _searchReplaceAction -> setText(tr ("&Search and Replace...")); _refreshAction -> setText(tr ("Refresh")); _addConstraintAction -> setText(tr ("Add &Constraint")); _addFreezeAction -> setText(tr ("Add Free&ze")); _addRewardTableAction -> setText(tr ("Add With Reward Table")); _addAssignmentAction -> setText(tr ("&Add Assignment")); _addPrintAction -> setText(tr ("Add &Print")); _addForEachAction -> setText(tr ("Add &For")); _addWithStmtAction -> setText(tr ("Add With")); _addIfAction -> setText(tr ("Add If")); _addIfElseAction -> setText(tr ("Add &If Else")); _addElseIfBranchAction -> setText(tr ("Add Else If Branch")); _addElseBranchAction -> setText(tr ("Add Else Branch")); _addStopRunAction -> setText(tr ("Add Stop Run")); _addWarningAction -> setText(tr ("Add Warning")); _addExecScriptAction -> setText(tr ("Add Execute Script")); _addPreDmiAction -> setText(tr ("Add Pre-Execution DMI Object")); _addPostDmiAction -> setText(tr ("Add Post-Execution DMI Object")); _breakBeforeExecAction -> setText(tr ("Break Before Execution")); _breakAfterExecAction -> setText(tr ("Break After Execution")); _checkValidityAction -> setText(tr ("Check &Validity...")); _paletteAction -> setText(tr ("Palette...")); _displaySettingsAction -> setText(tr ("&Display Settings...")); _setAnalysisAction -> setText(tr ("Anal&ysis...")); _compareSetAction -> setText(tr ("Compare Set...")); _setEditorAction -> setText(tr ("Set Editor...")); _openDebuggerDlgAction -> setText(tr ("Debugger...")); _closeAllEditorsAction -> setText(tr ("Close Other Editors")); _stopOnNaNAction -> setText(tr ("Stop On NaN")); _addObjectiveMaxAction -> setText(tr ("Ma&ximize")); _addObjectiveMinAction -> setText(tr ("Mi&nimize")); _addSummationAction -> setText(tr ("Su&mmation")); _addMaximinRepeatAction -> setText(tr ("&Repeated Maximin")); _addMaximinSingleAction -> setText(tr ("&Single Maximin")); _showConstraintAction -> setText(tr ("Show Execution Constraint")); _showDescriptionAction -> setText(tr ("Show Description")); _showNotesAction -> setText(tr ("Show Notes")); _showCommentsAction -> setText(tr ("Show Comments")); _viewExtDocAction -> setText(tr ("View Document ...")); _editExtDocAction -> setText(tr ("Edit Document ...")); _configExtDocAction -> setText(tr ("Configure ...")); _fileTypeAssocAction -> setText(tr ("File Type Associations ...")); // ******************************** // *** (4) Set Action ToolTips *** // ******************************** //-------------------------------------------------------- // Note: Only about a dozen actions have tooltips defined. //-------------------------------------------------------- _addConstraintAction -> setToolTip (tr ("Add Constraint")); _addIfAction -> setToolTip (tr ("Add If Statement")); _addIfElseAction -> setToolTip (tr ("Add If Else Statement")); _addElseIfBranchAction -> setToolTip ( tr ("Add an Else If branch to the If Statement Containing the " "Selection")); _addObjectiveMaxAction -> setToolTip (tr ("Add Maximize Objective")); _addObjectiveMinAction -> setToolTip (tr ("Add Minimize Objective")); _addSummationAction -> setToolTip ( tr ("Add Summation Soft Constraint Set")); _addMaximinRepeatAction -> setToolTip ( tr ("Add Repeated Maximin Soft Constraint Set")); _addMaximinSingleAction -> setToolTip ( tr ("Add Single Maximin Soft Constraint Set")); _addWithStmtAction -> setToolTip (tr ("Add With Statement")); _addRewardTableAction -> setToolTip ( tr ("Add With Reward Table statement")); _addElseBranchAction -> setToolTip ( tr ("Add an Else branch to the If Statement Containing the Selection")); // ********************************** // *** (5) Set Action Shortcuts *** // ********************************** _newSetAction -> setShortcut (QKeySequence ("Ctrl+N")); _openSetAction -> setShortcut (QKeySequence ("Ctrl+O")); _saveSetAction -> setShortcut (QKeySequence ("Ctrl+S")); _saveSetAsAction -> setShortcut (QKeySequence ("Ctrl+Shift+S")); _printRplSetAction -> setShortcut (QKeySequence ("Ctrl+Shift+P")); _closeAction -> setShortcut (QKeySequence ("Ctrl+W")); _cutAction -> setShortcut (QKeySequence ("Ctrl+X")); _copyAction -> setShortcut (QKeySequence ("Ctrl+C")); _pasteAction -> setShortcut (QKeySequence ("Ctrl+V")); _deleteAction -> setShortcut (QKeySequence ("Del")); _insertAction -> setShortcut (QKeySequence ("Ins")); _appendAction -> setShortcut (QKeySequence ("Alt+A")); _undoAction -> setShortcut (QKeySequence ("Ctrl+Z")); _redoAction -> setShortcut (QKeySequence ("Ctrl+Shift+Z")); _searchReplaceAction -> setShortcut (QKeySequence ("F4")); _refreshAction -> setShortcut (QKeySequence ("F5")); _addAssignmentAction -> setShortcut (QKeySequence ("Ctrl+A")); _addPrintAction -> setShortcut (QKeySequence ("Ctrl+P")); _addForEachAction -> setShortcut (QKeySequence ("Ctrl+F")); _addIfElseAction -> setShortcut (QKeySequence ("Ctrl+I")); _checkValidityAction -> setShortcut (QKeySequence ("Alt+V")); _paletteAction -> setShortcut (QKeySequence ("Alt+P")); _setAnalysisAction -> setShortcut (QKeySequence ("Ctrl+Y")); _openDebuggerDlgAction -> setShortcut (QKeySequence ("F8")); _clearAction -> setShortcut (QKeySequence ("Ctrl+B")); // ******************************* // *** (6.1) Build File Menu *** // ******************************* _fileMenu->addAction(_newSetAction); _fileMenu->addAction(_openSetAction); _fileMenu->addAction(_reopenSetMenu->menuAction()); _fileMenu->addSeparator(); //---------- _fileMenu->addAction(_newGlobFuncSetAction); _fileMenu->addAction(_openGlobFuncSetAction); _fileMenu->addAction(_reopenGlobFuncSetMenu->menuAction()); _fileMenu->addSeparator(); //---------- _fileMenu->addAction(_saveSetAction); _fileMenu->addAction(_saveSetAsAction); _fileMenu->addSeparator(); //---------- _fileMenu->addAction(_printRplSetAction); _fileMenu->addAction(_closeAction); _reopenSetMenu->addSeparator(); //---------- _reopenGlobFuncSetMenu->addSeparator(); //---------- // ******************************* // *** (6.2) Build Edit Menu *** // ******************************* _editMenu->addAction(_cutAction); _editMenu->addAction(_copyAction); _editMenu->addAction(_pasteAction); _editMenu->addAction(_deleteAction); _editMenu->addAction(_enableAction); _editMenu->addSeparator(); //---------- _editMenu->addAction(_insertAction); _editMenu->addAction(_appendAction); _editMenu->addSeparator(); //---------- _editMenu->addAction(_undoAction); _editMenu->addAction(_redoAction); _editMenu->addSeparator(); //---------- _editMenu->addAction(_searchReplaceAction); _editMenu->addSeparator(); //---------- _editMenu->addAction(_refreshAction); // ******************************* // *** (6.3) Build Rule Menu *** // ******************************* _ruleMenu->addAction(_addObjectiveMenu->menuAction()); _ruleMenu->addAction(_softConstraintMenu->menuAction()); _ruleMenu->addAction(_addConstraintAction); _ruleMenu->addAction(_addFreezeAction); _ruleMenu->addAction(_addRewardTableAction); _ruleMenu->addAction(_addAssignmentAction); _ruleMenu->addAction(_addPrintAction); _ruleMenu->addAction(_addForEachAction); _ruleMenu->addAction(_addWithStmtAction); _ruleMenu->addAction(_addIfAction); _ruleMenu->addAction(_addIfElseAction); _ruleMenu->addAction(_addElseIfBranchAction); _ruleMenu->addAction(_addElseBranchAction); _ruleMenu->addAction(_addStopRunAction); _ruleMenu->addAction(_addWarningAction); _ruleMenu->addAction(_addExecScriptAction); _ruleMenu->addSeparator(); //---------- _ruleMenu->addAction(_addPreDmiAction); _ruleMenu->addAction(_addPostDmiAction); _ruleMenu->addSeparator(); //---------- _ruleMenu->addAction(_breakBeforeExecAction); _ruleMenu->addAction(_breakAfterExecAction); _ruleMenu->addSeparator(); //---------- _ruleMenu->addAction(_checkValidityAction); _ruleMenu->addSeparator(); //---------- _ruleMenu->addAction(_paletteAction); _ruleMenu->addSeparator(); //---------- _ruleMenu->addAction(_displaySettingsAction); _ruleMenu->addAction(_setAnalysisAction); _ruleMenu->addAction(_compareSetAction); _ruleMenu->addAction(_setEditorAction); _ruleMenu->addAction(_openDebuggerDlgAction); _ruleMenu->addSeparator(); //---------- _ruleMenu->addAction(_closeAllEditorsAction); _ruleMenu->addSeparator(); //---------- _ruleMenu->addAction(_stopOnNaNAction); _addObjectiveMenu->addAction(_addObjectiveMaxAction); _addObjectiveMenu->addAction(_addObjectiveMinAction); _softConstraintMenu->addAction(_addSummationAction); _softConstraintMenu->addAction(_addMaximinRepeatAction); _softConstraintMenu->addAction(_addMaximinSingleAction); // ******************************* // *** (6.4) Build View Menu *** // ******************************* _viewMenu->addAction(_showConstraintAction); _viewMenu->addAction(_showDescriptionAction); _viewMenu->addAction(_showNotesAction); _viewMenu->addAction(_showCommentsAction); _viewMenu->addSeparator(); //---------- _viewMenu->addAction(_extDocMenu->menuAction()); _extDocMenu->addAction(_viewExtDocAction); _extDocMenu->addAction(_editExtDocAction); _extDocMenu->addAction(_configExtDocAction); _extDocMenu->addAction(_fileTypeAssocAction); } //--- (end RplBlockMenus.cpp) ---