Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

umode.hpp

00001 /* ==================================================== ======== ======= *
00002  *
00003  *  umode.hpp
00004  *  Ubit Project  [Elc][2003]
00005  *  Author: Eric Lecolinet
00006  *
00007  *  Part of the Ubit Toolkit: A Brick Construction Game Model for Creating GUIs
00008  *
00009  *  (C) 1999-2003 Eric Lecolinet @ ENST Paris
00010  *  WWW: http://www.enst.fr/~elc/ubit   Email: elc@enst.fr (subject: ubit)
00011  *
00012  * ***********************************************************************
00013  * COPYRIGHT NOTICE : 
00014  * THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY AND WITHOUT EVEN THE 
00015  * IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 
00016  * YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT UNDER THE TERMS OF THE GNU 
00017  * GENERAL PUBLIC LICENSE AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION; 
00018  * EITHER VERSION 2 OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION.
00019  * SEE FILES 'COPYRIGHT' AND 'COPYING' FOR MORE DETAILS.
00020  * ***********************************************************************
00021  *
00022  * ==================================================== [Elc:03] ======= *
00023  * ==================================================== ======== ======= */
00024 
00025 #ifndef _umode_hpp_
00026 #define _umode_hpp_
00027 //pragma ident  "@(#)umode.hh   ubit:03.05.05"
00028 #include <ubit/ubrick.hpp>
00029 
00034 class UMode: public UBrick {
00035 protected:
00036   friend class UCtrl;
00037   // NB: bmodes is inherited from UBrick
00038   u_modes cmodes, bmask, cmask;
00039 
00040 public:
00041   static UMode 
00043     selected,
00044 
00046     unselected,
00047 
00049     canSelect, //canSelectChildren,
00050 
00052     canArm,
00053 
00055     enterHighlight, enterHighborder, 
00056 
00058     actionHighlight, actionHighborder, //actionWatch,
00059 
00061     canDrag1, 
00062 
00064     canDrag2, 
00065 
00067     canDrop,
00068 
00070     ignoreEvents;
00071 
00072   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00073 
00074   enum BMODES {
00076     CAN_DEL        = 1<<0,
00077     
00079     UCONST         = 1<<1,
00080     
00081     // this object is being destructed (by its destructors)
00082     DESTRUCTING    = 1<<2,
00083     DESTRUCTED     = 1<<3,
00084 
00086     DONT_PROPAGATE = CAN_DEL | DESTRUCTED | DESTRUCTING | UCONST,   // !dont' forget!
00087 
00088     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00089 
00091     NO_AUTO_UPDATE = 1<<4,
00092 
00094     IN_TEXTSEL     = 1<<5,
00095 
00097     IS_VERTICAL    = 1<<6,
00098 
00100     //IS_BACKWARDS   = 1<<,
00101 
00103     //RESEND_EVENTS  = 1<<,
00104 
00106     IGNORE_EVENTS  = 1<<9,
00107 
00108     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00109     // callbacks to which this object is sensitive
00110 
00111     DESTRUCT_CB      = 1<<10,
00112     CHANGE_CB        = 1<<11,
00113     CONTAINER_CB     = 1<<12,
00114     CHILD_CHANGE_CB  = 1<<13,
00115     //CHILD_SELECT_CB  = 1<<, plus utilise
00116     VIEW_PAINT_CB    = 1<<15,
00117     VIEW_CHANGE_CB   = 1<<16,
00118     // -- Key: UOn::kpress, UOn::krelease and UOn::ktype
00119     KEY_CB           = 1<<17,
00120     // -- Mouse: UOn::mpress, UOn::mrelease (NB: not used)
00121     MOUSE_CB         = 1<<18,
00122     // -- Mouse: UOn::mclick, UOn::mbiclick, etc. (NB: not used)
00123     MOUSE_CLICK_CB   = 1<<19,
00124     // -- Enter, Leave and Cursor: UOn::enter and UOn::leave
00125     MOUSE_CROSS_CB   = 1<<20,
00126     // -- Drag & Move: UOn::mdrag and UOn::mmove
00127     MOUSE_DRAG_CB    = 1<<21,
00128     MOUSE_MOVE_CB    = 1<<22,
00129 
00130     // -- UOn::message, UOn::preChildEvent, UOn::anyEvent
00131     UMESSAGE_CB      = 1<<27,
00132     PRE_CHILD_EVENT_CB = 1<<28,
00133     RAW_EVENT_CB     = 1<<29,
00134     NOTIFY_EVENT_CB  = 1<<30,
00135 
00136     CALLBACKS = 
00137     DESTRUCT_CB|CHANGE_CB|CONTAINER_CB|CHILD_CHANGE_CB    // |CHILD_SELECT_CB
00138     |VIEW_PAINT_CB|VIEW_CHANGE_CB
00139     |KEY_CB|MOUSE_CB|MOUSE_CLICK_CB|MOUSE_CROSS_CB|MOUSE_DRAG_CB|MOUSE_MOVE_CB
00140     |UMESSAGE_CB|PRE_CHILD_EVENT_CB|RAW_EVENT_CB|NOTIFY_EVENT_CB
00142 
00144   };
00145 
00146   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00147 
00148   enum CMODES {
00149     //--- Internal MetaTypes
00150     GROUP             = 1<<0, 
00151     BOX               = 1<<1, 
00152     SOFTWIN           = 1<<2, 
00153     HARDWIN           = 1<<3, 
00154     INCRUST           = 1<<4, 
00155 
00156     FLOATING          = 1<<5, 
00157     MENU              = 1<<6, 
00158     FAKE_PARENT       = 1<<7, 
00159     BORDER_LIST       = 1<<8, 
00160     SOFTWIN_LIST      = 1<<9, 
00161 
00163     CAN_SHOW          = 1<<10,
00164 
00166     DOUBLE_BUFFER     = 1<<11,
00167 
00169     MODAL             = 1<<12,
00170 
00171     //ENABLED (ISTATE::DISABLED used instead)
00172 
00174     SELECTED          = 1<<13,
00175 
00177     CAN_SELECT        = 1<<14, 
00178 
00180     CAN_SELECT_CHILDREN = 1<<15, 
00181 
00183     CAN_SELECT_TEXT   = 1<<16,
00185     CAN_EDIT_TEXT     = 1<<17,
00186 
00188     CAN_BROWSE_CHILDREN = 1<<19, 
00189     
00191     CAN_DRAG1         = 1<<20,
00192     CAN_DRAG2         = 1<<21,
00193     CAN_DROP          = 1<<22,
00194 
00197     CAN_ARM           = 1<<23,
00198     //CAN_ACTION        = 1<<,
00199 
00200     // ** Higligting:
00201     // -- on UOn::action conditions
00202     ACTION_HIGHLIGHT  = 1<<24,
00203     //ACTION_HIGHBORDER = 1<<,
00204     //ACTION_WATCH      = 1<<,
00205 
00206     // -- on UOn::enter and UOn::leave conditions
00207     ENTER_HIGHLIGHT   = 1<<25,
00208     //ENTER_HIGHBORDER  = 1<<,
00209 
00210     //--- Box attributes
00211 
00213     HAS_RENDERER      = 1<<26,
00214 
00216     HAS_CURSOR        = 1<<27,
00217 
00220     HAS_CLOSE_MENU_MODE  = 1<<28,
00221     CLOSE_MENU_MODE      = 1<<29,
00222 
00223     //--- Win and menu attributes
00224 
00226     WIN_MAPPED           = 1<<30,
00227 
00229     WIN_AUTO_OPEN_MODE   = 1<<31
00230 
00231     // !no comma after last item!
00232     // !BEWARE total size must be coherent with typedef u_modes in udefs.hh !!
00233   };
00234 
00235   UMode(u_modes bmodes, u_modes cmodes, bool on_off);
00236   UMode(u_modes bmodes = 0);
00237   virtual ~UMode() {destructs();}
00238 
00239   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00240 
00241   virtual void setParentModes(UCtrl *parent) const;
00242   virtual void addingTo(class ULink *selflink, UGroup *parent);
00243   virtual void removingFrom(class ULink *selflink, UGroup *parent);
00245 };
00246 
00247 /* ==================================================== [TheEnd] ======= */
00248 /* ==================================================== [Elc:03] ======= */
00249 #endif
00250 

Generated on Thu Mar 3 06:33:20 2005 for Ubit[Eric.Lecolinet@enst.fr] by  doxygen 1.4.1