]> SALOME platform Git repositories - modules/gui.git/blob - src/SUIT/SUIT_PagePrefShortcutTreeItem.cxx
Salome HOME
[bos #40644][CEA](2024-T1) Feature search.
[modules/gui.git] / src / SUIT / SUIT_PagePrefShortcutTreeItem.cxx
1 #include "SUIT_PagePrefShortcutTreeItem.h"
2
3 #include "SUIT_ShortcutTree.h"
4 #include "SUIT_ShortcutMgr.h"
5
6
7 /*!
8   \brief Creates preference item for editing of key bindings
9   \param theParent parent preference item. Must not be nullptr.
10 */
11 SUIT_PagePrefShortcutTreeItem::SUIT_PagePrefShortcutTreeItem(QtxPreferenceItem* theParent)
12  : QtxPagePrefItem(QString(), theParent)
13 {
14   auto container = std::shared_ptr<SUIT_ShortcutContainer>();
15   const auto itContainers = SUIT_PagePrefShortcutTreeItem::shortcutContainers.find(rootItem());
16   if (itContainers == SUIT_PagePrefShortcutTreeItem::shortcutContainers.end()) {
17     container.reset(new SUIT_ShortcutContainer());
18     SUIT_PagePrefShortcutTreeItem::shortcutContainers.emplace(rootItem(), container);
19   }
20   else {
21     container = itContainers->second.lock();
22     if (!container) {
23       container.reset(new SUIT_ShortcutContainer());
24       itContainers->second = container;
25     }
26   }
27
28   SUIT_ShortcutTree* tree = new SUIT_ShortcutTree(container);
29   tree->myModuleIDs = SUIT_ShortcutMgr::get()->getShortcutModuleIDs();
30   setWidget(tree);
31 }
32
33 /*!
34   \brief Retrieves shortcut preferences from ShortcutMgr.
35   Updates UI of controlling widget.
36   \sa store()
37 */
38 void SUIT_PagePrefShortcutTreeItem::retrieve()
39 {
40   static_cast<SUIT_ShortcutTree*>(widget())->setShortcutsFromManager();
41 }
42
43 /*!
44   \brief Retrieves shortcut preferences from resource files, ignoring user preferences.
45   Updates UI of controlling widget.
46   \sa store()
47 */
48 void SUIT_PagePrefShortcutTreeItem::retrieveDefault()
49 {
50   static_cast<SUIT_ShortcutTree*>(widget())->setDefaultShortcuts();
51 }
52
53 /*!
54   \brief Applies modified shortcut preferences to ShortcutMgr.
55   Updates UI of controlling widget.
56   And ShortcutMgr, in turn, serilizes shortcut preferences using the resource manager.
57   \sa retrieve()
58 */
59 void SUIT_PagePrefShortcutTreeItem::store()
60 {
61   static_cast<SUIT_ShortcutTree*>(widget())->applyChangesToShortcutMgr();
62 }
63
64 /*static*/ std::map<QtxPreferenceItem*, std::weak_ptr<SUIT_ShortcutContainer>> SUIT_PagePrefShortcutTreeItem::shortcutContainers =
65 std::map<QtxPreferenceItem*, std::weak_ptr<SUIT_ShortcutContainer>>();