SUMO - Simulation of Urban MObility
FXBaseObject.cpp
Go to the documentation of this file.
1 /****************************************************************************/
9 //
10 /****************************************************************************/
11 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
12 // Copyright (C) 2003-2017 DLR (http://www.dlr.de/) and contributors
13 /****************************************************************************/
14 //
15 // This file is part of SUMO.
16 // SUMO is free software: you can redistribute it and/or modify
17 // it under the terms of the GNU General Public License as published by
18 // the Free Software Foundation, either version 3 of the License, or
19 // (at your option) any later version.
20 //
21 /****************************************************************************/
22 
23 
24 /* =========================================================================
25  * included modules
26  * ======================================================================= */
27 #ifdef _MSC_VER
28 #include <windows_config.h>
29 #else
30 #include <config.h>
31 #endif
32 
33 #include <fxver.h>
34 #include <xincs.h>
35 #include <fxdefs.h>
36 #include <fx.h>
37 /*
38 #include <FXString.h>
39 #include <FXHash.h>
40 #include <FXStream.h>
41 #include <FXSize.h>
42 #include <FXPoint.h>
43 #include <FXRectangle.h>
44 #include <FXRegistry.h>
45 #include <FXMutex.h>
46 #include <FXApp.h>
47 #include <FXWindow.h>
48 */
49 using namespace FX;
50 #include "FXBaseObject.h"
51 
52 using namespace FXEX;
53 namespace FXEX {
54 
55 FXDEFMAP(FXBaseObject) FXBaseObjectMap[] = {
56  FXMAPFUNC(SEL_COMMAND, FXWindow::ID_ENABLE, FXBaseObject::onCmdEnable),
57  FXMAPFUNC(SEL_COMMAND, FXWindow::ID_DISABLE, FXBaseObject::onCmdDisable),
58  FXMAPFUNC(SEL_UPDATE, FXWindow::ID_DISABLE, FXBaseObject::onUpdate),
59 };
60 FXIMPLEMENT(FXBaseObject, FXObject, FXBaseObjectMap, ARRAYNUMBER(FXBaseObjectMap))
61 
62 // ctor
63 FXBaseObject::FXBaseObject(FXObject* tgt, FXSelector sel) : FXObject() {
64  data = NULL;
65  target = tgt;
66  message = sel;
67  flags = 0;
68  app = FXApp::instance();
69  if (app == NULL) {
70  fxerror("%s: Cannot create object without FXApp object\n", getClassName());
71  }
72 }
73 
74 // ctor
75 FXBaseObject::FXBaseObject(FXApp* a, FXObject* tgt, FXSelector sel) : FXObject() {
76  data = NULL;
77  target = tgt;
78  message = sel;
79  flags = 0;
80  app = a;
81  if (app == NULL) {
82  app = FXApp::instance();
83  }
84  if (app == NULL) {
85  fxerror("%s: Cannot create object without FXApp object\n", getClassName());
86  }
87 }
88 
89 // free up all resources
91  if (data != NULL && data != (void*) - 1) {
92  fxerror("%s::~%s - user data is not NULL prior to destruction\n", getClassName(), getClassName());
93  }
94  app = (FXApp*) - 1;
95  target = (FXObject*) - 1;
96 }
97 
98 // save object to stream
99 void FXBaseObject::save(FXStream& store) const {
100  FXObject::save(store);
101  store << app;
102  store << target;
103  store << message;
104  store << flags;
105  store << options;
106  store << datalen;
107  store.save((FXuchar*)data, (unsigned long)datalen);
108 }
109 
110 // load object from stream
111 void FXBaseObject::load(FXStream& store) {
112  FXObject::load(store);
113  store >> app;
114  store >> target;
115  store >> message;
116  store >> flags;
117  store >> options;
118  store >> datalen;
119  store.load((FXuchar*)data, (unsigned long)datalen);
120 }
121 
122 // this allows FXBaseObject derived classes to be singletons
124  if (app) {
125  return app;
126  }
127  return FXApp::instance();
128 }
129 
130 // set the readonly flag
131 void FXBaseObject::setReadonly(FXbool mode) {
132  if (mode) {
133  flags |= FLAG_READONLY;
134  } else {
135  flags &= ~FLAG_READONLY;
136  }
137 }
138 
139 // handle enable event
140 long FXBaseObject::onCmdEnable(FXObject*, FXSelector, void*) {
141  enable();
142  return 1;
143 }
144 
145 // handle disable event
146 long FXBaseObject::onCmdDisable(FXObject*, FXSelector, void*) {
147  disable();
148  return 1;
149 }
150 
151 // handle update event
152 long FXBaseObject::onUpdate(FXObject* sender, FXSelector, void*) {
153  if (flags & FLAG_ENABLED) {
154  sender->handle(this, FXSEL(SEL_UPDATE, FXWindow::ID_ENABLE), NULL);
155  } else {
156  sender->handle(this, FXSEL(SEL_UPDATE, FXWindow::ID_DISABLE), NULL);
157  }
158  return 1;
159 }
160 
161 }
162 
long onCmdEnable(FXObject *, FXSelector, void *)
virtual void disable()
disable us
Definition: FXBaseObject.h:182
virtual ~FXBaseObject()
dtor
virtual void enable()
enable us
Definition: FXBaseObject.h:177
FXApp * getApp()
application pointer
virtual void save(FXStream &store) const
save object to stream
FXSelector message
Definition: FXBaseObject.h:86
long onUpdate(FXObject *, FXSelector, void *)
virtual void setReadonly(FXbool mode=TRUE)
set modifiable mode
long onCmdDisable(FXObject *, FXSelector, void *)
virtual void load(FXStream &store)
load object from stream
FXObject * target
Definition: FXBaseObject.h:85
FXDEFMAP(FXRealSpinDialDial) FXSpinDialMap[]