![]() |
Main Page
Class Hierarchy
Alphabetical List
Compound List
File List
Compound Members
![]() |
00001 /******************************************************************************** 00002 * * 00003 * Base of lots of non-widgets * 00004 * * 00005 ********************************************************************************* 00006 * Copyright (C) 2003 by Mathew Robertson. All Rights Reserved. * 00007 ********************************************************************************* 00008 * This library is free software; you can redistribute it and/or * 00009 * modify it under the terms of the GNU Lesser General Public * 00010 * License as published by the Free Software Foundation; either * 00011 * version 2.1 of the License, or (at your option) any later version. * 00012 * * 00013 * This library is distributed in the hope that it will be useful, * 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 00016 * Lesser General Public License for more details. * 00017 * * 00018 * You should have received a copy of the GNU Lesser General Public * 00019 * License along with this library; if not, write to the Free Software * 00020 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * 00021 *********************************************************************************/ 00022 #ifndef FXBASEOBJECT_H 00023 #define FXBASEOBJECT_H 00024 00025 #ifndef FXOBJECT_H 00026 #include <fox/FXObject.h> 00027 using namespace FX; 00028 #endif 00029 namespace FXEX { 00030 00031 /** 00032 * Define so that all types and all id's can go to a specific function. 00033 * This is particularily useful if you just want to forward the event to a target 00034 * but not specifically use the onDefault method. 00035 * 00036 * Note: if FXApp* is not specified, then FXApp::Instance() is used. 00037 */ 00038 #define FXMAPALL(func) {MKUINT(MINKEY,MINTYPE),MKUINT(MAXKEY,MAXTYPE),&func} 00039 00040 /** 00041 * Define so that we can use it to 'redirect' all unhandled events, of a specific key/ID 00042 */ 00043 #define FXMAPKEY(key,func) {MKUINT(key,MINTYPE),MKUINT(key,MAXTYPE),&func} 00044 00045 00046 /** 00047 * This is a base class for ojects which can send messages to the application 00048 */ 00049 class FXAPI FXBaseObject : public FXObject { 00050 FXDECLARE (FXBaseObject) 00051 00052 protected: 00053 /// flags defined are the same as those defined in FXWindow, etc. 00054 enum { 00055 FLAG_ENABLED = 0x00000002, // enabled 00056 FLAG_UPDATE = 0x00000004, // needs update 00057 FLAG_FOCUSED = 0x00000010, // has focus 00058 FLAG_DIRTY = 0x00000020, // dirty 00059 FLAG_RECALC = 0x00000040, // needs recalculation 00060 FLAG_DEFAULT = 0x00000200, // set to default 00061 FLAG_INITIAL = 0x00000400, // set to initial value 00062 FLAG_ACTIVE = 0x00001000, // active 00063 FLAG_CHANGED = 0x00010000, // changed 00064 FLAG_READONLY = 0x10000000 // read only 00065 }; 00066 00067 private: 00068 FXApp *app; // application pointer 00069 00070 protected: 00071 FXObject *target; // application target 00072 FXSelector message; // application message 00073 void *data; // user data 00074 FXuint datalen; // length of user data 00075 FXuint flags; // state flags 00076 FXuint options; // option flags 00077 00078 public: 00079 enum { 00080 ID_NONE=0, 00081 ID_DELETE=6, 00082 ID_DISABLE, 00083 ID_ENABLE, 00084 ID_SETVALUE=17, 00085 ID_SETINTVALUE, 00086 ID_SETREALVALUE, 00087 ID_SETSTRINGVALUE, 00088 ID_SETINTRANGE, 00089 ID_SETREALRANGE, 00090 ID_GETINTVALUE, 00091 ID_GETREALVALUE, 00092 ID_GETSTRINGVALUE, 00093 ID_XML, 00094 ID_META, 00095 ID_COMMENT, 00096 ID_DOCUMENT, 00097 ID_TAG, 00098 ID_CONTENT, 00099 ID_LAST, 00100 }; 00101 00102 public: 00103 long onCmdEnable(FXObject*,FXSelector,void*); 00104 long onCmdDisable(FXObject*,FXSelector,void*); 00105 long onUpdate(FXObject*,FXSelector,void*); 00106 00107 public: 00108 /// Just supply the target and selector (de-serialisation too) 00109 FXBaseObject(FXObject *tgt=NULL,FXSelector sel=0); 00110 00111 /// Alternnatively, supply the app object as well 00112 FXBaseObject(FXApp *a,FXObject *tgt=NULL,FXSelector sel=0); 00113 00114 /// application pointer 00115 FXApp* getApp(); 00116 00117 /// get the target 00118 FXObject* getTarget() { return target; } 00119 00120 /// set the target 00121 void setTarget(FXObject* tgt) { target=tgt; } 00122 00123 /// get the message 00124 FXSelector getSelector() { return message; } 00125 00126 /// set the selector 00127 void setSelector(FXSelector sel) { message=sel; } 00128 00129 /// get user data 00130 void* getUserData() { return data; } 00131 00132 /// set user data 00133 void setUserData(void *d) { data=d; } 00134 00135 /// get user daat length 00136 FXuint getUserDataLen() { return datalen; } 00137 00138 /// set the user data length 00139 void setUserDataLen(FXuint len) { datalen=len; } 00140 00141 /// are we enabled? 00142 FXbool isEnabled() { return (flags&FLAG_ENABLED)!=0; } 00143 00144 /// enable us 00145 virtual void enable() { flags|=FLAG_ENABLED; } 00146 00147 /// disable us 00148 virtual void disable() { flags&=~FLAG_ENABLED; } 00149 00150 /// are we modifiable 00151 virtual FXbool isReadonly() { return (flags&FLAG_READONLY)!=0; } 00152 00153 /// set modifiable mode 00154 virtual void setReadonly(FXbool mode=TRUE); 00155 00156 /// create resource 00157 virtual void create(){} 00158 00159 /// detach resource 00160 virtual void detach(){} 00161 00162 /// destroy resource 00163 virtual void destroy(){} 00164 00165 /// save object to stream 00166 virtual void save(FXStream& store) const; 00167 00168 /// load object from stream 00169 virtual void load(FXStream& store); 00170 00171 /// dtor 00172 virtual ~FXBaseObject(); 00173 }; 00174 00175 } // namespace FXEX 00176 #endif // FXBASEOBJECT_H 00177