new python interface! using the .py shadow wrappers from swig
This commit is contained in:
parent
0d00827947
commit
b67f5e702e
7 changed files with 1910 additions and 618 deletions
|
@ -4,123 +4,101 @@
|
||||||
|
|
||||||
def state_above(data, add=2):
|
def state_above(data, add=2):
|
||||||
"""Toggles, adds or removes the 'above' state on a window."""
|
"""Toggles, adds or removes the 'above' state on a window."""
|
||||||
client = Openbox_findClient(openbox, data.window())
|
if not data.client: return
|
||||||
if not client: return
|
send_client_msg(OBDisplay_screenInfo(data.screen).rootWindow(),
|
||||||
root = ScreenInfo_rootWindow(OBDisplay_screenInfo(data.screen()))
|
OBProperty.net_wm_state, data.client.window(), add,
|
||||||
window = OBClient_window(client)
|
openbox.property().atom(OBProperty.net_wm_state_above))
|
||||||
above = OBProperty_atom(Openbox_property(openbox),
|
|
||||||
OBProperty_net_wm_state_above)
|
|
||||||
send_client_msg(root, OBProperty_net_wm_state, window, add,
|
|
||||||
above)
|
|
||||||
|
|
||||||
def state_below(data, add=2):
|
def state_below(data, add=2):
|
||||||
"""Toggles, adds or removes the 'below' state on a window."""
|
"""Toggles, adds or removes the 'below' state on a window."""
|
||||||
client = Openbox_findClient(openbox, data.window())
|
if not data.client: return
|
||||||
if not client: return
|
send_client_msg(OBDisplay_screenInfo(data.screen).rootWindow(),
|
||||||
root = ScreenInfo_rootWindow(OBDisplay_screenInfo(data.screen()))
|
OBProperty.net_wm_state, data.client.window(), add,
|
||||||
window = OBClient_window(client)
|
openbox.property().atom(OBProperty.net_wm_state_below))
|
||||||
below = OBProperty_atom(Openbox_property(openbox),
|
|
||||||
OBProperty_net_wm_state_below)
|
|
||||||
send_client_msg(root, OBProperty_net_wm_state, window, add,
|
|
||||||
below)
|
|
||||||
|
|
||||||
def state_shaded(data, add=2):
|
def state_shaded(data, add=2):
|
||||||
"""Toggles, adds or removes the 'shaded' state on a window."""
|
"""Toggles, adds or removes the 'shaded' state on a window."""
|
||||||
client = Openbox_findClient(openbox, data.window())
|
if not data.client: return
|
||||||
if not client: return
|
send_client_msg(OBDisplay_screenInfo(data.screen).rootWindow(),
|
||||||
root = ScreenInfo_rootWindow(OBDisplay_screenInfo(data.screen()))
|
OBProperty.net_wm_state, data.client,window(), add,
|
||||||
window = OBClient_window(client)
|
openbox.property().atom(OBProperty.net_wm_state_shaded))
|
||||||
shaded = OBProperty_atom(Openbox_property(openbox),
|
|
||||||
OBProperty_net_wm_state_shaded)
|
|
||||||
send_client_msg(root, OBProperty_net_wm_state, window, add,
|
|
||||||
shaded)
|
|
||||||
|
|
||||||
def close(data):
|
def close(data):
|
||||||
"""Closes the window on which the event occured"""
|
"""Closes the window on which the event occured"""
|
||||||
client = Openbox_findClient(openbox, data.window())
|
if not data.client: return
|
||||||
if not client: return
|
send_client_msg(OBDisplay_screenInfo(data.screen).rootWindow(),
|
||||||
root = ScreenInfo_rootWindow(OBDisplay_screenInfo(data.screen()))
|
OBProperty.net_close_window, data.client.window(), 0)
|
||||||
window = OBClient_window(client)
|
|
||||||
send_client_msg(root, OBProperty_net_close_window, window, 0)
|
|
||||||
|
|
||||||
def focus(data):
|
def focus(data):
|
||||||
"""Focuses the window on which the event occured"""
|
"""Focuses the window on which the event occured"""
|
||||||
client = Openbox_findClient(openbox, data.window())
|
if not data.client: return
|
||||||
if not client: return
|
|
||||||
type = OBClient_type(client)
|
|
||||||
# !normal windows dont get focus from window enter events
|
# !normal windows dont get focus from window enter events
|
||||||
if data.action() == EventEnterWindow and not OBClient_normal(client):
|
if data.action == EventEnterWindow and not data.client.normal():
|
||||||
return
|
return
|
||||||
OBClient_focus(client)
|
data.client.focus()
|
||||||
|
|
||||||
def move(data):
|
def move(data):
|
||||||
"""Moves the window interactively. This should only be used with
|
"""Moves the window interactively. This should only be used with
|
||||||
MouseMotion events"""
|
MouseMotion events"""
|
||||||
client = Openbox_findClient(openbox, data.window())
|
if not data.client: return
|
||||||
if not client: return
|
|
||||||
|
|
||||||
# !normal windows dont get moved
|
# !normal windows dont get moved
|
||||||
if not OBClient_normal(client): return
|
if not data.client.normal(): return
|
||||||
|
|
||||||
dx = data.xroot() - data.pressx()
|
dx = data.xroot - data.pressx
|
||||||
dy = data.yroot() - data.pressy()
|
dy = data.yroot - data.pressy
|
||||||
OBClient_move(client, data.press_clientx() + dx, data.press_clienty() + dy)
|
data.client.move(data.press_clientx + dx, data.press_clienty + dy)
|
||||||
|
|
||||||
def resize(data):
|
def resize(data):
|
||||||
"""Resizes the window interactively. This should only be used with
|
"""Resizes the window interactively. This should only be used with
|
||||||
MouseMotion events"""
|
MouseMotion events"""
|
||||||
client = Openbox_findClient(openbox, data.window())
|
if not data.client: return
|
||||||
if not client: return
|
|
||||||
|
|
||||||
# !normal windows dont get moved
|
# !normal windows dont get moved
|
||||||
if not OBClient_normal(client): return
|
if not data.client.normal(): return
|
||||||
|
|
||||||
px = data.pressx()
|
px = data.pressx
|
||||||
py = data.pressy()
|
py = data.pressy
|
||||||
dx = data.xroot() - px
|
dx = data.xroot - px
|
||||||
dy = data.yroot() - py
|
dy = data.yroot - py
|
||||||
|
|
||||||
# pick a corner to anchor
|
# pick a corner to anchor
|
||||||
if not (resize_nearest or data.context() == MC_Grip):
|
if not (resize_nearest or data.context == MC_Grip):
|
||||||
corner = OBClient_TopLeft
|
corner = OBClient.TopLeft
|
||||||
else:
|
else:
|
||||||
x = px - data.press_clientx()
|
x = px - data.press_clientx
|
||||||
y = py - data.press_clienty()
|
y = py - data.press_clienty
|
||||||
if y < data.press_clientheight() / 2:
|
if y < data.press_clientheight / 2:
|
||||||
if x < data.press_clientwidth() / 2:
|
if x < data.press_clientwidth / 2:
|
||||||
corner = OBClient_BottomRight
|
corner = OBClient.BottomRight
|
||||||
dx *= -1
|
dx *= -1
|
||||||
else:
|
else:
|
||||||
corner = OBClient_BottomLeft
|
corner = OBClient.BottomLeft
|
||||||
dy *= -1
|
dy *= -1
|
||||||
else:
|
else:
|
||||||
if x < data.press_clientwidth() / 2:
|
if x < data.press_clientwidth / 2:
|
||||||
corner = OBClient_TopRight
|
corner = OBClient.TopRight
|
||||||
dx *= -1
|
dx *= -1
|
||||||
else:
|
else:
|
||||||
corner = OBClient_TopLeft
|
corner = OBClient.TopLeft
|
||||||
|
|
||||||
OBClient_resize(client, corner,
|
data.client.resize(corner,
|
||||||
data.press_clientwidth() + dx,
|
data.press_clientwidth + dx,
|
||||||
data.press_clientheight() + dy);
|
data.press_clientheight + dy);
|
||||||
|
|
||||||
def restart(data):
|
def restart(data):
|
||||||
"""Restarts openbox"""
|
"""Restarts openbox"""
|
||||||
Openbox_restart(openbox, "")
|
openbox.restart("")
|
||||||
|
|
||||||
def raise_win(data):
|
def raise_win(data):
|
||||||
"""Raises the window on which the event occured"""
|
"""Raises the window on which the event occured"""
|
||||||
client = Openbox_findClient(openbox, data.window())
|
if not data.client: return
|
||||||
if not client: return
|
openbox.screen(data.screen).restack(1, data.client)
|
||||||
screen = Openbox_screen(openbox, OBClient_screen(client))
|
|
||||||
OBScreen_restack(screen, 1, client)
|
|
||||||
|
|
||||||
def lower_win(data):
|
def lower_win(data):
|
||||||
"""Lowers the window on which the event occured"""
|
"""Lowers the window on which the event occured"""
|
||||||
client = Openbox_findClient(openbox, data.window())
|
if not data.client: return
|
||||||
if not client: return
|
openbox.screen(data.screen).restack(0, data.client)
|
||||||
screen = Openbox_screen(openbox, OBClient_screen(client))
|
|
||||||
OBScreen_restack(screen, 0, client)
|
|
||||||
|
|
||||||
def toggle_shade(data):
|
def toggle_shade(data):
|
||||||
"""Toggles the shade status of the window on which the event occured"""
|
"""Toggles the shade status of the window on which the event occured"""
|
||||||
|
@ -136,15 +114,15 @@ def unshade(data):
|
||||||
|
|
||||||
def change_desktop(data, num):
|
def change_desktop(data, num):
|
||||||
"""Switches to a specified desktop"""
|
"""Switches to a specified desktop"""
|
||||||
root = ScreenInfo_rootWindow(OBDisplay_screenInfo(data.screen()))
|
root = OBDisplay_screenInfo(data.screen).rootWindow()
|
||||||
send_client_msg(root, OBProperty_net_current_desktop, root, num)
|
send_client_msg(root, OBProperty.net_current_desktop, root, num)
|
||||||
|
|
||||||
def next_desktop(data, no_wrap=0):
|
def next_desktop(data, no_wrap=0):
|
||||||
"""Switches to the next desktop, optionally (by default) cycling around to
|
"""Switches to the next desktop, optionally (by default) cycling around to
|
||||||
the first when going past the last."""
|
the first when going past the last."""
|
||||||
screen = Openbox_screen(openbox, data.screen())
|
screen = openbox.screen(data.screen)
|
||||||
d = OBScreen_desktop(screen)
|
d = screen.desktop()
|
||||||
n = OBScreen_numDesktops(screen)
|
n = screen.numDesktops()
|
||||||
if (d < (n-1)):
|
if (d < (n-1)):
|
||||||
d = d + 1
|
d = d + 1
|
||||||
elif not no_wrap:
|
elif not no_wrap:
|
||||||
|
@ -154,9 +132,9 @@ def next_desktop(data, no_wrap=0):
|
||||||
def prev_desktop(data, no_wrap=0):
|
def prev_desktop(data, no_wrap=0):
|
||||||
"""Switches to the previous desktop, optionally (by default) cycling around
|
"""Switches to the previous desktop, optionally (by default) cycling around
|
||||||
to the last when going past the first."""
|
to the last when going past the first."""
|
||||||
screen = Openbox_screen(openbox, data.screen())
|
screen = openbox.screen(data.screen)
|
||||||
d = OBScreen_desktop(screen)
|
d = screen.desktop()
|
||||||
n = OBScreen_numDesktops(screen)
|
n = screen.numDesktops()
|
||||||
if (d > 0):
|
if (d > 0):
|
||||||
d = d - 1
|
d = d - 1
|
||||||
elif not no_wrap:
|
elif not no_wrap:
|
||||||
|
@ -165,21 +143,18 @@ def prev_desktop(data, no_wrap=0):
|
||||||
|
|
||||||
def send_to_desktop(data, num):
|
def send_to_desktop(data, num):
|
||||||
"""Sends a client to a specified desktop"""
|
"""Sends a client to a specified desktop"""
|
||||||
root = ScreenInfo_rootWindow(OBDisplay_screenInfo(data.screen()))
|
if not data.client: return
|
||||||
client = Openbox_findClient(openbox, data.window())
|
send_client_msg(OBDisplay_screenInfo(data.screen).rootWindow(),
|
||||||
if client:
|
OBProperty.net_wm_desktop, data.client.window(), num)
|
||||||
window = OBClient_window(client)
|
|
||||||
send_client_msg(root, OBProperty_net_wm_desktop, window, num)
|
|
||||||
|
|
||||||
def send_to_next_desktop(data, no_wrap=0, follow=1):
|
def send_to_next_desktop(data, no_wrap=0, follow=1):
|
||||||
"""Sends a window to the next desktop, optionally (by default) cycling
|
"""Sends a window to the next desktop, optionally (by default) cycling
|
||||||
around to the first when going past the last. Also optionally moving to
|
around to the first when going past the last. Also optionally moving to
|
||||||
the new desktop after sending the window."""
|
the new desktop after sending the window."""
|
||||||
client = Openbox_findClient(openbox, data.window())
|
if not data.client: return
|
||||||
if not client: return
|
screen = openbox.screen(data.screen)
|
||||||
screen = Openbox_screen(openbox, data.screen())
|
d = screen.desktop()
|
||||||
d = OBScreen_desktop(screen)
|
n = screen.numDesktops()
|
||||||
n = OBScreen_numDesktops(screen)
|
|
||||||
if (d < (n-1)):
|
if (d < (n-1)):
|
||||||
d = d + 1
|
d = d + 1
|
||||||
elif not no_wrap:
|
elif not no_wrap:
|
||||||
|
@ -192,11 +167,10 @@ def send_to_prev_desktop(data, no_wrap=0, follow=1):
|
||||||
"""Sends a window to the previous desktop, optionally (by default) cycling
|
"""Sends a window to the previous desktop, optionally (by default) cycling
|
||||||
around to the last when going past the first. Also optionally moving to
|
around to the last when going past the first. Also optionally moving to
|
||||||
the new desktop after sending the window."""
|
the new desktop after sending the window."""
|
||||||
client = Openbox_findClient(openbox, data.window())
|
if not data.client: return
|
||||||
if not client: return
|
screen = openbox.screen(data.screen)
|
||||||
screen = Openbox_screen(openbox, data.screen())
|
d = screen.desktop()
|
||||||
d = OBScreen_desktop(screen)
|
n = screen.numDesktops()
|
||||||
n = OBScreen_numDesktops(screen)
|
|
||||||
if (d > 0):
|
if (d > 0):
|
||||||
d = d - 1
|
d = d - 1
|
||||||
elif not no_wrap:
|
elif not no_wrap:
|
||||||
|
@ -213,6 +187,6 @@ def execute(bin, screen = 0):
|
||||||
"""Executes a command on the specified screen. It is recommended that you
|
"""Executes a command on the specified screen. It is recommended that you
|
||||||
use this call instead of a python system call. If the specified screen
|
use this call instead of a python system call. If the specified screen
|
||||||
is beyond your range of screens, the default is used instead."""
|
is beyond your range of screens, the default is used instead."""
|
||||||
Openbox_execute(openbox, screen, bin)
|
openbox.execute(screen, bin)
|
||||||
|
|
||||||
print "Loaded builtins.py"
|
print "Loaded builtins.py"
|
||||||
|
|
|
@ -81,8 +81,8 @@ void OBActions::buttonPressHandler(const XButtonEvent &e)
|
||||||
screen = c->screen();
|
screen = c->screen();
|
||||||
else
|
else
|
||||||
screen = otk::OBDisplay::findScreen(e.root)->screen();
|
screen = otk::OBDisplay::findScreen(e.root)->screen();
|
||||||
ButtonData data(screen, c, e.time, state, e.button, w->mcontext(),
|
MouseData data(screen, c, e.time, state, e.button, w->mcontext(),
|
||||||
MousePress);
|
MousePress);
|
||||||
Openbox::instance->bindings()->fireButton(&data);
|
Openbox::instance->bindings()->fireButton(&data);
|
||||||
|
|
||||||
if (_button) return; // won't count toward CLICK events
|
if (_button) return; // won't count toward CLICK events
|
||||||
|
@ -124,8 +124,8 @@ void OBActions::buttonReleaseHandler(const XButtonEvent &e)
|
||||||
screen = c->screen();
|
screen = c->screen();
|
||||||
else
|
else
|
||||||
screen = otk::OBDisplay::findScreen(e.root)->screen();
|
screen = otk::OBDisplay::findScreen(e.root)->screen();
|
||||||
ButtonData data(screen, c, e.time, state, e.button, w->mcontext(),
|
MouseData data(screen, c, e.time, state, e.button, w->mcontext(),
|
||||||
MouseClick);
|
MouseClick);
|
||||||
Openbox::instance->bindings()->fireButton(&data);
|
Openbox::instance->bindings()->fireButton(&data);
|
||||||
|
|
||||||
|
|
||||||
|
@ -234,9 +234,9 @@ void OBActions::motionHandler(const XMotionEvent &e)
|
||||||
screen = c->screen();
|
screen = c->screen();
|
||||||
else
|
else
|
||||||
screen = otk::OBDisplay::findScreen(e.root)->screen();
|
screen = otk::OBDisplay::findScreen(e.root)->screen();
|
||||||
MotionData data(screen, c, e.time, state, button, w->mcontext(), MouseMotion,
|
MouseData data(screen, c, e.time, state, button, w->mcontext(), MouseMotion,
|
||||||
x_root, y_root, _posqueue[0]->pos, _posqueue[0]->clientarea);
|
x_root, y_root, _posqueue[0]->pos, _posqueue[0]->clientarea);
|
||||||
Openbox::instance->bindings()->fireButton((ButtonData*)&data);
|
Openbox::instance->bindings()->fireButton(&data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OBActions::mapRequestHandler(const XMapRequestEvent &e)
|
void OBActions::mapRequestHandler(const XMapRequestEvent &e)
|
||||||
|
|
|
@ -390,6 +390,7 @@ void OBBindings::fireKey(int screen, unsigned int modifiers, unsigned int key,
|
||||||
OBClient *c = Openbox::instance->focusedClient();
|
OBClient *c = Openbox::instance->focusedClient();
|
||||||
KeyData data(screen, c, time, modifiers, key);
|
KeyData data(screen, c, time, modifiers, key);
|
||||||
CallbackList::iterator it, end = p->callbacks.end();
|
CallbackList::iterator it, end = p->callbacks.end();
|
||||||
|
printf("Firing key!\n");
|
||||||
for (it = p->callbacks.begin(); it != end; ++it)
|
for (it = p->callbacks.begin(); it != end; ++it)
|
||||||
python_callback(*it, &data);
|
python_callback(*it, &data);
|
||||||
resetChains(this);
|
resetChains(this);
|
||||||
|
@ -512,7 +513,7 @@ void OBBindings::grabButtons(bool grab, OBClient *client)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OBBindings::fireButton(ButtonData *data)
|
void OBBindings::fireButton(MouseData *data)
|
||||||
{
|
{
|
||||||
if (data->context == MC_Window) {
|
if (data->context == MC_Window) {
|
||||||
// these are grabbed in Sync mode to allow the press to be normal to the
|
// these are grabbed in Sync mode to allow the press to be normal to the
|
||||||
|
@ -527,7 +528,7 @@ void OBBindings::fireButton(ButtonData *data)
|
||||||
CallbackList::iterator c_it,c_end = (*it)->callbacks[data->action].end();
|
CallbackList::iterator c_it,c_end = (*it)->callbacks[data->action].end();
|
||||||
for (c_it = (*it)->callbacks[data->action].begin();
|
for (c_it = (*it)->callbacks[data->action].begin();
|
||||||
c_it != c_end; ++c_it)
|
c_it != c_end; ++c_it)
|
||||||
python_callback(*c_it, (PyObject*)data);
|
python_callback(*c_it, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,7 @@ public:
|
||||||
//! Removes all button bindings
|
//! Removes all button bindings
|
||||||
void removeAllButtons();
|
void removeAllButtons();
|
||||||
|
|
||||||
void fireButton(ButtonData *data);
|
void fireButton(MouseData *data);
|
||||||
|
|
||||||
//! Bind a callback for an event
|
//! Bind a callback for an event
|
||||||
bool addEvent(EventAction action, PyObject *callback);
|
bool addEvent(EventAction action, PyObject *callback);
|
||||||
|
|
2296
src/openbox_wrap.cc
2296
src/openbox_wrap.cc
File diff suppressed because it is too large
Load diff
|
@ -6,6 +6,7 @@
|
||||||
#include "python.hh"
|
#include "python.hh"
|
||||||
#include "bindings.hh"
|
#include "bindings.hh"
|
||||||
#include "otk/display.hh"
|
#include "otk/display.hh"
|
||||||
|
#include "otk/util.hh"
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
// The initializer in openbox_wrap.cc
|
// The initializer in openbox_wrap.cc
|
||||||
|
@ -24,7 +25,13 @@ void python_init(char *argv0)
|
||||||
Py_Initialize();
|
Py_Initialize();
|
||||||
init_otk();
|
init_otk();
|
||||||
init_openbox();
|
init_openbox();
|
||||||
PyRun_SimpleString("from _otk import *; from _openbox import *;");
|
PyRun_SimpleString("import sys");
|
||||||
|
PyRun_SimpleString("sys.path.append('" SCRIPTDIR "')");
|
||||||
|
PyRun_SimpleString(const_cast<char*>(((std::string)"sys.path.append('" +
|
||||||
|
otk::expandTilde("~/.openbox/python") +
|
||||||
|
"')").c_str()));
|
||||||
|
// PyRun_SimpleString("from _otk import *; from _openbox import *;");
|
||||||
|
PyRun_SimpleString("from otk import *; from openbox import *;");
|
||||||
PyRun_SimpleString("openbox = Openbox_instance()");
|
PyRun_SimpleString("openbox = Openbox_instance()");
|
||||||
PyRun_SimpleString("display = OBDisplay_display()");
|
PyRun_SimpleString("display = OBDisplay_display()");
|
||||||
|
|
||||||
|
@ -143,6 +150,7 @@ PyObject *kbind(PyObject *keylist, ob::KeyContext context, PyObject *func)
|
||||||
vectkeylist.push_back(PyString_AsString(str));
|
vectkeylist.push_back(PyString_AsString(str));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(void)context; // XXX use this sometime!
|
||||||
if (!ob::Openbox::instance->bindings()->addKey(vectkeylist, func)) {
|
if (!ob::Openbox::instance->bindings()->addKey(vectkeylist, func)) {
|
||||||
PyErr_SetString(PyExc_RuntimeError,"Unable to add binding.");
|
PyErr_SetString(PyExc_RuntimeError,"Unable to add binding.");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -65,8 +65,7 @@ enum EventAction {
|
||||||
NUM_EVENTS
|
NUM_EVENTS
|
||||||
};
|
};
|
||||||
|
|
||||||
// *** MotionData can be (and is) cast ButtonData!! (in actions.cc) *** //
|
class MouseData {
|
||||||
class MotionData {
|
|
||||||
public:
|
public:
|
||||||
int screen;
|
int screen;
|
||||||
OBClient *client;
|
OBClient *client;
|
||||||
|
@ -84,10 +83,10 @@ public:
|
||||||
int press_clientwidth;
|
int press_clientwidth;
|
||||||
int press_clientheight;
|
int press_clientheight;
|
||||||
|
|
||||||
MotionData(int screen, OBClient *client, Time time, unsigned int state,
|
MouseData(int screen, OBClient *client, Time time, unsigned int state,
|
||||||
unsigned int button, MouseContext context, MouseAction action,
|
unsigned int button, MouseContext context, MouseAction action,
|
||||||
int xroot, int yroot, const otk::Point &initpos,
|
int xroot, int yroot, const otk::Point &initpos,
|
||||||
const otk::Rect &initarea) {
|
const otk::Rect &initarea) {
|
||||||
this->screen = screen;
|
this->screen = screen;
|
||||||
this->client = client;
|
this->client = client;
|
||||||
this->time = time;
|
this->time = time;
|
||||||
|
@ -104,21 +103,8 @@ public:
|
||||||
this->press_clientwidth = initarea.width();
|
this->press_clientwidth = initarea.width();
|
||||||
this->press_clientheight = initarea.height();
|
this->press_clientheight = initarea.height();
|
||||||
}
|
}
|
||||||
};
|
MouseData(int screen, OBClient *client, Time time, unsigned int state,
|
||||||
|
unsigned int button, MouseContext context, MouseAction action) {
|
||||||
// *** MotionData can be (and is) cast ButtonData!! (in actions.cc) *** //
|
|
||||||
class ButtonData {
|
|
||||||
public:
|
|
||||||
int screen;
|
|
||||||
OBClient *client;
|
|
||||||
Time time;
|
|
||||||
unsigned int state;
|
|
||||||
unsigned int button;
|
|
||||||
MouseContext context;
|
|
||||||
MouseAction action;
|
|
||||||
|
|
||||||
ButtonData(int screen, OBClient *client, Time time, unsigned int state,
|
|
||||||
unsigned int button, MouseContext context, MouseAction action) {
|
|
||||||
this->screen = screen;
|
this->screen = screen;
|
||||||
this->client = client;
|
this->client = client;
|
||||||
this->time = time;
|
this->time = time;
|
||||||
|
@ -126,6 +112,14 @@ public:
|
||||||
this->button = button;
|
this->button = button;
|
||||||
this->context= context;
|
this->context= context;
|
||||||
this->action = action;
|
this->action = action;
|
||||||
|
this->xroot = xroot;
|
||||||
|
this->yroot = yroot;
|
||||||
|
this->pressx = 0;
|
||||||
|
this->pressy = 0;
|
||||||
|
this->press_clientx = 0;
|
||||||
|
this->press_clienty = 0;
|
||||||
|
this->press_clientwidth = 0;
|
||||||
|
this->press_clientheight = 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -177,8 +171,7 @@ bool python_get_stringlist(const char *name, std::vector<std::string> *value);
|
||||||
/***********************************************
|
/***********************************************
|
||||||
* These are found in openbox.i, not python.cc *
|
* These are found in openbox.i, not python.cc *
|
||||||
***********************************************/
|
***********************************************/
|
||||||
void python_callback(PyObject *func, MotionData *data);
|
void python_callback(PyObject *func, MouseData *data);
|
||||||
void python_callback(PyObject *func, ButtonData *data);
|
|
||||||
void python_callback(PyObject *func, EventData *data);
|
void python_callback(PyObject *func, EventData *data);
|
||||||
void python_callback(PyObject *func, KeyData *data);
|
void python_callback(PyObject *func, KeyData *data);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue