#endif
#include <plib/puAux.h>
-#include <plib/sg.h>
#include <simgear/compiler.h> // for SG_USING_STD
#include <simgear/props/props.hxx>
#include <simgear/misc/sg_path.hxx>
+#include <simgear/props/condition.hxx>
#include <vector>
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; };
*/
virtual void update ();
+ /**
+ * Recompute the dialog's layout
+ */
+ void relayout();
+
+
+ void setNeedsLayout() {
+ _needsRelayout = true;
+ }
private:
enum {
// 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;
// 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
PropertyObject (const char * name,
puObject * object,
SGPropertyNode_ptr node);
- string name;
+ std::string name;
puObject * object;
SGPropertyNode_ptr node;
};
vector<PropertyObject *> _propertyObjects;
vector<PropertyObject *> _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<ConditionalObject> ConditionalObjectRef;
+ vector<ConditionalObjectRef> _conditionalObjects;
};
//
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 {