#define __CRIKEYWINDOW_H__
#include "guicast.h"
-#include "colorpicker.h"
class CriKey;
class CriKeyWindow;
class CriKeyNum;
-class CriKeyColorButton;
-class CriKeyColorPicker;
+class CriKeyPointX;
+class CriKeyPointY;
class CriKeyDrawMode;
class CriKeyDrawModeItem;
-class CriKeyKeyMode;
-class CriKeyKeyModeItem;
class CriKeyThreshold;
+class CriKeyDrag;
+class CriKeyPointList;
+class CriKeyNewPoint;
+class CriKeyDelPoint;
+class CriKeyPointUp;
+class CriKeyPointDn;
+class CriKeyReset;
+
class CriKeyNum : public BC_TumbleTextBox
{
public:
CriKeyWindow *gui;
- float *output;
- int handle_event();
- CriKeyNum(CriKeyWindow *gui, int x, int y, float &output);
+ CriKeyNum(CriKeyWindow *gui, int x, int y, float output);
~CriKeyNum();
};
-
-class CriKeyColorButton : public BC_GenericButton
+class CriKeyPointX : public CriKeyNum
{
public:
- CriKeyColorButton(CriKeyWindow *gui, int x, int y);
+ CriKeyPointX(CriKeyWindow *gui, int x, int y, float output)
+ : CriKeyNum(gui, x, y, output) {}
+ ~CriKeyPointX() {}
int handle_event();
- CriKeyWindow *gui;
};
-
-class CriKeyColorPicker : public ColorPicker
+class CriKeyPointY : public CriKeyNum
{
public:
- CriKeyColorPicker(CriKeyColorButton *color_button);
-
- void start(int color);
- int handle_new_color(int color, int alpha);
- void handle_done_event(int result);
+ CriKeyPointY(CriKeyWindow *gui, int x, int y, float output)
+ : CriKeyNum(gui, x, y, output) {}
+ ~CriKeyPointY() {}
- CriKeyColorButton *color_button;
- int color;
+ int handle_event();
};
class CriKeyDrawMode : public BC_PopupMenu
int id;
};
-class CriKeyKeyMode : public BC_PopupMenu
+class CriKeyThreshold : public BC_FSlider
{
- const char *key_modes[KEY_MODES];
public:
- CriKeyKeyMode(CriKeyWindow *gui, int x, int y);
+ CriKeyThreshold(CriKeyWindow *gui, int x, int y, int w);
+ int handle_event();
+ int wheel_event(int v);
+ CriKeyWindow *gui;
+};
- void create_objects();
- void update(int mode, int send=1);
+class CriKeyDrag : public BC_CheckBox
+{
+public:
+ CriKeyDrag(CriKeyWindow *gui, int x, int y);
+
+ int handle_event();
CriKeyWindow *gui;
- int mode;
};
-class CriKeyKeyModeItem : public BC_MenuItem
+
+class CriKeyPointList : public BC_ListBox
{
public:
- CriKeyKeyModeItem(const char *text, int id)
- : BC_MenuItem(text) { this->id = id; }
+ CriKeyPointList(CriKeyWindow *gui, CriKey *plugin, int x, int y);
+ ~CriKeyPointList();
int handle_event();
+ int selection_changed();
+ int column_resize_event();
+ ArrayList<BC_ListBoxItem*> cols[PT_SZ];
+ void clear();
+ void new_point(const char *ep, const char *xp, const char *yp,
+ const char *tp, const char *tag);
+ void del_point(int i);
+ void set_point(int i, int c, float v);
+ void set_point(int i, int c, const char *cp);
+ int set_selected(int k);
+ void update(int k);
+ void update_list(int k);
+
+
CriKeyWindow *gui;
- int id;
+ CriKey *plugin;
+ const char *titles[PT_SZ];
+ int widths[PT_SZ];
};
-class CriKeyThreshold : public BC_FSlider
+class CriKeyNewPoint : public BC_GenericButton
{
public:
- CriKeyThreshold(CriKeyWindow *gui, int x, int y, int w);
+ CriKeyNewPoint(CriKeyWindow *gui, CriKey *plugin, int x, int y);
+ ~CriKeyNewPoint();
+
int handle_event();
+
CriKeyWindow *gui;
+ CriKey *plugin;
};
-class CriKeyDrag : public BC_CheckBox
+class CriKeyDelPoint : public BC_GenericButton
{
public:
- CriKeyDrag(CriKeyWindow *gui, int x, int y);
+ CriKeyDelPoint(CriKeyWindow *gui, CriKey *plugin, int x, int y);
+ ~CriKeyDelPoint();
+
+ int handle_event();
+
+ CriKey *plugin;
+ CriKeyWindow *gui;
+};
+
+class CriKeyPointUp : public BC_GenericButton
+{
+public:
+ CriKeyPointUp(CriKeyWindow *gui, int x, int y);
+ ~CriKeyPointUp();
+
+ int handle_event();
+
+ CriKeyWindow *gui;
+};
+
+class CriKeyPointDn : public BC_GenericButton
+{
+public:
+ CriKeyPointDn(CriKeyWindow *gui, int x, int y);
+ ~CriKeyPointDn();
int handle_event();
+
CriKeyWindow *gui;
};
+class CriKeyReset : public BC_GenericButton
+{
+public:
+ CriKeyReset(CriKeyWindow *gui, CriKey *plugin, int x, int y);
+ ~CriKeyReset();
+
+ int handle_event();
+
+ CriKey *plugin;
+ CriKeyWindow *gui;
+};
+
+
class CriKeyWindow : public PluginClientWindow
{
public:
~CriKeyWindow();
void create_objects();
- void draw_key(int mode);
- void update_color(int color);
void update_gui();
void start_color_thread();
int grab_event(XEvent *event);
void done_event(int result);
+ int check_configure_change(int ret);
+ void send_configure_change();
CriKey *plugin;
CriKeyThreshold *threshold;
CriKeyDrawMode *draw_mode;
- CriKeyKeyMode *key_mode;
- CriKeyColorButton *color_button;
- CriKeyColorPicker *color_picker;
- int color_x, color_y, key_x, key_y;
BC_Title *title_x, *title_y;
- CriKeyNum *point_x, *point_y;
- int dragging;
+ CriKeyPointX *point_x;
+ CriKeyPointY *point_y;
+ CriKeyNewPoint *new_point;
+ CriKeyDelPoint *del_point;
+ CriKeyPointUp *point_up;
+ CriKeyPointDn *point_dn;
+ int dragging, pending_config;
+ float last_x, last_y;
CriKeyDrag *drag;
+ CriKeyPointList *point_list;
+ CriKeyReset *reset;
+ BC_Title *notes;
};
#endif