00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _Fl_H_
00023 #define _Fl_H_
00024
00025 #include "Enumerations.h"
00026
00027 class FL_API Fl_Widget;
00028 class FL_API Fl_Window;
00029
00031 struct Fl_Screen_Info {
00032 int x, y, w, h;
00033 int width;
00034 int height;
00035 int depth;
00036 int width_mm;
00037 int height_mm;
00038 };
00039
00040 typedef void (*Fl_Timeout_Handler)(void*);
00041
00043 class FL_API Fl {
00044 friend class Fl_Widget;
00045 Fl() { };
00046
00047 public:
00048
00049 static int damage_;
00050 static int e_type;
00051 static int e_x;
00052 static int e_y;
00053 static int e_dx;
00054 static int e_dy;
00055 static int e_x_root;
00056 static int e_y_root;
00057 static int e_state;
00058 static int e_clicks;
00059 static int e_is_click;
00060 static int e_keysym;
00061 static int e_length;
00062 static char* e_text;
00063 static int compose_state;
00064 static Fl_Widget* belowmouse_;
00065 static Fl_Widget* pushed_;
00066 static Fl_Widget* focus_;
00067 static Fl_Widget* modal_;
00068 static bool grab_;
00069 static bool exit_modal_;
00070 static void damage(int x) {damage_ = x;}
00071 static void (*idle)();
00072
00073 public:
00074
00075 static float version();
00076
00077
00078 static void read_defaults();
00079
00080
00081 static bool init_locale();
00082
00083 static bool init_locale(const char *app_domain, const char *directory);
00084
00085
00086 static void sleep(int milliseconds);
00087
00088 static uint32 ticks();
00089
00090
00091 static int arg(int, char**, int&);
00092 static int args(int, char**, int&, int (*)(int,char**,int&) = 0);
00093 static const char* const help;
00094 static void args(int, char**);
00095
00096
00097 static void display(const char*);
00098 static int visual(int);
00099 static void own_colormap();
00100
00101
00102 static int wait();
00103 static int wait(float time);
00104 static int check();
00105 static int ready();
00106 static int run();
00107
00108 static void modal(Fl_Widget*, bool grab = false);
00109 static Fl_Widget* modal() {return modal_;}
00110 static bool grab() {return grab_;}
00111 static void exit_modal() {exit_modal_ = true;}
00112 static bool exit_modal_flag() {return exit_modal_;}
00113
00114 static void add_timeout(float t,Fl_Timeout_Handler,void* v = 0);
00115 static void repeat_timeout(float t, Fl_Timeout_Handler,void* = 0);
00116 static bool has_timeout(Fl_Timeout_Handler, void* = 0);
00117 static void remove_timeout(Fl_Timeout_Handler, void* = 0);
00118 static void add_check(Fl_Timeout_Handler, void* = 0);
00119 static bool has_check(Fl_Timeout_Handler, void* = 0);
00120 static void remove_check(Fl_Timeout_Handler, void* = 0);
00121 static void add_fd(int fd, int when, void (*cb)(int,void*),void* =0);
00122 static void add_fd(int fd, void (*cb)(int, void*), void* = 0);
00123 static void remove_fd(int, int when = -1);
00124 static void set_idle(void (*cb)()) {idle = cb;}
00125 static void add_idle(void (*cb)(void*), void* = 0);
00126 static bool has_idle(void (*cb)(void*), void* = 0);
00127 static void remove_idle(void (*cb)(void*), void* = 0);
00128 static int damage() {return damage_;}
00129 static void redraw();
00130 static void flush();
00131 static void (*warning)(const char*, ...);
00132 static void (*error)(const char*, ...);
00133 static void (*fatal)(const char*, ...);
00134
00135
00136 static Fl_Window* first_window();
00137 static void first_window(Fl_Window*);
00138 static Fl_Window* next_window(const Fl_Window*);
00139
00140
00141 static int event() {return e_type;}
00142 static int event_x() {return e_x;}
00143 static int event_y() {return e_y;}
00144 static int event_dx() {return e_dx;}
00145 static int event_dy() {return e_dy;}
00146 static int event_x_root() {return e_x_root;}
00147 static int event_y_root() {return e_y_root;}
00148 static int event_clicks() {return e_clicks;}
00149 static void event_clicks(int i) {e_clicks = i;}
00150 static bool event_is_click() {return e_is_click != 0;}
00151 static void event_is_click(bool) {e_is_click = 0;}
00152 static int event_button() {return e_keysym-FL_Button(0);}
00153 static int event_state() {return e_state;}
00154 static bool event_state(int i) {return (e_state&i) != 0;}
00155 static int event_key() {return e_keysym;}
00156 static bool event_key_state(int);
00157 static const char* event_text() {return e_text;}
00158 static int event_length() {return e_length;}
00159
00160 static bool event_inside(int,int,int,int);
00161 static bool test_shortcut(int shortcut);
00162 static const char* key_name(int key);
00163 static bool compose(int &del);
00164 static void compose_reset() {compose_state = 0;}
00165
00166 static bool get_key_state(int);
00167 static void get_mouse(int &,int &);
00168
00169
00170 static bool handle(int, Fl_Window*);
00171 static void add_handler(int (*h)(int));
00172 static Fl_Widget* belowmouse() {return belowmouse_;}
00173 static void belowmouse(Fl_Widget*);
00174 static void belowmouse(Fl_Widget& w) {belowmouse(&w);}
00175 static Fl_Widget* pushed() {return pushed_;}
00176 static void pushed(Fl_Widget*);
00177 static void pushed(Fl_Widget& w) {pushed(&w);}
00178 static Fl_Widget* focus() {return focus_;}
00179 static void focus(Fl_Widget*);
00180 static void focus(Fl_Widget& w) {focus(&w);}
00181
00182
00183 static void copy(const char* stuff, int len, bool clipboard = false);
00184 static void paste(Fl_Widget &receiver, bool clipboard = false);
00185 static bool dnd();
00186
00187
00188 static const Fl_Screen_Info& info();
00189
00190
00191 static void lock();
00192 static void unlock();
00193 static void awake(void* message = 0);
00194 static void* thread_message();
00195
00196 static int x() { return info().x; }
00197 static int y() { return info().y; }
00198 static int w() { return info().width; }
00199 static int h() { return info().height; }
00200 };
00201
00202 #endif