From 58c47cf71464be1ae455f23592e881b5c6e8f3fa Mon Sep 17 00:00:00 2001 From: fluxgen Date: Mon, 8 Dec 2003 17:29:44 +0000 Subject: visible menu item --- src/Toolbar.cc | 102 ++++++++++++++++++++++++++++++++------------------------- src/Toolbar.hh | 8 ++--- 2 files changed, 61 insertions(+), 49 deletions(-) diff --git a/src/Toolbar.cc b/src/Toolbar.cc index 5ec6480..bd55854 100644 --- a/src/Toolbar.cc +++ b/src/Toolbar.cc @@ -22,7 +22,7 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Toolbar.cc,v 1.129 2003/12/07 16:39:43 fluxgen Exp $ +// $Id: Toolbar.cc,v 1.130 2003/12/08 17:29:44 fluxgen Exp $ #include "Toolbar.hh" @@ -212,6 +212,7 @@ Toolbar::Toolbar(BScreen &scrn, FbTk::XLayer &layer, size_t width): scrn.name() + ".toolbar.autoHide", scrn.altName() + ".Toolbar.AutoHide"), m_rc_maximize_over(scrn.resourceManager(), false, scrn.name() + ".toolbar.maxOver", scrn.altName() + ".Toolbar.MaxOver"), + m_rc_visible(scrn.resourceManager(), true, scrn.name() + ".toolbar.visible", scrn.altName() + ".Toolbar.Visible"), m_rc_width_percent(scrn.resourceManager(), 65, scrn.name() + ".toolbar.widthPercent", scrn.altName() + ".Toolbar.WidthPercent"), m_rc_layernum(scrn.resourceManager(), Fluxbox::Layer(Fluxbox::instance()->getDesktopLayer()), @@ -352,6 +353,8 @@ void Toolbar::lower() { } void Toolbar::reconfigure() { + updateVisibleState(); + m_tool_factory.updateThemes(); // parse resource tools and determine if we need to rebuild toolbar @@ -714,6 +717,10 @@ void Toolbar::setPlacement(Toolbar::Placement where) { } } +void Toolbar::updateVisibleState() { + *m_rc_visible ? frame.window.show() : frame.window.hide(); +} + void Toolbar::toggleHidden() { m_hide_timer.fireOnce(true); @@ -732,59 +739,66 @@ void Toolbar::moveToLayer(int layernum) { } void Toolbar::setupMenus() { - Toolbar &tbar = *this; - I18n *i18n = I18n::instance(); + const I18n &i18n = *I18n::instance(); using namespace FBNLS; using namespace FbTk; - FbTk::Menu &menu = tbar.menu(); + typedef RefCount RefCommand; + typedef SimpleCommand ToolbarCommand; + //!! TODO: this should be inserted by the workspace tool - RefCount start_edit(CommandParser::instance().parseLine("setworkspacename")); - menu.insert(i18n->getMessage(FBNLS::ToolbarSet, FBNLS::ToolbarEditWkspcName, - "Edit current workspace name"), - start_edit); + RefCommand start_edit(CommandParser::instance().parseLine("setworkspacename")); + menu().insert(i18n.getMessage(FBNLS::ToolbarSet, FBNLS::ToolbarEditWkspcName, + "Edit current workspace name"), + start_edit); - menu.setLabel(i18n->getMessage(FBNLS::ToolbarSet, FBNLS::ToolbarToolbarTitle, - "Toolbar")); + menu().setLabel(i18n.getMessage(FBNLS::ToolbarSet, FBNLS::ToolbarToolbarTitle, + "Toolbar")); - FbTk::MenuItem *toolbar_menuitem = new IntResMenuItem("Toolbar width percent", - m_rc_width_percent, - 0, 100); // min/max value + MenuItem *toolbar_menuitem = new IntResMenuItem("Toolbar width percent", + m_rc_width_percent, + 0, 100); // min/max value - FbTk::RefCount reconfig_toolbar(new FbTk:: - SimpleCommand - (tbar, &Toolbar::reconfigure)); - FbTk::RefCount save_resources(CommandParser::instance().parseLine("saverc")); - FbTk::MacroCommand *toolbar_menuitem_macro = new FbTk::MacroCommand(); + RefCommand reconfig_toolbar(new ToolbarCommand(*this, &Toolbar::reconfigure)); + RefCommand save_resources(CommandParser::instance().parseLine("saverc")); + MacroCommand *toolbar_menuitem_macro = new MacroCommand(); toolbar_menuitem_macro->add(reconfig_toolbar); toolbar_menuitem_macro->add(save_resources); - FbTk::RefCount reconfig_toolbar_and_save_resource(toolbar_menuitem_macro); + RefCommand reconfig_toolbar_and_save_resource(toolbar_menuitem_macro); toolbar_menuitem->setCommand(reconfig_toolbar_and_save_resource); - menu.insert(toolbar_menuitem); + menu().insert(toolbar_menuitem); + + menu().insert(new BoolMenuItem(i18n.getMessage(FBNLS::CommonSet, FBNLS::CommonAutoHide, + "Auto hide"), + *m_rc_auto_hide, + reconfig_toolbar_and_save_resource)); - menu.insert(new BoolMenuItem(i18n->getMessage(FBNLS::CommonSet, FBNLS::CommonAutoHide, - "Auto hide"), - *m_rc_auto_hide, - reconfig_toolbar_and_save_resource)); - menu.insert(new BoolMenuItem("Maximize Over", *m_rc_maximize_over, - reconfig_toolbar_and_save_resource)); - menu.insert("Layer...", &tbar.layermenu()); + MacroCommand *visible_macro = new MacroCommand(); + RefCommand toggle_visible(new ToolbarCommand(*this, &Toolbar::updateVisibleState)); + visible_macro->add(toggle_visible); + visible_macro->add(save_resources); + RefCommand toggle_visible_cmd(visible_macro); + menu().insert(new BoolMenuItem("Visible", *m_rc_visible, toggle_visible_cmd)); - if (tbar.screen().hasXinerama()) { + menu().insert(new BoolMenuItem("Maximize Over", *m_rc_maximize_over, + reconfig_toolbar_and_save_resource)); + menu().insert("Layer...", &layermenu()); + + + + if (screen().hasXinerama()) { // TODO: nls (main label plus menu heading - menu.insert("On Head...", new XineramaHeadMenu( - *tbar.screen().menuTheme(), - tbar.screen(), - tbar.screen().imageControl(), - *tbar.screen().layerManager().getLayer(Fluxbox::instance()->getMenuLayer()), - tbar, - "Toolbar on Head" - )); + menu().insert("On Head...", new XineramaHeadMenu(*screen().menuTheme(), + screen(), + screen().imageControl(), + *screen().layerManager().getLayer(Fluxbox::instance()->getMenuLayer()), + *this, + "Toolbar on Head")); } // setup items in placement menu @@ -814,23 +828,23 @@ void Toolbar::setupMenus() { {0, 0, "Bottom Right", Toolbar::BOTTOMRIGHT} }; - tbar.placementMenu().setMinimumSublevels(3); + placementMenu().setMinimumSublevels(3); // create items in sub menu for (size_t i=0; i<15; ++i) { if (place_menu[i].default_str == 0) { - tbar.placementMenu().insert(""); + placementMenu().insert(""); } else { - const char *i18n_str = i18n->getMessage(place_menu[i].set, + const char *i18n_str = i18n.getMessage(place_menu[i].set, place_menu[i].base, place_menu[i].default_str); - RefCount setplace(new SetToolbarPlacementCmd(tbar, place_menu[i].placement)); - tbar.placementMenu().insert(i18n_str, setplace); + RefCommand setplace(new SetToolbarPlacementCmd(*this, place_menu[i].placement)); + placementMenu().insert(i18n_str, setplace); } } - menu.insert("Placement", &tbar.placementMenu()); - tbar.placementMenu().update(); - menu.update(); + menu().insert("Placement", &placementMenu()); + placementMenu().update(); + menu().update(); } void Toolbar::saveOnHead(int head) { diff --git a/src/Toolbar.hh b/src/Toolbar.hh index a25077c..a2cacd9 100644 --- a/src/Toolbar.hh +++ b/src/Toolbar.hh @@ -22,7 +22,7 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Toolbar.hh,v 1.49 2003/12/03 00:31:40 fluxgen Exp $ +// $Id: Toolbar.hh,v 1.50 2003/12/08 17:29:44 fluxgen Exp $ #ifndef TOOLBAR_HH #define TOOLBAR_HH @@ -45,8 +45,6 @@ class BScreen; class Strut; class FbMenu; -class Container; -class IconButton; class Shape; class ToolbarItem; @@ -54,7 +52,6 @@ namespace FbTk { class ImageControl; }; -typedef Container IconBar; /// The toolbar. /// Handles iconbar, workspace name view and clock view class Toolbar: public FbTk::EventHandler, public FbTk::Observer { @@ -77,6 +74,7 @@ public: void raise(); void lower(); + void updateVisibleState(); void toggleHidden(); @@ -179,7 +177,7 @@ private: Strut *m_strut; ///< created and destroyed by BScreen // resources - FbTk::Resource m_rc_auto_hide, m_rc_maximize_over; + FbTk::Resource m_rc_auto_hide, m_rc_maximize_over, m_rc_visible; FbTk::Resource m_rc_width_percent; FbTk::Resource m_rc_layernum; FbTk::Resource m_rc_on_head; -- cgit v0.11.2