X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FGUI%2FFGPUIDialog.hxx;h=a21c4ec8c575b4d98d7edf29a2c34e3707ca2514;hb=f2c267f5d736652f602aa236554000aa484fe423;hp=e3a158e8bc2daef1205e158d40c0d81f64fe70b9;hpb=0025dfb9bccc45d7f96b1badbe7c867679669c9e;p=flightgear.git diff --git a/src/GUI/FGPUIDialog.hxx b/src/GUI/FGPUIDialog.hxx index e3a158e8b..a21c4ec8c 100644 --- a/src/GUI/FGPUIDialog.hxx +++ b/src/GUI/FGPUIDialog.hxx @@ -19,6 +19,7 @@ #define FGCLASS_AIRPORTLIST 0x00000002 #define FGCLASS_PROPERTYLIST 0x00000004 #define FGCLASS_WAYPOINTLIST 0x00000008 +#define FGCLASS_LOGLIST 0x00000010 class GUI_ID { public: GUI_ID(int id) : id(id) {} virtual ~GUI_ID() {} int id; }; @@ -99,6 +100,12 @@ public: void setNeedsLayout() { _needsRelayout = true; } + + class ActiveWidget + { + public: + virtual void update() = 0; + }; private: enum { @@ -190,88 +197,8 @@ private: typedef SGSharedPtr ConditionalObjectRef; std::vector _conditionalObjects; -}; - -// -// Custom subclass of puPopup to implement "draggable" windows in the -// interface. Note that this is a subclass of puPopup, not -// puDialogBox. Sadly, PUI (mis)uses subclassing to implement a -// boolean property: modality. That means that we can't implement -// dragging of both puPopup windows and puDialogBoxes with the same -// code. Rather than duplicate code, I've chosen to implement only -// "non-modal dragability" here. Modal dialog boxes (like the exit -// confirmation) are not draggable. -// -class fgPopup : public puPopup { -public: - fgPopup(int x, int y, bool r = true, bool d = true) : - puPopup(x, y), _draggable(d), _resizable(r), _dragging(false) - {} - int checkHit(int b, int up, int x, int y); - int checkKey(int key, int updown); - int getHitObjects(puObject *, int x, int y); - puObject *getKeyObject(puObject *, int key); - puObject *getActiveInputField(puObject *); - void applySize(puObject *); -private: - enum { LEFT = 1, RIGHT = 2, TOP = 4, BOTTOM = 8 }; - bool _draggable; - bool _resizable; - bool _dragging; - int _resizing; - int _start_cursor; - int _cursor; - int _dlgX, _dlgY, _dlgW, _dlgH; - int _startX, _startY; -}; - - -class fgValueList { -public: - fgValueList(SGPropertyNode *p); - virtual ~fgValueList(); - virtual void update(); - -protected: - char **_list; - -private: - void make_list(); - void destroy_list(); - SGPropertyNode_ptr _props; -}; - - -class fgList : public fgValueList, public puaList, public GUI_ID { -public: - fgList(int x1, int y1, int x2, int y2, SGPropertyNode *p, int sw) : - fgValueList(p), puaList(x1, y1, x2, y2, _list, sw), GUI_ID(FGCLASS_LIST) {} - void update(); -}; - -class fgComboBox : public fgValueList, public puaComboBox { -public: - fgComboBox(int x1, int y1, int x2, int y2, SGPropertyNode *p, bool editable) : - fgValueList(p), - puaComboBox(x1, y1, x2, y2, _list, editable), - _inHit(false) - {} - - void update(); - - virtual void setSize(int w, int h); - virtual int checkHit(int b, int up, int x, int y); - - virtual void recalc_bbox(); -private: - bool _inHit; -}; - -class fgSelectBox : public fgValueList, public puaSelectBox { -public: - fgSelectBox(int x1, int y1, int x2, int y2, SGPropertyNode *p) : - fgValueList(p), puaSelectBox(x1, y1, x2, y2, _list) {} + std::vector _activeWidgets; }; #endif // __DIALOG_HXX