Vuo  2.1.0
VuoCodeWindow.hh
Go to the documentation of this file.
1 
10 #pragma once
11 
13 class VuoCodeGutter;
14 class VuoCodeIssueList;
15 class VuoCompiler;
16 class VuoCompilerIssues;
23 class VuoMetadataEditor;
25 class VuoRecentFileMenu;
26 class VuoRendererPort;
28 
29 #include "VuoMainWindow.hh"
30 #include "VuoShaderFile.hh"
31 
36 {
37  Q_OBJECT
38 
39 public:
40  explicit VuoCodeWindow(const string &sourcePath);
41  ~VuoCodeWindow(void);
42 
43  void setIssues(VuoCompilerIssues *compilerIssues);
44  string getNodeClassName(void);
45 
46  void setAsActiveWindow();
47  void updateReloadAction();
48  QMenu * getFileMenu();
50  void setIncludeInRecentFileMenu(bool include);
51 
52  QAction * getRaiseDocumentAction() const;
53  QAction * getZoom11Action() const;
54  QAction * getZoomInAction() const;
55  QAction * getZoomOutAction() const;
56 
57  static void newShaderWithTemplate(QAction *sender);
58 
62 
63 public slots:
67 
68 private:
69  void populateMenus(void);
70  void save();
71  void saveAs();
72  void saveToPath(QString savePath);
73  bool isNewUnsavedDocument();
74  void closeEvent(QCloseEvent *event);
75 
76  void relinquishSourcePath(void);
77  void setSourcePath(const string &sourcePath);
78  void updateWrapperComposition(void);
79  void bringNodeClassInSyncWithSourceCode(void);
80  void bringStoredShaderInSyncWithSourceCode(void);
81  void bringStoredShaderInSyncWithPublishedInputPorts(VuoCompilerPublishedPort *publishedInputAdded = nullptr, const pair<string, string> &publishedInputRenamed = {}, const string &publishedInputRemoved = "");
82  void bringStoredShaderInSyncWithCompositionMetadata(void);
83 
84  void updateModifiedIndicator();
85  void updateColor();
86  void updateCanvasOpacity();
87  void updateToolbar();
88  void resizeEvent(QResizeEvent *event);
89  void updateWindowMenu();
90  void toggleInputPortSidebarVisibility();
91  void updateInputPortSidebarMenuItem();
92  void toggleDocumentationSidebarVisibility();
93  void updateDocumentationSidebarMenuItem();
94  void showPublishedInputEditor(VuoRendererPort *port);
95 private slots:
96  void showPublishedPortNameEditor(VuoRendererPublishedPort *port);
97  void changePublishedPortDetails(VuoRendererPublishedPort *port, json_object *newDetails);
98 private:
99  void changePublishedPortName(VuoRendererPublishedPort *port, string newName);
100  void addPublishedPort(string typeName, bool isInput);
101  void deletePublishedPort(VuoRendererPublishedPort *port);
102  void changeMetadata(int dialogResult);
103 
104  void showBuildActivityIndicator();
105  void hideBuildActivityIndicator(QString buildError);
106  void showStopActivityIndicator();
107  void hideStopActivityIndicator();
108 
109  void zoom11();
110  void zoomIn();
111  void zoomOut();
112 
113  void copy();
114 
115  VuoPublishedPortSidebar *inputPortSidebar;
116  VuoDocumentationSidebar *documentationSidebar;
117  VuoEditorWindowToolbar *toolbar;
118  QAction *saveAction;
119  QAction *toggleInputPortSidebarAction;
120  QAction *toggleDocumentationSidebarAction;
121  QAction *raiseDocumentAction;
122  QAction *zoom11Action;
123  QAction *zoomInAction;
124  QAction *zoomOutAction;
125  QAction *runAction;
126  QAction *stopAction;
127  QAction *restartAction;
128  QAction *reloadAction;
129  QMenu *fileMenu;
130  QMenu *windowMenu;
131  VuoRecentFileMenu *recentFileMenu;
132 
133  VuoEditorComposition *wrapperComposition;
134  VuoCompiler *compiler;
135  VuoShaderFile *shaderFile;
136  VuoInputEditorManager *inputEditorManager;
137  VuoMetadataEditor *metadataEditor;
138 
139  bool includeInRecentFileMenu;
140  bool publishedInputsModified;
141  bool metadataModified;
142  bool closing;
143 
144  friend VuoCodeGutter;
145  friend class TestVuoEditor;
146 };