Mercurial > octave
diff libgui/graphics/Menu.cc @ 31648:29d734430e5f stable
maint: Re-indent code after switch to using namespace macros.
* BaseControl.cc, BaseControl.h, ButtonControl.cc, ButtonControl.h,
ButtonGroup.cc, ButtonGroup.h, Canvas.cc, Canvas.h,
CheckBoxControl.cc, CheckBoxControl.h, Container.cc, Container.h,
ContextMenu.cc, ContextMenu.h, EditControl.cc, EditControl.h,
Figure.cc, Figure.h, FigureWindow.cc, FigureWindow.h, GLCanvas.cc,
GLCanvas.h, GenericEventNotify.h, KeyMap.cc, KeyMap.h,
ListBoxControl.cc, ListBoxControl.h, Logger.cc, Logger.h, Menu.cc,
Menu.h, MenuContainer.h, Object.cc, Object.h, ObjectProxy.cc,
ObjectProxy.h, Panel.cc, Panel.h, PopupMenuControl.cc,
PopupMenuControl.h, PushButtonControl.cc, PushButtonControl.h,
PushTool.cc, PushTool.h, QtHandlesUtils.cc, QtHandlesUtils.h,
RadioButtonControl.cc, RadioButtonControl.h, SliderControl.cc,
SliderControl.h, Table.cc, Table.h, TextControl.cc, TextControl.h,
TextEdit.cc, TextEdit.h, ToggleButtonControl.cc,
ToggleButtonControl.h, ToggleTool.cc, ToggleTool.h, ToolBar.cc,
ToolBar.h, ToolBarButton.cc, ToolBarButton.h, annotation-dialog.cc,
annotation-dialog.h, gl-select.cc, gl-select.h, qopengl-functions.h,
qt-graphics-toolkit.cc, qt-graphics-toolkit.h, module.mk, QTerminal.h,
color-picker.cc, color-picker.h, command-widget.cc, command-widget.h,
community-news.cc, community-news.h, dialog.cc, dialog.h,
documentation-bookmarks.cc, documentation-bookmarks.h,
documentation-dock-widget.cc, documentation-dock-widget.h,
documentation.cc, documentation.h, dw-main-window.cc,
dw-main-window.h, external-editor-interface.cc,
external-editor-interface.h, files-dock-widget.cc,
files-dock-widget.h, find-files-dialog.cc, find-files-dialog.h,
find-files-model.cc, find-files-model.h, graphics-init.cc,
graphics-init.h, gui-settings.cc, gui-settings.h, gui-utils.cc,
gui-utils.h, history-dock-widget.cc, history-dock-widget.h,
interpreter-qobject.cc, interpreter-qobject.h, led-indicator.cc,
led-indicator.h, file-editor-interface.h, file-editor-tab.cc,
file-editor-tab.h, file-editor.cc, file-editor.h, find-dialog.cc,
find-dialog.h, marker.cc, marker.h, octave-qscintilla.cc,
octave-qscintilla.h, octave-txt-lexer.cc, octave-txt-lexer.h,
main-window.cc, main-window.h, news-reader.cc, news-reader.h,
octave-dock-widget.cc, octave-dock-widget.h, octave-qobject.cc,
octave-qobject.h, qt-application.cc, qt-application.h,
qt-interpreter-events.cc, qt-interpreter-events.h, qt-utils.h,
release-notes.cc, release-notes.h, resource-manager.cc,
resource-manager.h, set-path-dialog.cc, set-path-dialog.h,
set-path-model.cc, set-path-model.h, settings-dialog.cc,
settings-dialog.h, shortcut-manager.cc, shortcut-manager.h,
tab-bar.cc, tab-bar.h, terminal-dock-widget.cc,
terminal-dock-widget.h, variable-editor-model.cc,
variable-editor-model.h, variable-editor.cc, variable-editor.h,
welcome-wizard.cc, welcome-wizard.h, workspace-model.cc,
workspace-model.h, workspace-view.cc, workspace-view.h:
Re-indent code after switch to using namespace macros.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 06 Dec 2022 14:53:00 -0500 |
parents | c6d54dd31a7e |
children | deb553ac2c54 597f3ee61a48 |
line wrap: on
line diff
--- a/libgui/graphics/Menu.cc Tue Dec 06 14:37:51 2022 -0500 +++ b/libgui/graphics/Menu.cc Tue Dec 06 14:53:00 2022 -0500 @@ -40,100 +40,205 @@ OCTAVE_BEGIN_NAMESPACE(octave) - static QKeySequence - accelSequence (const uimenu::properties& up) - { - std::string s (up.get_accelerator ()); +static QKeySequence +accelSequence (const uimenu::properties& up) +{ + std::string s (up.get_accelerator ()); + + if (! s.empty ()) + { + char c = s[0]; + int keyMod = Qt::CTRL; - if (! s.empty ()) - { - char c = s[0]; - int keyMod = Qt::CTRL; + if (c >= 'A' && c <= 'Z') + keyMod |= Qt::SHIFT; + if (c >= 'a' && c <= 'z') + c -= ('a' - 'A'); + if (c >= 'A' && c <= 'Z') + return QKeySequence (keyMod | static_cast<int> (c)); + } + + return QKeySequence (); +} - if (c >= 'A' && c <= 'Z') - keyMod |= Qt::SHIFT; - if (c >= 'a' && c <= 'z') - c -= ('a' - 'A'); - if (c >= 'A' && c <= 'Z') - return QKeySequence (keyMod | static_cast<int> (c)); - } +Menu * +Menu::create (octave::base_qobject& oct_qobj, octave::interpreter& interp, + const graphics_object& go) +{ + Object *parent_obj = parentObject (interp, go); + + if (parent_obj) + { + QObject *qObj = parent_obj->qObject (); - return QKeySequence (); - } + if (qObj) + return new Menu (oct_qobj, interp, go, new QAction (qObj), + parent_obj); + } + + return nullptr; +} + +Menu::Menu (octave::base_qobject& oct_qobj, octave::interpreter& interp, + const graphics_object& go, QAction *action, Object *xparent) + : Object (oct_qobj, interp, go, action), m_parent (nullptr), + m_separator (nullptr) +{ + uimenu::properties& up = properties<uimenu> (); - Menu * - Menu::create (octave::base_qobject& oct_qobj, octave::interpreter& interp, - const graphics_object& go) - { - Object *parent_obj = parentObject (interp, go); + action->setText (Utils::fromStdString (up.get_text ())); + + if (up.is_checked ()) + { + action->setCheckable (true); + action->setChecked (up.is_checked ()); + } + + action->setEnabled (up.is_enable ()); + action->setShortcut (accelSequence (up)); + action->setVisible (up.is_visible ()); - if (parent_obj) - { - QObject *qObj = parent_obj->qObject (); + if (up.is_separator ()) + { + m_separator = new QAction (action); + m_separator->setSeparator (true); + m_separator->setVisible (up.is_visible ()); + } + + MenuContainer *menuContainer = dynamic_cast<MenuContainer *> (xparent); + + if (menuContainer) + m_parent = menuContainer->menu (); - if (qObj) - return new Menu (oct_qobj, interp, go, new QAction (qObj), - parent_obj); - } + if (m_parent) + { + int pos = static_cast<int> (up.get_position ()); + + if (pos <= 0) + { + if (m_separator) + m_parent->insertAction (nullptr, m_separator); + m_parent->insertAction (nullptr, action); + + int count = 0; - return nullptr; - } + for (auto *a : m_parent->actions ()) + if (! a->isSeparator ()) + count++; - Menu::Menu (octave::base_qobject& oct_qobj, octave::interpreter& interp, - const graphics_object& go, QAction *action, Object *xparent) - : Object (oct_qobj, interp, go, action), m_parent (nullptr), - m_separator (nullptr) - { - uimenu::properties& up = properties<uimenu> (); + up.get_property ("position").set + (octave_value (static_cast<double> (count)), true, false); + } + else + { + + int count = 0; + QAction *before = nullptr; - action->setText (Utils::fromStdString (up.get_text ())); + for (auto *a : m_parent->actions ()) + { + if (! a->isSeparator ()) + { + count++; + if (pos <= count) + { + before = a; + break; + } + } + } - if (up.is_checked ()) - { - action->setCheckable (true); - action->setChecked (up.is_checked ()); - } - - action->setEnabled (up.is_enable ()); - action->setShortcut (accelSequence (up)); - action->setVisible (up.is_visible ()); + if (m_separator) + m_parent->insertAction (before, m_separator); + m_parent->insertAction (before, action); - if (up.is_separator ()) - { - m_separator = new QAction (action); - m_separator->setSeparator (true); - m_separator->setVisible (up.is_visible ()); - } + if (before) + updateSiblingPositions (); + else + up.get_property ("position").set + (octave_value (static_cast<double> (count+1)), true, false); + } + } + + connect (action, &QAction::triggered, this, &Menu::actionTriggered); +} - MenuContainer *menuContainer = dynamic_cast<MenuContainer *> (xparent); +Menu::~Menu (void) +{ } - if (menuContainer) - m_parent = menuContainer->menu (); +void +Menu::update (int pId) +{ + uimenu::properties& up = properties<uimenu> (); + QAction *action = qWidget<QAction> (); + + switch (pId) + { + case uimenu::properties::ID_TEXT: + action->setText (Utils::fromStdString (up.get_text ())); + break; - if (m_parent) - { - int pos = static_cast<int> (up.get_position ()); + case uimenu::properties::ID_CHECKED: + if (up.is_checked ()) + { + action->setCheckable (true); + action->setChecked (up.is_checked ()); + } + else + { + action->setChecked (false); + action->setCheckable (false); + } + break; - if (pos <= 0) - { - if (m_separator) - m_parent->insertAction (nullptr, m_separator); - m_parent->insertAction (nullptr, action); + case uimenu::properties::ID_ENABLE: + action->setEnabled (up.is_enable ()); + break; - int count = 0; + case uimenu::properties::ID_ACCELERATOR: + if (! action->menu ()) + action->setShortcut (accelSequence (up)); + break; - for (auto *a : m_parent->actions ()) - if (! a->isSeparator ()) - count++; + case uimenu::properties::ID_SEPARATOR: + if (up.is_separator ()) + { + if (! m_separator) + { + m_separator = new QAction (action); + m_separator->setSeparator (true); + m_separator->setVisible (up.is_visible ()); + if (m_parent) + m_parent->insertAction (action, m_separator); + } + } + else + { + if (m_separator) + delete m_separator; + m_separator = nullptr; + } + break; - up.get_property ("position").set - (octave_value (static_cast<double> (count)), true, false); - } - else + case uimenu::properties::ID_VISIBLE: + action->setVisible (up.is_visible ()); + if (m_separator) + m_separator->setVisible (up.is_visible ()); + break; + + case uimenu::properties::ID_POSITION: + { + if (m_separator) + m_parent->removeAction (m_separator); + + m_parent->removeAction (action); + + int pos = static_cast<int> (up.get_position ()); + QAction *before = nullptr; + + if (pos > 0) { - int count = 0; - QAction *before = nullptr; for (auto *a : m_parent->actions ()) { @@ -147,193 +252,88 @@ } } } + } - if (m_separator) - m_parent->insertAction (before, m_separator); - m_parent->insertAction (before, action); + if (m_separator) + m_parent->insertAction (before, m_separator); + + m_parent->insertAction (before, action); - if (before) - updateSiblingPositions (); - else - up.get_property ("position").set - (octave_value (static_cast<double> (count+1)), true, false); - } + updateSiblingPositions (); } + break; - connect (action, &QAction::triggered, this, &Menu::actionTriggered); - } - - Menu::~Menu (void) - { } + default: + Object::update (pId); + break; + } +} - void - Menu::update (int pId) - { - uimenu::properties& up = properties<uimenu> (); - QAction *action = qWidget<QAction> (); - - switch (pId) - { - case uimenu::properties::ID_TEXT: - action->setText (Utils::fromStdString (up.get_text ())); - break; +QWidget * +Menu::menu (void) +{ + QAction *action = qWidget<QAction> (); + QMenu *action_menu = action->menu (); - case uimenu::properties::ID_CHECKED: - if (up.is_checked ()) - { - action->setCheckable (true); - action->setChecked (up.is_checked ()); - } - else - { - action->setChecked (false); - action->setCheckable (false); - } - break; + if (! action_menu) + { + action_menu = new QMenu (action->parentWidget ()); + action->setMenu (action_menu); + action->setShortcut (QKeySequence ()); + connect (action_menu, &QMenu::aboutToShow, this, &Menu::actionHovered); + } - case uimenu::properties::ID_ENABLE: - action->setEnabled (up.is_enable ()); - break; + return action_menu; +} - case uimenu::properties::ID_ACCELERATOR: - if (! action->menu ()) - action->setShortcut (accelSequence (up)); - break; +void +Menu::actionTriggered (void) +{ + QAction *action = qWidget<QAction> (); - case uimenu::properties::ID_SEPARATOR: - if (up.is_separator ()) - { - if (! m_separator) - { - m_separator = new QAction (action); - m_separator->setSeparator (true); - m_separator->setVisible (up.is_visible ()); - if (m_parent) - m_parent->insertAction (action, m_separator); - } - } - else - { - if (m_separator) - delete m_separator; - m_separator = nullptr; - } - break; + if (action->isCheckable ()) + action->setChecked (! action->isChecked ()); + emit gh_callback_event (m_handle, "menuselectedfcn"); +} + +void +Menu::actionHovered (void) +{ + emit gh_callback_event (m_handle, "menuselectedfcn"); +} - case uimenu::properties::ID_VISIBLE: - action->setVisible (up.is_visible ()); - if (m_separator) - m_separator->setVisible (up.is_visible ()); - break; +void +Menu::updateSiblingPositions (void) +{ + if (m_parent) + { + double count = 1.0; - case uimenu::properties::ID_POSITION: + for (auto *a : m_parent->actions ()) { - if (m_separator) - m_parent->removeAction (m_separator); - - m_parent->removeAction (action); + if (! a->isSeparator ()) + { + Object *aObj = Object::fromQObject (a); - int pos = static_cast<int> (up.get_position ()); - QAction *before = nullptr; - - if (pos > 0) - { - int count = 0; - - for (auto *a : m_parent->actions ()) + if (aObj) { - if (! a->isSeparator ()) + graphics_object go = aObj->object (); + + // Probably overkill as a uimenu child can only be another + // uimenu object. + if (go.isa ("uimenu")) { - count++; - if (pos <= count) - { - before = a; - break; - } + uimenu::properties& up = Utils::properties<uimenu> (go); + + up.get_property ("position").set + (octave_value (count), true, false); } } + + count++; } - - if (m_separator) - m_parent->insertAction (before, m_separator); - - m_parent->insertAction (before, action); - - updateSiblingPositions (); } - break; - - default: - Object::update (pId); - break; - } - } - - QWidget * - Menu::menu (void) - { - QAction *action = qWidget<QAction> (); - QMenu *action_menu = action->menu (); - - if (! action_menu) - { - action_menu = new QMenu (action->parentWidget ()); - action->setMenu (action_menu); - action->setShortcut (QKeySequence ()); - connect (action_menu, &QMenu::aboutToShow, this, &Menu::actionHovered); - } - - return action_menu; - } - - void - Menu::actionTriggered (void) - { - QAction *action = qWidget<QAction> (); - - if (action->isCheckable ()) - action->setChecked (! action->isChecked ()); - emit gh_callback_event (m_handle, "menuselectedfcn"); - } - - void - Menu::actionHovered (void) - { - emit gh_callback_event (m_handle, "menuselectedfcn"); - } - - void - Menu::updateSiblingPositions (void) - { - if (m_parent) - { - double count = 1.0; - - for (auto *a : m_parent->actions ()) - { - if (! a->isSeparator ()) - { - Object *aObj = Object::fromQObject (a); - - if (aObj) - { - graphics_object go = aObj->object (); - - // Probably overkill as a uimenu child can only be another - // uimenu object. - if (go.isa ("uimenu")) - { - uimenu::properties& up = Utils::properties<uimenu> (go); - - up.get_property ("position").set - (octave_value (count), true, false); - } - } - - count++; - } - } - } - } + } +} OCTAVE_END_NAMESPACE(octave)