all repos — fluxbox @ 44fbcc447e957d63696e9e2654d9c52803474ebf

custom fork of the fluxbox windowmanager

cleaning, moved toolbar mode resource here
fluxgen fluxgen
commit

44fbcc447e957d63696e9e2654d9c52803474ebf

parent

11a0b784b3c3143675ba6b666c57682f4f688e15

2 files changed, 84 insertions(+), 27 deletions(-)

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

@@ -20,7 +20,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: ToolbarHandler.cc,v 1.16 2003/06/24 10:37:39 fluxgen Exp $ +// $Id: ToolbarHandler.cc,v 1.17 2003/06/24 16:27:18 fluxgen Exp $ /** * The ToolbarHandler class acts as a rough interface to the toolbar.

@@ -41,6 +41,58 @@ #include "MacroCommand.hh"

#include "IntResMenuItem.hh" #include "BoolMenuItem.hh" +#include <string> + +using namespace std; + +template<> +void FbTk::Resource<ToolbarHandler::ToolbarMode>:: +setFromString(const char *strval) { + if (strcasecmp(strval, "Off") == 0) + m_value = ToolbarHandler::OFF; + else if (strcasecmp(strval, "None") == 0) + m_value = ToolbarHandler::NONE; + else if (strcasecmp(strval, "Icons") == 0) + m_value = ToolbarHandler::ICONS; + else if (strcasecmp(strval, "WorkspaceIcons") == 0) + m_value = ToolbarHandler::WORKSPACEICONS; + else if (strcasecmp(strval, "Workspace") == 0) + m_value = ToolbarHandler::WORKSPACE; + else if (strcasecmp(strval, "AllWindows") == 0) + m_value = ToolbarHandler::ALLWINDOWS; + else + setDefaultValue(); +} + + +template<> +string FbTk::Resource<ToolbarHandler::ToolbarMode>:: +getString() { + switch (m_value) { + case ToolbarHandler::OFF: + return string("Off"); + break; + case ToolbarHandler::NONE: + return string("None"); + break; + case ToolbarHandler::LASTMODE: + case ToolbarHandler::ICONS: + return string("Icons"); + break; + case ToolbarHandler::WORKSPACEICONS: + return string("WorkspaceIcons"); + break; + case ToolbarHandler::WORKSPACE: + return string("Workspace"); + break; + case ToolbarHandler::ALLWINDOWS: + return string("AllWindows"); + break; + } + // default string + return string("Icons"); +} + namespace { class ToolbarModeMenuItem : public FbTk::MenuItem {

@@ -50,7 +102,7 @@ ToolbarHandler::ToolbarMode mode,

FbTk::RefCount<FbTk::Command> &cmd): FbTk::MenuItem(label, cmd), m_handler(handler), m_mode(mode) { } - bool isEnabled() const { return m_handler.getMode() != m_mode; } + bool isEnabled() const { return m_handler.mode() != m_mode; } void click(int button, int time) { m_handler.setMode(m_mode); FbTk::MenuItem::click(button, time);

@@ -88,26 +140,29 @@ }

}; // end anonymous namespace -ToolbarHandler::ToolbarHandler(BScreen &screen, ToolbarMode mode) - : m_screen(screen), m_mode(mode), m_toolbar(0), m_current_workspace(0), +ToolbarHandler::ToolbarHandler(BScreen &screen) + : m_screen(screen), + m_rc_mode(screen.resourceManager(), ToolbarHandler::ICONS, + screen.name() + ".toolbar.mode", screen.altName() + ".Toolbar.Mode"), + m_toolbar(0), + m_current_workspace(0), m_modemenu(*screen.menuTheme(), screen.screenNumber(), screen.imageControl()), m_toolbarmenu(*screen.menuTheme(), - screen.screenNumber(), screen.imageControl()) -{ + screen.screenNumber(), screen.imageControl()) { m_modemenu.setInternalMenu(); m_toolbarmenu.setInternalMenu(); setupModeMenu(m_modemenu, *this); - setMode(mode, false); // the atomhandler part will initialise it shortly + setMode(*m_rc_mode, false); // the atomhandler part will initialise it shortly } -void ToolbarHandler::setMode(ToolbarMode mode, bool initialise) { - if (mode < 0 || mode >= LASTMODE || (mode == m_mode && initialise)) +void ToolbarHandler::setMode(ToolbarMode newmode, bool initialise) { + if (newmode < 0 || newmode >= LASTMODE || (newmode == mode() && initialise)) return; - m_screen.saveToolbarMode(mode); - if (mode == OFF) { - m_mode = mode; + *m_rc_mode = newmode; + + if (newmode == OFF) { m_toolbarmenu.removeAll(); //TODO: nls m_toolbarmenu.insert("Mode...", &m_modemenu);

@@ -127,7 +182,7 @@ m_toolbarmenu.update();

} - if (mode == NONE) { + if (newmode == NONE) { // disableIconBar will clean up m_toolbar->disableIconBar(); } else {

@@ -136,8 +191,7 @@ // be sure the iconbar is on

m_toolbar->enableIconBar(); m_toolbar->delAllIcons(); } - // reset Toolbar, and reload it (initForScreen) - m_mode = mode; + if (initialise) initForScreen(m_screen); }

@@ -145,7 +199,7 @@

void ToolbarHandler::initForScreen(BScreen &screen) { if (&m_screen != &screen) return; - switch (m_mode) { + switch (mode()) { case OFF: break; case NONE:

@@ -207,7 +261,7 @@ void ToolbarHandler::setupWindow(FluxboxWindow &win) {

if (&win.screen() != &m_screen) return; - switch (m_mode) { + switch (mode()) { case OFF: case NONE: break;

@@ -236,7 +290,7 @@ if (&win.screen() != &m_screen)

return; // check status of window (in current workspace, etc) and remove if necessary - switch (m_mode) { + switch (mode()) { case OFF: case NONE: break;

@@ -265,7 +319,7 @@ if (&win.screen() != &m_screen)

return; // this function only relevant for icons - switch (m_mode) { + switch (mode()) { case OFF: case NONE: case WORKSPACE:

@@ -296,7 +350,9 @@ if (&win.screen() != &m_screen)

return; // don't care about current workspace except if in workspace mode - if (!(m_mode == WORKSPACE || (m_mode == WORKSPACEICONS && win.isIconic()))) return; + if (!(mode() == WORKSPACE || + (mode() == WORKSPACEICONS && win.isIconic()))) + return; if (win.workspaceNumber() == m_current_workspace) { //!! TODO

@@ -317,7 +373,7 @@ if (&screen != &m_screen)

return; // if only displaying current workspace, update list // otherwise ignore it - if (m_mode != WORKSPACE && m_mode != WORKSPACEICONS) + if (mode() != WORKSPACE && mode() != WORKSPACEICONS) return; m_toolbar->delAllIcons(); initForScreen(m_screen);
M src/ToolbarHandler.hhsrc/ToolbarHandler.hh

@@ -20,7 +20,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: ToolbarHandler.hh,v 1.3 2003/06/18 13:35:36 fluxgen Exp $ +// $Id: ToolbarHandler.hh,v 1.4 2003/06/24 16:27:18 fluxgen Exp $ #ifndef TOOLBARHANDLER_HH #define TOOLBARHANDLER_HH

@@ -28,6 +28,7 @@

#include "AtomHandler.hh" #include "Menu.hh" #include "Toolbar.hh" +#include "Resource.hh" class BScreen; class FluxboxWindow;

@@ -44,14 +45,14 @@ ALLWINDOWS,

LASTMODE }; - ToolbarHandler(BScreen &screen, ToolbarMode mode); + explicit ToolbarHandler(BScreen &screen); ~ToolbarHandler() { } void setMode(ToolbarMode mode, bool initialise = true); - ToolbarMode getMode() { return m_mode; }; + ToolbarMode mode() const { return *m_rc_mode; }; - inline const Toolbar *getToolbar() const { return m_toolbar.get(); } - inline Toolbar *getToolbar() { return m_toolbar.get(); } + inline const Toolbar *toolbar() const { return m_toolbar.get(); } + inline Toolbar *toolbar() { return m_toolbar.get(); } void initForScreen(BScreen &screen);

@@ -84,7 +85,7 @@ inline const BScreen &screen() const { return m_screen; }

private: BScreen &m_screen; - ToolbarMode m_mode; + FbTk::Resource<ToolbarMode> m_rc_mode; std::auto_ptr<Toolbar> m_toolbar; unsigned int m_current_workspace;