removed iconmenu, changed workspacemenu and rootmenu to FbTk Menu and removed setAutoGroupWindow, disabled Stylemenu
This commit is contained in:
parent
a22aa6fa52
commit
7debbae5bd
1 changed files with 163 additions and 136 deletions
297
src/Screen.cc
297
src/Screen.cc
|
@ -22,7 +22,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: Screen.cc,v 1.94 2003/01/07 02:06:06 fluxgen Exp $
|
// $Id: Screen.cc,v 1.95 2003/01/09 17:41:02 fluxgen Exp $
|
||||||
|
|
||||||
|
|
||||||
#include "Screen.hh"
|
#include "Screen.hh"
|
||||||
|
@ -33,16 +33,15 @@
|
||||||
#include "Toolbar.hh"
|
#include "Toolbar.hh"
|
||||||
#include "Window.hh"
|
#include "Window.hh"
|
||||||
#include "Workspace.hh"
|
#include "Workspace.hh"
|
||||||
#include "Rootmenu.hh"
|
|
||||||
#include "Workspacemenu.hh"
|
#include "Workspacemenu.hh"
|
||||||
#include "Configmenu.hh"
|
#include "Configmenu.hh"
|
||||||
#include "Iconmenu.hh"
|
|
||||||
#include "StringUtil.hh"
|
#include "StringUtil.hh"
|
||||||
#include "Netizen.hh"
|
#include "Netizen.hh"
|
||||||
#include "DirHelper.hh"
|
#include "DirHelper.hh"
|
||||||
#include "WinButton.hh"
|
#include "WinButton.hh"
|
||||||
#include "SimpleCommand.hh"
|
#include "SimpleCommand.hh"
|
||||||
#include "MenuTheme.hh"
|
#include "MenuTheme.hh"
|
||||||
|
#include "FbCommands.hh"
|
||||||
|
|
||||||
//use GNU extensions
|
//use GNU extensions
|
||||||
#ifndef _GNU_SOURCE
|
#ifndef _GNU_SOURCE
|
||||||
|
@ -131,6 +130,9 @@ int dcmp(const void *one, const void *two) {
|
||||||
return (strcmp((*(char **) one), (*(char **) two)));
|
return (strcmp((*(char **) one), (*(char **) two)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FbTk::Menu *createMenuFromScreen(BScreen &screen) {
|
||||||
|
return new FbTk::Menu(*screen.menuTheme(), screen.getScreenNumber(), *screen.getImageControl());
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//---------- resource manipulators ---------
|
//---------- resource manipulators ---------
|
||||||
|
@ -235,6 +237,38 @@ getString() {
|
||||||
return string("BottomCenter");
|
return string("BottomCenter");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
class AddWorkspaceCmd:public FbTk::Command {
|
||||||
|
public:
|
||||||
|
explicit AddWorkspaceCmd(BScreen &scrn):m_screen(scrn) { }
|
||||||
|
void execute() {
|
||||||
|
m_screen.addWorkspace();
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
BScreen &m_screen;
|
||||||
|
};
|
||||||
|
|
||||||
|
class RemoveLastWorkspaceCmd:public FbTk::Command {
|
||||||
|
public:
|
||||||
|
explicit RemoveLastWorkspaceCmd(BScreen &scrn):m_screen(scrn) { }
|
||||||
|
void execute() {
|
||||||
|
m_screen.removeLastWorkspace();
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
BScreen &m_screen;
|
||||||
|
};
|
||||||
|
|
||||||
|
void setupWorkspacemenu(BScreen &scr, FbTk::Menu &menu) {
|
||||||
|
menu.removeAll(); // clear all items
|
||||||
|
using namespace FbTk;
|
||||||
|
|
||||||
|
RefCount<Command> new_workspace(new AddWorkspaceCmd(scr));
|
||||||
|
RefCount<Command> remove_last(new RemoveLastWorkspaceCmd(scr));
|
||||||
|
menu.insert("New Workspace", new_workspace);
|
||||||
|
menu.insert("Remove Last", remove_last);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
BScreen::ScreenResource::ScreenResource(ResourceManager &rm,
|
BScreen::ScreenResource::ScreenResource(ResourceManager &rm,
|
||||||
const std::string &scrname, const std::string &altscrname):
|
const std::string &scrname, const std::string &altscrname):
|
||||||
|
@ -275,7 +309,7 @@ BScreen::BScreen(ResourceManager &rm,
|
||||||
m_currentworkspace_sig(*this), // current workspace signal
|
m_currentworkspace_sig(*this), // current workspace signal
|
||||||
theme(0), m_windowtheme(scrn),
|
theme(0), m_windowtheme(scrn),
|
||||||
m_menutheme(new FbTk::MenuTheme(scrn)),
|
m_menutheme(new FbTk::MenuTheme(scrn)),
|
||||||
resource(rm, screenname, altscreenname)
|
resource(rm, screenname, altscreenname)
|
||||||
{
|
{
|
||||||
Display *disp = BaseDisplay::getXDisplay();
|
Display *disp = BaseDisplay::getXDisplay();
|
||||||
|
|
||||||
|
@ -297,9 +331,9 @@ BScreen::BScreen(ResourceManager &rm,
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
i18n->
|
i18n->
|
||||||
getMessage(
|
getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenManagingScreen,
|
FBNLS::ScreenSet, FBNLS::ScreenManagingScreen,
|
||||||
"BScreen::BScreen: managing screen %d "
|
"BScreen::BScreen: managing screen %d "
|
||||||
"using visual 0x%lx, depth %d\n"),
|
"using visual 0x%lx, depth %d\n"),
|
||||||
getScreenNumber(), XVisualIDFromVisual(getVisual()),
|
getScreenNumber(), XVisualIDFromVisual(getVisual()),
|
||||||
getDepth());
|
getDepth());
|
||||||
|
|
||||||
|
@ -341,8 +375,8 @@ BScreen::BScreen(ResourceManager &rm,
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *s = i18n->getMessage(
|
const char *s = i18n->getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenPositionLength,
|
FBNLS::ScreenSet, FBNLS::ScreenPositionLength,
|
||||||
"W: 0000 x H: 0000"); // W is wide!
|
"W: 0000 x H: 0000"); // W is wide!
|
||||||
|
|
||||||
int l = strlen(s);
|
int l = strlen(s);
|
||||||
|
|
||||||
|
@ -388,8 +422,9 @@ BScreen::BScreen(ResourceManager &rm,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
workspacemenu = new Workspacemenu(this);
|
workspacemenu.reset(new FbTk::Menu(*m_menutheme, scrn, *image_control));
|
||||||
m_iconmenu = new Iconmenu(this);
|
setupWorkspacemenu(*this, *workspacemenu);
|
||||||
|
|
||||||
configmenu = new Configmenu(this);
|
configmenu = new Configmenu(this);
|
||||||
|
|
||||||
Workspace *wkspc = (Workspace *) 0;
|
Workspace *wkspc = (Workspace *) 0;
|
||||||
|
@ -405,13 +440,6 @@ BScreen::BScreen(ResourceManager &rm,
|
||||||
workspacemenu->insert(wkspc->name().c_str(), &wkspc->menu());
|
workspacemenu->insert(wkspc->name().c_str(), &wkspc->menu());
|
||||||
}
|
}
|
||||||
|
|
||||||
workspacemenu->insert(i18n->
|
|
||||||
getMessage(
|
|
||||||
FBNLS::IconSet, FBNLS::IconIcons,
|
|
||||||
"Icons"),
|
|
||||||
m_iconmenu);
|
|
||||||
workspacemenu->update();
|
|
||||||
|
|
||||||
current_workspace = workspacesList.front();
|
current_workspace = workspacesList.front();
|
||||||
workspacemenu->setItemSelected(2, true);
|
workspacemenu->setItemSelected(2, true);
|
||||||
|
|
||||||
|
@ -476,7 +504,7 @@ BScreen::BScreen(ResourceManager &rm,
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (attrib.map_state != IsUnmapped) {
|
if (attrib.map_state != IsUnmapped) {
|
||||||
FluxboxWindow *win = createWindow(children[i]);
|
FluxboxWindow *win = createWindow(children[i]);
|
||||||
|
|
||||||
if (win) {
|
if (win) {
|
||||||
XMapRequestEvent mre;
|
XMapRequestEvent mre;
|
||||||
|
@ -530,8 +558,6 @@ BScreen::~BScreen() {
|
||||||
}
|
}
|
||||||
netizenList.clear();
|
netizenList.clear();
|
||||||
|
|
||||||
delete workspacemenu;
|
|
||||||
delete m_iconmenu;
|
|
||||||
delete configmenu;
|
delete configmenu;
|
||||||
|
|
||||||
delete image_control;
|
delete image_control;
|
||||||
|
@ -560,7 +586,7 @@ unsigned int BScreen::getMaxBottom() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BScreen::iconUpdate() {
|
void BScreen::iconUpdate() {
|
||||||
m_iconmenu->update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BScreen::reconfigure() {
|
void BScreen::reconfigure() {
|
||||||
|
@ -632,7 +658,6 @@ void BScreen::reconfigure() {
|
||||||
|
|
||||||
//reconfigure menus
|
//reconfigure menus
|
||||||
workspacemenu->reconfigure();
|
workspacemenu->reconfigure();
|
||||||
m_iconmenu->reconfigure();
|
|
||||||
|
|
||||||
configmenu->reconfigure();
|
configmenu->reconfigure();
|
||||||
|
|
||||||
|
@ -698,8 +723,6 @@ void BScreen::addIcon(FluxboxWindow *w) {
|
||||||
|
|
||||||
iconList.push_back(w);
|
iconList.push_back(w);
|
||||||
|
|
||||||
m_iconmenu->insert(w->getIconTitle().c_str());
|
|
||||||
m_iconmenu->update();
|
|
||||||
m_toolbar->addIcon(w);
|
m_toolbar->addIcon(w);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -719,8 +742,6 @@ void BScreen::removeIcon(FluxboxWindow *w) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_iconmenu->remove(w->getWindowNumber());
|
|
||||||
m_iconmenu->update();
|
|
||||||
m_toolbar->delIcon(w);
|
m_toolbar->delIcon(w);
|
||||||
|
|
||||||
Icons::iterator it = iconList.begin();
|
Icons::iterator it = iconList.begin();
|
||||||
|
@ -1130,8 +1151,6 @@ void BScreen::raiseWindows(const Workspace::Stack &workspace_stack) {
|
||||||
|
|
||||||
Window session_stack[(workspace_stack.size() + workspacesList.size() + rootmenuList.size() + 30)];
|
Window session_stack[(workspace_stack.size() + workspacesList.size() + rootmenuList.size() + 30)];
|
||||||
int i = 0;
|
int i = 0;
|
||||||
XRaiseWindow(getBaseDisplay()->getXDisplay(), m_iconmenu->windowID());
|
|
||||||
session_stack[i++] = m_iconmenu->windowID();
|
|
||||||
|
|
||||||
Workspaces::iterator wit = workspacesList.begin();
|
Workspaces::iterator wit = workspacesList.begin();
|
||||||
Workspaces::iterator wit_end = workspacesList.end();
|
Workspaces::iterator wit_end = workspacesList.end();
|
||||||
|
@ -1359,7 +1378,7 @@ void BScreen::initMenu() {
|
||||||
while (m_rootmenu->numberOfItems())
|
while (m_rootmenu->numberOfItems())
|
||||||
m_rootmenu->remove(0);
|
m_rootmenu->remove(0);
|
||||||
} else
|
} else
|
||||||
m_rootmenu.reset(new Rootmenu(this));
|
m_rootmenu.reset(new FbTk::Menu(*m_menutheme.get(), getScreenNumber(), *getImageControl()));
|
||||||
|
|
||||||
bool defaultMenu = true;
|
bool defaultMenu = true;
|
||||||
Fluxbox * const fb = Fluxbox::instance();
|
Fluxbox * const fb = Fluxbox::instance();
|
||||||
|
@ -1383,7 +1402,7 @@ void BScreen::initMenu() {
|
||||||
err = StringUtil::getStringBetween(label, line.c_str()+pos, '(', ')');
|
err = StringUtil::getStringBetween(label, line.c_str()+pos, '(', ')');
|
||||||
if (err>0) {
|
if (err>0) {
|
||||||
m_rootmenu->setLabel(label.c_str());
|
m_rootmenu->setLabel(label.c_str());
|
||||||
defaultMenu = parseMenuFile(menu_file, m_rootmenu.get(), row);
|
defaultMenu = parseMenuFile(menu_file, *m_rootmenu.get(), row);
|
||||||
} else
|
} else
|
||||||
cerr<<"Error in menufile. Line("<<row<<")"<<endl;
|
cerr<<"Error in menufile. Line("<<row<<")"<<endl;
|
||||||
break;
|
break;
|
||||||
|
@ -1393,8 +1412,8 @@ void BScreen::initMenu() {
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
i18n->getMessage(
|
i18n->getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenEmptyMenuFile,
|
FBNLS::ScreenSet, FBNLS::ScreenEmptyMenuFile,
|
||||||
"%s: Empty menu file"),
|
"%s: Empty menu file"),
|
||||||
fb->getMenuFilename());
|
fb->getMenuFilename());
|
||||||
}
|
}
|
||||||
menu_file.close();
|
menu_file.close();
|
||||||
|
@ -1403,28 +1422,28 @@ void BScreen::initMenu() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defaultMenu) {
|
if (defaultMenu) {
|
||||||
|
FbTk::RefCount<FbTk::Command> restart_fb(new FbCommands::RestartFluxboxCmd());
|
||||||
|
FbTk::RefCount<FbTk::Command> exit_fb(new FbCommands::ExitFluxboxCmd());
|
||||||
|
FbTk::RefCount<FbTk::Command> execute_xterm(new FbCommands::ExecuteCmd("xterm"));
|
||||||
m_rootmenu->setInternalMenu();
|
m_rootmenu->setInternalMenu();
|
||||||
m_rootmenu->insert(i18n->getMessage(
|
m_rootmenu->insert(i18n->getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::Screenxterm,
|
FBNLS::ScreenSet, FBNLS::Screenxterm,
|
||||||
"xterm"),
|
"xterm"),
|
||||||
BScreen::EXECUTE,
|
execute_xterm);
|
||||||
i18n->getMessage(
|
|
||||||
FBNLS::ScreenSet, FBNLS::Screenxterm,
|
|
||||||
"xterm"));
|
|
||||||
m_rootmenu->insert(i18n->getMessage(
|
m_rootmenu->insert(i18n->getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenRestart,
|
FBNLS::ScreenSet, FBNLS::ScreenRestart,
|
||||||
"Restart"),
|
"Restart"),
|
||||||
BScreen::RESTART);
|
restart_fb);
|
||||||
m_rootmenu->insert(i18n->getMessage(
|
m_rootmenu->insert(i18n->getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenExit,
|
FBNLS::ScreenSet, FBNLS::ScreenExit,
|
||||||
"Exit"),
|
"Exit"),
|
||||||
BScreen::EXIT);
|
exit_fb);
|
||||||
} else
|
} else
|
||||||
fb->saveMenuFilename(fb->getMenuFilename());
|
fb->saveMenuFilename(fb->getMenuFilename());
|
||||||
}
|
}
|
||||||
|
|
||||||
// looks through a menufile and adds correct items to the root-menu.
|
// looks through a menufile and adds correct items to the root-menu.
|
||||||
bool BScreen::parseMenuFile(ifstream &file, Rootmenu *menu, int &row) {
|
bool BScreen::parseMenuFile(ifstream &file, FbTk::Menu &menu, int &row) {
|
||||||
|
|
||||||
string line;
|
string line;
|
||||||
|
|
||||||
|
@ -1454,69 +1473,73 @@ bool BScreen::parseMenuFile(ifstream &file, Rootmenu *menu, int &row) {
|
||||||
|
|
||||||
I18n *i18n = I18n::instance();
|
I18n *i18n = I18n::instance();
|
||||||
if (str_key == "end") {
|
if (str_key == "end") {
|
||||||
return ((menu->numberOfItems() == 0) ? true : false);
|
return ((menu.numberOfItems() == 0) ? true : false);
|
||||||
} else if (str_key == "nop") {
|
} else if (str_key == "nop") {
|
||||||
menu->insert(str_label.c_str());
|
menu.insert(str_label.c_str());
|
||||||
} else if (str_key == "exec") { // exec
|
} else if (str_key == "exec") { // exec
|
||||||
if (!(str_label.size() && str_cmd.size())) {
|
if (!(str_label.size() && str_cmd.size())) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
i18n->getMessage(
|
i18n->getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenEXECError,
|
FBNLS::ScreenSet, FBNLS::ScreenEXECError,
|
||||||
"BScreen::parseMenuFile: [exec] error, "
|
"BScreen::parseMenuFile: [exec] error, "
|
||||||
"no menu label and/or command defined\n"));
|
"no menu label and/or command defined\n"));
|
||||||
cerr<<"Row: "<<row<<endl;
|
cerr<<"Row: "<<row<<endl;
|
||||||
} else
|
} else {
|
||||||
menu->insert(str_label.c_str(), BScreen::EXECUTE, str_cmd.c_str());
|
FbTk::RefCount<FbTk::Command> exec_cmd(new FbCommands::ExecuteCmd(str_cmd));
|
||||||
|
menu.insert(str_label.c_str(), exec_cmd);
|
||||||
|
}
|
||||||
} else if (str_key == "exit") { // exit
|
} else if (str_key == "exit") { // exit
|
||||||
if (!str_label.size()) {
|
if (!str_label.size()) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
i18n->getMessage(
|
i18n->getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenEXITError,
|
FBNLS::ScreenSet, FBNLS::ScreenEXITError,
|
||||||
"BScreen::parseMenuFile: [exit] error, "
|
"BScreen::parseMenuFile: [exit] error, "
|
||||||
"no menu label defined\n"));
|
"no menu label defined\n"));
|
||||||
cerr<<"Row: "<<row<<endl;
|
|
||||||
} else
|
|
||||||
menu->insert(str_label.c_str(), BScreen::EXIT);
|
|
||||||
} // end of exit
|
|
||||||
else if (str_key == "style") { // style
|
|
||||||
if (!( str_label.size() && str_cmd.size())) {
|
|
||||||
fprintf(stderr,
|
|
||||||
i18n->
|
|
||||||
getMessage(
|
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenSTYLEError,
|
|
||||||
"BScreen::parseMenuFile: [style] error, "
|
|
||||||
"no menu label and/or filename defined\n"));
|
|
||||||
cerr<<"Row: "<<row<<endl;
|
cerr<<"Row: "<<row<<endl;
|
||||||
} else {
|
} else {
|
||||||
// perform shell style ~ home directory expansion
|
FbTk::RefCount<FbTk::Command> exit_fb_cmd(new FbCommands::ExitFluxboxCmd());
|
||||||
// and insert style
|
menu.insert(str_label.c_str(), exit_fb_cmd);
|
||||||
menu->insert(str_label.c_str(), BScreen::SETSTYLE,
|
|
||||||
StringUtil::expandFilename(str_cmd).c_str());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
} // end of style
|
} // end of exit
|
||||||
|
/*else if (str_key == "style") { // style
|
||||||
|
if (!( str_label.size() && str_cmd.size())) {
|
||||||
|
fprintf(stderr,
|
||||||
|
i18n->
|
||||||
|
getMessage(
|
||||||
|
FBNLS::ScreenSet, FBNLS::ScreenSTYLEError,
|
||||||
|
"BScreen::parseMenuFile: [style] error, "
|
||||||
|
"no menu label and/or filename defined\n"));
|
||||||
|
cerr<<"Row: "<<row<<endl;
|
||||||
|
} else {
|
||||||
|
// perform shell style ~ home directory expansion
|
||||||
|
// and insert style
|
||||||
|
menu->insert(str_label.c_str(), BScreen::SETSTYLE,
|
||||||
|
StringUtil::expandFilename(str_cmd).c_str());
|
||||||
|
|
||||||
else if (str_key == "config") {
|
}
|
||||||
if (! str_label.size()) {
|
} // end of style
|
||||||
fprintf(stderr,
|
*/
|
||||||
i18n->
|
/* else if (str_key == "config") {
|
||||||
getMessage(
|
if (! str_label.size()) {
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenCONFIGError,
|
fprintf(stderr,
|
||||||
"BScreen::parseMenufile: [config] error, "
|
i18n->
|
||||||
"no label defined"));
|
getMessage(
|
||||||
cerr<<"Row: "<<row<<endl;
|
FBNLS::ScreenSet, FBNLS::ScreenCONFIGError,
|
||||||
} else
|
"BScreen::parseMenufile: [config] error, "
|
||||||
menu->insert(str_label.c_str(), configmenu);
|
"no label defined"));
|
||||||
} // end of config
|
cerr<<"Row: "<<row<<endl;
|
||||||
|
} else
|
||||||
|
menu.insert(str_label.c_str(), configmenu);
|
||||||
|
} // end of config
|
||||||
|
*/
|
||||||
else if ( str_key == "include") { // include
|
else if ( str_key == "include") { // include
|
||||||
if (!str_label.size()) {
|
if (!str_label.size()) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
i18n->
|
i18n->
|
||||||
getMessage(
|
getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenINCLUDEError,
|
FBNLS::ScreenSet, FBNLS::ScreenINCLUDEError,
|
||||||
"BScreen::parseMenuFile: [include] error, "
|
"BScreen::parseMenuFile: [include] error, "
|
||||||
"no filename defined\n"));
|
"no filename defined\n"));
|
||||||
cerr<<"Row: "<<row<<endl;
|
cerr<<"Row: "<<row<<endl;
|
||||||
} else { // start of else 'x'
|
} else { // start of else 'x'
|
||||||
// perform shell style ~ home directory expansion
|
// perform shell style ~ home directory expansion
|
||||||
|
@ -1532,9 +1555,9 @@ bool BScreen::parseMenuFile(ifstream &file, Rootmenu *menu, int &row) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
i18n->
|
i18n->
|
||||||
getMessage(
|
getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenINCLUDEErrorReg,
|
FBNLS::ScreenSet, FBNLS::ScreenINCLUDEErrorReg,
|
||||||
"BScreen::parseMenuFile: [include] error: "
|
"BScreen::parseMenuFile: [include] error: "
|
||||||
"'%s' is not a regular file\n"), newfile.c_str());
|
"'%s' is not a regular file\n"), newfile.c_str());
|
||||||
cerr<<"Row: "<<row<<endl;
|
cerr<<"Row: "<<row<<endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1554,21 +1577,21 @@ bool BScreen::parseMenuFile(ifstream &file, Rootmenu *menu, int &row) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
i18n->
|
i18n->
|
||||||
getMessage(
|
getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenSUBMENUError,
|
FBNLS::ScreenSet, FBNLS::ScreenSUBMENUError,
|
||||||
"BScreen::parseMenuFile: [submenu] error, "
|
"BScreen::parseMenuFile: [submenu] error, "
|
||||||
"no menu label defined\n"));
|
"no menu label defined\n"));
|
||||||
cerr<<"Row: "<<row<<endl;
|
cerr<<"Row: "<<row<<endl;
|
||||||
} else {
|
} else {
|
||||||
Rootmenu *submenu = new Rootmenu(this);
|
FbTk::Menu *submenu = createMenuFromScreen(*this);
|
||||||
|
|
||||||
if (str_cmd.size())
|
if (str_cmd.size())
|
||||||
submenu->setLabel(str_cmd.c_str());
|
submenu->setLabel(str_cmd.c_str());
|
||||||
else
|
else
|
||||||
submenu->setLabel(str_label.c_str());
|
submenu->setLabel(str_label.c_str());
|
||||||
|
|
||||||
parseMenuFile(file, submenu, row);
|
parseMenuFile(file, *submenu, row);
|
||||||
submenu->update();
|
submenu->update();
|
||||||
menu->insert(str_label.c_str(), submenu);
|
menu.insert(str_label.c_str(), submenu);
|
||||||
rootmenuList.push_back(submenu);
|
rootmenuList.push_back(submenu);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1578,15 +1601,17 @@ bool BScreen::parseMenuFile(ifstream &file, Rootmenu *menu, int &row) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
i18n->
|
i18n->
|
||||||
getMessage(
|
getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenRESTARTError,
|
FBNLS::ScreenSet, FBNLS::ScreenRESTARTError,
|
||||||
"BScreen::parseMenuFile: [restart] error, "
|
"BScreen::parseMenuFile: [restart] error, "
|
||||||
"no menu label defined\n"));
|
"no menu label defined\n"));
|
||||||
cerr<<"Row: "<<row<<endl;
|
cerr<<"Row: "<<row<<endl;
|
||||||
} else {
|
} else {
|
||||||
if (str_cmd.size())
|
/* if (str_cmd.size())
|
||||||
menu->insert(str_label.c_str(), BScreen::RESTARTOTHER, str_cmd.c_str());
|
menu.insert(str_label.c_str(), BScreen::RESTARTOTHER, str_cmd.c_str());
|
||||||
else
|
else
|
||||||
menu->insert(str_label.c_str(), BScreen::RESTART);
|
*/
|
||||||
|
FbTk::RefCount<FbTk::Command> restart_fb(new FbCommands::RestartFluxboxCmd());
|
||||||
|
menu.insert(str_label.c_str(), restart_fb);
|
||||||
}
|
}
|
||||||
} // end of restart
|
} // end of restart
|
||||||
else if (str_key == "reconfig") { // reconf
|
else if (str_key == "reconfig") { // reconf
|
||||||
|
@ -1594,48 +1619,50 @@ bool BScreen::parseMenuFile(ifstream &file, Rootmenu *menu, int &row) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
i18n->
|
i18n->
|
||||||
getMessage(
|
getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenRECONFIGError,
|
FBNLS::ScreenSet, FBNLS::ScreenRECONFIGError,
|
||||||
"BScreen::parseMenuFile: [reconfig] error, "
|
"BScreen::parseMenuFile: [reconfig] error, "
|
||||||
"no menu label defined\n"));
|
"no menu label defined\n"));
|
||||||
cerr<<"Row: "<<row<<endl;
|
cerr<<"Row: "<<row<<endl;
|
||||||
} else
|
} else {
|
||||||
menu->insert(str_label.c_str(), BScreen::RECONFIGURE);
|
FbTk::RefCount<FbTk::Command> reconfig_fb_cmd(new FbCommands::ReconfigureFluxboxCmd());
|
||||||
|
menu.insert(str_label.c_str(), reconfig_fb_cmd);
|
||||||
|
}
|
||||||
} // end of reconf
|
} // end of reconf
|
||||||
else if (str_key == "stylesdir" || str_key == "stylesmenu") {
|
/* else if (str_key == "stylesdir" || str_key == "stylesmenu") {
|
||||||
bool newmenu = (str_key == "stylesmenu");
|
bool newmenu = (str_key == "stylesmenu");
|
||||||
if (!( str_label.size() && str_cmd.size()) && newmenu) {
|
if (!( str_label.size() && str_cmd.size()) && newmenu) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
i18n->
|
i18n->
|
||||||
getMessage(
|
getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenSTYLESDIRError,
|
FBNLS::ScreenSet, FBNLS::ScreenSTYLESDIRError,
|
||||||
"BScreen::parseMenuFile: [stylesdir/stylesmenu]"
|
"BScreen::parseMenuFile: [stylesdir/stylesmenu]"
|
||||||
" error, no directory defined\n"));
|
" error, no directory defined\n"));
|
||||||
cerr<<"Row: "<<row<<endl;
|
cerr<<"Row: "<<row<<endl;
|
||||||
} else { // else 'y'
|
} else { // else 'y'
|
||||||
createStyleMenu(menu, newmenu, str_label.c_str(),
|
createStyleMenu(menu, newmenu, str_label.c_str(),
|
||||||
(newmenu) ? str_cmd.c_str() : str_label.c_str());
|
(newmenu) ? str_cmd.c_str() : str_label.c_str());
|
||||||
} // end of else 'y'
|
} // end of else 'y'
|
||||||
} // end of stylesdir
|
} */// end of stylesdir
|
||||||
else if (str_key == "workspaces") {
|
else if (str_key == "workspaces") {
|
||||||
if (!str_label.size()) {
|
if (!str_label.size()) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
i18n->getMessage(
|
i18n->getMessage(
|
||||||
FBNLS::ScreenSet, FBNLS::ScreenWORKSPACESError,
|
FBNLS::ScreenSet, FBNLS::ScreenWORKSPACESError,
|
||||||
"BScreen:parseMenuFile: [workspaces] error, "
|
"BScreen:parseMenuFile: [workspaces] error, "
|
||||||
"no menu label defined\n"));
|
"no menu label defined\n"));
|
||||||
cerr<<"Row: "<<row<<endl;
|
cerr<<"Row: "<<row<<endl;
|
||||||
} else
|
} else
|
||||||
menu->insert(str_label.c_str(), workspacemenu);
|
menu.insert(str_label.c_str(), workspacemenu.get());
|
||||||
} // end of work
|
} // end of work
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ((menu->numberOfItems() == 0) ? true : false);
|
return ((menu.numberOfItems() == 0) ? true : false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BScreen::createStyleMenu(Rootmenu *menu, bool newmenu, const char *label, const char *directory) {
|
void BScreen::createStyleMenu(FbTk::Menu &menu, bool newmenu, const char *label, const char *directory) {
|
||||||
|
/*
|
||||||
// perform shell style ~ home directory expansion
|
// perform shell style ~ home directory expansion
|
||||||
string stylesdir(StringUtil::expandFilename(directory ? directory : ""));
|
string stylesdir(StringUtil::expandFilename(directory ? directory : ""));
|
||||||
|
|
||||||
|
@ -1684,7 +1711,7 @@ void BScreen::createStyleMenu(Rootmenu *menu, bool newmenu, const char *label, c
|
||||||
if (newmenu) {
|
if (newmenu) {
|
||||||
stylesmenu->setLabel(label);
|
stylesmenu->setLabel(label);
|
||||||
menu->insert(label, stylesmenu);
|
menu->insert(label, stylesmenu);
|
||||||
rootmenuList.push_back(stylesmenu);
|
// rootmenuList.push_back(stylesmenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
Fluxbox::instance()->saveMenuFilename(stylesdir.c_str());
|
Fluxbox::instance()->saveMenuFilename(stylesdir.c_str());
|
||||||
|
@ -1705,7 +1732,7 @@ void BScreen::createStyleMenu(Rootmenu *menu, bool newmenu, const char *label, c
|
||||||
"BScreen::parseMenuFile: [stylesdir/stylesmenu]"
|
"BScreen::parseMenuFile: [stylesdir/stylesmenu]"
|
||||||
" error, %s does not exist\n"), stylesdir.c_str());
|
" error, %s does not exist\n"), stylesdir.c_str());
|
||||||
} // end of 'stat'
|
} // end of 'stat'
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void BScreen::shutdown() {
|
void BScreen::shutdown() {
|
||||||
|
|
Loading…
Reference in a new issue