cleaning, moved toolbar mode resource here
This commit is contained in:
parent
11a0b784b3
commit
44fbcc447e
2 changed files with 84 additions and 27 deletions
|
@ -20,7 +20,7 @@
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
// DEALINGS IN THE SOFTWARE.
|
// 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.
|
* The ToolbarHandler class acts as a rough interface to the toolbar.
|
||||||
|
@ -41,6 +41,58 @@
|
||||||
#include "IntResMenuItem.hh"
|
#include "IntResMenuItem.hh"
|
||||||
#include "BoolMenuItem.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 {
|
namespace {
|
||||||
|
|
||||||
class ToolbarModeMenuItem : public FbTk::MenuItem {
|
class ToolbarModeMenuItem : public FbTk::MenuItem {
|
||||||
|
@ -50,7 +102,7 @@ public:
|
||||||
FbTk::RefCount<FbTk::Command> &cmd):
|
FbTk::RefCount<FbTk::Command> &cmd):
|
||||||
FbTk::MenuItem(label, cmd), m_handler(handler), m_mode(mode) {
|
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) {
|
void click(int button, int time) {
|
||||||
m_handler.setMode(m_mode);
|
m_handler.setMode(m_mode);
|
||||||
FbTk::MenuItem::click(button, time);
|
FbTk::MenuItem::click(button, time);
|
||||||
|
@ -88,26 +140,29 @@ void setupModeMenu(FbTk::Menu &menu, ToolbarHandler &handler) {
|
||||||
|
|
||||||
}; // end anonymous namespace
|
}; // end anonymous namespace
|
||||||
|
|
||||||
ToolbarHandler::ToolbarHandler(BScreen &screen, ToolbarMode mode)
|
ToolbarHandler::ToolbarHandler(BScreen &screen)
|
||||||
: m_screen(screen), m_mode(mode), m_toolbar(0), m_current_workspace(0),
|
: 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(),
|
m_modemenu(*screen.menuTheme(),
|
||||||
screen.screenNumber(), screen.imageControl()),
|
screen.screenNumber(), screen.imageControl()),
|
||||||
m_toolbarmenu(*screen.menuTheme(),
|
m_toolbarmenu(*screen.menuTheme(),
|
||||||
screen.screenNumber(), screen.imageControl())
|
screen.screenNumber(), screen.imageControl()) {
|
||||||
{
|
|
||||||
m_modemenu.setInternalMenu();
|
m_modemenu.setInternalMenu();
|
||||||
m_toolbarmenu.setInternalMenu();
|
m_toolbarmenu.setInternalMenu();
|
||||||
setupModeMenu(m_modemenu, *this);
|
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) {
|
void ToolbarHandler::setMode(ToolbarMode newmode, bool initialise) {
|
||||||
if (mode < 0 || mode >= LASTMODE || (mode == m_mode && initialise))
|
if (newmode < 0 || newmode >= LASTMODE || (newmode == mode() && initialise))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_screen.saveToolbarMode(mode);
|
*m_rc_mode = newmode;
|
||||||
if (mode == OFF) {
|
|
||||||
m_mode = mode;
|
if (newmode == OFF) {
|
||||||
m_toolbarmenu.removeAll();
|
m_toolbarmenu.removeAll();
|
||||||
//TODO: nls
|
//TODO: nls
|
||||||
m_toolbarmenu.insert("Mode...", &m_modemenu);
|
m_toolbarmenu.insert("Mode...", &m_modemenu);
|
||||||
|
@ -127,7 +182,7 @@ void ToolbarHandler::setMode(ToolbarMode mode, bool initialise) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (mode == NONE) {
|
if (newmode == NONE) {
|
||||||
// disableIconBar will clean up
|
// disableIconBar will clean up
|
||||||
m_toolbar->disableIconBar();
|
m_toolbar->disableIconBar();
|
||||||
} else {
|
} else {
|
||||||
|
@ -136,8 +191,7 @@ void ToolbarHandler::setMode(ToolbarMode mode, bool initialise) {
|
||||||
m_toolbar->enableIconBar();
|
m_toolbar->enableIconBar();
|
||||||
m_toolbar->delAllIcons();
|
m_toolbar->delAllIcons();
|
||||||
}
|
}
|
||||||
// reset Toolbar, and reload it (initForScreen)
|
|
||||||
m_mode = mode;
|
|
||||||
if (initialise)
|
if (initialise)
|
||||||
initForScreen(m_screen);
|
initForScreen(m_screen);
|
||||||
}
|
}
|
||||||
|
@ -145,7 +199,7 @@ void ToolbarHandler::setMode(ToolbarMode mode, bool initialise) {
|
||||||
void ToolbarHandler::initForScreen(BScreen &screen) {
|
void ToolbarHandler::initForScreen(BScreen &screen) {
|
||||||
if (&m_screen != &screen)
|
if (&m_screen != &screen)
|
||||||
return;
|
return;
|
||||||
switch (m_mode) {
|
switch (mode()) {
|
||||||
case OFF:
|
case OFF:
|
||||||
break;
|
break;
|
||||||
case NONE:
|
case NONE:
|
||||||
|
@ -207,7 +261,7 @@ void ToolbarHandler::setupWindow(FluxboxWindow &win) {
|
||||||
if (&win.screen() != &m_screen)
|
if (&win.screen() != &m_screen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
switch (m_mode) {
|
switch (mode()) {
|
||||||
case OFF:
|
case OFF:
|
||||||
case NONE:
|
case NONE:
|
||||||
break;
|
break;
|
||||||
|
@ -236,7 +290,7 @@ void ToolbarHandler::updateWindowClose(FluxboxWindow &win) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// check status of window (in current workspace, etc) and remove if necessary
|
// check status of window (in current workspace, etc) and remove if necessary
|
||||||
switch (m_mode) {
|
switch (mode()) {
|
||||||
case OFF:
|
case OFF:
|
||||||
case NONE:
|
case NONE:
|
||||||
break;
|
break;
|
||||||
|
@ -265,7 +319,7 @@ void ToolbarHandler::updateState(FluxboxWindow &win) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// this function only relevant for icons
|
// this function only relevant for icons
|
||||||
switch (m_mode) {
|
switch (mode()) {
|
||||||
case OFF:
|
case OFF:
|
||||||
case NONE:
|
case NONE:
|
||||||
case WORKSPACE:
|
case WORKSPACE:
|
||||||
|
@ -296,7 +350,9 @@ void ToolbarHandler::updateWorkspace(FluxboxWindow &win) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// don't care about current workspace except if in workspace mode
|
// 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) {
|
if (win.workspaceNumber() == m_current_workspace) {
|
||||||
//!! TODO
|
//!! TODO
|
||||||
|
@ -317,7 +373,7 @@ void ToolbarHandler::updateCurrentWorkspace(BScreen &screen) {
|
||||||
return;
|
return;
|
||||||
// if only displaying current workspace, update list
|
// if only displaying current workspace, update list
|
||||||
// otherwise ignore it
|
// otherwise ignore it
|
||||||
if (m_mode != WORKSPACE && m_mode != WORKSPACEICONS)
|
if (mode() != WORKSPACE && mode() != WORKSPACEICONS)
|
||||||
return;
|
return;
|
||||||
m_toolbar->delAllIcons();
|
m_toolbar->delAllIcons();
|
||||||
initForScreen(m_screen);
|
initForScreen(m_screen);
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
// DEALINGS IN THE SOFTWARE.
|
// 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
|
#ifndef TOOLBARHANDLER_HH
|
||||||
#define TOOLBARHANDLER_HH
|
#define TOOLBARHANDLER_HH
|
||||||
|
@ -28,6 +28,7 @@
|
||||||
#include "AtomHandler.hh"
|
#include "AtomHandler.hh"
|
||||||
#include "Menu.hh"
|
#include "Menu.hh"
|
||||||
#include "Toolbar.hh"
|
#include "Toolbar.hh"
|
||||||
|
#include "Resource.hh"
|
||||||
|
|
||||||
class BScreen;
|
class BScreen;
|
||||||
class FluxboxWindow;
|
class FluxboxWindow;
|
||||||
|
@ -44,14 +45,14 @@ public:
|
||||||
LASTMODE
|
LASTMODE
|
||||||
};
|
};
|
||||||
|
|
||||||
ToolbarHandler(BScreen &screen, ToolbarMode mode);
|
explicit ToolbarHandler(BScreen &screen);
|
||||||
~ToolbarHandler() { }
|
~ToolbarHandler() { }
|
||||||
|
|
||||||
void setMode(ToolbarMode mode, bool initialise = true);
|
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 const Toolbar *toolbar() const { return m_toolbar.get(); }
|
||||||
inline Toolbar *getToolbar() { return m_toolbar.get(); }
|
inline Toolbar *toolbar() { return m_toolbar.get(); }
|
||||||
|
|
||||||
|
|
||||||
void initForScreen(BScreen &screen);
|
void initForScreen(BScreen &screen);
|
||||||
|
@ -84,7 +85,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BScreen &m_screen;
|
BScreen &m_screen;
|
||||||
ToolbarMode m_mode;
|
FbTk::Resource<ToolbarMode> m_rc_mode;
|
||||||
std::auto_ptr<Toolbar> m_toolbar;
|
std::auto_ptr<Toolbar> m_toolbar;
|
||||||
unsigned int m_current_workspace;
|
unsigned int m_current_workspace;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue