command factory for basic fluxbox commands
This commit is contained in:
parent
bbe279233a
commit
5c657dabae
2 changed files with 198 additions and 0 deletions
163
src/FbCommandFactory.cc
Normal file
163
src/FbCommandFactory.cc
Normal file
|
@ -0,0 +1,163 @@
|
|||
// FbCommandFactory.cc for Fluxbox Window manager
|
||||
// Copyright (c) 2003 Henrik Kinnunen (fluxgen at users.sourceforge.net)
|
||||
// and Simon Bowden (rathnor at users.sourceforge.net)
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the "Software"),
|
||||
// to deal in the Software without restriction, including without limitation
|
||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
// and/or sell copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// 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: FbCommandFactory.cc,v 1.1 2003/06/30 14:49:23 fluxgen Exp $
|
||||
|
||||
#include "FbCommandFactory.hh"
|
||||
|
||||
#include "CurrentWindowCmd.hh"
|
||||
#include "FbCommands.hh"
|
||||
#include "Window.hh"
|
||||
#include "WorkspaceCmd.hh"
|
||||
#include "fluxbox.hh"
|
||||
#include "SimpleCommand.hh"
|
||||
|
||||
// autoregister this module to command parser
|
||||
FbCommandFactory FbCommandFactory::s_autoreg;
|
||||
|
||||
|
||||
FbCommandFactory::FbCommandFactory() {
|
||||
// setup commands that we can handle
|
||||
const char commands[][20] = {
|
||||
"execcommand",
|
||||
"exec",
|
||||
"execute",
|
||||
"quit",
|
||||
"restart",
|
||||
"minimizewindow",
|
||||
"minimize",
|
||||
"iconfiy",
|
||||
"maximizewindow",
|
||||
"maximize",
|
||||
"maximizevertical",
|
||||
"maximizehorizontal",
|
||||
"moveright",
|
||||
"moveleft",
|
||||
"moveup",
|
||||
"movedown",
|
||||
"raise",
|
||||
"lower",
|
||||
"close",
|
||||
"shade",
|
||||
"stick",
|
||||
"sendtoworkspace",
|
||||
"killwindow",
|
||||
"nexttab",
|
||||
"prevtab",
|
||||
"detachclient",
|
||||
"nextworkspace",
|
||||
"prevworkspace",
|
||||
"nextwindow",
|
||||
"prevwindow",
|
||||
"showdesktop",
|
||||
"arrangewindows",
|
||||
""
|
||||
};
|
||||
|
||||
for (int i=0;; ++i) {
|
||||
if (strcmp(commands[i], "") == 0)
|
||||
break;
|
||||
addCommand(commands[i]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
FbTk::Command *FbCommandFactory::stringToCommand(const std::string &command,
|
||||
const std::string &arguments) {
|
||||
using namespace FbCommands;
|
||||
//
|
||||
// WM commands
|
||||
//
|
||||
if (command == "restart")
|
||||
return new RestartFluxboxCmd(arguments);
|
||||
else if (command == "reconfigure")
|
||||
return new ReconfigureFluxboxCmd();
|
||||
else if (command == "setstyle")
|
||||
return new SetStyleCmd(arguments);
|
||||
else if (command == "saverc")
|
||||
return new SaveResources();
|
||||
else if (command == "execcommand" || command == "execute" || command == "exec")
|
||||
return new ExecuteCmd(arguments); // execute command on key screen
|
||||
else if (command == "quit")
|
||||
return new FbTk::SimpleCommand<Fluxbox>(*Fluxbox::instance(), &Fluxbox::shutdown);
|
||||
//
|
||||
// Current focused window commands
|
||||
//
|
||||
else if (command == "minimizewindow" || command == "mimimize" || command == "iconify")
|
||||
return new CurrentWindowCmd(&FluxboxWindow::iconify);
|
||||
else if (command == "maximizewindow" || command == "maximize")
|
||||
return new CurrentWindowCmd(&FluxboxWindow::maximize);
|
||||
else if (command == "maximizevertical")
|
||||
return new CurrentWindowCmd(&FluxboxWindow::maximizeVertical);
|
||||
else if (command == "maximizehorizontal")
|
||||
return new CurrentWindowCmd(&FluxboxWindow::maximizeHorizontal);
|
||||
else if (command == "moveright")
|
||||
return new MoveRightCmd(atoi(arguments.c_str()));
|
||||
else if (command == "moveleft")
|
||||
return new MoveLeftCmd(atoi(arguments.c_str()));
|
||||
else if (command == "moveup")
|
||||
return new MoveUpCmd(atoi(arguments.c_str()));
|
||||
else if (command == "movedown")
|
||||
return new MoveDownCmd(atoi(arguments.c_str()));
|
||||
else if (command == "raise")
|
||||
return new CurrentWindowCmd(&FluxboxWindow::raise);
|
||||
else if (command == "lower")
|
||||
return new CurrentWindowCmd(&FluxboxWindow::lower);
|
||||
else if (command == "close")
|
||||
return new CurrentWindowCmd(&FluxboxWindow::close);
|
||||
else if (command == "shade" || command == "shadewindow")
|
||||
return new CurrentWindowCmd(&FluxboxWindow::shade);
|
||||
else if (command == "stick" || command == "stickwindow")
|
||||
return new CurrentWindowCmd(&FluxboxWindow::stick);
|
||||
else if (command == "sendtoworkspace")
|
||||
return new SendToWorkspaceCmd(atoi(arguments.c_str()));
|
||||
else if (command == "killwindow")
|
||||
return new KillWindowCmd();
|
||||
else if (command == "nexttab")
|
||||
return new CurrentWindowCmd(&FluxboxWindow::nextClient);
|
||||
else if (command == "prevtab")
|
||||
return new CurrentWindowCmd(&FluxboxWindow::prevClient);
|
||||
else if (command == "detachclient")
|
||||
return new CurrentWindowCmd(&FluxboxWindow::detachCurrentClient);
|
||||
//
|
||||
// Workspace commands
|
||||
//
|
||||
else if (command == "nextworkspace" && arguments.size() == 0)
|
||||
return new NextWorkspaceCmd();
|
||||
else if (command == "prevworkspace" && arguments.size() == 0)
|
||||
return new PrevWorkspaceCmd();
|
||||
else if (command == "workspace") {
|
||||
int num = 0;
|
||||
if (!arguments.empty())
|
||||
num = atoi(arguments.c_str());
|
||||
return new JumpToWorkspaceCmd(num);
|
||||
} else if (command == "nextwindow")
|
||||
return new NextWindowCmd(atoi(arguments.c_str()));
|
||||
else if (command == "prevwindow")
|
||||
return new PrevWindowCmd(atoi(arguments.c_str()));
|
||||
else if (command == "arrangewindows")
|
||||
return new ArrangeWindowsCmd();
|
||||
else if (command == "showdesktop")
|
||||
return new ShowDesktopCmd();
|
||||
|
||||
return 0;
|
||||
}
|
35
src/FbCommandFactory.hh
Normal file
35
src/FbCommandFactory.hh
Normal file
|
@ -0,0 +1,35 @@
|
|||
// FbCommandFactory.hh for Fluxbox Window manager
|
||||
// Copyright (c) 2003 Henrik Kinnunen (fluxgen at users.sourceforge.net)
|
||||
// and Simon Bowden (rathnor at users.sourceforge.net)
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the "Software"),
|
||||
// to deal in the Software without restriction, including without limitation
|
||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
// and/or sell copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// 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: FbCommandFactory.hh,v 1.1 2003/06/30 14:49:23 fluxgen Exp $
|
||||
|
||||
#include "CommandParser.hh"
|
||||
|
||||
class FbCommandFactory: public CommandFactory {
|
||||
public:
|
||||
FbTk::Command *stringToCommand(const std::string &command,
|
||||
const std::string &arguments);
|
||||
|
||||
private:
|
||||
FbCommandFactory();
|
||||
static FbCommandFactory s_autoreg; ///< autoregister variable
|
||||
};
|
Loading…
Reference in a new issue