Sceneview
 All Classes Functions Variables Enumerations Enumerator Groups Pages
viewer.hpp
1 // Copyright [2015] Albert Huang
2 
3 #ifndef SCENEVIEW_VIEWER_HPP__
4 #define SCENEVIEW_VIEWER_HPP__
5 
6 #include <map>
7 #include <memory>
8 
9 #include <QMainWindow>
10 #include <QTimer>
11 
12 #include <sceneview/viewport.hpp>
13 #include <sceneview/resource_manager.hpp>
14 #include <sceneview/scene.hpp>
15 
16 class QAction;
17 class QActionGroup;
18 class QCloseEvent;
19 class QDockWidget;
20 class QMenu;
21 class QMenuBar;
22 class QSettings;
23 
24 namespace sv {
25 
26 class RendererWidgetStack;
27 class InputHandlerWidgetStack;
28 class ViewHandler;
29 
51 class Viewer : public QMainWindow {
52  Q_OBJECT
53 
54  public:
55  explicit Viewer(QWidget* parent = nullptr);
56 
57  Viewport* GetViewport() { return viewport_; }
58 
59  void SetAutoRedrawInterval(int milliseconds);
60 
61  QMenu* FileMenu() { return file_menu_; }
62 
63  void SaveSettings(QSettings* settings);
64 
65  void LoadSettings(QSettings* settings);
66 
67  RendererWidgetStack* GetRendererWidgetStack() { return renderer_widget_stack_; }
68 
69  signals:
73  void Closing();
74 
75  private slots:
76  void OnRendererAdded(Renderer* renderer);
77 
78  void OnInputHandlerAdded(InputHandler* handler);
79 
80  void OnInputHandlerActivated(InputHandler* handler);
81 
82  private:
83  void CreateMenus();
84 
85  void closeEvent(QCloseEvent* event) override;
86 
87  void SetupShowHideAction(QAction* action, QDockWidget* widget);
88 
89  ResourceManager::Ptr resources_;
90  Scene::Ptr default_scene_;
91  Viewport* viewport_;
92 
93  RendererWidgetStack* renderer_widget_stack_;
94  InputHandlerWidgetStack* input_handler_widget_;
95 
96  QTimer redraw_timer_;
97 
98  QMenu* file_menu_;
99  QMenu* renderer_menu_;
100  QMenu* view_menu_;
101  QMenu* input_handler_menu_;
102  QActionGroup* input_action_group_;
103  std::map<InputHandler*, QAction*> input_handler_actions_;
104 };
105 
106 } // namespace sv
107 
108 #endif // SCENEVIEW_VIEWER_HPP__
void Closing()
Emitted when the window is about to close.
Contains and manages Renderer widgets.
Definition: renderer_widget_stack.hpp:27
A QMainWindow that can be used to provide an application-level UI.
Definition: viewer.hpp:51
Subclass this to add content in the scene and draw things.
Definition: renderer.hpp:73
Receive and handle mouse/keyboard input events.
Definition: input_handler.hpp:26
Widget that draws a scene and manages Renderer and InputHandler objects.
Definition: viewport.hpp:27
Contains and manages InputHandler widgets.
Definition: input_handler_widget_stack.hpp:31