X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FGUI%2Fdialog.hxx;h=10739280d075fd74abc654fb3366966970641ce2;hb=39bc2d53ff27949ee01a840360c33bfe232baf0a;hp=0751a4a4fd108b315a89fdb7f1c0ec61b5fef06f;hpb=050221c30697d5abc9658f5b626418286895c16b;p=flightgear.git diff --git a/src/GUI/dialog.hxx b/src/GUI/dialog.hxx index 0751a4a4f..10739280d 100644 --- a/src/GUI/dialog.hxx +++ b/src/GUI/dialog.hxx @@ -8,11 +8,11 @@ #endif #include -#include #include // for SG_USING_STD #include #include +#include #include using std::vector; @@ -22,7 +22,9 @@ using std::vector; #define FGCLASS_LIST 0x00000001 #define FGCLASS_AIRPORTLIST 0x00000002 #define FGCLASS_PROPERTYLIST 0x00000004 -class GUI_ID { public: GUI_ID(int id) : id(id) {} int id; }; +#define FGCLASS_WAYPOINTLIST 0x00000008 + +class GUI_ID { public: GUI_ID(int id) : id(id) {} virtual ~GUI_ID() {} int id; }; @@ -92,6 +94,15 @@ public: */ virtual void update (); + /** + * Recompute the dialog's layout + */ + void relayout(); + + + void setNeedsLayout() { + _needsRelayout = true; + } private: enum { @@ -128,6 +139,11 @@ private: // return key code number for keystring int getKeyCode(const char *keystring); + /** + * Apply layout sizes to a tree of puObjects + */ + void applySize(puObject *object); + // The top-level PUI object. puObject * _object; @@ -142,8 +158,10 @@ private: // last position. SGPropertyNode_ptr _props; + bool _needsRelayout; + // Nasal module. - string _module; + std::string _module; SGPropertyNode_ptr _nasal_close; // PUI provides no way for userdata to be deleted automatically @@ -155,12 +173,30 @@ private: PropertyObject (const char * name, puObject * object, SGPropertyNode_ptr node); - string name; + std::string name; puObject * object; SGPropertyNode_ptr node; }; vector _propertyObjects; vector _liveObjects; + + class ConditionalObject : public SGConditional + { + public: + ConditionalObject(const std::string& aName, puObject* aPu) : + _name(aName), + _pu(aPu) + { ; } + + void update(FGDialog* aDlg); + + private: + const std::string _name; + puObject* _pu; + }; + + typedef SGSharedPtr ConditionalObjectRef; + vector _conditionalObjects; }; // @@ -223,7 +259,17 @@ public: 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) {} + fgValueList(p), + puaComboBox(x1, y1, x2, y2, _list, editable), + _inHit(false) + {} + + void update(); + + virtual int checkHit(int b, int up, int x, int y); + +private: + bool _inHit; }; class fgSelectBox : public fgValueList, public puaSelectBox {