load config options from the python environment
This commit is contained in:
parent
1161a90a70
commit
745e840547
14 changed files with 274 additions and 147 deletions
|
@ -1,6 +1,6 @@
|
||||||
scriptdir = $(libdir)/openbox/python
|
scriptdir = $(libdir)/openbox/python
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
script_DATA = clientmotion.py clicks.py globals.py
|
script_DATA = clientmotion.py clicks.py globals.py config.py
|
||||||
EXTRA_DIST = $(script_DATA)
|
EXTRA_DIST = $(script_DATA)
|
||||||
|
|
||||||
distclean-local:
|
distclean-local:
|
||||||
|
|
34
scripts/config.py
Normal file
34
scripts/config.py
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#############################################################################
|
||||||
|
### Options that can be defined on startup that affect the behavior of ###
|
||||||
|
### openbox. ###
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
# client_buttons - a list of the modifier(s) and buttons which are grabbed on
|
||||||
|
# client windows (for interactive move/resize, etc).
|
||||||
|
# examples: "A-2", "C-A-2", "W-1"
|
||||||
|
client_buttons = ["A-1", "A-2", "A-3"]
|
||||||
|
|
||||||
|
# theme - the theme used to decorate everything.
|
||||||
|
theme = "/usr/local/share/openbox/styles/nyz"
|
||||||
|
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
### Options that can be modified by the user to change the default hooks' ###
|
||||||
|
### behaviors. ###
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
# click_focus - '1' if clicking in a client will cause it to focus in the
|
||||||
|
# default hook functions; else '0'.
|
||||||
|
click_focus = 0
|
||||||
|
# click_raise - '1' if clicking in a client will cause it to raise to the
|
||||||
|
# top of its stacking layer; else '0'.
|
||||||
|
click_raise = 0
|
||||||
|
# enter_focus - '1' if entering a client window will cause it to focus in the
|
||||||
|
# default hook functions; else '0'.
|
||||||
|
enter_focus = 1
|
||||||
|
# leave_unfocus - '1' if leaving a client window will cause it to unfocus in
|
||||||
|
# the default hook functions; else '0'.
|
||||||
|
leave_unfocus = 1
|
||||||
|
|
||||||
|
|
||||||
|
print "Loaded config.py"
|
|
@ -1,35 +1,3 @@
|
||||||
#############################################################################
|
|
||||||
### Options that can be defined on startup that affect the behavior of ###
|
|
||||||
### openbox. ###
|
|
||||||
#############################################################################
|
|
||||||
|
|
||||||
# client_buttons - a list of the modifier(s) and buttons which are grabbed on
|
|
||||||
# client windows (for interactive move/resize, etc)
|
|
||||||
# examples: "A-2", "C-A-2", "W-1"
|
|
||||||
client_buttons = ["A-1", "A-2", "A-3"]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#############################################################################
|
|
||||||
### Options that can be modified by the user to change the default hooks' ###
|
|
||||||
### behaviors. ###
|
|
||||||
#############################################################################
|
|
||||||
|
|
||||||
# click_focus - true if clicking in a client will cause it to focus in the
|
|
||||||
# default hook functions
|
|
||||||
click_focus = 0
|
|
||||||
# click_raise - true if clicking in a client will cause it to raise to the
|
|
||||||
# top of its stacking layer
|
|
||||||
click_raise = 0
|
|
||||||
# enter_focus - true if entering a client window will cause it to focus in the
|
|
||||||
# default hook functions
|
|
||||||
enter_focus = 1
|
|
||||||
# leave_unfocus - true if leaving a client window will cause it to unfocus in
|
|
||||||
# the default hook functions
|
|
||||||
leave_unfocus = 1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
### Variables defined for other scripts to use. ###
|
### Variables defined for other scripts to use. ###
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
@ -37,11 +5,10 @@ leave_unfocus = 1
|
||||||
# openbox - pointer to the current Openbox instance
|
# openbox - pointer to the current Openbox instance
|
||||||
openbox = Openbox_instance()
|
openbox = Openbox_instance()
|
||||||
|
|
||||||
# screen - list of all screens in the current openbox instance
|
# screens - list of all screens in the current openbox instance
|
||||||
screen = []
|
screens = []
|
||||||
for i in range(Openbox_screenCount(openbox)):
|
for i in range(Openbox_screenCount(openbox)):
|
||||||
screen.append(Openbox_screen(openbox, i))
|
screens.append(Openbox_screen(openbox, i))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print "Loaded globals.py"
|
print "Loaded globals.py"
|
||||||
|
|
|
@ -134,8 +134,13 @@ BindingTree *OBBindings::buildtree(const StringVect &keylist, int id) const
|
||||||
|
|
||||||
|
|
||||||
OBBindings::OBBindings()
|
OBBindings::OBBindings()
|
||||||
: _curpos(&_tree), _resetkey(0,0)
|
: _curpos(&_tree),
|
||||||
|
_resetkey(0,0),
|
||||||
|
_timer(Openbox::instance->timerManager(),
|
||||||
|
(otk::OBTimeoutHandler)reset, this)
|
||||||
{
|
{
|
||||||
|
_timer.setTimeout(5000); // chains reset after 5 seconds
|
||||||
|
|
||||||
setResetKey("C-g"); // set the default reset key
|
setResetKey("C-g"); // set the default reset key
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -299,10 +304,11 @@ void OBBindings::grabKeys(bool grab)
|
||||||
|
|
||||||
BindingTree *p = _curpos->first_child;
|
BindingTree *p = _curpos->first_child;
|
||||||
while (p) {
|
while (p) {
|
||||||
if (grab)
|
if (grab) {
|
||||||
otk::OBDisplay::grabKey(p->binding.key, p->binding.modifiers,
|
otk::OBDisplay::grabKey(p->binding.key, p->binding.modifiers,
|
||||||
root, false, GrabModeAsync, GrabModeAsync,
|
root, false, GrabModeAsync, GrabModeAsync,
|
||||||
false);
|
false);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
otk::OBDisplay::ungrabKey(p->binding.key, p->binding.modifiers,
|
otk::OBDisplay::ungrabKey(p->binding.key, p->binding.modifiers,
|
||||||
root);
|
root);
|
||||||
|
@ -324,22 +330,19 @@ void OBBindings::fire(Window window, unsigned int modifiers, unsigned int key,
|
||||||
Time time)
|
Time time)
|
||||||
{
|
{
|
||||||
if (key == _resetkey.key && modifiers == _resetkey.modifiers) {
|
if (key == _resetkey.key && modifiers == _resetkey.modifiers) {
|
||||||
grabKeys(false);
|
reset(this);
|
||||||
_curpos = &_tree;
|
|
||||||
grabKeys(true);
|
|
||||||
} else {
|
} else {
|
||||||
BindingTree *p = _curpos->first_child;
|
BindingTree *p = _curpos->first_child;
|
||||||
while (p) {
|
while (p) {
|
||||||
if (p->binding.key == key && p->binding.modifiers == modifiers) {
|
if (p->binding.key == key && p->binding.modifiers == modifiers) {
|
||||||
if (p->chain) {
|
if (p->chain) {
|
||||||
|
_timer.start(); // start/restart the timer
|
||||||
grabKeys(false);
|
grabKeys(false);
|
||||||
_curpos = p;
|
_curpos = p;
|
||||||
grabKeys(true);
|
grabKeys(true);
|
||||||
} else {
|
} else {
|
||||||
python_callback_binding(p->id, window, modifiers, key, time);
|
python_callback_binding(p->id, window, modifiers, key, time);
|
||||||
grabKeys(false);
|
reset(this);
|
||||||
_curpos = &_tree;
|
|
||||||
grabKeys(true);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -348,4 +351,12 @@ void OBBindings::fire(Window window, unsigned int modifiers, unsigned int key,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OBBindings::reset(OBBindings *self)
|
||||||
|
{
|
||||||
|
self->_timer.stop();
|
||||||
|
self->grabKeys(false);
|
||||||
|
self->_curpos = &self->_tree;
|
||||||
|
self->grabKeys(true);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "actions.hh"
|
#include "actions.hh"
|
||||||
|
#include "otk/timer.hh"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -53,12 +54,16 @@ private:
|
||||||
BindingTree *_curpos; // position in the keytree
|
BindingTree *_curpos; // position in the keytree
|
||||||
|
|
||||||
Binding _resetkey; // the key which resets the key chain status
|
Binding _resetkey; // the key which resets the key chain status
|
||||||
|
|
||||||
|
otk::OBTimer _timer;
|
||||||
|
|
||||||
int find(BindingTree *search) const;
|
int find(BindingTree *search) const;
|
||||||
bool translate(const std::string &str, Binding &b) const;
|
bool translate(const std::string &str, Binding &b) const;
|
||||||
BindingTree *buildtree(const StringVect &keylist, int id) const;
|
BindingTree *buildtree(const StringVect &keylist, int id) const;
|
||||||
void assimilate(BindingTree *node);
|
void assimilate(BindingTree *node);
|
||||||
|
|
||||||
|
static void reset(OBBindings *self);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
//! Initializes an OBBinding object
|
//! Initializes an OBBinding object
|
||||||
OBBindings();
|
OBBindings();
|
||||||
|
|
36
src/frame.cc
36
src/frame.cc
|
@ -56,15 +56,51 @@ OBFrame::OBFrame(OBClient *client, otk::Style *style)
|
||||||
_plate.show(); // the other stuff is shown based on decor settings
|
_plate.show(); // the other stuff is shown based on decor settings
|
||||||
|
|
||||||
grabClient();
|
grabClient();
|
||||||
|
|
||||||
|
grabButtons(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
OBFrame::~OBFrame()
|
OBFrame::~OBFrame()
|
||||||
{
|
{
|
||||||
|
grabButtons(false);
|
||||||
releaseClient(false);
|
releaseClient(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OBFrame::grabButtons(bool grab)
|
||||||
|
{
|
||||||
|
if (grab) {
|
||||||
|
// grab simple button clicks on the client, but pass them through too
|
||||||
|
otk::OBDisplay::grabButton(Button1, 0, _plate.window(), true,
|
||||||
|
ButtonPressMask, GrabModeSync, GrabModeSync,
|
||||||
|
_plate.window(), None, false);
|
||||||
|
otk::OBDisplay::grabButton(Button2, 0, _plate.window(), true,
|
||||||
|
ButtonPressMask, GrabModeSync, GrabModeSync,
|
||||||
|
_plate.window(), None, false);
|
||||||
|
otk::OBDisplay::grabButton(Button3, 0, _plate.window(), true,
|
||||||
|
ButtonPressMask, GrabModeSync, GrabModeSync,
|
||||||
|
_plate.window(), None, false);
|
||||||
|
otk::OBDisplay::grabButton(Button4, 0, _plate.window(), true,
|
||||||
|
ButtonPressMask, GrabModeSync, GrabModeSync,
|
||||||
|
_plate.window(), None, false);
|
||||||
|
otk::OBDisplay::grabButton(Button5, 0, _plate.window(), true,
|
||||||
|
ButtonPressMask, GrabModeSync, GrabModeSync,
|
||||||
|
_plate.window(), None, false);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
// grab any requested buttons on the entire frame
|
||||||
|
if (grab) {
|
||||||
|
|
||||||
|
otk::OBDisplay::grabButton(Button1, 0, _plate.window(), true,
|
||||||
|
ButtonPressMask, GrabModeSync, GrabModeSync,
|
||||||
|
_plate.window(), None, false);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void OBFrame::setTitle(const std::string &text)
|
void OBFrame::setTitle(const std::string &text)
|
||||||
{
|
{
|
||||||
_label.setText(text);
|
_label.setText(text);
|
||||||
|
|
|
@ -80,6 +80,9 @@ private:
|
||||||
//! Shape the frame window to the client window
|
//! Shape the frame window to the client window
|
||||||
void adjustShape();
|
void adjustShape();
|
||||||
|
|
||||||
|
//! Grabs or ungrabs buttons on the frame
|
||||||
|
void grabButtons(bool grab);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
//! Constructs an OBFrame object, and reparents the client to itself
|
//! Constructs an OBFrame object, and reparents the client to itself
|
||||||
/*!
|
/*!
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "screen.hh"
|
#include "screen.hh"
|
||||||
#include "actions.hh"
|
#include "actions.hh"
|
||||||
#include "bindings.hh"
|
#include "bindings.hh"
|
||||||
|
#include "python.hh"
|
||||||
#include "otk/property.hh"
|
#include "otk/property.hh"
|
||||||
#include "otk/display.hh"
|
#include "otk/display.hh"
|
||||||
#include "otk/assassin.hh"
|
#include "otk/assassin.hh"
|
||||||
|
@ -43,13 +44,6 @@ extern "C" {
|
||||||
# include <sys/select.h>
|
# include <sys/select.h>
|
||||||
#endif // HAVE_SYS_SELECT_H
|
#endif // HAVE_SYS_SELECT_H
|
||||||
|
|
||||||
#include <Python.h>
|
|
||||||
|
|
||||||
// The initializer in openbox_wrap.cc
|
|
||||||
extern void init_openbox(void);
|
|
||||||
// The initializer in otk_wrap.cc
|
|
||||||
extern void init_otk(void);
|
|
||||||
|
|
||||||
#include "gettext.h"
|
#include "gettext.h"
|
||||||
#define _(str) gettext(str)
|
#define _(str) gettext(str)
|
||||||
}
|
}
|
||||||
|
@ -83,17 +77,6 @@ void Openbox::signalHandler(int signal)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void runPython(const char *s) {
|
|
||||||
FILE *rcpyfd = fopen(s, "r");
|
|
||||||
if (!rcpyfd) {
|
|
||||||
printf("failed to load python file %s\n", s);
|
|
||||||
} else {
|
|
||||||
PyRun_SimpleFile(rcpyfd, const_cast<char*>(s));
|
|
||||||
fclose(rcpyfd);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Openbox::Openbox(int argc, char **argv)
|
Openbox::Openbox(int argc, char **argv)
|
||||||
: otk::OtkEventDispatcher(),
|
: otk::OtkEventDispatcher(),
|
||||||
otk::OtkEventHandler()
|
otk::OtkEventHandler()
|
||||||
|
@ -114,20 +97,6 @@ Openbox::Openbox(int argc, char **argv)
|
||||||
|
|
||||||
parseCommandLine(argc, argv);
|
parseCommandLine(argc, argv);
|
||||||
|
|
||||||
// TEMPORARY: using the xrdb rc3
|
|
||||||
_config.setFile(_rcfilepath);
|
|
||||||
if (!_config.load()) {
|
|
||||||
printf("failed to load rc file %s\n", _config.file().c_str());
|
|
||||||
::exit(2);
|
|
||||||
}
|
|
||||||
std::string s;
|
|
||||||
_config.getValue("session.styleFile", s);
|
|
||||||
_config.setFile(s);
|
|
||||||
if (!_config.load()) {
|
|
||||||
printf("failed to load style %s\n", _config.file().c_str());
|
|
||||||
::exit(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
// open the X display (and gets some info about it, and its screens)
|
// open the X display (and gets some info about it, and its screens)
|
||||||
otk::OBDisplay::initialize(_displayreq);
|
otk::OBDisplay::initialize(_displayreq);
|
||||||
assert(otk::OBDisplay::display);
|
assert(otk::OBDisplay::display);
|
||||||
|
@ -159,9 +128,13 @@ Openbox::Openbox(int argc, char **argv)
|
||||||
_cursors.ul_angle = XCreateFontCursor(otk::OBDisplay::display, XC_ul_angle);
|
_cursors.ul_angle = XCreateFontCursor(otk::OBDisplay::display, XC_ul_angle);
|
||||||
_cursors.ur_angle = XCreateFontCursor(otk::OBDisplay::display, XC_ur_angle);
|
_cursors.ur_angle = XCreateFontCursor(otk::OBDisplay::display, XC_ur_angle);
|
||||||
|
|
||||||
|
// start up python and load config values
|
||||||
|
python_init(argv[0]);
|
||||||
|
python_exec(SCRIPTDIR"/config.py"); // load openbox config values
|
||||||
|
|
||||||
// initialize all the screens
|
// initialize all the screens
|
||||||
OBScreen *screen;
|
OBScreen *screen;
|
||||||
screen = new OBScreen(0, _config);
|
screen = new OBScreen(0);
|
||||||
if (screen->managed()) {
|
if (screen->managed()) {
|
||||||
_screens.push_back(screen);
|
_screens.push_back(screen);
|
||||||
// XXX: "change to" the first workspace on the screen to initialize stuff
|
// XXX: "change to" the first workspace on the screen to initialize stuff
|
||||||
|
@ -173,21 +146,16 @@ Openbox::Openbox(int argc, char **argv)
|
||||||
::exit(1);
|
::exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// start up python and run the user's startup script
|
// run all of the python scripts, including the user's
|
||||||
Py_SetProgramName(argv[0]);
|
python_exec(SCRIPTDIR"/globals.py"); // create/set global vars
|
||||||
Py_Initialize();
|
python_exec(SCRIPTDIR"/clientmotion.py"); // moving and resizing clients
|
||||||
init_otk();
|
python_exec(SCRIPTDIR"/clicks.py"); // titlebar/root clicks and dblclicks
|
||||||
init_openbox();
|
python_exec(_scriptfilepath.c_str());
|
||||||
PyRun_SimpleString("from _otk import *; from _openbox import *;");
|
|
||||||
|
|
||||||
runPython(SCRIPTDIR"/globals.py"); // create/set global vars
|
|
||||||
runPython(SCRIPTDIR"/clientmotion.py"); // moving and resizing clients
|
|
||||||
runPython(SCRIPTDIR"/clicks.py"); // titlebar/root clicks and dblclicks
|
|
||||||
runPython(_scriptfilepath.c_str());
|
|
||||||
|
|
||||||
ScreenList::iterator it, end = _screens.end();
|
ScreenList::iterator it, end = _screens.end();
|
||||||
for (it = _screens.begin(); it != end; ++it)
|
for (it = _screens.begin(); it != end; ++it) {
|
||||||
(*it)->manageExisting();
|
(*it)->manageExisting();
|
||||||
|
}
|
||||||
|
|
||||||
// grab any keys set up before the screens existed
|
// grab any keys set up before the screens existed
|
||||||
_bindings->grabKeys(true);
|
_bindings->grabKeys(true);
|
||||||
|
@ -357,5 +325,10 @@ void Openbox::setFocusedClient(OBClient *c)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Openbox::getConfigString(const char *name, std::string *value) {
|
||||||
|
return python_get_string(name, value);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -137,9 +137,6 @@ private:
|
||||||
//! When set to true, the Openbox::eventLoop function will stop and return
|
//! When set to true, the Openbox::eventLoop function will stop and return
|
||||||
bool _doshutdown;
|
bool _doshutdown;
|
||||||
|
|
||||||
//! The configuration of the application. TEMPORARY
|
|
||||||
otk::Configuration _config;
|
|
||||||
|
|
||||||
//! The client with input focus
|
//! The client with input focus
|
||||||
/*!
|
/*!
|
||||||
Updated by the clients themselves.
|
Updated by the clients themselves.
|
||||||
|
@ -244,6 +241,8 @@ public:
|
||||||
manager can be destroyed.
|
manager can be destroyed.
|
||||||
*/
|
*/
|
||||||
inline void shutdown() { _doshutdown = true; }
|
inline void shutdown() { _doshutdown = true; }
|
||||||
|
|
||||||
|
bool getConfigString(const char *name, std::string *value);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -656,20 +656,20 @@ SWIG_InstallConstants(PyObject *d, swig_const_info constants[]) {
|
||||||
#define SWIGTYPE_p_otk__Strut swig_types[8]
|
#define SWIGTYPE_p_otk__Strut swig_types[8]
|
||||||
#define SWIGTYPE_p_XShapeEvent swig_types[9]
|
#define SWIGTYPE_p_XShapeEvent swig_types[9]
|
||||||
#define SWIGTYPE_p_XConfigureRequestEvent swig_types[10]
|
#define SWIGTYPE_p_XConfigureRequestEvent swig_types[10]
|
||||||
#define SWIGTYPE_p_otk__OtkEventHandler swig_types[11]
|
#define SWIGTYPE_p_std__string swig_types[11]
|
||||||
#define SWIGTYPE_p_otk__Rect swig_types[12]
|
#define SWIGTYPE_p_otk__OtkEventHandler swig_types[12]
|
||||||
#define SWIGTYPE_p_ob__OBWidget swig_types[13]
|
#define SWIGTYPE_p_otk__Rect swig_types[13]
|
||||||
#define SWIGTYPE_p_XFocusChangeEvent swig_types[14]
|
#define SWIGTYPE_p_ob__OBWidget swig_types[14]
|
||||||
#define SWIGTYPE_p_XClientMessageEvent swig_types[15]
|
#define SWIGTYPE_p_XFocusChangeEvent swig_types[15]
|
||||||
#define SWIGTYPE_p_otk__OBProperty swig_types[16]
|
#define SWIGTYPE_p_XClientMessageEvent swig_types[16]
|
||||||
#define SWIGTYPE_p_otk__OtkEventDispatcher swig_types[17]
|
#define SWIGTYPE_p_otk__OBProperty swig_types[17]
|
||||||
#define SWIGTYPE_p_XPropertyEvent swig_types[18]
|
#define SWIGTYPE_p_otk__OtkEventDispatcher swig_types[18]
|
||||||
#define SWIGTYPE_p_XDestroyWindowEvent swig_types[19]
|
#define SWIGTYPE_p_XPropertyEvent swig_types[19]
|
||||||
#define SWIGTYPE_p_otk__BImageControl swig_types[20]
|
#define SWIGTYPE_p_XDestroyWindowEvent swig_types[20]
|
||||||
#define SWIGTYPE_p_PyObject swig_types[21]
|
#define SWIGTYPE_p_otk__BImageControl swig_types[21]
|
||||||
#define SWIGTYPE_p_ob__OBBindings swig_types[22]
|
#define SWIGTYPE_p_PyObject swig_types[22]
|
||||||
#define SWIGTYPE_p_ob__MwmHints swig_types[23]
|
#define SWIGTYPE_p_ob__OBBindings swig_types[23]
|
||||||
#define SWIGTYPE_p_otk__Configuration swig_types[24]
|
#define SWIGTYPE_p_ob__MwmHints swig_types[24]
|
||||||
#define SWIGTYPE_p_XUnmapEvent swig_types[25]
|
#define SWIGTYPE_p_XUnmapEvent swig_types[25]
|
||||||
static swig_type_info *swig_types[27];
|
static swig_type_info *swig_types[27];
|
||||||
|
|
||||||
|
@ -1319,6 +1319,27 @@ static PyObject *_wrap_Openbox_shutdown(PyObject *self, PyObject *args) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static PyObject *_wrap_Openbox_getConfigString(PyObject *self, PyObject *args) {
|
||||||
|
PyObject *resultobj;
|
||||||
|
ob::Openbox *arg1 = (ob::Openbox *) 0 ;
|
||||||
|
char *arg2 ;
|
||||||
|
std::string *arg3 = (std::string *) 0 ;
|
||||||
|
bool result;
|
||||||
|
PyObject * obj0 = 0 ;
|
||||||
|
PyObject * obj2 = 0 ;
|
||||||
|
|
||||||
|
if(!PyArg_ParseTuple(args,(char *)"OsO:Openbox_getConfigString",&obj0,&arg2,&obj2)) goto fail;
|
||||||
|
if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_ob__Openbox,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
|
||||||
|
if ((SWIG_ConvertPtr(obj2,(void **) &arg3, SWIGTYPE_p_std__string,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
|
||||||
|
result = (bool)(arg1)->getConfigString((char const *)arg2,arg3);
|
||||||
|
|
||||||
|
resultobj = PyInt_FromLong((long)result);
|
||||||
|
return resultobj;
|
||||||
|
fail:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static PyObject * Openbox_swigregister(PyObject *self, PyObject *args) {
|
static PyObject * Openbox_swigregister(PyObject *self, PyObject *args) {
|
||||||
PyObject *obj;
|
PyObject *obj;
|
||||||
if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
|
if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
|
||||||
|
@ -1487,28 +1508,6 @@ static PyObject *_wrap_OBScreen_removeStrut(PyObject *self, PyObject *args) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static PyObject *_wrap_OBScreen_loadStyle(PyObject *self, PyObject *args) {
|
|
||||||
PyObject *resultobj;
|
|
||||||
ob::OBScreen *arg1 = (ob::OBScreen *) 0 ;
|
|
||||||
otk::Configuration *arg2 = 0 ;
|
|
||||||
PyObject * obj0 = 0 ;
|
|
||||||
PyObject * obj1 = 0 ;
|
|
||||||
|
|
||||||
if(!PyArg_ParseTuple(args,(char *)"OO:OBScreen_loadStyle",&obj0,&obj1)) goto fail;
|
|
||||||
if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_ob__OBScreen,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
|
|
||||||
if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_otk__Configuration,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
|
|
||||||
if (arg2 == NULL) {
|
|
||||||
PyErr_SetString(PyExc_TypeError,"null reference"); SWIG_fail;
|
|
||||||
}
|
|
||||||
(arg1)->loadStyle((otk::Configuration const &)*arg2);
|
|
||||||
|
|
||||||
Py_INCREF(Py_None); resultobj = Py_None;
|
|
||||||
return resultobj;
|
|
||||||
fail:
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static PyObject *_wrap_OBScreen_manageExisting(PyObject *self, PyObject *args) {
|
static PyObject *_wrap_OBScreen_manageExisting(PyObject *self, PyObject *args) {
|
||||||
PyObject *resultobj;
|
PyObject *resultobj;
|
||||||
ob::OBScreen *arg1 = (ob::OBScreen *) 0 ;
|
ob::OBScreen *arg1 = (ob::OBScreen *) 0 ;
|
||||||
|
@ -2501,6 +2500,53 @@ static PyObject * OBClient_swigregister(PyObject *self, PyObject *args) {
|
||||||
Py_INCREF(obj);
|
Py_INCREF(obj);
|
||||||
return Py_BuildValue((char *)"");
|
return Py_BuildValue((char *)"");
|
||||||
}
|
}
|
||||||
|
static PyObject *_wrap_python_init(PyObject *self, PyObject *args) {
|
||||||
|
PyObject *resultobj;
|
||||||
|
char *arg1 ;
|
||||||
|
|
||||||
|
if(!PyArg_ParseTuple(args,(char *)"s:python_init",&arg1)) goto fail;
|
||||||
|
ob::python_init(arg1);
|
||||||
|
|
||||||
|
Py_INCREF(Py_None); resultobj = Py_None;
|
||||||
|
return resultobj;
|
||||||
|
fail:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static PyObject *_wrap_python_exec(PyObject *self, PyObject *args) {
|
||||||
|
PyObject *resultobj;
|
||||||
|
char *arg1 ;
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
if(!PyArg_ParseTuple(args,(char *)"s:python_exec",&arg1)) goto fail;
|
||||||
|
result = (bool)ob::python_exec((char const *)arg1);
|
||||||
|
|
||||||
|
resultobj = PyInt_FromLong((long)result);
|
||||||
|
return resultobj;
|
||||||
|
fail:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static PyObject *_wrap_python_get_string(PyObject *self, PyObject *args) {
|
||||||
|
PyObject *resultobj;
|
||||||
|
char *arg1 ;
|
||||||
|
std::string *arg2 = (std::string *) 0 ;
|
||||||
|
bool result;
|
||||||
|
PyObject * obj1 = 0 ;
|
||||||
|
|
||||||
|
if(!PyArg_ParseTuple(args,(char *)"sO:python_get_string",&arg1,&obj1)) goto fail;
|
||||||
|
if ((SWIG_ConvertPtr(obj1,(void **) &arg2, SWIGTYPE_p_std__string,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail;
|
||||||
|
result = (bool)ob::python_get_string((char const *)arg1,arg2);
|
||||||
|
|
||||||
|
resultobj = PyInt_FromLong((long)result);
|
||||||
|
return resultobj;
|
||||||
|
fail:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static PyObject *_wrap_register(PyObject *self, PyObject *args) {
|
static PyObject *_wrap_register(PyObject *self, PyObject *args) {
|
||||||
PyObject *resultobj;
|
PyObject *resultobj;
|
||||||
int arg1 ;
|
int arg1 ;
|
||||||
|
@ -2703,6 +2749,7 @@ static PyMethodDef SwigMethods[] = {
|
||||||
{ (char *)"Openbox_setFocusedClient", _wrap_Openbox_setFocusedClient, METH_VARARGS },
|
{ (char *)"Openbox_setFocusedClient", _wrap_Openbox_setFocusedClient, METH_VARARGS },
|
||||||
{ (char *)"Openbox_focusedScreen", _wrap_Openbox_focusedScreen, METH_VARARGS },
|
{ (char *)"Openbox_focusedScreen", _wrap_Openbox_focusedScreen, METH_VARARGS },
|
||||||
{ (char *)"Openbox_shutdown", _wrap_Openbox_shutdown, METH_VARARGS },
|
{ (char *)"Openbox_shutdown", _wrap_Openbox_shutdown, METH_VARARGS },
|
||||||
|
{ (char *)"Openbox_getConfigString", _wrap_Openbox_getConfigString, METH_VARARGS },
|
||||||
{ (char *)"Openbox_swigregister", Openbox_swigregister, METH_VARARGS },
|
{ (char *)"Openbox_swigregister", Openbox_swigregister, METH_VARARGS },
|
||||||
{ (char *)"OBScreen_client", _wrap_OBScreen_client, METH_VARARGS },
|
{ (char *)"OBScreen_client", _wrap_OBScreen_client, METH_VARARGS },
|
||||||
{ (char *)"OBScreen_clientCount", _wrap_OBScreen_clientCount, METH_VARARGS },
|
{ (char *)"OBScreen_clientCount", _wrap_OBScreen_clientCount, METH_VARARGS },
|
||||||
|
@ -2713,7 +2760,6 @@ static PyMethodDef SwigMethods[] = {
|
||||||
{ (char *)"OBScreen_focuswindow", _wrap_OBScreen_focuswindow, METH_VARARGS },
|
{ (char *)"OBScreen_focuswindow", _wrap_OBScreen_focuswindow, METH_VARARGS },
|
||||||
{ (char *)"OBScreen_addStrut", _wrap_OBScreen_addStrut, METH_VARARGS },
|
{ (char *)"OBScreen_addStrut", _wrap_OBScreen_addStrut, METH_VARARGS },
|
||||||
{ (char *)"OBScreen_removeStrut", _wrap_OBScreen_removeStrut, METH_VARARGS },
|
{ (char *)"OBScreen_removeStrut", _wrap_OBScreen_removeStrut, METH_VARARGS },
|
||||||
{ (char *)"OBScreen_loadStyle", _wrap_OBScreen_loadStyle, METH_VARARGS },
|
|
||||||
{ (char *)"OBScreen_manageExisting", _wrap_OBScreen_manageExisting, METH_VARARGS },
|
{ (char *)"OBScreen_manageExisting", _wrap_OBScreen_manageExisting, METH_VARARGS },
|
||||||
{ (char *)"OBScreen_manageWindow", _wrap_OBScreen_manageWindow, METH_VARARGS },
|
{ (char *)"OBScreen_manageWindow", _wrap_OBScreen_manageWindow, METH_VARARGS },
|
||||||
{ (char *)"OBScreen_unmanageWindow", _wrap_OBScreen_unmanageWindow, METH_VARARGS },
|
{ (char *)"OBScreen_unmanageWindow", _wrap_OBScreen_unmanageWindow, METH_VARARGS },
|
||||||
|
@ -2769,6 +2815,9 @@ static PyMethodDef SwigMethods[] = {
|
||||||
{ (char *)"OBClient_destroyHandler", _wrap_OBClient_destroyHandler, METH_VARARGS },
|
{ (char *)"OBClient_destroyHandler", _wrap_OBClient_destroyHandler, METH_VARARGS },
|
||||||
{ (char *)"OBClient_reparentHandler", _wrap_OBClient_reparentHandler, METH_VARARGS },
|
{ (char *)"OBClient_reparentHandler", _wrap_OBClient_reparentHandler, METH_VARARGS },
|
||||||
{ (char *)"OBClient_swigregister", OBClient_swigregister, METH_VARARGS },
|
{ (char *)"OBClient_swigregister", OBClient_swigregister, METH_VARARGS },
|
||||||
|
{ (char *)"python_init", _wrap_python_init, METH_VARARGS },
|
||||||
|
{ (char *)"python_exec", _wrap_python_exec, METH_VARARGS },
|
||||||
|
{ (char *)"python_get_string", _wrap_python_get_string, METH_VARARGS },
|
||||||
{ (char *)"register", _wrap_register, METH_VARARGS },
|
{ (char *)"register", _wrap_register, METH_VARARGS },
|
||||||
{ (char *)"preregister", _wrap_preregister, METH_VARARGS },
|
{ (char *)"preregister", _wrap_preregister, METH_VARARGS },
|
||||||
{ (char *)"unregister", _wrap_unregister, METH_VARARGS },
|
{ (char *)"unregister", _wrap_unregister, METH_VARARGS },
|
||||||
|
@ -2807,6 +2856,7 @@ static swig_type_info _swigt__p_ob__Openbox[] = {{"_p_ob__Openbox", 0, "ob::Open
|
||||||
static swig_type_info _swigt__p_otk__Strut[] = {{"_p_otk__Strut", 0, "otk::Strut *", 0},{"_p_otk__Strut"},{0}};
|
static swig_type_info _swigt__p_otk__Strut[] = {{"_p_otk__Strut", 0, "otk::Strut *", 0},{"_p_otk__Strut"},{0}};
|
||||||
static swig_type_info _swigt__p_XShapeEvent[] = {{"_p_XShapeEvent", 0, "XShapeEvent *", 0},{"_p_XShapeEvent"},{0}};
|
static swig_type_info _swigt__p_XShapeEvent[] = {{"_p_XShapeEvent", 0, "XShapeEvent *", 0},{"_p_XShapeEvent"},{0}};
|
||||||
static swig_type_info _swigt__p_XConfigureRequestEvent[] = {{"_p_XConfigureRequestEvent", 0, "XConfigureRequestEvent *", 0},{"_p_XConfigureRequestEvent"},{0}};
|
static swig_type_info _swigt__p_XConfigureRequestEvent[] = {{"_p_XConfigureRequestEvent", 0, "XConfigureRequestEvent *", 0},{"_p_XConfigureRequestEvent"},{0}};
|
||||||
|
static swig_type_info _swigt__p_std__string[] = {{"_p_std__string", 0, "std::string *", 0},{"_p_std__string"},{0}};
|
||||||
static swig_type_info _swigt__p_otk__OtkEventHandler[] = {{"_p_otk__OtkEventHandler", 0, "otk::OtkEventHandler *", 0},{"_p_otk__OtkEventHandler"},{"_p_ob__Openbox", _p_ob__OpenboxTo_p_otk__OtkEventHandler},{"_p_ob__OBClient", _p_ob__OBClientTo_p_otk__OtkEventHandler},{0}};
|
static swig_type_info _swigt__p_otk__OtkEventHandler[] = {{"_p_otk__OtkEventHandler", 0, "otk::OtkEventHandler *", 0},{"_p_otk__OtkEventHandler"},{"_p_ob__Openbox", _p_ob__OpenboxTo_p_otk__OtkEventHandler},{"_p_ob__OBClient", _p_ob__OBClientTo_p_otk__OtkEventHandler},{0}};
|
||||||
static swig_type_info _swigt__p_otk__Rect[] = {{"_p_otk__Rect", 0, "otk::Rect *", 0},{"_p_otk__Rect"},{0}};
|
static swig_type_info _swigt__p_otk__Rect[] = {{"_p_otk__Rect", 0, "otk::Rect *", 0},{"_p_otk__Rect"},{0}};
|
||||||
static swig_type_info _swigt__p_ob__OBWidget[] = {{"_p_ob__OBWidget", 0, "ob::OBWidget *", 0},{"_p_ob__OBWidget"},{"_p_ob__OBClient", _p_ob__OBClientTo_p_ob__OBWidget},{0}};
|
static swig_type_info _swigt__p_ob__OBWidget[] = {{"_p_ob__OBWidget", 0, "ob::OBWidget *", 0},{"_p_ob__OBWidget"},{"_p_ob__OBClient", _p_ob__OBClientTo_p_ob__OBWidget},{0}};
|
||||||
|
@ -2820,7 +2870,6 @@ static swig_type_info _swigt__p_otk__BImageControl[] = {{"_p_otk__BImageControl"
|
||||||
static swig_type_info _swigt__p_PyObject[] = {{"_p_PyObject", 0, "PyObject *", 0},{"_p_PyObject"},{0}};
|
static swig_type_info _swigt__p_PyObject[] = {{"_p_PyObject", 0, "PyObject *", 0},{"_p_PyObject"},{0}};
|
||||||
static swig_type_info _swigt__p_ob__OBBindings[] = {{"_p_ob__OBBindings", 0, "ob::OBBindings *", 0},{"_p_ob__OBBindings"},{0}};
|
static swig_type_info _swigt__p_ob__OBBindings[] = {{"_p_ob__OBBindings", 0, "ob::OBBindings *", 0},{"_p_ob__OBBindings"},{0}};
|
||||||
static swig_type_info _swigt__p_ob__MwmHints[] = {{"_p_ob__MwmHints", 0, "ob::MwmHints *", 0},{"_p_ob__MwmHints"},{0}};
|
static swig_type_info _swigt__p_ob__MwmHints[] = {{"_p_ob__MwmHints", 0, "ob::MwmHints *", 0},{"_p_ob__MwmHints"},{0}};
|
||||||
static swig_type_info _swigt__p_otk__Configuration[] = {{"_p_otk__Configuration", 0, "otk::Configuration *", 0},{"_p_otk__Configuration"},{0}};
|
|
||||||
static swig_type_info _swigt__p_XUnmapEvent[] = {{"_p_XUnmapEvent", 0, "XUnmapEvent *", 0},{"_p_XUnmapEvent"},{0}};
|
static swig_type_info _swigt__p_XUnmapEvent[] = {{"_p_XUnmapEvent", 0, "XUnmapEvent *", 0},{"_p_XUnmapEvent"},{0}};
|
||||||
|
|
||||||
static swig_type_info *swig_types_initial[] = {
|
static swig_type_info *swig_types_initial[] = {
|
||||||
|
@ -2835,6 +2884,7 @@ _swigt__p_ob__Openbox,
|
||||||
_swigt__p_otk__Strut,
|
_swigt__p_otk__Strut,
|
||||||
_swigt__p_XShapeEvent,
|
_swigt__p_XShapeEvent,
|
||||||
_swigt__p_XConfigureRequestEvent,
|
_swigt__p_XConfigureRequestEvent,
|
||||||
|
_swigt__p_std__string,
|
||||||
_swigt__p_otk__OtkEventHandler,
|
_swigt__p_otk__OtkEventHandler,
|
||||||
_swigt__p_otk__Rect,
|
_swigt__p_otk__Rect,
|
||||||
_swigt__p_ob__OBWidget,
|
_swigt__p_ob__OBWidget,
|
||||||
|
@ -2848,7 +2898,6 @@ _swigt__p_otk__BImageControl,
|
||||||
_swigt__p_PyObject,
|
_swigt__p_PyObject,
|
||||||
_swigt__p_ob__OBBindings,
|
_swigt__p_ob__OBBindings,
|
||||||
_swigt__p_ob__MwmHints,
|
_swigt__p_ob__MwmHints,
|
||||||
_swigt__p_otk__Configuration,
|
|
||||||
_swigt__p_XUnmapEvent,
|
_swigt__p_XUnmapEvent,
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,6 +7,15 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include <Python.h>
|
||||||
|
|
||||||
|
// The initializer in openbox_wrap.cc
|
||||||
|
extern void init_openbox(void);
|
||||||
|
// The initializer in otk_wrap.cc
|
||||||
|
extern void init_otk(void);
|
||||||
|
}
|
||||||
|
|
||||||
namespace ob {
|
namespace ob {
|
||||||
|
|
||||||
typedef std::vector<PyObject*> FunctionList;
|
typedef std::vector<PyObject*> FunctionList;
|
||||||
|
@ -14,6 +23,42 @@ typedef std::vector<PyObject*> FunctionList;
|
||||||
static FunctionList callbacks[OBActions::NUM_ACTIONS];
|
static FunctionList callbacks[OBActions::NUM_ACTIONS];
|
||||||
static FunctionList bindfuncs;
|
static FunctionList bindfuncs;
|
||||||
|
|
||||||
|
static PyObject *obdict;
|
||||||
|
|
||||||
|
void python_init(char *argv0)
|
||||||
|
{
|
||||||
|
Py_SetProgramName(argv0);
|
||||||
|
Py_Initialize();
|
||||||
|
init_otk();
|
||||||
|
init_openbox();
|
||||||
|
PyRun_SimpleString("from _otk import *; from _openbox import *;");
|
||||||
|
|
||||||
|
// set up access to the python global variables
|
||||||
|
PyObject *obmodule = PyImport_AddModule("__main__");
|
||||||
|
obdict = PyModule_GetDict(obmodule);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool python_exec(const char *file) {
|
||||||
|
FILE *rcpyfd = fopen(file, "r");
|
||||||
|
if (!rcpyfd) {
|
||||||
|
printf("failed to load python file %s\n", file);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
PyRun_SimpleFile(rcpyfd, const_cast<char*>(file));
|
||||||
|
fclose(rcpyfd);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool python_get_string(const char *name, std::string *value)
|
||||||
|
{
|
||||||
|
PyObject *val = PyDict_GetItemString(obdict, const_cast<char*>(name));
|
||||||
|
if (!val) return false;
|
||||||
|
|
||||||
|
*value = PyString_AsString(val);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool python_register(int action, PyObject *callback)
|
bool python_register(int action, PyObject *callback)
|
||||||
{
|
{
|
||||||
if (action < 0 || action >= OBActions::NUM_ACTIONS ||
|
if (action < 0 || action >= OBActions::NUM_ACTIONS ||
|
||||||
|
|
|
@ -14,8 +14,14 @@ extern "C" {
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
namespace ob {
|
namespace ob {
|
||||||
|
|
||||||
|
void python_init(char *argv0);
|
||||||
|
bool python_exec(const char *file);
|
||||||
|
bool python_get_string(const char *name, std::string *value);
|
||||||
|
|
||||||
//! Add a python callback funtion to the back of the hook list
|
//! Add a python callback funtion to the back of the hook list
|
||||||
/*!
|
/*!
|
||||||
Registering functions for KeyPress events is pointless. Use python_bind
|
Registering functions for KeyPress events is pointless. Use python_bind
|
||||||
|
|
|
@ -37,7 +37,7 @@ static int anotherWMRunning(Display *display, XErrorEvent *) {
|
||||||
namespace ob {
|
namespace ob {
|
||||||
|
|
||||||
|
|
||||||
OBScreen::OBScreen(int screen, const otk::Configuration &config)
|
OBScreen::OBScreen(int screen)
|
||||||
: _number(screen),
|
: _number(screen),
|
||||||
_root(screen)
|
_root(screen)
|
||||||
{
|
{
|
||||||
|
@ -74,8 +74,18 @@ OBScreen::OBScreen(int screen, const otk::Configuration &config)
|
||||||
|
|
||||||
// initialize the screen's style
|
// initialize the screen's style
|
||||||
_style.setImageControl(_image_control);
|
_style.setImageControl(_image_control);
|
||||||
_style.load(config);
|
std::string stylepath;
|
||||||
|
Openbox::instance->getConfigString("theme", &stylepath);
|
||||||
|
otk::Configuration sconfig(false);
|
||||||
|
sconfig.setFile(otk::expandTilde(stylepath));
|
||||||
|
if (!sconfig.load()) {
|
||||||
|
sconfig.setFile(otk::expandTilde(DEFAULTSTYLE));
|
||||||
|
if (!sconfig.load()) {
|
||||||
|
printf(_("Unable to load default style: %s. Aborting.\n"), DEFAULTSTYLE);
|
||||||
|
::exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_style.load(sconfig);
|
||||||
|
|
||||||
// Set the netwm atoms for geomtery and viewport
|
// Set the netwm atoms for geomtery and viewport
|
||||||
unsigned long geometry[] = { _info->width(),
|
unsigned long geometry[] = { _info->width(),
|
||||||
|
@ -323,14 +333,6 @@ void OBScreen::setWorkArea() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void OBScreen::loadStyle(const otk::Configuration &config)
|
|
||||||
{
|
|
||||||
_style.load(config);
|
|
||||||
|
|
||||||
// XXX: make stuff redraw!
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void OBScreen::manageWindow(Window window)
|
void OBScreen::manageWindow(Window window)
|
||||||
{
|
{
|
||||||
OBClient *client = 0;
|
OBClient *client = 0;
|
||||||
|
|
|
@ -100,7 +100,7 @@ private:
|
||||||
public:
|
public:
|
||||||
#ifndef SWIG
|
#ifndef SWIG
|
||||||
//! Constructs a new OBScreen object
|
//! Constructs a new OBScreen object
|
||||||
OBScreen(int screen, const otk::Configuration &config);
|
OBScreen(int screen);
|
||||||
//! Destroys the OBScreen object
|
//! Destroys the OBScreen object
|
||||||
virtual ~OBScreen();
|
virtual ~OBScreen();
|
||||||
#endif
|
#endif
|
||||||
|
@ -125,9 +125,6 @@ public:
|
||||||
//! Removes a window's strut from the screen's list of reserved spaces
|
//! Removes a window's strut from the screen's list of reserved spaces
|
||||||
void removeStrut(otk::Strut *strut);
|
void removeStrut(otk::Strut *strut);
|
||||||
|
|
||||||
//! Loads a new style on the screen
|
|
||||||
void loadStyle(const otk::Configuration &config);
|
|
||||||
|
|
||||||
//! Manage any pre-existing windows on the screen
|
//! Manage any pre-existing windows on the screen
|
||||||
void manageExisting();
|
void manageExisting();
|
||||||
//! Manage a client window
|
//! Manage a client window
|
||||||
|
|
Loading…
Reference in a new issue