]> git.lyx.org Git - features.git/commitdiff
Move the ItemType enum out of GuiPref and into KeyMap, where it belongs.
authorRichard Heck <rgheck@comcast.net>
Tue, 23 Sep 2008 13:53:38 +0000 (13:53 +0000)
committerRichard Heck <rgheck@comcast.net>
Tue, 23 Sep 2008 13:53:38 +0000 (13:53 +0000)
This is preparation for multi-LFUN bindings.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26503 a592a061-630c-0410-9148-cb99ea01b6c8

src/KeyMap.cpp
src/KeyMap.h
src/frontends/qt4/GuiPrefs.cpp
src/frontends/qt4/GuiPrefs.h

index a5e83b356bed7e497f19011a28ccef8e6ddd4cc6..19ce93464df2eb61d646b12122f62587a5925ea6 100644 (file)
@@ -449,7 +449,7 @@ KeyMap::Bindings KeyMap::findBindings(FuncRequest const & func,
 }
 
 
-KeyMap::BindingList KeyMap::listBindings(bool unbound, int tag) const
+KeyMap::BindingList KeyMap::listBindings(bool unbound, KeyMap::ItemType tag) const
 {
        BindingList list;
        listBindings(list, KeySequence(0, 0), tag);
@@ -475,7 +475,7 @@ KeyMap::BindingList KeyMap::listBindings(bool unbound, int tag) const
 
 
 void KeyMap::listBindings(BindingList & list,
-       KeySequence const & prefix, int tag) const
+       KeySequence const & prefix, KeyMap::ItemType tag) const
 {
        Table::const_iterator it = table.begin();
        Table::const_iterator it_end = table.end();
index 2b3ac315f15eab5b3537f5c96f46bd1b9fa136ce..ee992de628142f75c600bdfdd6e1b38eeee368ea 100644 (file)
@@ -29,6 +29,14 @@ namespace lyx {
 /// Defines key maps and actions for key sequences
 class KeyMap {
 public:
+       enum ItemType {
+               System,         //< loaded from a bind file
+               UserBind,       //< \bind loaded from user.bind
+               UserUnbind,     //< \unbind loaded from user.bind, with corresponding
+                               //<    entry in system bind file
+               UserExtraUnbind //< \unbind loaded from user.bind, without
+                               //<    corresponding entry in system bind file.
+       };
        /**
         * Bind/Unbind a key sequence to an action.
         * @return 0 on success, or position in string seq where error
@@ -70,7 +78,7 @@ public:
         * @param unbind use \unbind instead of \bind, indicating this KeyMap
         *        actually record unbind maps.
         */
-       void write(std::string const & bind_file, bool append, bool unbind=false) const;
+       void write(std::string const & bind_file, bool append, bool unbind = false) const;
 
        /**
         * print all available keysyms
@@ -87,7 +95,7 @@ public:
         * @return the action / LFUN_COMMAND_PREFIX / LFUN_UNKNOWN_ACTION
         */
        FuncRequest const &
-       lookup(KeySymbol const & key, KeyModifier mod, KeySequence * seq) const;
+               lookup(KeySymbol const & key, KeyModifier mod, KeySequence * seq) const;
 
        ///
        typedef std::vector<KeySequence> Bindings;
@@ -99,11 +107,11 @@ public:
        docstring printBindings(FuncRequest const & func) const;
 
        struct Binding {
-               Binding(FuncRequest const & r, KeySequence const & s, int t)
+               Binding(FuncRequest const & r, KeySequence const & s, ItemType t)
                        : request(r), sequence(s), tag(t) {}
                FuncRequest request;
                KeySequence sequence;
-               int tag;
+               KeyMap::ItemType tag;
        }; 
        typedef std::vector<Binding> BindingList;
        /**
@@ -111,7 +119,7 @@ public:
         * @param unbound list unbound (func without any keybinding) as well
         * @param tag an optional tag to indicate the source of the bindinglist
         */
-       BindingList listBindings(bool unbound, int tag = 0) const;
+       BindingList listBindings(bool unbound, ItemType tag = System) const;
 
        /**
         *  Given an action, find the first 1-key binding (if it exists).
@@ -119,7 +127,7 @@ public:
         *  [only used by the Qt/Mac frontend]
         */
        std::pair<KeySymbol, KeyModifier>
-       find1keybinding(FuncRequest const & func) const;
+               find1keybinding(FuncRequest const & func) const;
 
        /**
         * Returns a string of the given keysym, with modifiers.
@@ -151,10 +159,10 @@ private:
         * @param prefix a sequence to prepend the results
         */
        Bindings findBindings(FuncRequest const & func,
-                             KeySequence const & prefix) const;
+                             KeySequence const & prefix) const;
        
        void listBindings(BindingList & list, KeySequence const & prefix,
-                                 int tag) const;
+                         ItemType tag) const;
 
        /// is the table empty ?
        bool empty() const { return table.empty(); }
index 266d0591c0777692e6aa776a045559107f399e18..647dff1993e24ff181ca160c5089d965794e1ced 100644 (file)
@@ -2141,11 +2141,11 @@ void PrefShortcuts::updateShortcutsTW()
        // listBindings(unbound=true) lists all bound and unbound lfuns
        // Items in this list is tagged by its source.
        KeyMap::BindingList bindinglist = system_bind_.listBindings(true,
-               static_cast<int>(System));
+               KeyMap::System);
        KeyMap::BindingList user_bindinglist = user_bind_.listBindings(false,
-               static_cast<int>(UserBind));
+               KeyMap::UserBind);
        KeyMap::BindingList user_unbindinglist = user_unbind_.listBindings(false,
-               static_cast<int>(UserUnbind));
+               KeyMap::UserUnbind);
        bindinglist.insert(bindinglist.end(), user_bindinglist.begin(),
                        user_bindinglist.end());
        bindinglist.insert(bindinglist.end(), user_unbindinglist.begin(),
@@ -2154,7 +2154,7 @@ void PrefShortcuts::updateShortcutsTW()
        KeyMap::BindingList::const_iterator it = bindinglist.begin();
        KeyMap::BindingList::const_iterator it_end = bindinglist.end();
        for (; it != it_end; ++it)
-               insertShortcutItem(it->request, it->sequence, ItemType(it->tag));
+               insertShortcutItem(it->request, it->sequence, KeyMap::ItemType(it->tag));
 
        shortcutsTW->sortItems(0, Qt::AscendingOrder);
        QList<QTreeWidgetItem*> items = shortcutsTW->selectedItems();
@@ -2165,22 +2165,22 @@ void PrefShortcuts::updateShortcutsTW()
 }
 
 
-void PrefShortcuts::setItemType(QTreeWidgetItem * item, ItemType tag)
+void PrefShortcuts::setItemType(QTreeWidgetItem * item, KeyMap::ItemType tag)
 {
        item->setData(0, Qt::UserRole, QVariant(tag));
        QFont font;
 
        switch (tag) {
-       case System:
+       case KeyMap::System:
                break;
-       case UserBind:
+       case KeyMap::UserBind:
                font.setBold(true);
                break;
-       case UserUnbind:
+       case KeyMap::UserUnbind:
                font.setStrikeOut(true);
                break;
        // this item is not displayed now.
-       case UserExtraUnbind:
+       case KeyMap::UserExtraUnbind:
                font.setStrikeOut(true);
                break;
        }
@@ -2190,18 +2190,18 @@ void PrefShortcuts::setItemType(QTreeWidgetItem * item, ItemType tag)
 
 
 QTreeWidgetItem * PrefShortcuts::insertShortcutItem(FuncRequest const & lfun,
-               KeySequence const & seq, ItemType tag)
+               KeySequence const & seq, KeyMap::ItemType tag)
 {
        FuncCode action = lfun.action;
        string const action_name = lyxaction.getActionName(action);
        QString const lfun_name = toqstr(from_utf8(action_name)
                        + ' ' + lfun.argument());
        QString const shortcut = toqstr(seq.print(KeySequence::ForGui));
-       ItemType item_tag = tag;
+       KeyMap::ItemType item_tag = tag;
 
        QTreeWidgetItem * newItem = 0;
        // for unbind items, try to find an existing item in the system bind list
-       if (tag == UserUnbind) {
+       if (tag == KeyMap::UserUnbind) {
                QList<QTreeWidgetItem*> const items = shortcutsTW->findItems(lfun_name,
                        Qt::MatchFlags(Qt::MatchExactly | Qt::MatchRecursive), 0);
                for (int i = 0; i < items.size(); ++i) {
@@ -2209,11 +2209,11 @@ QTreeWidgetItem * PrefShortcuts::insertShortcutItem(FuncRequest const & lfun,
                                newItem = items[i];
                                break;
                        }
-               // if not found, this unbind item is UserExtraUnbind
+               // if not found, this unbind item is KeyMap::UserExtraUnbind
                // Such an item is not displayed to avoid confusion (what is
                // unmatched removed?).
                if (!newItem) {
-                       item_tag = UserExtraUnbind;
+                       item_tag = KeyMap::UserExtraUnbind;
                        return 0;
                }
        }
@@ -2259,8 +2259,9 @@ void PrefShortcuts::on_shortcutsTW_itemSelectionChanged()
        if (items.isEmpty())
                return;
 
-       ItemType tag = static_cast<ItemType>(items[0]->data(0, Qt::UserRole).toInt());
-       if (tag == UserUnbind)
+       KeyMap::ItemType tag = 
+               static_cast<KeyMap::ItemType>(items[0]->data(0, Qt::UserRole).toInt());
+       if (tag == KeyMap::UserUnbind)
                removePB->setText(qt_("Res&tore"));
        else
                removePB->setText(qt_("Remo&ve"));
@@ -2298,18 +2299,19 @@ void PrefShortcuts::removeShortcut()
                string shortcut = fromqstr(items[i]->data(1, Qt::UserRole).toString());
                string lfun = fromqstr(items[i]->text(0));
                FuncRequest func = lyxaction.lookupFunc(lfun);
-               ItemType tag = static_cast<ItemType>(items[i]->data(0, Qt::UserRole).toInt());
+               KeyMap::ItemType tag = 
+                       static_cast<KeyMap::ItemType>(items[i]->data(0, Qt::UserRole).toInt());
 
                switch (tag) {
-               case System: {
+               case KeyMap::System: {
                        // for system bind, we do not touch the item
                        // but add an user unbind item
                        user_unbind_.bind(shortcut, func);
-                       setItemType(items[i], UserUnbind);
+                       setItemType(items[i], KeyMap::UserUnbind);
                        removePB->setText(qt_("Res&tore"));
                        break;
                }
-               case UserBind: {
+               case KeyMap::UserBind: {
                        // for user_bind, we remove this bind
                        QTreeWidgetItem * parent = items[i]->parent();
                        int itemIdx = parent->indexOfChild(items[i]);
@@ -2321,15 +2323,15 @@ void PrefShortcuts::removeShortcut()
                        user_bind_.unbind(shortcut, func);
                        break;
                }
-               case UserUnbind: {
+               case KeyMap::UserUnbind: {
                        // for user_unbind, we remove the unbind, and the item
-                       // become System again.
+                       // become KeyMap::System again.
                        user_unbind_.unbind(shortcut, func);
-                       setItemType(items[i], System);
+                       setItemType(items[i], KeyMap::System);
                        removePB->setText(qt_("Remo&ve"));
                        break;
                }
-               case UserExtraUnbind: {
+               case KeyMap::UserExtraUnbind: {
                        // for user unbind that is not in system bind file,
                        // remove this unbind file
                        QTreeWidgetItem * parent = items[i]->parent();
@@ -2431,7 +2433,7 @@ void PrefShortcuts::shortcut_okPB_pressed()
                // so remove the previous one
                removeShortcut();
 
-       QTreeWidgetItem * item = insertShortcutItem(func, k, UserBind);
+       QTreeWidgetItem * item = insertShortcutItem(func, k, KeyMap::UserBind);
        if (item) {
                user_bind_.bind(&k, func);
                shortcutsTW->sortItems(0, Qt::AscendingOrder);
index 91bae203729d03d6968558b9ce58bcf1c0ccef06..e023ebaa97cbabd8d552d5d98fbb11b30c9f335a 100644 (file)
@@ -421,15 +421,6 @@ public:
 class PrefShortcuts : public PrefModule, public Ui::PrefShortcuts
 {
        Q_OBJECT
-private:
-       enum ItemType {
-               System,         //< loaded from a bind file
-               UserBind,       //< \bind loaded from user.bind
-               UserUnbind,     //< \unbind loaded from user.bind, with corresponding
-                               //<    entry in system bind file
-               UserExtraUnbind //< \unbind loaded from user.bind, without
-                               //<    corresponding entry in system bind file.
-       };
 public:
        PrefShortcuts(GuiPreferences * form);
 
@@ -439,9 +430,9 @@ public:
        void modifyShortcut();
        void removeShortcut();
        ///
-       void setItemType(QTreeWidgetItem * item, ItemType tag);
+       void setItemType(QTreeWidgetItem * item, KeyMap::ItemType tag);
        QTreeWidgetItem * insertShortcutItem(FuncRequest const & lfun, 
-               KeySequence const & shortcut, ItemType tag);
+               KeySequence const & shortcut, KeyMap::ItemType tag);
 
 public Q_SLOTS:
        void select_bind();