#include "canvas_fwd.hpp"
#include <simgear/canvas/canvas_fwd.hxx>
+#include <simgear/canvas/elements/CanvasGroup.hxx>
#include <simgear/props/PropertyBasedMgr.hxx>
#include <simgear/props/propertyObject.hxx>
class GUIEventHandler;
class GUIMgr:
- public simgear::PropertyBasedMgr
+ public SGSubsystem
{
public:
GUIMgr();
+ canvas::WindowPtr createWindow(const std::string& name = "");
+
virtual void init();
virtual void shutdown();
- virtual void elementCreated(simgear::PropertyBasedElementPtr element);
+ virtual void update(double dt);
- bool handleEvent(const osgGA::GUIEventAdapter& ea);
+ /**
+ * Get simgear::canvas::Group containing all windows
+ */
+ simgear::canvas::GroupPtr getDesktop();
protected:
+ simgear::canvas::GroupPtr _desktop;
osg::ref_ptr<GUIEventHandler> _event_handler;
- osg::ref_ptr<osg::MatrixTransform> _transform;
- SGPropertyChangeCallback<GUIMgr> _cb_mouse_mode;
- bool _handle_events;
-
- simgear::PropertyObject<int> _width,
- _height;
-
- canvas::WindowWeakPtr _last_push,
- _last_mouse_over,
- _resize_window;
- uint8_t _resize;
- int _last_cursor;
- float _last_x,
- _last_y;
- double _last_scroll_time;
-
- canvas::WindowPtr getWindow(size_t i);
simgear::canvas::Placements
- addPlacement(SGPropertyNode*, simgear::canvas::CanvasPtr canvas);
-
- bool handleMouse(const osgGA::GUIEventAdapter& ea);
- void handleResize(int x, int y, int width, int height);
- void handleMouseMode(SGPropertyNode* node);
+ addWindowPlacement( SGPropertyNode* placement,
+ simgear::canvas::CanvasPtr canvas );
};
#endif /* CANVAS_GUI_MGR_HXX_ */