1 #ifndef KEYBINDINGS_H
2 #define KEYBINDINGS_H
3 
4 #include "DialogBox.h"
5 #include "IconList.h"
6 
7 
8 class KeybindingsBox : public DialogBox
9 {
10     FXDECLARE(KeybindingsBox)
11 protected:
12     IconList*     glbBindingsList;
13     IconList*     xfeBindingsList;
14     IconList*     xfiBindingsList;
15     IconList*     xfwBindingsList;
16     FXStringDict* glbBindingsDict;
17     FXStringDict* xfeBindingsDict;
18     FXStringDict* xfiBindingsDict;
19     FXStringDict* xfwBindingsDict;
20     FXStringDict* glbBindingsDict_prev;
21     FXStringDict* xfeBindingsDict_prev;
22     FXStringDict* xfiBindingsDict_prev;
23     FXStringDict* xfwBindingsDict_prev;
24     FXbool        changed;
25 
26 private:
KeybindingsBox()27     KeybindingsBox() : glbBindingsList(NULL), xfeBindingsList(NULL), xfiBindingsList(NULL), xfwBindingsList(NULL),
28                        glbBindingsDict(NULL), xfeBindingsDict(NULL), xfiBindingsDict(NULL), xfwBindingsDict(NULL),
29                        glbBindingsDict_prev(NULL), xfeBindingsDict_prev(NULL), xfiBindingsDict_prev(NULL),
30                        xfwBindingsDict_prev(NULL), changed(false)
31     {}
32 public:
33     enum
34     {
35         ID_ACCEPT=DialogBox::ID_LAST,
36         ID_CANCEL,
37         ID_GLB_BINDINGS_LIST,
38         ID_XFE_BINDINGS_LIST,
39         ID_XFI_BINDINGS_LIST,
40         ID_XFW_BINDINGS_LIST,
41         ID_GLB_SORT_BY_ACTIONNAME,
42         ID_GLB_SORT_BY_REGISTRYKEY,
43         ID_GLB_SORT_BY_KEYBINDING,
44         ID_XFE_SORT_BY_ACTIONNAME,
45         ID_XFE_SORT_BY_REGISTRYKEY,
46         ID_XFE_SORT_BY_KEYBINDING,
47         ID_XFI_SORT_BY_ACTIONNAME,
48         ID_XFI_SORT_BY_REGISTRYKEY,
49         ID_XFI_SORT_BY_KEYBINDING,
50         ID_XFW_SORT_BY_ACTIONNAME,
51         ID_XFW_SORT_BY_REGISTRYKEY,
52         ID_XFW_SORT_BY_KEYBINDING,
53         ID_LAST
54     };
55     KeybindingsBox(FXWindow*, FXStringDict*, FXStringDict*, FXStringDict*, FXStringDict*);
56     virtual void create();
57 
58     virtual ~KeybindingsBox();
59     FXuint execute(FXuint);
60     long   onCmdAccept(FXObject*, FXSelector, void*);
61     long   onCmdCancel(FXObject*, FXSelector, void*);
62     long   onCmdDefineGlbKeybindings(FXObject*, FXSelector, void*);
63     long   onCmdDefineXfeKeybindings(FXObject*, FXSelector, void*);
64     long   onCmdDefineXfiKeybindings(FXObject*, FXSelector, void*);
65     long   onCmdDefineXfwKeybindings(FXObject*, FXSelector, void*);
66     long   onCmdGlbSortByActionName(FXObject*, FXSelector, void*);
67     long   onCmdGlbSortByRegistryKey(FXObject*, FXSelector, void*);
68     long   onCmdGlbSortByKeyBinding(FXObject*, FXSelector, void*);
69     long   onCmdXfeSortByActionName(FXObject*, FXSelector, void*);
70     long   onCmdXfeSortByRegistryKey(FXObject*, FXSelector, void*);
71     long   onCmdXfeSortByKeyBinding(FXObject*, FXSelector, void*);
72     long   onCmdXfiSortByActionName(FXObject*, FXSelector, void*);
73     long   onCmdXfiSortByRegistryKey(FXObject*, FXSelector, void*);
74     long   onCmdXfiSortByKeyBinding(FXObject*, FXSelector, void*);
75     long   onCmdXfwSortByActionName(FXObject*, FXSelector, void*);
76     long   onCmdXfwSortByRegistryKey(FXObject*, FXSelector, void*);
77     long   onCmdXfwSortByKeyBinding(FXObject*, FXSelector, void*);
78     long   onCmdGlbHeaderClicked(FXObject*, FXSelector, void*);
79     long   onCmdXfeHeaderClicked(FXObject*, FXSelector, void*);
80     long   onCmdXfiHeaderClicked(FXObject*, FXSelector, void*);
81     long   onCmdXfwHeaderClicked(FXObject*, FXSelector, void*);
82     long   onUpdGlbHeader(FXObject*, FXSelector, void*);
83     long   onUpdXfeHeader(FXObject*, FXSelector, void*);
84     long   onUpdXfiHeader(FXObject*, FXSelector, void*);
85     long   onUpdXfwHeader(FXObject*, FXSelector, void*);
86 public:
87     static int compareSection(const char* p, const char* q, int s);
88     static int ascendingActionName(const IconItem* a, const IconItem* b);
89     static int descendingActionName(const IconItem* a, const IconItem* b);
90     static int ascendingRegistryKey(const IconItem* a, const IconItem* b);
91     static int descendingRegistryKey(const IconItem* a, const IconItem* b);
92     static int ascendingKeybinding(const IconItem* a, const IconItem* b);
93     static int descendingKeybinding(const IconItem* a, const IconItem* b);
94 };
95 #endif
96