fluxbox/src/FbCommands.hh

234 lines
6 KiB
C++
Raw Normal View History

// FbCommands.hh for Fluxbox
2006-02-16 06:53:05 +00:00
// Copyright (c) 2003 - 2006 Henrik Kinnunen (fluxgen at fluxbox dot org)
//
// 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.
// \file contains basic commands to restart, reconfigure, execute command and exit fluxbox
#ifndef FBCOMMANDS_HH
#define FBCOMMANDS_HH
2007-12-30 15:32:53 +00:00
#include "FbTk/Command.hh"
#include <memory>
2007-12-30 15:32:53 +00:00
2007-10-13 21:51:37 +00:00
#include "ClientMenu.hh"
#include "ClientPattern.hh"
#include "FocusableList.hh"
namespace FbCommands {
/// executes a system command
class ExecuteCmd: public FbTk::Command<void> {
public:
2003-06-30 14:59:38 +00:00
ExecuteCmd(const std::string &cmd, int screen_num = -1);
void execute();
/**
* same as execute but returns pid
*/
int run();
private:
std::string m_cmd;
2003-04-28 00:38:42 +00:00
const int m_screen_num;
};
2004-10-06 11:40:28 +00:00
/// sets environment
class ExportCmd : public FbTk::Command<void> {
2004-10-06 11:40:28 +00:00
public:
ExportCmd(const std::string& name, const std::string& value);
void execute();
static FbTk::Command<void> *parse(const std::string &command,
const std::string &args, bool trusted);
2004-10-06 11:40:28 +00:00
private:
std::string m_name;
std::string m_value;
};
/// exit fluxbox
class ExitFluxboxCmd: public FbTk::Command<void> {
public:
void execute();
};
2003-06-22 14:16:25 +00:00
/// saves resources
class SaveResources: public FbTk::Command<void> {
2003-06-22 14:16:25 +00:00
public:
void execute();
};
/// restarts fluxbox
class RestartFluxboxCmd: public FbTk::Command<void> {
public:
RestartFluxboxCmd(const std::string &cmd);
void execute();
static FbTk::Command<void> *parse(const std::string &command,
const std::string &args, bool trusted);
private:
std::string m_cmd;
};
/// reconfigures fluxbox
class ReconfigureFluxboxCmd: public FbTk::Command<void> {
public:
void execute();
};
class ReloadStyleCmd: public FbTk::Command<void> {
2003-12-03 22:13:21 +00:00
public:
void execute();
};
class SetStyleCmd: public FbTk::Command<void> {
2003-02-15 01:58:06 +00:00
public:
2003-04-16 13:33:18 +00:00
explicit SetStyleCmd(const std::string &filename);
2003-02-15 01:58:06 +00:00
void execute();
private:
std::string m_filename;
};
class KeyModeCmd: public FbTk::Command<void> {
public:
explicit KeyModeCmd(const std::string &arguments);
void execute();
private:
std::string m_keymode;
std::string m_end_args;
};
class HideMenuCmd: public FbTk::Command<void> {
2007-02-09 18:13:01 +00:00
public:
void execute();
};
class ShowClientMenuCmd: public FbTk::Command<void> {
2007-10-13 21:51:37 +00:00
public:
ShowClientMenuCmd(int option, std::string &pat):
m_option(option|FocusableList::LIST_GROUPS), m_pat(pat.c_str()) { }
2007-10-13 21:51:37 +00:00
void execute();
static FbTk::Command<void> *parse(const std::string &command,
const std::string &args, bool trusted);
2007-10-13 21:51:37 +00:00
private:
const int m_option;
const ClientPattern m_pat;
std::list<FluxboxWindow *> m_list;
std::unique_ptr<ClientMenu> m_menu;
2007-10-13 21:51:37 +00:00
};
class ShowCustomMenuCmd: public FbTk::Command<void> {
2007-03-16 20:44:47 +00:00
public:
explicit ShowCustomMenuCmd(const std::string &arguments);
void execute();
void reload();
2007-03-16 20:44:47 +00:00
private:
std::string custom_menu_file;
std::unique_ptr<FbMenu> m_menu;
2007-03-16 20:44:47 +00:00
};
class ShowRootMenuCmd: public FbTk::Command<void> {
2003-07-01 20:24:19 +00:00
public:
void execute();
};
class ShowWorkspaceMenuCmd: public FbTk::Command<void> {
public:
void execute();
};
class SetWorkspaceNameCmd: public FbTk::Command<void> {
public:
SetWorkspaceNameCmd(const std::string &name, int spaceid = -1);
void execute();
private:
std::string m_name;
int m_workspace;
};
class WorkspaceNameDialogCmd: public FbTk::Command<void> {
public:
void execute();
};
class CommandDialogCmd: public FbTk::Command<void> {
2003-08-26 23:52:09 +00:00
public:
void execute();
};
class SetResourceValueCmd: public FbTk::Command<void> {
public:
SetResourceValueCmd(const std::string &resourcename, const std::string &value);
void execute();
private:
const std::string m_resname;
const std::string m_value;
};
class SetResourceValueDialogCmd: public FbTk::Command<void> {
public:
void execute();
};
class BindKeyCmd: public FbTk::Command<void> {
2003-12-20 17:42:04 +00:00
public:
BindKeyCmd(const std::string &keybind);
void execute();
private:
const std::string m_keybind;
};
2004-04-22 21:12:34 +00:00
/// deiconifies iconified windows
class DeiconifyCmd: public FbTk::Command<void> {
2004-04-22 21:12:34 +00:00
public:
enum Mode {
LAST,
LASTWORKSPACE,
ALL,
ALLWORKSPACE
};
enum Destination {
CURRENT, /// deiconification on current workspace
ORIGIN, /// deiconification on origin workspace, change to that ws
ORIGINQUIET /// deiconification on origin workspace, dont change ws
};
2005-04-30 10:29:06 +00:00
DeiconifyCmd(Mode mode= LASTWORKSPACE,
Destination dest= CURRENT);
2004-04-22 21:12:34 +00:00
void execute();
static FbTk::Command<void> *parse(const std::string &command,
const std::string &args, bool trusted);
2004-04-22 21:12:34 +00:00
private:
Mode m_mode;
Destination m_dest;
};
/// test client pattern
class ClientPatternTestCmd: public FbTk::Command<void> {
public:
ClientPatternTestCmd(const std::string& args) : m_args(args) { };
void execute();
private:
std::string m_args;
};
} // end namespace FbCommands
#endif // FBCOMMANDS_HH