2002-12-25 02:19:49 +00:00
|
|
|
// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
|
|
|
|
#ifndef __python_hh
|
|
|
|
#define __python_hh
|
|
|
|
|
|
|
|
/*! @file python.hh
|
|
|
|
@brief wee
|
|
|
|
*/
|
|
|
|
|
2003-01-03 05:26:04 +00:00
|
|
|
#include "otk/point.hh"
|
|
|
|
#include "otk/rect.hh"
|
|
|
|
|
2002-12-25 02:19:49 +00:00
|
|
|
extern "C" {
|
2003-01-03 02:48:25 +00:00
|
|
|
#include <X11/Xlib.h>
|
2002-12-25 02:19:49 +00:00
|
|
|
#include <Python.h>
|
|
|
|
}
|
|
|
|
|
2002-12-31 19:15:24 +00:00
|
|
|
#include <string>
|
2003-01-03 02:48:25 +00:00
|
|
|
#include <vector>
|
2002-12-31 19:15:24 +00:00
|
|
|
|
2002-12-25 02:19:49 +00:00
|
|
|
namespace ob {
|
|
|
|
|
2003-01-03 00:26:36 +00:00
|
|
|
enum MouseContext {
|
|
|
|
MC_Frame,
|
|
|
|
MC_Titlebar,
|
2003-01-03 05:26:04 +00:00
|
|
|
MC_Handle,
|
2003-01-03 00:26:36 +00:00
|
|
|
MC_Window,
|
|
|
|
MC_MaximizeButton,
|
|
|
|
MC_CloseButton,
|
|
|
|
MC_IconifyButton,
|
|
|
|
MC_StickyButton,
|
|
|
|
MC_Grip,
|
|
|
|
MC_Root,
|
|
|
|
MC_MenuItem,
|
|
|
|
NUM_MOUSE_CONTEXT
|
2003-01-03 02:48:25 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
enum MouseAction {
|
|
|
|
MousePress,
|
|
|
|
MouseClick,
|
|
|
|
MouseDoubleClick,
|
|
|
|
MouseMotion,
|
|
|
|
NUM_MOUSE_ACTION
|
|
|
|
};
|
|
|
|
|
2003-01-03 00:26:36 +00:00
|
|
|
enum KeyContext {
|
|
|
|
KC_Menu,
|
|
|
|
KC_All,
|
|
|
|
NUM_KEY_CONTEXT
|
2003-01-03 02:48:25 +00:00
|
|
|
};
|
2003-01-03 00:26:36 +00:00
|
|
|
|
2003-01-03 21:36:09 +00:00
|
|
|
enum EventAction {
|
|
|
|
EventEnterWindow,
|
|
|
|
EventLeaveWindow,
|
|
|
|
EventNewWindow,
|
|
|
|
EventCloseWindow,
|
2003-01-07 02:43:56 +00:00
|
|
|
EventStartup,
|
|
|
|
EventShutdown,
|
2003-01-03 21:36:09 +00:00
|
|
|
NUM_EVENTS
|
|
|
|
};
|
|
|
|
|
2003-01-03 00:26:36 +00:00
|
|
|
#ifndef SWIG
|
2003-01-03 05:26:04 +00:00
|
|
|
|
|
|
|
// *** MotionData can be (and is) cast ButtonData!! (in actions.cc) *** //
|
|
|
|
typedef struct {
|
|
|
|
PyObject_HEAD;
|
2003-01-07 02:24:43 +00:00
|
|
|
int screen;
|
2003-01-03 05:26:04 +00:00
|
|
|
Window window;
|
|
|
|
Time time;
|
|
|
|
unsigned int state;
|
|
|
|
unsigned int button;
|
|
|
|
MouseContext context;
|
|
|
|
MouseAction action;
|
|
|
|
int xroot;
|
|
|
|
int yroot;
|
|
|
|
int pressx;
|
|
|
|
int pressy;
|
|
|
|
int press_clientx;
|
|
|
|
int press_clienty;
|
|
|
|
int press_clientwidth;
|
|
|
|
int press_clientheight;
|
|
|
|
} MotionData;
|
|
|
|
|
|
|
|
// *** MotionData can be (and is) cast ButtonData!! (in actions.cc) *** //
|
|
|
|
typedef struct {
|
|
|
|
PyObject_HEAD;
|
2003-01-07 02:24:43 +00:00
|
|
|
int screen;
|
2003-01-03 05:26:04 +00:00
|
|
|
Window window;
|
|
|
|
Time time;
|
|
|
|
unsigned int state;
|
|
|
|
unsigned int button;
|
|
|
|
MouseContext context;
|
|
|
|
MouseAction action;
|
|
|
|
} ButtonData;
|
|
|
|
|
2003-01-03 21:36:09 +00:00
|
|
|
typedef struct {
|
|
|
|
PyObject_HEAD;
|
2003-01-07 02:24:43 +00:00
|
|
|
int screen;
|
2003-01-03 21:36:09 +00:00
|
|
|
Window window;
|
|
|
|
unsigned int state;
|
|
|
|
EventAction action;
|
|
|
|
} EventData;
|
|
|
|
|
2003-01-03 05:26:04 +00:00
|
|
|
typedef struct {
|
|
|
|
PyObject_HEAD;
|
2003-01-07 02:24:43 +00:00
|
|
|
int screen;
|
2003-01-03 05:26:04 +00:00
|
|
|
Window window;
|
|
|
|
Time time;
|
|
|
|
unsigned int state;
|
|
|
|
unsigned int key;
|
|
|
|
} KeyData;
|
|
|
|
|
2002-12-31 19:15:24 +00:00
|
|
|
void python_init(char *argv0);
|
2003-01-02 20:36:14 +00:00
|
|
|
void python_destroy();
|
|
|
|
bool python_exec(const std::string &path);
|
|
|
|
|
2003-01-07 02:24:43 +00:00
|
|
|
MotionData *new_motion_data(int screen, Window window, Time time,
|
|
|
|
unsigned int state, unsigned int button,
|
|
|
|
MouseContext context, MouseAction action,
|
|
|
|
int xroot, int yroot, const otk::Point &initpos,
|
2003-01-03 05:26:04 +00:00
|
|
|
const otk::Rect &initarea);
|
2003-01-07 02:24:43 +00:00
|
|
|
ButtonData *new_button_data(int screen, Window window, Time time,
|
|
|
|
unsigned int state, unsigned int button,
|
|
|
|
MouseContext context, MouseAction action);
|
|
|
|
EventData *new_event_data(int screen, Window window, EventAction action,
|
|
|
|
unsigned int state);
|
|
|
|
KeyData *new_key_data(int screen, Window window, Time time, unsigned int state,
|
2003-01-03 05:26:04 +00:00
|
|
|
unsigned int key);
|
2002-12-31 06:59:46 +00:00
|
|
|
|
2003-01-03 05:26:04 +00:00
|
|
|
void python_callback(PyObject *func, PyObject *data);
|
2002-12-30 06:31:45 +00:00
|
|
|
|
2003-01-03 21:36:09 +00:00
|
|
|
bool python_get_long(const char *name, long *value);
|
2003-01-02 20:36:14 +00:00
|
|
|
bool python_get_string(const char *name, std::string *value);
|
2003-01-02 21:05:29 +00:00
|
|
|
bool python_get_stringlist(const char *name, std::vector<std::string> *value);
|
2003-01-03 00:26:36 +00:00
|
|
|
#endif
|
2002-12-30 22:27:46 +00:00
|
|
|
|
2003-01-03 21:36:09 +00:00
|
|
|
PyObject *mbind(const std::string &button, ob::MouseContext context,
|
|
|
|
ob::MouseAction action, PyObject *func);
|
|
|
|
|
|
|
|
PyObject *kbind(PyObject *keylist, ob::KeyContext context, PyObject *func);
|
|
|
|
|
|
|
|
PyObject *ebind(ob::EventAction action, PyObject *func);
|
2003-01-03 02:48:25 +00:00
|
|
|
|
|
|
|
void set_reset_key(const std::string &key);
|
|
|
|
|
2002-12-25 02:19:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#endif // __python_hh
|