diff --git a/BasePlugin/ViewModeInterface.hh b/BasePlugin/ViewModeInterface.hh index 9730ef8d0fc3257f23a5707c3b73d0fe397052ce..84b4ea4f6bf5bb3acc76cbd9351fc2ea5e2607c6 100644 --- a/BasePlugin/ViewModeInterface.hh +++ b/BasePlugin/ViewModeInterface.hh @@ -99,6 +99,16 @@ class ViewModeInterface { */ virtual void defineViewModeToolbars(QString /*_mode*/, QStringList /*_usedToolbars*/){}; + /** \brief Defines a ViewMode for the Toolbars + * + * With this function you can define a set of context menus which should be visible + * for the specified view mode. + * + * @param _mode name of the ViewMode + * @param _usedWidgets list of used context menus + */ + virtual void defineViewModeContextMenus(QString /*_mode*/, QStringList /*_usedContextMenus*/){}; + /** \brief Defines an Icon for a ViewMode * * With this function you can define an Icon associated with this view mode diff --git a/Core/Core.cc b/Core/Core.cc index 8b4f5aaa0909194c019c79e7d11adcd68659e34d..f5a2216e48e4b569977f6aaff3e84a8680f252f5 100644 --- a/Core/Core.cc +++ b/Core/Core.cc @@ -500,8 +500,8 @@ Core::init() { //get keyAssignments from config files restoreKeyBindings(); - if ( OpenFlipper::Options::defaultToolboxMode( ) != "" ) - coreWidget_->setViewMode( OpenFlipper::Options::defaultToolboxMode() ); + if ( OpenFlipper::Options::currentViewMode( ) != "" ) + coreWidget_->setViewMode( OpenFlipper::Options::currentViewMode() ); else coreWidget_->setViewMode("All"); diff --git a/Core/Core.hh b/Core/Core.hh index 28c7190acda9dfa66bf458274a4e792958124e56..674340c79eadc3b31c5ce0517a80c1dfb5ed382e 100644 --- a/Core/Core.hh +++ b/Core/Core.hh @@ -441,6 +441,13 @@ public slots: @param _toolboxList ; seperated list of toolbars in the view mode */ void addViewModeToolbars(QString _modeName, QString _toolbarList); + + /** \brief Scripting function to set context menus in a view mode + + @param _modeName Name of the View Mode + @param _toolboxList ; seperated list of context menus in the view mode + */ + void addViewModeContextMenus(QString _modeName, QString _contextMenuList); /** @} */ diff --git a/Core/ParseIni.cc b/Core/ParseIni.cc index 8698da221cc22ab66e35a142f406f9788162520f..1f772119d8a6fa4b81ddc1382dbb62438db698f4 100644 --- a/Core/ParseIni.cc +++ b/Core/ParseIni.cc @@ -77,8 +77,6 @@ void Core::readApplicationOptions(INIFile& _ini) { // Parse standard options if ( _ini.section_exists("Options") ) { - // TODO: Load View Mode Toolbars and Context Menu Items - // load ViewModes int viewModeCount; if (_ini.get_entry(viewModeCount,"Options","ViewModeCount") ) @@ -86,26 +84,31 @@ void Core::readApplicationOptions(INIFile& _ini) { QString entryToolbars; QString entryToolboxes; + QString entryContextMenus; QString entryIcon; - QString keyToolbars = "ViewModeToolbars" + QString::number(i); - QString keyToolboxes = "ViewModeToolboxes" + QString::number(i); - QString keyIcon = "ViewModeIcon" + QString::number(i); + QString keyToolbars = "ViewModeToolbars" + QString::number(i); + QString keyToolboxes = "ViewModeToolboxes" + QString::number(i); + QString keyContextMenus = "ViewModeContextMenus" + QString::number(i); + QString keyIcon = "ViewModeIcon" + QString::number(i); // Read the entries - if ( !_ini.get_entry( entryToolbars , "Options" , keyToolbars ) ) continue; - if ( !_ini.get_entry( entryToolboxes , "Options" , keyToolboxes ) ) continue; - if ( !_ini.get_entry( entryIcon , "Options" , keyIcon ) ) continue; + if ( !_ini.get_entry( entryToolbars , "Options" , keyToolbars ) ) continue; + if ( !_ini.get_entry( entryToolboxes , "Options" , keyToolboxes ) ) continue; + if ( !_ini.get_entry( entryContextMenus , "Options" , keyContextMenus ) ) continue; + if ( !_ini.get_entry( entryIcon , "Options" , keyIcon ) ) continue; - QStringList toolBars = entryToolbars.split(";"); - QStringList toolBoxes = entryToolboxes.split(";"); + QStringList toolBars = entryToolbars.split(";"); + QStringList toolBoxes = entryToolboxes.split(";"); + QStringList contextMenus = entryContextMenus.split(";"); - // Get Mode name ( prepended to all toolbox/toolbar lists + // Get Mode name ( prepended to all toolbox/toolbar/context menu lists ) QString mode = toolBoxes.first(); // Remove leading Modes toolBoxes.removeFirst(); toolBars.removeFirst(); + contextMenus.removeFirst(); // Check if the mode already exists bool found = false; @@ -117,9 +120,10 @@ void Core::readApplicationOptions(INIFile& _ini) { ViewMode* vm = new ViewMode(); vm->name = mode; vm->custom = true; - vm->visibleToolbars = toolBars; - vm->visibleToolboxes = toolBoxes; - vm->icon = entryIcon; + vm->visibleToolbars = toolBars; + vm->visibleToolboxes = toolBoxes; + vm->visibleContextMenus = contextMenus; + vm->icon = entryIcon; viewModes_.push_back(vm); } @@ -218,9 +222,9 @@ void Core::readApplicationOptions(INIFile& _ini) { //============================================================================ // Load the setting for the default Toolbox mode //============================================================================ - QString toolboxMode = false; - if ( _ini.get_entry( toolboxMode, "Options" , "DefaultToolboxMode") ) - OpenFlipper::Options::defaultToolboxMode(toolboxMode); + QString viewmode = false; + if ( _ini.get_entry( viewmode, "Options" , "CurrentViewMode") ) + OpenFlipper::Options::currentViewMode(viewmode); //============================================================================ // Load the setting for the translation language @@ -383,10 +387,10 @@ void Core::writeApplicationOptions(INIFile& _ini) { _ini.add_entry( "Options" , key , type ); } - // TODO: Save View Mode Toolbars and Context Menu Items // save ViewModes QVector< QString > toolboxes; QVector< QString > toolbars; + QVector< QString > contextmenus; QVector< QString > icons; if ( OpenFlipper::Options::gui() ) @@ -410,17 +414,25 @@ void Core::writeApplicationOptions(INIFile& _ini) { entryToolbars += ";" + coreWidget_->viewModes_[i]->visibleToolbars[j]; toolbars.push_back(entryToolbars); + + QString entryContextMenus = coreWidget_->viewModes_[i]->name; - icons.push_back(coreWidget_->viewModes_[i]->icon); + //store widgets + for (int j=0; j < coreWidget_->viewModes_[i]->visibleContextMenus.size(); j++) + entryContextMenus += ";" + coreWidget_->viewModes_[i]->visibleContextMenus[j]; + contextmenus.push_back(entryContextMenus); + + icons.push_back(coreWidget_->viewModes_[i]->icon); } //save viewmodes to ini _ini.add_entry("Options","ViewModeCount" ,toolboxes.size()); for (int i=0; i < toolboxes.size(); i++) { - _ini.add_entry("Options","ViewModeToolboxes" + QString::number(i) ,toolboxes[i]); - _ini.add_entry("Options","ViewModeToolbars" + QString::number(i) ,toolbars[i] ); - _ini.add_entry("Options","ViewModeIcon" + QString::number(i) ,icons[i] ); + _ini.add_entry("Options","ViewModeToolboxes" + QString::number(i) ,toolboxes[i]); + _ini.add_entry("Options","ViewModeToolbars" + QString::number(i) ,toolbars[i] ); + _ini.add_entry("Options","ViewModeContextMenus" + QString::number(i) ,contextmenus[i] ); + _ini.add_entry("Options","ViewModeIcon" + QString::number(i) ,icons[i] ); } //save KeyBindings @@ -430,8 +442,8 @@ void Core::writeApplicationOptions(INIFile& _ini) { //write default dataType to INI _ini.add_entry( "Options" , "default_DataType" , OpenFlipper::Options::lastDataType() ); - //write default ToolboxMode - _ini.add_entry("Options","DefaultToolboxMode",OpenFlipper::Options::defaultToolboxMode() ); + //write current ViewMode + _ini.add_entry("Options","CurrentViewMode",OpenFlipper::Options::currentViewMode() ); //============================================================================ // Debugging diff --git a/Core/PluginInfo.hh b/Core/PluginInfo.hh index aaef541649d34e56ba7574747718afae34cd2c36..733d745edefa8452baff4435f719217a03ae470d 100644 --- a/Core/PluginInfo.hh +++ b/Core/PluginInfo.hh @@ -83,6 +83,7 @@ class PluginInfo{ keys.clear(); toolboxWidgets.clear(); toolbars.clear(); + contextMenus.clear(); optionsWidget = 0; } @@ -100,6 +101,7 @@ class PluginInfo{ keys = _i.keys; toolboxWidgets = _i.toolboxWidgets; toolbars = _i.toolbars; + contextMenus = _i.contextMenus; optionsWidget = _i.optionsWidget; } @@ -133,8 +135,11 @@ class PluginInfo{ /// Pointer to plugins toolbox widget (if available) std::vector< std::pair< QString , QWidget* > > toolboxWidgets; - /// Pointer to plugins toolbox widget (if available) + /// Pointer to plugins toolbars (if available) std::vector< std::pair< QString , QToolBar* > > toolbars; + + /// Pointer to plugins context menus (if available) + std::vector< std::pair< QString , QAction* > > contextMenus; /// Pointer to plugins options widget (if available) QWidget* optionsWidget; diff --git a/Core/PluginLoader.cc b/Core/PluginLoader.cc index e48dd8174905543230e435f3784990988b7f1587..acb0663f08de31167cbe7145932cb4519f77bbd7 100644 --- a/Core/PluginLoader.cc +++ b/Core/PluginLoader.cc @@ -732,7 +732,11 @@ void Core::loadPlugin(QString filename, bool silent, QObject* _plugin){ if ( checkSignal(plugin, "defineViewModeToolbars(QString,QStringList)")) connect(plugin, SIGNAL( defineViewModeToolbars(QString, QStringList) ), - coreWidget_, SLOT( slotAddViewModeToolbars(QString, QStringList) ),Qt::DirectConnection ); + coreWidget_, SLOT( slotAddViewModeToolbars(QString, QStringList) ),Qt::DirectConnection ); + + if ( checkSignal(plugin, "defineViewModeContextMenus(QString,QStringList)")) + connect(plugin, SIGNAL( defineViewModeContextMenus(QString, QStringList) ), + coreWidget_, SLOT( slotAddViewModeContextMenus(QString, QStringList) ),Qt::DirectConnection ); if ( checkSignal(plugin, "defineViewModeIcon(QString,QString)")) connect(plugin, SIGNAL( defineViewModeIcon(QString, QString) ), diff --git a/Core/optionHandling.cc b/Core/optionHandling.cc index dcfc060b232842c343e0fa93123c5fa69c65f8ec..d0a8990d0e557c55a884bf72c4fbcaef8ae58092 100644 --- a/Core/optionHandling.cc +++ b/Core/optionHandling.cc @@ -74,8 +74,8 @@ void Core::applyOptions(){ coreWidget_->initViewModes(); //Set default Viewmode - if (OpenFlipper::Options::defaultToolboxMode() != "") - coreWidget_->slotChangeView(OpenFlipper::Options::defaultToolboxMode(), QStringList(), QStringList()); + if (OpenFlipper::Options::currentViewMode() != "") + coreWidget_->slotChangeView(OpenFlipper::Options::currentViewMode(), QStringList(), QStringList(), QStringList()); //Set Fullscreen if ( OpenFlipperSettings().value("Core/Gui/fullscreen",false).toBool() ) coreWidget_->setWindowState( coreWidget_->windowState() | Qt::WindowFullScreen); diff --git a/Core/scripting.cc b/Core/scripting.cc index c8f31239f7769f3eba78f2ccfdb43bd919f8dbdf..193de39c9ccf69029c5796650c3472454e544fb5 100644 --- a/Core/scripting.cc +++ b/Core/scripting.cc @@ -166,6 +166,14 @@ void Core::addViewModeToolbars(QString _modeName, QString _toolbarList) { //----------------------------------------------------------------------------- +void Core::addViewModeContextMenus(QString _modeName, QString _contextMenuList) { + + QStringList list = _contextMenuList.split(";"); + coreWidget_->slotAddViewModeContextMenus(_modeName,list); +} + +//----------------------------------------------------------------------------- + void Core::addToolbox(QString _name ,QWidget* _widget) { int id = -1; @@ -201,7 +209,7 @@ void Core::addToolbox(QString _name ,QWidget* _widget) { viewModes_[0]->visibleToolboxes.sort(); } - setViewMode( OpenFlipper::Options::defaultToolboxMode() ); + setViewMode( OpenFlipper::Options::currentViewMode() ); } //============================================================================= diff --git a/common/GlobalOptions.cc b/common/GlobalOptions.cc index 492070dfec0d0cccbf295ed40da51e3be339025a..59ff388f933e3c9dd70ed90fa97b042f20def46b 100644 --- a/common/GlobalOptions.cc +++ b/common/GlobalOptions.cc @@ -162,7 +162,8 @@ static bool drawModesInContextMenu_ = true; /// Set if a grid should be drawn in every viewer static bool gridVisible_ = false; -static QString defaultToolboxMode_ = ""; +/// Current view mode +static QString currentViewMode_ = ""; static QString title_ = "OpenFlipper v?"; @@ -538,14 +539,14 @@ LoggerState loggerState( ) { return static_cast (OpenFlipperSettings().value("Core/Gui/LogWindow/LogWindowMode",0).toInt() ); } -/// Which mode should be the default for the toolbar? -QString defaultToolboxMode( ) { - return defaultToolboxMode_; +/// Which mode should is currently selected? +QString currentViewMode( ) { + return currentViewMode_; } -/// Which mode should be the default for the toolbar? -void defaultToolboxMode( QString _mode ) { - defaultToolboxMode_ = _mode; +/// Which view mode is currently selected? +void currentViewMode( QString _mode ) { + currentViewMode_ = _mode; } diff --git a/common/GlobalOptions.hh b/common/GlobalOptions.hh index b33f55cc6eddd52c2f27fdc1726e978d191eb22b..f89fb2682d9aff96da36aa6f1a3f069fce10979b 100644 --- a/common/GlobalOptions.hh +++ b/common/GlobalOptions.hh @@ -507,13 +507,13 @@ QString helpDirStr(); DLLEXPORT LoggerState loggerState( ); - /// Which mode should be the default for the toolbar? + /// Which view mode is currently selected? DLLEXPORT - QString defaultToolboxMode( ); + QString currentViewMode( ); - /// Which mode should be the default for the toolbar? + /// Which view mode is currently selected? DLLEXPORT - void defaultToolboxMode( QString _mode ); + void currentViewMode( QString _mode ); /// Titel of the main window DLLEXPORT diff --git a/widgets/coreWidget/ContextMenu.cc b/widgets/coreWidget/ContextMenu.cc index 7d3b9d1986ba00d4010e66c6e227c794354c0442..4e538f89b6bbc9ff698e81da26a68f20c256d5c4 100644 --- a/widgets/coreWidget/ContextMenu.cc +++ b/widgets/coreWidget/ContextMenu.cc @@ -469,12 +469,29 @@ bool CoreWidget::addContextMenus( QMenu* _menu , ContextMenuType _type , int _id } + //find the currently selected view mode + int id = -1; + for (int i=0; iname == OpenFlipper::Options::currentViewMode()) { + id = i; + break; + } + } + + /// \todo Sort the menu entries by the order given in visibleContextMenus //first add all menus QMapIterator it(menuMap); - + + QStringList visible = viewModes_[id]->visibleContextMenus; + visible.replaceInStrings(QRegExp(".*>"), ""); + for (int i=0; i < visible.size(); i++) + std::cout << visible.at(i).toStdString() << std::endl; + while (it.hasNext()) { it.next(); - _menu->addAction( it.value() ); + if (visible.contains(it.key())) { + _menu->addAction( it.value() ); + } } _menu->addSeparator(); @@ -484,7 +501,9 @@ bool CoreWidget::addContextMenus( QMenu* _menu , ContextMenuType _type , int _id while (it2.hasNext()) { it2.next(); - _menu->addAction( it2.value() ); + if (visible.contains(it2.key())) { + _menu->addAction( it2.value() ); + } } return added; @@ -586,7 +605,8 @@ void CoreWidget::slotAddContextItem(QAction* _entry, ContextMenuType _type) { info.action = _entry; info.type = _type; - contextMenus_.push_back(info); + contextMenus_.push_back(info); + slotAddContextItemToViewMode(_entry); } void CoreWidget::slotAddContextItem( QAction* _entry , DataType _dataType ,ContextMenuType _type ) { @@ -596,6 +616,44 @@ void CoreWidget::slotAddContextItem( QAction* _entry , DataType _dataType ,Conte info.type = _type; contextMenus_.push_back(info); + slotAddContextItemToViewMode(_entry); +} + +void CoreWidget::slotAddContextItemToViewMode( QAction* _entry ) { + int id = -1; + // Find the plugin which added this Context Menu + for ( uint i = 0 ; i < plugins_.size(); ++i ) { + if ( plugins_[i].plugin == sender() ) { + id = i; + break; + } + } + + // Find the scripting plugin because we assign this context menu to it as we did not find the original sender + if ( id == -1 ) { + for ( uint i = 0 ; i < plugins_.size(); ++i ) { + if ( plugins_[i].name == "Scripting" ) { + id = i; + break; + } + } + + + if ( id == -1 ) { + std::cerr << "Unknown sender plugin when adding Context Menu!" << std::endl; + return; + } + } + + plugins_[id].contextMenus.push_back( std::pair< QString,QAction* >( plugins_[id].name + "->" + _entry->text(), _entry) ); + + // add widget name to viewMode 'all' + if ( !viewModes_[0]->visibleContextMenus.contains(plugins_[id].name + "->" + _entry->text()) ){ + viewModes_[0]->visibleContextMenus << plugins_[id].name + "->" + _entry->text(); + viewModes_[0]->visibleContextMenus.sort(); + } + + setViewMode( OpenFlipper::Options::currentViewMode() ); } void CoreWidget::slotUpdateViewerDrawMenu() { diff --git a/widgets/coreWidget/CoreWidget.cc b/widgets/coreWidget/CoreWidget.cc index bca2c51d5c856611d722b7ced721538282a6aa20..cf4b7c05d4ece6f1be300e3c9a1fea1aec29e41f 100644 --- a/widgets/coreWidget/CoreWidget.cc +++ b/widgets/coreWidget/CoreWidget.cc @@ -609,7 +609,7 @@ CoreWidget::toggleFullscreen() { setWindowState( windowState() ^ Qt::WindowFullScreen); //show toolbars - setViewMode( OpenFlipper::Options::defaultToolboxMode() ); + setViewMode( OpenFlipper::Options::currentViewMode() ); //show the menubar menuBar()->show(); @@ -822,10 +822,10 @@ CoreWidget::showToolbox( bool _state ) { }else{ //reset last ViewMode - if (OpenFlipper::Options::defaultToolboxMode().trimmed() == "") + if (OpenFlipper::Options::currentViewMode().trimmed() == "") setViewMode("All"); else - setViewMode( OpenFlipper::Options::defaultToolboxMode() ); + setViewMode( OpenFlipper::Options::currentViewMode() ); toolBoxArea_->setVisible(true); } } diff --git a/widgets/coreWidget/CoreWidget.hh b/widgets/coreWidget/CoreWidget.hh index 21c1eaa0fed2891f51e831b76995879af3ee5f02..29613ecabf83a4d9b5c4bdf01445f398e9045f84 100644 --- a/widgets/coreWidget/CoreWidget.hh +++ b/widgets/coreWidget/CoreWidget.hh @@ -417,8 +417,14 @@ public: /// Add or change Toolbars for a ViewMode (_custom == userdefined viewMode) void slotAddViewModeToolbars(QString _mode, bool _custom, QStringList _usedToolbars); - /// Completly configure a view mode ( set toolbars, toolboxes ... ) - void slotAddViewModeComplete(QString _mode , bool _custom, QStringList _toolboxes, QStringList _toolbars); + /// Add or change Toolbars for a ViewMode (non-userdefined viewMode) + void slotAddViewModeContextMenus(QString _mode, QStringList _usedToolbars); + + /// Add or change Toolbars for a ViewMode (_custom == userdefined viewMode) + void slotAddViewModeContextMenus(QString _mode, bool _custom, QStringList _usedToolbars); + + /// Completly configure a view mode ( set toolbars, toolboxes, context menus, ... ) + void slotAddViewModeComplete(QString _mode , bool _custom, QStringList _toolboxes, QStringList _toolbars, QStringList _contextmenus); /// Sets the Icon for a given View Mode (non-userdefined viewMode) void slotSetViewModeIcon(QString _mode, QString _iconName); @@ -427,7 +433,7 @@ public: void slotSetViewModeIcon(QString _mode, bool _custom, QString _iconName); /// Slot for Changing visible toolWidgets - void slotChangeView(QString _mode, QStringList _toolboxWidgets, QStringList _toolbars); + void slotChangeView(QString _mode, QStringList _toolboxWidgets, QStringList _toolbars, QStringList _contextmenus); private slots: /// Remove viewMode @@ -671,6 +677,9 @@ public: /// called by plugins to add a real context menu item depending on DataType void slotAddContextItem( QAction* _entry , DataType _dataType ,ContextMenuType type_); + + /// called by slotAddContextItem to add the item to the view mode + void slotAddContextItemToViewMode( QAction* _entry ); /// Paste the view to the last active examiner void slotPasteView( ); diff --git a/widgets/coreWidget/viewMode.cc b/widgets/coreWidget/viewMode.cc index d4055eb14ac7189e6b162d380f3b6e4522aabd74..ad1c761143632b450c641585d978eeddd01caecb 100644 --- a/widgets/coreWidget/viewMode.cc +++ b/widgets/coreWidget/viewMode.cc @@ -110,6 +110,7 @@ void CoreWidget::slotAddViewModeToolboxes(QString _mode, bool _custom, QStringLi vm->icon = "Unknown.png"; vm->visibleToolbars = QString("Main Toolbar;Viewer Toolbar").split(";"); + vm->visibleContextMenus = viewModes_[0]->visibleContextMenus; if (_custom) { viewModes_.push_back(vm); @@ -155,6 +156,8 @@ void CoreWidget::slotAddViewModeToolbars(QString _mode, bool _custom, QStringLis vm->custom = _custom; vm->icon = "Unknown.png"; + vm->visibleContextMenus = viewModes_[0]->visibleContextMenus; + if (_custom) { viewModes_.push_back(vm); } else { @@ -184,6 +187,53 @@ void CoreWidget::slotAddViewModeToolbars(QString _mode, bool _custom, QStringLis initViewModes(); } + +void CoreWidget::slotAddViewModeContextMenus(QString _mode, QStringList _usedContextMenus){ + slotAddViewModeContextMenus(_mode, false, _usedContextMenus); +} + +void CoreWidget::slotAddViewModeContextMenus(QString _mode, bool _custom, QStringList _usedContextMenus){ + int id = -1; + + // Check if it already exists + for ( int i = 0 ; i < viewModes_.size(); i++) { + if ( viewModes_[i]->name == _mode ) { + id = i; + break; + } + } + + ViewMode* vm = 0; + if ( id == -1 ) { + vm = new ViewMode(); + vm->name = _mode; + vm->custom = _custom; + vm->icon = "Unknown.png"; + + vm->visibleToolbars = QString("Main Toolbar;Viewer Toolbar").split(";"); + + if (_custom) { + viewModes_.push_back(vm); + } else { + //insert before custom viewModes + int i = viewModes_.size(); + for (int k=0; k < viewModes_.size(); k++) + if (viewModes_[k]->custom == true){ + i = k; + break; + } + viewModes_.insert(i,vm); + } + + } else { + vm = viewModes_[id]; + } + + vm->visibleContextMenus = _usedContextMenus; + + initViewModes(); +} + /// Sets the Icon for a given View Mode void CoreWidget::slotSetViewModeIcon(QString _mode, QString _iconName) { slotSetViewModeIcon(_mode,false,_iconName); @@ -255,12 +305,13 @@ void CoreWidget::slotSetViewMode( QAction* action){ /// Slot for setting the viewMode from menu void CoreWidget::setViewMode( QString _mode ){ - slotChangeView(_mode, QStringList(), QStringList()); + slotChangeView(_mode, QStringList(), QStringList(), QStringList()); } -void CoreWidget::slotAddViewModeComplete(QString _mode , bool _custom, QStringList _toolboxes, QStringList _toolbars) { +void CoreWidget::slotAddViewModeComplete(QString _mode , bool _custom, QStringList _toolboxes, QStringList _toolbars, QStringList _contextmenus) { slotAddViewModeToolbars(_mode,_custom,_toolbars); slotAddViewModeToolboxes(_mode,_custom,_toolboxes); + slotAddViewModeContextMenus(_mode,_custom,_contextmenus); } /// show dialog for changing ViewMode @@ -270,11 +321,11 @@ void CoreWidget::slotViewModeDialog(){ if ( !widget ){ widget = new viewModeWidget(viewModes_); widget->setWindowIcon( OpenFlipper::Options::OpenFlipperIcon() ); - connect(widget, SIGNAL(changeView(QString, QStringList, QStringList)), this, SLOT(slotChangeView(QString, QStringList, QStringList)) ); - connect(widget, SIGNAL(saveMode(QString, bool, QStringList, QStringList)), this, SLOT(slotAddViewModeComplete(QString, bool, QStringList, QStringList)) ); + connect(widget, SIGNAL(changeView(QString, QStringList, QStringList, QStringList)), this, SLOT(slotChangeView(QString, QStringList, QStringList, QStringList)) ); + connect(widget, SIGNAL(saveMode(QString, bool, QStringList, QStringList, QStringList)), this, SLOT(slotAddViewModeComplete(QString, bool, QStringList, QStringList, QStringList)) ); connect(widget, SIGNAL(removeMode(QString)), this, SLOT(slotRemoveViewMode(QString)) ); } - widget->show( OpenFlipper::Options::defaultToolboxMode() ); + widget->show( OpenFlipper::Options::currentViewMode() ); } void CoreWidget::slotViewChangeDialog() { @@ -284,12 +335,12 @@ void CoreWidget::slotViewChangeDialog() { if ( !modeChangeWidget ){ modeChangeWidget = new viewModeChangeWidget(viewModes_, this); modeChangeWidget->setWindowIcon( OpenFlipper::Options::OpenFlipperIcon() ); - connect(modeChangeWidget, SIGNAL(changeView(QString, QStringList, QStringList)), this, SLOT(slotChangeView(QString, QStringList, QStringList)) ); + connect(modeChangeWidget, SIGNAL(changeView(QString, QStringList, QStringList, QStringList)), this, SLOT(slotChangeView(QString, QStringList, QStringList, QStringList)) ); } // Make it look like a dialog modeChangeWidget->setWindowFlags(Qt::Popup); - modeChangeWidget->show( OpenFlipper::Options::defaultToolboxMode() ); + modeChangeWidget->show( OpenFlipper::Options::currentViewMode() ); // Move it to the position of the push button QPoint posButton = vmChangeButton_->mapToGlobal(vmChangeButton_->pos()); @@ -298,7 +349,7 @@ void CoreWidget::slotViewChangeDialog() { } /// Slot for Changing visible toolWidgets -void CoreWidget::slotChangeView(QString _mode, QStringList _toolboxWidgets, QStringList _toolbars ){ +void CoreWidget::slotChangeView(QString _mode, QStringList _toolboxWidgets, QStringList _toolbars, QStringList _contextmenus ){ //try to find Widgets if they aren't given if (_mode != "" && _toolboxWidgets.size() == 0 && _toolbars.size() == 0) @@ -306,6 +357,7 @@ void CoreWidget::slotChangeView(QString _mode, QStringList _toolboxWidgets, QStr if (viewModes_[i]->name == _mode) { _toolboxWidgets = viewModes_[i]->visibleToolboxes; _toolbars = viewModes_[i]->visibleToolbars; + _contextmenus = viewModes_[i]->visibleContextMenus; } // Remove all toolbox entries @@ -342,7 +394,7 @@ void CoreWidget::slotChangeView(QString _mode, QStringList _toolboxWidgets, QStr if (_mode != "") - OpenFlipper::Options::defaultToolboxMode(_mode); + OpenFlipper::Options::currentViewMode(_mode); } diff --git a/widgets/viewModeWidget/viewMode.ui b/widgets/viewModeWidget/viewMode.ui index dbc00fd3623a55f31c9665acb2a93d058c9ea354..bc2c103996abfb5a2561a37bf86087929f5ed1ba 100644 --- a/widgets/viewModeWidget/viewMode.ui +++ b/widgets/viewModeWidget/viewMode.ui @@ -6,7 +6,7 @@ 0 0 - 755 + 767 816 @@ -112,7 +112,7 @@ - 1 + 0 @@ -167,14 +167,14 @@ - + - + @@ -353,6 +353,165 @@ + + + Context Menus + + + + + 4 + 4 + 729 + 452 + + + + + + + Visible + + + + + + + + false + + + false + + + QAbstractItemView::NoDragDrop + + + QAbstractItemView::ExtendedSelection + + + QListView::Static + + + false + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + Available + + + + + + QAbstractItemView::ExtendedSelection + + + true + + + + + + + + + diff --git a/widgets/viewModeWidget/viewModeChangeWidget.cc b/widgets/viewModeWidget/viewModeChangeWidget.cc index 46e31267fc303eec2a640f2645104c3b836845cf..d200499facaeb826984ebcb9142c9231f14180a5 100644 --- a/widgets/viewModeWidget/viewModeChangeWidget.cc +++ b/widgets/viewModeWidget/viewModeChangeWidget.cc @@ -85,7 +85,7 @@ void viewModeChangeWidget::slotModeClicked(QModelIndex _idx ){ } - emit changeView(modes_[id]->name,modes_[id]->visibleToolboxes,modes_[id]->visibleToolbars); + emit changeView(modes_[id]->name,modes_[id]->visibleToolboxes,modes_[id]->visibleToolbars,modes_[id]->visibleContextMenus); close(); } diff --git a/widgets/viewModeWidget/viewModeChangeWidget.hh b/widgets/viewModeWidget/viewModeChangeWidget.hh index ad32cc131e34f2e10759eda8dff3573621ffa741..968583adf86e9d729ce597b6070bc781d80e67cd 100644 --- a/widgets/viewModeWidget/viewModeChangeWidget.hh +++ b/widgets/viewModeWidget/viewModeChangeWidget.hh @@ -70,7 +70,7 @@ class viewModeChangeWidget : public QDialog, public Ui::ViewModeChangeDialog signals: /// Changes the view mode to the currently configured one - void changeView(QString _mode, QStringList _toolboxWidgets, QStringList _toolbars); + void changeView(QString _mode, QStringList _toolboxWidgets, QStringList _toolbars, QStringList _contextmenus); }; diff --git a/widgets/viewModeWidget/viewModeWidget.cc b/widgets/viewModeWidget/viewModeWidget.cc index 6dd10e71e5ada06ad7f753c17fb9fa25fbc319a6..7696e14aa9d8c9bd6e18e3c34af750392e7e601e 100644 --- a/widgets/viewModeWidget/viewModeWidget.cc +++ b/widgets/viewModeWidget/viewModeWidget.cc @@ -59,7 +59,7 @@ viewModeWidget::viewModeWidget(const QVector< ViewMode* >& _modes, QWidget *_par setupUi(this); - connect(viewModeList, SIGNAL(itemSelectionChanged()), this, SLOT(slotSetToolWidgets())); + connect(viewModeList, SIGNAL(itemSelectionChanged()), this, SLOT(slotSetAllWidgets())); @@ -81,7 +81,7 @@ viewModeWidget::viewModeWidget(const QVector< ViewMode* >& _modes, QWidget *_par this ,SLOT(slotModeContextMenu ( const QPoint & ) )); - // Context Menus Toolbars + // Context Menus for Toolbars toolbarList->setContextMenuPolicy(Qt::CustomContextMenu); availableToolbars->setContextMenuPolicy(Qt::CustomContextMenu); connect(toolbarList ,SIGNAL(customContextMenuRequested ( const QPoint & ) ), @@ -90,32 +90,54 @@ viewModeWidget::viewModeWidget(const QVector< ViewMode* >& _modes, QWidget *_par this ,SLOT(slotAvailableToolbarContextMenu ( const QPoint & ) )); - // Context Menus Toolboxes + // Context Menus for Toolboxes toolboxList->setContextMenuPolicy(Qt::CustomContextMenu); availableToolboxes->setContextMenuPolicy(Qt::CustomContextMenu); connect(toolboxList ,SIGNAL(customContextMenuRequested ( const QPoint & ) ), this ,SLOT(slotUsedToolboxContextMenu ( const QPoint & ) )); connect(availableToolboxes ,SIGNAL(customContextMenuRequested ( const QPoint & ) ), - this ,SLOT(slotAvailableToolboxContextMenu ( const QPoint & ) )); + this ,SLOT(slotAvailableToolboxContextMenu ( const QPoint & ) )); + + + // Context Menus for Context Menus + contextMenuList->setContextMenuPolicy(Qt::CustomContextMenu); + availableContextMenus->setContextMenuPolicy(Qt::CustomContextMenu); + connect(contextMenuList ,SIGNAL(customContextMenuRequested ( const QPoint & ) ), + this ,SLOT(slotUsedContextMenuContextMenu ( const QPoint & ) )); + connect(availableContextMenus ,SIGNAL(customContextMenuRequested ( const QPoint & ) ), + this ,SLOT(slotAvailableContextMenuContextMenu ( const QPoint & ) )); - // Toolbar Buttons to add remove toolbars to the given Mode + // Toolbar Buttons to add and remove toolbars in the given Mode connect(rightArrowToolbar, SIGNAL(clicked()), this, SLOT(slotRightArrowToolbar()) ); rightArrowToolbar->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() + "arrow-right.png" ) ); connect(leftArrowToolbar, SIGNAL(clicked()), this, SLOT(slotLeftArrowToolbar()) ); leftArrowToolbar->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() + "arrow-left.png" ) ); - // Toolbar Buttons to add remove toolbars to the given Mode + // Toolbox Buttons to add, remove and order toolboxes in the given Mode connect(rightArrowToolbox, SIGNAL(clicked()), this, SLOT(slotRightArrowToolbox()) ); rightArrowToolbox->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() + "arrow-right.png" ) ); connect(leftArrowToolbox, SIGNAL(clicked()), this, SLOT(slotLeftArrowToolbox()) ); leftArrowToolbox->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() + "arrow-left.png" ) ); - connect(upButton, SIGNAL(clicked()), this, SLOT(slotMoveUp()) ); - upButton->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() + "arrow-up.png" ) ); - connect(downButton, SIGNAL(clicked()), this, SLOT(slotMoveDown()) ); - downButton->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() + "arrow-down.png" ) ); + connect(upButtonToolbox, SIGNAL(clicked()), this, SLOT(slotMoveToolboxUp()) ); + upButtonToolbox->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() + "arrow-up.png" ) ); + connect(downButtonToolbox, SIGNAL(clicked()), this, SLOT(slotMoveToolboxDown()) ); + downButtonToolbox->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() + "arrow-down.png" ) ); + + + // ContextMenu Buttons to add, remove and order ContextMenus in the given Mode + connect(rightArrowContextMenu, SIGNAL(clicked()), this, SLOT(slotRightArrowContextMenu()) ); + rightArrowContextMenu->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() + "arrow-right.png" ) ); + connect(leftArrowContextMenu, SIGNAL(clicked()), this, SLOT(slotLeftArrowContextMenu()) ); + leftArrowContextMenu->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() + "arrow-left.png" ) ); + + connect(upButtonContextMenu, SIGNAL(clicked()), this, SLOT(slotMoveContextMenuUp()) ); + upButtonContextMenu->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() + "arrow-up.png" ) ); + connect(downButtonContextMenu, SIGNAL(clicked()), this, SLOT(slotMoveContextMenuDown()) ); + downButtonContextMenu->setIcon( QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() + "arrow-down.png" ) ); + // General Buttons @@ -170,7 +192,7 @@ void viewModeWidget::slotCopyMode(){ return; } - emit saveMode(name, true, modes_[id]->visibleToolboxes, modes_[id]->visibleToolbars); + emit saveMode(name, true, modes_[id]->visibleToolboxes, modes_[id]->visibleToolbars, modes_[id]->visibleContextMenus); QListWidgetItem *item = new QListWidgetItem(viewModeList); item->setTextAlignment(Qt::AlignHCenter); @@ -204,7 +226,7 @@ void viewModeWidget::slotAddMode(){ return; } - emit saveMode(name, true, QStringList(), QStringList()); + emit saveMode(name, true, QStringList(), QStringList(), modes_[0]->visibleContextMenus); QListWidgetItem *item = new QListWidgetItem(viewModeList); item->setTextAlignment(Qt::AlignHCenter); @@ -276,14 +298,17 @@ void viewModeWidget::slotSetIcon() { // ======================================================================================================= // ToolBox and ToolBar Lists update functions // ======================================================================================================= -void viewModeWidget::slotSetToolWidgets(){ +void viewModeWidget::slotSetAllWidgets(){ toolboxList->clear(); toolbarList->clear(); + contextMenuList->clear(); availableToolboxes->clear(); availableToolbars->clear(); + availableContextMenus->clear(); QStringList toolboxes; QStringList toolbars; + QStringList contextmenus; //iterate over all selected modes for (int m=0; m < viewModeList->selectedItems().size(); m++) @@ -293,8 +318,10 @@ void viewModeWidget::slotSetToolWidgets(){ if ( modes_[i]->name == (viewModeList->selectedItems()[m])->text() ) { toolboxes = modes_[i]->visibleToolboxes; toolbars = modes_[i]->visibleToolbars; + contextmenus = modes_[i]->visibleContextMenus; toolboxList->addItems(toolboxes); //add corresponding widgets toolbarList->addItems(toolbars); + contextMenuList->addItems(contextmenus); break; } @@ -302,9 +329,11 @@ void viewModeWidget::slotSetToolWidgets(){ if ( !modes_.empty() ) { QStringList allToolboxes = modes_[0]->visibleToolboxes; QStringList allToolbars = modes_[0]->visibleToolbars; + QStringList allContextMenus = modes_[0]->visibleContextMenus; QStringList availableToolboxList; QStringList availableToolbarList; + QStringList availableContextMenuList; for ( int i = 0; i < allToolboxes.size(); ++i ) { if ( ! toolboxes.contains(allToolboxes[i]) ) @@ -316,8 +345,14 @@ void viewModeWidget::slotSetToolWidgets(){ availableToolbarList.push_back(allToolbars[i]); } + for ( int i = 0; i < allContextMenus.size(); ++i ) { + if ( ! contextmenus.contains(allContextMenus[i]) ) + availableContextMenuList.push_back(allContextMenus[i]); + } + availableToolboxes->addItems(availableToolboxList); availableToolbars->addItems(availableToolbarList); + availableContextMenus->addItems(availableContextMenuList); } else { std::cerr << "Mode not found!" << std::endl; @@ -330,7 +365,7 @@ void viewModeWidget::slotSetToolWidgets(){ // ToolBar Context Menus Buttons // ======================================================================================================= -/// opens custom context menu in used toolbox-List +/// opens custom context menu in used toolbar-List void viewModeWidget::slotUsedToolbarContextMenu ( const QPoint & _pos ){ if (toolboxList->itemAt(_pos)){ @@ -344,7 +379,7 @@ void viewModeWidget::slotUsedToolbarContextMenu ( const QPoint & _pos ){ } } -/// opens custom context menu in available toolbox-List +/// opens custom context menu in available toolbar-List void viewModeWidget::slotAvailableToolbarContextMenu ( const QPoint & _pos ){ if (availableToolbars->itemAt(_pos)){ @@ -370,8 +405,8 @@ void viewModeWidget::slotUsedToolboxContextMenu ( const QPoint & _pos ){ QMenu menu(0); if (toolboxList->selectedItems().count() == 1){ - menu.addAction(tr("Move up"), this, SLOT ( slotMoveUp() )); - menu.addAction(tr("Move down"), this, SLOT ( slotMoveDown() )); + menu.addAction(tr("Move up"), this, SLOT ( slotMoveToolboxUp() )); + menu.addAction(tr("Move down"), this, SLOT ( slotMoveToolboxDown() )); menu.addSeparator(); } @@ -396,6 +431,43 @@ void viewModeWidget::slotAvailableToolboxContextMenu ( const QPoint & _pos ){ } } +// ======================================================================================================= +// ContextMenu Context Menus Buttons +// ======================================================================================================= + +/// opens custom context menu in used contextmenu-List +void viewModeWidget::slotUsedContextMenuContextMenu ( const QPoint & _pos ){ + + if (contextMenuList->itemAt(_pos)){ + + QMenu menu(0); + + if (contextMenuList->selectedItems().count() == 1){ + menu.addAction(tr("Move up"), this, SLOT ( slotMoveContextMenuUp() )); + menu.addAction(tr("Move down"), this, SLOT ( slotMoveContextMenuDown() )); + menu.addSeparator(); + } + + if ( contextMenuList->selectedItems().count() != 0 ) + menu.addAction(tr("Remove"), this, SLOT ( slotRightArrowContextMenu() )); + + menu.exec(contextMenuList->mapToGlobal( _pos) ); + } +} + +/// opens custom context menu in available contextmenu-List +void viewModeWidget::slotAvailableContextMenuContextMenu ( const QPoint & _pos ){ + + if (availableContextMenus->itemAt(_pos)){ + + QMenu menu(0); + + if ( availableContextMenus->selectedItems().count() != 0 ) + menu.addAction(tr("Add"), this, SLOT ( slotLeftArrowContextMenu() )); + + menu.exec(availableContextMenus->mapToGlobal( _pos) ); + } +} // ======================================================================================================= // ToolBar Buttons @@ -439,7 +511,7 @@ void viewModeWidget::slotLeftArrowToolbox() { /// Move Widget up in the list -void viewModeWidget::slotMoveUp(){ +void viewModeWidget::slotMoveToolboxUp(){ if (toolboxList->selectedItems().count() == 1){ if (toolboxList->currentRow() == 0) return; //extract a list of all items @@ -466,8 +538,8 @@ void viewModeWidget::slotMoveUp(){ } } -/// Move widget do in the list -void viewModeWidget::slotMoveDown(){ +/// Move widget down in the list +void viewModeWidget::slotMoveToolboxDown(){ if (toolboxList->selectedItems().count() == 1){ if (toolboxList->currentRow() == toolboxList->count()-1) return; //extract a list of all items @@ -494,6 +566,83 @@ void viewModeWidget::slotMoveDown(){ } } +// ======================================================================================================= +// ContextMenu Buttons +// ======================================================================================================= + +void viewModeWidget::slotRightArrowContextMenu() { + QList selectedItems = contextMenuList->selectedItems (); + for ( int i = 0 ; i < selectedItems.size(); ++i ) + availableContextMenus->addItem(selectedItems[i]->text()); + + qDeleteAll(selectedItems); +} + +void viewModeWidget::slotLeftArrowContextMenu() { + QList selectedItems = availableContextMenus->selectedItems (); + for ( int i = 0 ; i < selectedItems.size(); ++i ) + contextMenuList->addItem(selectedItems[i]->text()); + + qDeleteAll(selectedItems); +} + + +/// Move Widget up in the list +void viewModeWidget::slotMoveContextMenuUp(){ + if (contextMenuList->selectedItems().count() == 1){ + if (contextMenuList->currentRow() == 0) return; + //extract a list of all items + QString item = contextMenuList->currentItem()->text(); + int oldRow = contextMenuList->currentRow(); + QStringList widgets; + for (int i=0; i < contextMenuList->count(); i++) + widgets << contextMenuList->item(i)->text(); + + //reorder items + QString last = widgets[0]; + for (int i=1; i < widgets.size(); i++){ + if (widgets[i] == item){ + widgets[i] = last; + widgets[i-1] = item; + } + last = widgets[i]; + } + // set new list as elements for the toolboxList + contextMenuList->clear(); + contextMenuList->addItems(widgets); + //highlight active item + contextMenuList->setCurrentRow(oldRow-1); + } +} + +/// Move widget down in the list +void viewModeWidget::slotMoveContextMenuDown(){ + if (contextMenuList->selectedItems().count() == 1){ + if (contextMenuList->currentRow() == contextMenuList->count()-1) return; + //extract a list of all items + QString item = contextMenuList->currentItem()->text(); + int oldRow = contextMenuList->currentRow(); + QStringList widgets; + for (int i=0; i < contextMenuList->count(); i++) + widgets << contextMenuList->item(i)->text(); + + //reorder items + QString last = widgets[widgets.size()-1]; + for (int i=widgets.size()-2; i >= 0; i--){ + if (widgets[i] == item){ + widgets[i] = last; + widgets[i+1] = item; + } + last = widgets[i]; + } + // set new list as elements for the toolboxList + contextMenuList->clear(); + contextMenuList->addItems(widgets); + //highlight active item + contextMenuList->setCurrentRow(oldRow+1); + } +} + // ======================================================================================================= @@ -512,6 +661,11 @@ void viewModeWidget::slotChangeView(){ for (int i=0; i < toolbarList->count(); i++) toolbars << toolbarList->item(i)->text(); + //get context menus + QStringList contextmenus; + for (int i=0; i < contextMenuList->count(); i++) + contextmenus << contextMenuList->item(i)->text(); + //get mode QString mode = ""; if (viewModeList->selectedItems().size() > 0) @@ -553,6 +707,15 @@ void viewModeWidget::slotChangeView(){ matching = false; } + // Check if context menu list matches: + if ( modes_[id]->visibleContextMenus.size() == contextmenus.size() ) { + for ( int i = 0 ; i < modes_[id]->visibleContextMenus.size(); ++i ) + if ( modes_[id]->visibleContextMenus[i] != contextmenus[i] ) + matching = false; + } else { + matching = false; + } + if ( !matching ) { int ret = QMessageBox::warning(this, tr("Mode has been changed!"), @@ -564,7 +727,7 @@ void viewModeWidget::slotChangeView(){ } - emit changeView(mode,toolboxes,toolbars); + emit changeView(mode,toolboxes,toolbars,contextmenus); close(); } @@ -593,6 +756,11 @@ void viewModeWidget::slotSaveMode(){ QStringList toolbars; for (int i=0; i < toolbarList->count(); i++) toolbars << toolbarList->item(i)->text(); + + // Get Context Menus + QStringList contextmenus; + for (int i=0; i < contextMenuList->count(); i++) + contextmenus << contextMenuList->item(i)->text(); bool createNewMode = false; @@ -637,13 +805,14 @@ void viewModeWidget::slotSaveMode(){ return; } - emit saveMode(name, true, toolboxes, toolbars); + emit saveMode(name, true, toolboxes, toolbars, contextmenus); show(name); } else { - emit saveMode(modes_[id]->name, true, toolboxes, toolbars); + emit saveMode(modes_[id]->name, true, toolboxes, toolbars, contextmenus); show(modes_[id]->name); } + slotModeChanged(QString()); } diff --git a/widgets/viewModeWidget/viewModeWidget.hh b/widgets/viewModeWidget/viewModeWidget.hh index 58b2e97a8cdd55b3005ad27a302f59ef7bd35b60..e34bafd3405f513724b38f19abb31039d2792680 100644 --- a/widgets/viewModeWidget/viewModeWidget.hh +++ b/widgets/viewModeWidget/viewModeWidget.hh @@ -61,6 +61,7 @@ class viewModeWidget : public QDialog, public Ui::viewMode public: viewModeWidget(const QVector< ViewMode* >& _modes, QWidget *parent = 0 ); void show(QString _lastMode); + //void toolbarList(Qt::ContextMenuPolicy arg1); private slots: void slotModeChanged(QString _mode); @@ -113,7 +114,7 @@ class viewModeWidget : public QDialog, public Ui::viewMode * * This slot updates all list views depending on the currently selected view mode */ - void slotSetToolWidgets(); + void slotSetAllWidgets(); // ============================================ // ToolBar Views Context Menu @@ -143,7 +144,22 @@ class viewModeWidget : public QDialog, public Ui::viewMode * * This slot shows the available toolbox Context Menu */ - void slotAvailableToolboxContextMenu ( const QPoint & _pos ); + void slotAvailableToolboxContextMenu ( const QPoint & _pos ); + + // ============================================ + // ContextMenu Views Context Menu + // ============================================ + /** \brief Context Menu Used ContextMenus + * + * This slot shows the used ContextMenu Context Menu + */ + void slotUsedContextMenuContextMenu ( const QPoint & _pos ); + + /** \brief Context Menu Available ContextMenus + * + * This slot shows the available ContextMenu Context Menu + */ + void slotAvailableContextMenuContextMenu ( const QPoint & _pos ); // ============================================ @@ -180,13 +196,40 @@ class viewModeWidget : public QDialog, public Ui::viewMode * * This slot moves the widget upward in the list of used modes */ - void slotMoveUp(); + void slotMoveToolboxUp(); + + /** \brief Move Toolbox down + * + * This slot moves the widget downward in the list of used modes + */ + void slotMoveToolboxDown(); + + // ============================================ + //ContextMenu Buttons + // ============================================ + /** \brief remove ContextMenu from Mode + * + * This slot removes the selected widgets from the current view Mode + */ + void slotRightArrowContextMenu(); + + /** \brief add ContextMenu to Mode + * + * This slot adds the selected widgets to the current view Mode + */ + void slotLeftArrowContextMenu(); + + /** \brief Move ContextMenu up + * + * This slot moves the widget upward in the list of used modes + */ + void slotMoveContextMenuUp(); /** \brief Move Toolbox down * * This slot moves the widget downward in the list of used modes */ - void slotMoveDown(); + void slotMoveContextMenuDown(); // ============================================ @@ -205,10 +248,10 @@ class viewModeWidget : public QDialog, public Ui::viewMode signals: /// Changes the view mode to the currently configured one - void changeView(QString _mode, QStringList _toolboxWidgets, QStringList _toolbars); + void changeView(QString _mode, QStringList _toolboxWidgets, QStringList _toolbars, QStringList _contextmenus); /// saves the given mode - void saveMode(QString _name, bool _custom, QStringList _toolboxWidgets, QStringList _toolbars); + void saveMode(QString _name, bool _custom, QStringList _toolboxWidgets, QStringList _toolbars, QStringList _contextmenus); /// This signal is emitted to remove a mode void removeMode(QString _name);