Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

Fl.h

00001 /*
00002  * $Id: Fl.h,v 1.13 2003/05/30 08:45:43 laza2000 Exp $
00003  *
00004  * Extended Fast Light Toolkit (EFLTK)
00005  * Copyright (C) 2002-2003 by EDE-Team
00006  * WWW: http://www.sourceforge.net/projects/ede
00007  *
00008  * Fast Light Toolkit (FLTK)
00009  * Copyright (C) 1998-2003 by Bill Spitzak and others.
00010  * WWW: http://www.fltk.org
00011  *
00012  * This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE
00013  * version 2. See COPYING for details.
00014  *
00015  * Author : Mikko Lahteenmaki
00016  * Email  : mikko@fltk.net
00017  *
00018  * Please report all bugs and problems to "efltk-bugs@fltk.net"
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() { }; // no constructor!
00046 
00047 public: // should be private!
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     // Read widgets default values.
00078     static void read_defaults();
00079 
00080     // Initializes locale support for EFLTK
00081     static bool init_locale();
00082     // Initializes locale support for application
00083     static bool init_locale(const char *app_domain, const char *directory);
00084 
00085     // Sleep milliseconds.
00086     static void sleep(int milliseconds);
00087     // Get ticks since EFltk initialize, in milliseconds
00088     static uint32 ticks();
00089 
00090     // argument parsers:
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     // things called by initialization:
00097     static void display(const char*);
00098     static int visual(int);
00099     static void own_colormap();
00100 
00101     // execution:
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     // list of top-level shown() windows:
00136     static Fl_Window* first_window();
00137     static void first_window(Fl_Window*);
00138     static Fl_Window* next_window(const Fl_Window*);
00139 
00140     // event information:
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;} // only false works!
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   // event destinations:
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   // cut/paste:
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   // screen size (any any other static information from system):
00188     static const Fl_Screen_Info& info();
00189 
00190   // Multithreading support:
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

Generated on Thu Jul 31 15:33:43 2003 for eFLTK by doxygen1.2.15