Commit 35726dd7 authored by Gauthier Quesnel's avatar Gauthier Quesnel
Browse files

gui: improve win32/glfw port

parent 7721c0f4
......@@ -23,7 +23,7 @@ enum class simulation_status
void
node_editor_initialize();
void
bool
node_editor_show();
void
......
......@@ -147,8 +147,8 @@ main([[maybe_unused]] int argc, [[maybe_unused]] char* argv[])
// io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f,
// NULL, io.Fonts->GetGlyphRangesJapanese()); IM_ASSERT(font != NULL);
bool show_demo_window = true;
bool show_another_window = false;
//bool show_demo_window = true;
//bool show_another_window = false;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
// Main loop
......@@ -169,65 +169,8 @@ main([[maybe_unused]] int argc, [[maybe_unused]] char* argv[])
ImGui_ImplGlfw_NewFrame();
ImGui::NewFrame();
irt::node_editor_show();
// 1. Show the big demo window (Most of the sample code is in
// ImGui::ShowDemoWindow()! You can browse its code to learn more about
// Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End
// pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello,
// world!" and append into it.
ImGui::Text(
"This is some useful text."); // Display some text (you can use a
// format strings too)
ImGui::Checkbox("Demo Window",
&show_demo_window); // Edit bools storing our
// window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat(
"float",
&f,
0.0f,
1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3(
"clear color",
(float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button(
"Button")) // Buttons return true when clicked (most widgets
// return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)",
1000.0f / ImGui::GetIO().Framerate,
ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window) {
ImGui::Begin(
"Another Window",
&show_another_window); // Pass a pointer to our bool variable
// (the window will have a closing button
// that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
if (!irt::node_editor_show())
glfwSetWindowShouldClose(window, GLFW_TRUE);
// Rendering
ImGui::Render();
......
......@@ -115,8 +115,8 @@ int main(int, char**)
//IM_ASSERT(font != NULL);
// Our state
bool show_demo_window = true;
bool show_another_window = false;
//bool show_demo_window = true;
//bool show_another_window = false;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
// Main loop
......@@ -141,44 +141,8 @@ int main(int, char**)
ImGui_ImplWin32_NewFrame();
ImGui::NewFrame();
irt::node_editor_show();
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
if (!irt::node_editor_show())
::PostMessage(hwnd, WM_CLOSE, 0, 0);
// Rendering
FrameContext* frameCtxt = WaitForNextFrameResources();
......
......@@ -1380,11 +1380,13 @@ node_editor_initialize()
}
}
void
bool
node_editor_show()
{
static bool show_log = true;
static bool show_simulation = true;
static bool show_demo_window = false;
bool ret = true;
if (ImGui::BeginMainMenuBar()) {
if (ImGui::BeginMenu("File")) {
......@@ -1392,11 +1394,15 @@ node_editor_show()
if (auto* ed = editors_new(); ed)
ed->context = imnodes::EditorContextCreate();
}
ImGui::Separator();
if (ImGui::MenuItem("Quit"))
ret = false;
ImGui::EndMenu();
}
if (ImGui::BeginMenu("Window")) {
editor* ed = nullptr;
while (editors.next(ed))
ImGui::MenuItem(ed->name.c_str(), nullptr, &ed->show);
......@@ -1407,6 +1413,12 @@ node_editor_show()
ImGui::EndMenu();
}
if (ImGui::BeginMenu("Help")) {
ImGui::MenuItem("Demo window", nullptr, &show_demo_window);
ImGui::EndMenu();
}
ImGui::EndMainMenuBar();
}
......@@ -1426,6 +1438,11 @@ node_editor_show()
if (show_simulation)
show_simulation_box(&show_simulation);
if (show_demo_window)
ImGui::ShowDemoWindow();
return ret;
}
void
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment