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

Fl_Workspace.h

00001 /*
00002  * $Id: Fl_Workspace.h,v 1.6 2003/03/15 16:09:56 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_WORKSPACE_H_
00023 #define _FL_WORKSPACE_H_
00024 
00025 #include "Fl_Window.h"
00026 #include "Fl_Scrollbar.h"
00027 #include "Fl_Menu_Bar.h"
00028 #include "fl_draw.h"
00029 #include "Fl.h"
00030 #include "x.h"
00031 
00032 class FL_API Fl_MDI_Bar;
00033 class FL_API Fl_MDI_Window;
00034 class FL_API Fl_Workspace;
00035 
00036 #define FL_MDI_WINDOW 0x01000000
00037 
00038 typedef Fl_Group Fl_WorkType;
00039 typedef Fl_Window Fl_ViewportType;
00040 
00055 class Fl_MDI_Viewport : public Fl_ViewportType
00056 {   
00057 public:
00058     static Fl_Named_Style* default_style;
00059 
00063     Fl_MDI_Viewport(int x, int y, int w, int h, const char *label = 0);
00064 
00068     virtual ~Fl_MDI_Viewport() { }
00069 
00073     void redraw_all();
00077     void relayout_all();
00078 
00081     void taskbar(Fl_MDI_Bar *bar);
00082     Fl_MDI_Bar *taskbar();
00083 
00090     Fl_MDI_Window *find(const char *caption);
00091 
00096     void attach(Fl_MDI_Window *win);
00101     void detach(Fl_MDI_Window *w);
00102 
00106     void close_all();
00107 
00112     Fl_MDI_Window *aot() { return _aot; }
00118     void aot(Fl_MDI_Window *win) { _aot = win; relayout(); }
00119 
00126     Fl_MDI_Window *maximum() { return _max; }
00132     void maximum(Fl_MDI_Window *win);
00133 
00139     void top(Fl_MDI_Window *win);
00144     Fl_MDI_Window *top() { return _top; }
00145 
00149     int cnt_windows();
00150 
00155     void cycle_windows();
00156 
00163     void scrolldy(int dy) { _scrolldy+=dy; }
00170     void scrolldx(int dx) { _scrolldx+=dx; }
00171 
00178     virtual void layout();
00184     virtual int handle(int ev);
00188     virtual void draw();
00189 
00193     void menu(Fl_Menu_Bar *menu) { _menu = menu; }
00194     Fl_Menu_Bar *menu() { return _menu; }
00195 
00196 private:
00197     friend class Fl_MDI_Window;
00198 
00199     Fl_Menu_Bar *_menu;
00200     Fl_MDI_Bar *_bar;
00201 
00202     Fl_MDI_Window *_aot; //Always On Top
00203     Fl_MDI_Window *_max; //Maximized
00204     Fl_MDI_Window *_top; //Top most, active
00205 
00206     // For scrolling:
00207     static void cb_draw_clip(void*,int,int,int,int);
00208     void draw_clip(int,int,int,int);
00209     int _scrolldx, _scrolldy;
00210 };
00211 
00225 class Fl_Workspace : public Fl_WorkType  {
00226 public:
00227     static Fl_Named_Style* default_style;
00228 
00232     Fl_Workspace(int x, int y, int w, int h, const char *label = 0);
00236     virtual ~Fl_Workspace();
00237 
00239 
00243     void begin() { viewport()->begin(); }
00244     void end()   { viewport()->end(); }
00245 
00246     void redraw_all()   { viewport()->redraw_all(); }
00247     void relayout_all() { viewport()->relayout_all(); }
00248 
00249     Fl_MDI_Window *find(const char *caption) { return viewport()->find(caption); }
00250 
00251     void attach(Fl_MDI_Window *win) { viewport()->attach(win); }
00252     void detach(Fl_MDI_Window *win) { viewport()->detach(win); }
00253 
00254     void close_all() { _viewport->close_all(); }
00255 
00256     Fl_MDI_Window *aot() { return viewport()->aot(); }
00257     void aot(Fl_MDI_Window *win) { viewport()->aot(win); }
00258 
00259     Fl_MDI_Window *maximum() { return viewport()->maximum(); }
00260     void maximum(Fl_MDI_Window *win) { viewport()->maximum(win); }
00261 
00262     void top(Fl_MDI_Window *win) { viewport()->top(win); }
00263     Fl_MDI_Window *top() { return viewport()->top(); }
00264 
00265     void menu(Fl_Menu_Bar *menu) { viewport()->menu(menu); }
00266     Fl_Menu_Bar *menu() { return viewport()->menu(); }
00267 
00269 
00273     void cascade();
00274 
00278     void tileV();
00282     void tileH();
00287     void tile() { tileH();}
00288 
00295     void focus_moves_pos(bool val);
00300     bool focus_moves_pos() { return move_pos; }
00301 
00302     Fl_MDI_Viewport *viewport() { return _viewport; }
00303 
00307     enum {
00308         HORIZONTAL = 1,         
00309         VERTICAL = 2,           
00310         BOTH = 3,               
00311         ALWAYS_ON = 4,
00312         HORIZONTAL_ALWAYS = 5,  
00313         VERTICAL_ALWAYS = 6,    
00314         BOTH_ALWAYS = 7         
00315     };
00316 
00321     void show_window() { show_window(viewport()->top()); }
00327     void show_window(Fl_MDI_Window *win);
00328 
00333     int xposition() const {return xposition_;}
00338     int yposition() const {return yposition_;}
00343     void position(int x, int y);
00344 
00349     virtual void layout();
00353     virtual int handle(int ev);
00357     virtual void draw();
00358 
00359 private:
00360     static void cb_hscrollbar(Fl_Widget *o, void *d);
00361     static void cb_vscrollbar(Fl_Widget *o, void *d);
00362 
00363     void bbox(int&,int&,int&,int&);
00364 
00365     Fl_MDI_Viewport *_viewport;
00366 
00367     int xposition_, yposition_;
00368     int layoutdx, layoutdy;
00369 
00370     Fl_Scrollbar *vscrollbar;
00371     Fl_Scrollbar *hscrollbar;
00372 
00373     bool move_pos;
00374 };
00375 
00376 #endif

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