diff options
author | fluxgen <fluxgen> | 2003-12-08 17:29:44 (GMT) |
---|---|---|
committer | fluxgen <fluxgen> | 2003-12-08 17:29:44 (GMT) |
commit | 58c47cf71464be1ae455f23592e881b5c6e8f3fa (patch) | |
tree | 88f2b5982b92b88a256f36e120a33da565740c92 /src | |
parent | b40bea67b76c4de4a280e81a6b01645ed22588bf (diff) | |
download | fluxbox-58c47cf71464be1ae455f23592e881b5c6e8f3fa.zip fluxbox-58c47cf71464be1ae455f23592e881b5c6e8f3fa.tar.bz2 |
visible menu item
Diffstat (limited to 'src')
-rw-r--r-- | src/Toolbar.cc | 102 | ||||
-rw-r--r-- | 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 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Toolbar.cc,v 1.129 2003/12/07 16:39:43 fluxgen Exp $ | 25 | // $Id: Toolbar.cc,v 1.130 2003/12/08 17:29:44 fluxgen Exp $ |
26 | 26 | ||
27 | #include "Toolbar.hh" | 27 | #include "Toolbar.hh" |
28 | 28 | ||
@@ -212,6 +212,7 @@ Toolbar::Toolbar(BScreen &scrn, FbTk::XLayer &layer, size_t width): | |||
212 | scrn.name() + ".toolbar.autoHide", scrn.altName() + ".Toolbar.AutoHide"), | 212 | scrn.name() + ".toolbar.autoHide", scrn.altName() + ".Toolbar.AutoHide"), |
213 | m_rc_maximize_over(scrn.resourceManager(), false, | 213 | m_rc_maximize_over(scrn.resourceManager(), false, |
214 | scrn.name() + ".toolbar.maxOver", scrn.altName() + ".Toolbar.MaxOver"), | 214 | scrn.name() + ".toolbar.maxOver", scrn.altName() + ".Toolbar.MaxOver"), |
215 | m_rc_visible(scrn.resourceManager(), true, scrn.name() + ".toolbar.visible", scrn.altName() + ".Toolbar.Visible"), | ||
215 | m_rc_width_percent(scrn.resourceManager(), 65, | 216 | m_rc_width_percent(scrn.resourceManager(), 65, |
216 | scrn.name() + ".toolbar.widthPercent", scrn.altName() + ".Toolbar.WidthPercent"), | 217 | scrn.name() + ".toolbar.widthPercent", scrn.altName() + ".Toolbar.WidthPercent"), |
217 | m_rc_layernum(scrn.resourceManager(), Fluxbox::Layer(Fluxbox::instance()->getDesktopLayer()), | 218 | m_rc_layernum(scrn.resourceManager(), Fluxbox::Layer(Fluxbox::instance()->getDesktopLayer()), |
@@ -352,6 +353,8 @@ void Toolbar::lower() { | |||
352 | } | 353 | } |
353 | 354 | ||
354 | void Toolbar::reconfigure() { | 355 | void Toolbar::reconfigure() { |
356 | updateVisibleState(); | ||
357 | |||
355 | m_tool_factory.updateThemes(); | 358 | m_tool_factory.updateThemes(); |
356 | 359 | ||
357 | // parse resource tools and determine if we need to rebuild toolbar | 360 | // parse resource tools and determine if we need to rebuild toolbar |
@@ -714,6 +717,10 @@ void Toolbar::setPlacement(Toolbar::Placement where) { | |||
714 | } | 717 | } |
715 | } | 718 | } |
716 | 719 | ||
720 | void Toolbar::updateVisibleState() { | ||
721 | *m_rc_visible ? frame.window.show() : frame.window.hide(); | ||
722 | } | ||
723 | |||
717 | void Toolbar::toggleHidden() { | 724 | void Toolbar::toggleHidden() { |
718 | m_hide_timer.fireOnce(true); | 725 | m_hide_timer.fireOnce(true); |
719 | 726 | ||
@@ -732,59 +739,66 @@ void Toolbar::moveToLayer(int layernum) { | |||
732 | } | 739 | } |
733 | 740 | ||
734 | void Toolbar::setupMenus() { | 741 | void Toolbar::setupMenus() { |
735 | Toolbar &tbar = *this; | 742 | const I18n &i18n = *I18n::instance(); |
736 | I18n *i18n = I18n::instance(); | ||
737 | using namespace FBNLS; | 743 | using namespace FBNLS; |
738 | using namespace FbTk; | 744 | using namespace FbTk; |
739 | 745 | ||
740 | FbTk::Menu &menu = tbar.menu(); | 746 | typedef RefCount<Command> RefCommand; |
747 | typedef SimpleCommand<Toolbar> ToolbarCommand; | ||
748 | |||
741 | //!! TODO: this should be inserted by the workspace tool | 749 | //!! TODO: this should be inserted by the workspace tool |
742 | 750 | ||
743 | 751 | ||
744 | RefCount<Command> start_edit(CommandParser::instance().parseLine("setworkspacename")); | 752 | RefCommand start_edit(CommandParser::instance().parseLine("setworkspacename")); |
745 | menu.insert(i18n->getMessage(FBNLS::ToolbarSet, FBNLS::ToolbarEditWkspcName, | 753 | menu().insert(i18n.getMessage(FBNLS::ToolbarSet, FBNLS::ToolbarEditWkspcName, |
746 | "Edit current workspace name"), | 754 | "Edit current workspace name"), |
747 | start_edit); | 755 | start_edit); |
748 | 756 | ||
749 | menu.setLabel(i18n->getMessage(FBNLS::ToolbarSet, FBNLS::ToolbarToolbarTitle, | 757 | menu().setLabel(i18n.getMessage(FBNLS::ToolbarSet, FBNLS::ToolbarToolbarTitle, |
750 | "Toolbar")); | 758 | "Toolbar")); |
751 | 759 | ||
752 | FbTk::MenuItem *toolbar_menuitem = new IntResMenuItem("Toolbar width percent", | 760 | MenuItem *toolbar_menuitem = new IntResMenuItem("Toolbar width percent", |
753 | m_rc_width_percent, | 761 | m_rc_width_percent, |
754 | 0, 100); // min/max value | 762 | 0, 100); // min/max value |
755 | 763 | ||
756 | 764 | ||
757 | FbTk::RefCount<FbTk::Command> reconfig_toolbar(new FbTk:: | 765 | RefCommand reconfig_toolbar(new ToolbarCommand(*this, &Toolbar::reconfigure)); |
758 | SimpleCommand<Toolbar> | 766 | RefCommand save_resources(CommandParser::instance().parseLine("saverc")); |
759 | (tbar, &Toolbar::reconfigure)); | 767 | MacroCommand *toolbar_menuitem_macro = new MacroCommand(); |
760 | FbTk::RefCount<FbTk::Command> save_resources(CommandParser::instance().parseLine("saverc")); | ||
761 | FbTk::MacroCommand *toolbar_menuitem_macro = new FbTk::MacroCommand(); | ||
762 | toolbar_menuitem_macro->add(reconfig_toolbar); | 768 | toolbar_menuitem_macro->add(reconfig_toolbar); |
763 | toolbar_menuitem_macro->add(save_resources); | 769 | toolbar_menuitem_macro->add(save_resources); |
764 | 770 | ||
765 | FbTk::RefCount<FbTk::Command> reconfig_toolbar_and_save_resource(toolbar_menuitem_macro); | 771 | RefCommand reconfig_toolbar_and_save_resource(toolbar_menuitem_macro); |
766 | toolbar_menuitem->setCommand(reconfig_toolbar_and_save_resource); | 772 | toolbar_menuitem->setCommand(reconfig_toolbar_and_save_resource); |
767 | 773 | ||
768 | menu.insert(toolbar_menuitem); | 774 | menu().insert(toolbar_menuitem); |
775 | |||
776 | menu().insert(new BoolMenuItem(i18n.getMessage(FBNLS::CommonSet, FBNLS::CommonAutoHide, | ||
777 | "Auto hide"), | ||
778 | *m_rc_auto_hide, | ||
779 | reconfig_toolbar_and_save_resource)); | ||
769 | 780 | ||
770 | menu.insert(new BoolMenuItem(i18n->getMessage(FBNLS::CommonSet, FBNLS::CommonAutoHide, | 781 | MacroCommand *visible_macro = new MacroCommand(); |
771 | "Auto hide"), | 782 | RefCommand toggle_visible(new ToolbarCommand(*this, &Toolbar::updateVisibleState)); |
772 | *m_rc_auto_hide, | 783 | visible_macro->add(toggle_visible); |
773 | reconfig_toolbar_and_save_resource)); | 784 | visible_macro->add(save_resources); |
774 | menu.insert(new BoolMenuItem("Maximize Over", *m_rc_maximize_over, | 785 | RefCommand toggle_visible_cmd(visible_macro); |
775 | reconfig_toolbar_and_save_resource)); | 786 | menu().insert(new BoolMenuItem("Visible", *m_rc_visible, toggle_visible_cmd)); |
776 | menu.insert("Layer...", &tbar.layermenu()); | ||
777 | 787 | ||
778 | if (tbar.screen().hasXinerama()) { | 788 | menu().insert(new BoolMenuItem("Maximize Over", *m_rc_maximize_over, |
789 | reconfig_toolbar_and_save_resource)); | ||
790 | menu().insert("Layer...", &layermenu()); | ||
791 | |||
792 | |||
793 | |||
794 | if (screen().hasXinerama()) { | ||
779 | // TODO: nls (main label plus menu heading | 795 | // TODO: nls (main label plus menu heading |
780 | menu.insert("On Head...", new XineramaHeadMenu<Toolbar>( | 796 | menu().insert("On Head...", new XineramaHeadMenu<Toolbar>(*screen().menuTheme(), |
781 | *tbar.screen().menuTheme(), | 797 | screen(), |
782 | tbar.screen(), | 798 | screen().imageControl(), |
783 | tbar.screen().imageControl(), | 799 | *screen().layerManager().getLayer(Fluxbox::instance()->getMenuLayer()), |
784 | *tbar.screen().layerManager().getLayer(Fluxbox::instance()->getMenuLayer()), | 800 | *this, |
785 | tbar, | 801 | "Toolbar on Head")); |
786 | "Toolbar on Head" | ||
787 | )); | ||
788 | } | 802 | } |
789 | 803 | ||
790 | // setup items in placement menu | 804 | // setup items in placement menu |
@@ -814,23 +828,23 @@ void Toolbar::setupMenus() { | |||
814 | 828 | ||
815 | {0, 0, "Bottom Right", Toolbar::BOTTOMRIGHT} | 829 | {0, 0, "Bottom Right", Toolbar::BOTTOMRIGHT} |
816 | }; | 830 | }; |
817 | tbar.placementMenu().setMinimumSublevels(3); | 831 | placementMenu().setMinimumSublevels(3); |
818 | // create items in sub menu | 832 | // create items in sub menu |
819 | for (size_t i=0; i<15; ++i) { | 833 | for (size_t i=0; i<15; ++i) { |
820 | if (place_menu[i].default_str == 0) { | 834 | if (place_menu[i].default_str == 0) { |
821 | tbar.placementMenu().insert(""); | 835 | placementMenu().insert(""); |
822 | } else { | 836 | } else { |
823 | const char *i18n_str = i18n->getMessage(place_menu[i].set, | 837 | const char *i18n_str = i18n.getMessage(place_menu[i].set, |
824 | place_menu[i].base, | 838 | place_menu[i].base, |
825 | place_menu[i].default_str); | 839 | place_menu[i].default_str); |
826 | RefCount<FbTk::Command> setplace(new SetToolbarPlacementCmd(tbar, place_menu[i].placement)); | 840 | RefCommand setplace(new SetToolbarPlacementCmd(*this, place_menu[i].placement)); |
827 | tbar.placementMenu().insert(i18n_str, setplace); | 841 | placementMenu().insert(i18n_str, setplace); |
828 | 842 | ||
829 | } | 843 | } |
830 | } | 844 | } |
831 | menu.insert("Placement", &tbar.placementMenu()); | 845 | menu().insert("Placement", &placementMenu()); |
832 | tbar.placementMenu().update(); | 846 | placementMenu().update(); |
833 | menu.update(); | 847 | menu().update(); |
834 | } | 848 | } |
835 | 849 | ||
836 | void Toolbar::saveOnHead(int head) { | 850 | 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 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Toolbar.hh,v 1.49 2003/12/03 00:31:40 fluxgen Exp $ | 25 | // $Id: Toolbar.hh,v 1.50 2003/12/08 17:29:44 fluxgen Exp $ |
26 | 26 | ||
27 | #ifndef TOOLBAR_HH | 27 | #ifndef TOOLBAR_HH |
28 | #define TOOLBAR_HH | 28 | #define TOOLBAR_HH |
@@ -45,8 +45,6 @@ | |||
45 | class BScreen; | 45 | class BScreen; |
46 | class Strut; | 46 | class Strut; |
47 | class FbMenu; | 47 | class FbMenu; |
48 | class Container; | ||
49 | class IconButton; | ||
50 | class Shape; | 48 | class Shape; |
51 | class ToolbarItem; | 49 | class ToolbarItem; |
52 | 50 | ||
@@ -54,7 +52,6 @@ namespace FbTk { | |||
54 | class ImageControl; | 52 | class ImageControl; |
55 | }; | 53 | }; |
56 | 54 | ||
57 | typedef Container IconBar; | ||
58 | /// The toolbar. | 55 | /// The toolbar. |
59 | /// Handles iconbar, workspace name view and clock view | 56 | /// Handles iconbar, workspace name view and clock view |
60 | class Toolbar: public FbTk::EventHandler, public FbTk::Observer { | 57 | class Toolbar: public FbTk::EventHandler, public FbTk::Observer { |
@@ -77,6 +74,7 @@ public: | |||
77 | 74 | ||
78 | void raise(); | 75 | void raise(); |
79 | void lower(); | 76 | void lower(); |
77 | void updateVisibleState(); | ||
80 | void toggleHidden(); | 78 | void toggleHidden(); |
81 | 79 | ||
82 | 80 | ||
@@ -179,7 +177,7 @@ private: | |||
179 | Strut *m_strut; ///< created and destroyed by BScreen | 177 | Strut *m_strut; ///< created and destroyed by BScreen |
180 | 178 | ||
181 | // resources | 179 | // resources |
182 | FbTk::Resource<bool> m_rc_auto_hide, m_rc_maximize_over; | 180 | FbTk::Resource<bool> m_rc_auto_hide, m_rc_maximize_over, m_rc_visible; |
183 | FbTk::Resource<int> m_rc_width_percent; | 181 | FbTk::Resource<int> m_rc_width_percent; |
184 | FbTk::Resource<Fluxbox::Layer> m_rc_layernum; | 182 | FbTk::Resource<Fluxbox::Layer> m_rc_layernum; |
185 | FbTk::Resource<int> m_rc_on_head; | 183 | FbTk::Resource<int> m_rc_on_head; |