#ifndef CANVAS_GUI_MGR_HXX_
#define CANVAS_GUI_MGR_HXX_
-#include <Canvas/canvas_fwd.hpp>
-#include <Canvas/placement.hxx>
+#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:
- osg::ref_ptr<GUIEventHandler> _event_handler;
- osg::ref_ptr<osg::MatrixTransform> _transform;
-
- simgear::PropertyObject<int> _width,
- _height;
- canvas::WindowWeakPtr _last_push;
- float _last_x,
- _last_y;
-
- canvas::WindowPtr getWindow(size_t i);
- canvas::Placements addPlacement( const SGPropertyNode*,
- CanvasPtr canvas );
+ simgear::canvas::GroupPtr _desktop;
+ osg::ref_ptr<GUIEventHandler> _event_handler;
- bool handleMouse(const osgGA::GUIEventAdapter& ea);
- void handleResize(int x, int y, int width, int height);
+ simgear::canvas::Placements
+ addWindowPlacement( SGPropertyNode* placement,
+ simgear::canvas::CanvasPtr canvas );
};
#endif /* CANVAS_GUI_MGR_HXX_ */