VOXEDIT: fixed script editor placement via dock id

master
Martin Gerhardy 2022-02-06 14:34:49 +01:00
parent 12fbd2ae7f
commit 263c7a6323
4 changed files with 35 additions and 27 deletions

View File

@ -231,7 +231,7 @@ void MainWindow::rightWidget() {
_animationPanel.update(TITLE_ANIMATION_SETTINGS, _lastExecutedCommand);
_layerPanel.update(TITLE_LAYERS, &_layerSettings, _lastExecutedCommand);
_sceneGraphPanel.update(_scene->camera(), TITLE_SCENEGRAPH);
_scriptPanel.update(TITLE_SCRIPTPANEL, WINDOW_TITLE_SCRIPT_EDITOR, _app);
_scriptPanel.update(TITLE_SCRIPTPANEL, WINDOW_TITLE_SCRIPT_EDITOR, _app, _dockIdMainDown);
_noisePanel.update(TITLE_NOISEPANEL);
_treePanel.update(TITLE_TREES);
_lsystemPanel.update(TITLE_LSYSTEMPANEL);
@ -433,29 +433,29 @@ void MainWindow::update() {
ImGui::DockBuilderRemoveNode(dockspaceId);
ImGui::DockBuilderAddNode(dockspaceId, ImGuiDockNodeFlags_DockSpace);
ImGui::DockBuilderSetNodeSize(dockspaceId, viewport->WorkSize);
ImGuiID dockIdMain = dockspaceId;
ImGuiID dockIdLeft = ImGui::DockBuilderSplitNode(dockIdMain, ImGuiDir_Left, 0.10f, nullptr, &dockIdMain);
ImGuiID dockIdRight = ImGui::DockBuilderSplitNode(dockIdMain, ImGuiDir_Right, 0.20f, nullptr, &dockIdMain);
ImGuiID dockIdLeftDown = ImGui::DockBuilderSplitNode(dockIdLeft, ImGuiDir_Down, 0.50f, nullptr, &dockIdLeft);
ImGuiID dockIdRightDown = ImGui::DockBuilderSplitNode(dockIdRight, ImGuiDir_Down, 0.50f, nullptr, &dockIdRight);
ImGui::DockBuilderDockWindow(TITLE_PALETTE, dockIdLeft);
ImGui::DockBuilderDockWindow(TITLE_POSITIONS, dockIdRight);
ImGui::DockBuilderDockWindow(TITLE_MODIFIERS, dockIdRight);
ImGui::DockBuilderDockWindow(TITLE_ANIMATION_SETTINGS, dockIdRight);
ImGui::DockBuilderDockWindow(TITLE_LAYERS, dockIdRightDown);
ImGui::DockBuilderDockWindow(TITLE_TREES, dockIdRightDown);
ImGui::DockBuilderDockWindow(TITLE_SCENEGRAPH, dockIdRightDown);
ImGui::DockBuilderDockWindow(TITLE_NOISEPANEL, dockIdRightDown);
ImGui::DockBuilderDockWindow(TITLE_LSYSTEMPANEL, dockIdRightDown);
ImGui::DockBuilderDockWindow(TITLE_SCRIPTPANEL, dockIdRightDown);
ImGui::DockBuilderDockWindow(TITLE_TOOLS, dockIdLeftDown);
ImGui::DockBuilderDockWindow(_scene->id().c_str(), dockIdMain);
ImGui::DockBuilderDockWindow(_sceneLeft->id().c_str(), dockIdMain);
ImGui::DockBuilderDockWindow(_sceneTop->id().c_str(), dockIdMain);
ImGui::DockBuilderDockWindow(_sceneFront->id().c_str(), dockIdMain);
ImGui::DockBuilderDockWindow(_sceneAnimation->id().c_str(), dockIdMain);
ImGuiID dockIdMainDown = ImGui::DockBuilderSplitNode(dockIdMain, ImGuiDir_Down, 0.50f, nullptr, &dockIdMain);
ImGui::DockBuilderDockWindow(WINDOW_TITLE_SCRIPT_EDITOR, dockIdMainDown);
_dockIdMain = dockspaceId;
_dockIdLeft = ImGui::DockBuilderSplitNode(_dockIdMain, ImGuiDir_Left, 0.10f, nullptr, &_dockIdMain);
_dockIdRight = ImGui::DockBuilderSplitNode(_dockIdMain, ImGuiDir_Right, 0.20f, nullptr, &_dockIdMain);
_dockIdLeftDown = ImGui::DockBuilderSplitNode(_dockIdLeft, ImGuiDir_Down, 0.50f, nullptr, &_dockIdLeft);
_dockIdRightDown = ImGui::DockBuilderSplitNode(_dockIdRight, ImGuiDir_Down, 0.50f, nullptr, &_dockIdRight);
_dockIdMainDown = ImGui::DockBuilderSplitNode(_dockIdMain, ImGuiDir_Down, 0.20f, nullptr, &_dockIdMain);
ImGui::DockBuilderDockWindow(TITLE_PALETTE, _dockIdLeft);
ImGui::DockBuilderDockWindow(TITLE_POSITIONS, _dockIdRight);
ImGui::DockBuilderDockWindow(TITLE_MODIFIERS, _dockIdRight);
ImGui::DockBuilderDockWindow(TITLE_ANIMATION_SETTINGS, _dockIdRight);
ImGui::DockBuilderDockWindow(TITLE_LAYERS, _dockIdRightDown);
ImGui::DockBuilderDockWindow(TITLE_TREES, _dockIdRightDown);
ImGui::DockBuilderDockWindow(TITLE_SCENEGRAPH, _dockIdRightDown);
ImGui::DockBuilderDockWindow(TITLE_NOISEPANEL, _dockIdRightDown);
ImGui::DockBuilderDockWindow(TITLE_LSYSTEMPANEL, _dockIdRightDown);
ImGui::DockBuilderDockWindow(TITLE_SCRIPTPANEL, _dockIdRightDown);
ImGui::DockBuilderDockWindow(TITLE_TOOLS, _dockIdLeftDown);
ImGui::DockBuilderDockWindow(_scene->id().c_str(), _dockIdMain);
ImGui::DockBuilderDockWindow(_sceneLeft->id().c_str(), _dockIdMain);
ImGui::DockBuilderDockWindow(_sceneTop->id().c_str(), _dockIdMain);
ImGui::DockBuilderDockWindow(_sceneFront->id().c_str(), _dockIdMain);
ImGui::DockBuilderDockWindow(_sceneAnimation->id().c_str(), _dockIdMain);
ImGui::DockBuilderDockWindow(WINDOW_TITLE_SCRIPT_EDITOR, _dockIdMainDown);
ImGui::DockBuilderFinish(dockspaceId);
init = true;
}

View File

@ -52,6 +52,13 @@ private:
Viewport* _sceneFront = nullptr;
Viewport* _sceneAnimation = nullptr;
ImGuiID _dockIdMain = 0;
ImGuiID _dockIdLeft = 0;
ImGuiID _dockIdRight = 0;
ImGuiID _dockIdLeftDown = 0;
ImGuiID _dockIdRightDown = 0;
ImGuiID _dockIdMainDown = 0;
bool _popupUnsaved = false;
bool _popupNewScene = false;
bool _popupFailedToSave = false;

View File

@ -28,7 +28,7 @@ void ScriptPanel::reloadScriptParameters(const core::String& script) {
}
}
void ScriptPanel::update(const char *title, const char *scriptEditorTitle, ui::imgui::IMGUIApp* app) {
void ScriptPanel::update(const char *title, const char *scriptEditorTitle, ui::imgui::IMGUIApp* app, ImGuiID dockIdMainDown) {
if (ImGui::Begin(title)) {
core_trace_scoped(ScriptPanel);
if (_scripts.empty()) {
@ -157,7 +157,8 @@ void ScriptPanel::update(const char *title, const char *scriptEditorTitle, ui::i
ImGui::End();
if (_scriptEditor) {
if (ImGui::Begin(scriptEditorTitle, &_scriptEditor, ImGuiWindowFlags_MenuBar | ImGuiWindowFlags_NoSavedSettings)) {
ImGui::SetNextWindowDockID(dockIdMainDown, ImGuiCond_Appearing);
if (ImGui::Begin(scriptEditorTitle, &_scriptEditor, ImGuiWindowFlags_MenuBar | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_HorizontalScrollbar)) {
if (ImGui::BeginMenuBar()) {
if (ImGui::BeginMenu(ICON_FA_FILE " File##scripteditor")) {
if (ImGui::MenuItem(ICON_FA_CHECK " Apply and execute##scripteditor")) {

View File

@ -24,7 +24,7 @@ private:
void reloadScriptParameters(const core::String& script);
public:
void update(const char *title, const char *scriptEditorTitle, ui::imgui::IMGUIApp* app);
void update(const char *title, const char *scriptEditorTitle, ui::imgui::IMGUIApp* app, ImGuiID dockIdMainDown);
};
}