all repos — fluxbox @ 58c47cf71464be1ae455f23592e881b5c6e8f3fa

custom fork of the fluxbox windowmanager

visible menu item
fluxgen fluxgen
commit

58c47cf71464be1ae455f23592e881b5c6e8f3fa

parent

b40bea67b76c4de4a280e81a6b01645ed22588bf

2 files changed, 61 insertions(+), 49 deletions(-)

jump to
M src/Toolbar.ccsrc/Toolbar.cc

@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

// 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 @@ m_rc_auto_hide(scrn.resourceManager().lock(), false,

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 @@ m_layeritem.lower();

} void Toolbar::reconfigure() { + updateVisibleState(); + m_tool_factory.updateThemes(); // parse resource tools and determine if we need to rebuild toolbar

@@ -714,6 +717,10 @@ break;

} } +void Toolbar::updateVisibleState() { + *m_rc_visible ? frame.window.show() : frame.window.hide(); +} + void Toolbar::toggleHidden() { m_hide_timer.fireOnce(true);

@@ -732,59 +739,66 @@ *m_rc_layernum = 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<Command> RefCommand; + typedef SimpleCommand<Toolbar> ToolbarCommand; + //!! TODO: this should be inserted by the workspace tool - RefCount<Command> 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<FbTk::Command> reconfig_toolbar(new FbTk:: - SimpleCommand<Toolbar> - (tbar, &Toolbar::reconfigure)); - FbTk::RefCount<FbTk::Command> 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<FbTk::Command> 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("Maximize Over", *m_rc_maximize_over, - reconfig_toolbar_and_save_resource)); - menu.insert("Layer...", &tbar.layermenu()); + menu().insert(new BoolMenuItem(i18n.getMessage(FBNLS::CommonSet, FBNLS::CommonAutoHide, + "Auto hide"), + *m_rc_auto_hide, + reconfig_toolbar_and_save_resource)); - if (tbar.screen().hasXinerama()) { + 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)); + + 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<Toolbar>( - *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<Toolbar>(*screen().menuTheme(), + screen(), + screen().imageControl(), + *screen().layerManager().getLayer(Fluxbox::instance()->getMenuLayer()), + *this, + "Toolbar on Head")); } // setup items in placement menu

@@ -814,23 +828,23 @@ {0, 0, "Right Bottom", Toolbar::RIGHTBOTTOM},

{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<FbTk::Command> 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) {
M src/Toolbar.hhsrc/Toolbar.hh

@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

// 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 @@ virtual ~Toolbar();

void raise(); void lower(); + void updateVisibleState(); void toggleHidden();

@@ -179,7 +177,7 @@

Strut *m_strut; ///< created and destroyed by BScreen // resources - FbTk::Resource<bool> m_rc_auto_hide, m_rc_maximize_over; + FbTk::Resource<bool> m_rc_auto_hide, m_rc_maximize_over, m_rc_visible; FbTk::Resource<int> m_rc_width_percent; FbTk::Resource<Fluxbox::Layer> m_rc_layernum; FbTk::Resource<int> m_rc_on_head;