]> git.lyx.org Git - features.git/commitdiff
Prettier view->toolbars menu.
authorBo Peng <bpeng@lyx.org>
Thu, 2 Nov 2006 18:59:33 +0000 (18:59 +0000)
committerBo Peng <bpeng@lyx.org>
Thu, 2 Nov 2006 18:59:33 +0000 (18:59 +0000)
* src/lyxfunc.C: better handle LFUN_TOOLBAR_TOGGLE_STATE
* src/frontends/LyXView.h/C: add getToolbarState
* src/frontends/Toolbars.h/C: add getToolbarState
* src/MenuBackend.C: change display of menu item.

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

src/MenuBackend.C
src/frontends/LyXView.C
src/frontends/LyXView.h
src/frontends/Toolbars.C
src/frontends/Toolbars.h
src/lyxfunc.C

index 6bd046ff3a834f15f9e84a74f065e8005ab7397a..5d925eafe3b407231b76a2d1c076d0433908b006 100644 (file)
@@ -768,17 +768,16 @@ void expandToolbars(Menu & tomenu, Buffer const * buf)
        int i = 1;
        for (; cit != end; ++cit, ++i) {
                docstring label = convert<docstring>(i) + ". " + _(cit->name);
-               // frontend does not update ToolbarBackend::flags when it changes toolbar
-               // Therefore, I can not tell from the flags if the toolbar is on or off
-               // it is then less confusing to say:
-               // this is: always on/off/auto
-               // frontend toolbar change is temporary.
+               // frontends are not supposed to turn on/off toolbars, if they can not
+               // update ToolbarBackend::flags. That is to say, ToolbarsBackend::flags
+               // should reflect the true state of toolbars.
                // 
-               if (cit->flags & ToolbarBackend::ON)
-                       label += _(" (always on)");
-               else if (cit->flags & ToolbarBackend::OFF)
-                       label += _(" (always off)");
-               else if (cit->flags & ToolbarBackend::AUTO)
+               // menu is displayed as 
+               //       on/off review
+               // and 
+               //              review (auto)
+               // in the case of auto.
+               if (cit->flags & ToolbarBackend::AUTO)
                        label += _(" (auto)");
                label += char_type('|') + convert<docstring>(i);
                tomenu.add(MenuItem(MenuItem::Command, label,
index 397897b4a1fce0af30d5ed934c4d872089f9ca35..7d13fa5c8cc6f1fc55f6dc1338dd422774ef5490 100644 (file)
@@ -305,6 +305,12 @@ void LyXView::updateToolbars()
 }
 
 
+ToolbarBackend::Flags LyXView::getToolbarState(string const & name)
+{
+       return toolbars_->getToolbarState(name);
+}
+
+
 void LyXView::toggleToolbarState(string const & name)
 {
        // it is possible to get current toolbar status like this,...
index 606b3ceaa37ad600887f7988a739e54f86f97e19..6f36161c09b2a6b7f2e43915673216a766a7a62c 100644 (file)
@@ -136,6 +136,8 @@ public:
 
        /// update the toolbar
        void updateToolbars();
+       /// get toolbar state
+       ToolbarBackend::Flags getToolbarState(std::string const & name);
        /// toggle toolbar state
        void toggleToolbarState(std::string const & name);
        /// update the menubar
index 478013b9e5018b02729d9d41386f00fe0c1bb87d..2f68e7d1f7035d2cdba65229619309718d35b80a 100644 (file)
@@ -129,6 +129,21 @@ void Toolbars::display(string const & name, bool show)
 }
 
 
+ToolbarBackend::Flags Toolbars::getToolbarState(string const & name)
+{      
+       ToolbarBackend::Toolbars::const_iterator cit = toolbarbackend.begin();
+       ToolbarBackend::Toolbars::const_iterator end = toolbarbackend.end();
+
+       for (; cit != end; ++cit) {
+               if (cit->name == name)
+                       return cit->flags;
+       }
+
+       lyxerr[Debug::GUI] << "Toolbar::display: no toolbar named "
+               << name << endl;
+}
+
+
 void Toolbars::toggleToolbarState(string const & name)
 {
        ToolbarBackend::Toolbars::iterator cit = toolbarbackend.begin();
@@ -154,9 +169,11 @@ void Toolbars::toggleToolbarState(string const & name)
                                TurnOnFlag(ON);
                        }
                        cit->flags = static_cast<lyx::ToolbarBackend::Flags>(flags);
-                       break;
+                       return;
                }
        }
+       lyxerr[Debug::GUI] << "Toolbar::display: no toolbar named "
+               << name << endl;
 }
 #undef TurnOnFlag
 #undef TurnOffFlag
index 8f65f29b8d5aa612eeff3dbd8026fa9edad8145b..ad719b257b4764223982e73e3adf11e5f868c7bd 100644 (file)
@@ -88,6 +88,9 @@ public:
        /// Show/hide the named toolbar.
        void display(std::string const & name, bool show);
 
+       /// get toolbar state (on/off/auto)
+       ToolbarBackend::Flags getToolbarState(std::string const & name);
+       
        /// toggle the state of toolbars (on/off/auto)
        void toggleToolbarState(std::string const & name);
 
index cefad6372dd6d242ab3d1923b176b9410254cb0d..03cacfeae15360603a571211de5ff5e90bbedec3 100644 (file)
@@ -573,6 +573,13 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
                break;
        }
 
+       case LFUN_TOOLBAR_TOGGLE_STATE: {
+               ToolbarBackend::Flags flags = lyx_view_->getToolbarState(to_utf8(cmd.argument()));
+               if (!(flags & ToolbarBackend::AUTO))
+                       flag.setOnOff(flags & ToolbarBackend::ON);
+               break;
+       }
+
        // this one is difficult to get right. As a half-baked
        // solution, we consider only the first action of the sequence
        case LFUN_COMMAND_SEQUENCE: {
@@ -635,7 +642,6 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
        case LFUN_BUFFER_PREVIOUS:
        case LFUN_WINDOW_NEW:
        case LFUN_WINDOW_CLOSE:
-       case LFUN_TOOLBAR_TOGGLE_STATE:
                // these are handled in our dispatch()
                break;