X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FGUI%2Fdialog.hxx;h=63aef704b1d2ec3354c7b4261749a2054db43515;hb=5cad5aa7da2476ca8323a61f81dea59676dca085;hp=749c355cbdd6f215e75e7b5441e95cac783016db;hpb=a6db6d89ff41a619569e6433409e8bf62ff98499;p=flightgear.git diff --git a/src/GUI/dialog.hxx b/src/GUI/dialog.hxx index 749c355cb..63aef704b 100644 --- a/src/GUI/dialog.hxx +++ b/src/GUI/dialog.hxx @@ -12,6 +12,7 @@ #include // for SG_USING_STD #include #include +#include #include using std::vector; @@ -91,6 +92,15 @@ public: */ virtual void update (); + /** + * Recompute the dialog's layout + */ + void relayout(); + + + void setNeedsLayout() { + _needsRelayout = true; + } private: enum { @@ -127,6 +137,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; @@ -141,6 +156,8 @@ private: // last position. SGPropertyNode_ptr _props; + bool _needsRelayout; + // Nasal module. string _module; SGPropertyNode_ptr _nasal_close; @@ -160,6 +177,24 @@ private: }; 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,6 +258,8 @@ 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) {} + + void update(); }; class fgSelectBox : public fgValueList, public puaSelectBox {