From 3e3b87d62e6f31bb69f5b6e9859a80a9b5040cd9 Mon Sep 17 00:00:00 2001 From: Nathan Date: Sat, 12 Apr 2025 13:44:34 -0500 Subject: [PATCH] TerminalEmbed --- ExampleApps.nix | 46 +++++++++++++++++-- .../TerminalEmbed/TerminalEmbed.cpp | 31 +++++++++++++ .../TerminalEmbed/TerminalEmbed.h | 27 +++++++++++ 3 files changed, 100 insertions(+), 4 deletions(-) create mode 100644 src/example_apps/TerminalEmbed/TerminalEmbed.cpp create mode 100644 src/example_apps/TerminalEmbed/TerminalEmbed.h diff --git a/ExampleApps.nix b/ExampleApps.nix index e7f8e54..c2d87ba 100644 --- a/ExampleApps.nix +++ b/ExampleApps.nix @@ -27,7 +27,7 @@ ''; }; - + ImguiEmbed = pkgs.stdenvNoCC.mkDerivation { name = "Archimedes"; @@ -56,9 +56,47 @@ $imgui/*.cpp \ -DRENDERER_OPENGL \ -DWINDOW_GLFW \ - -DGUIMODULE \ - -DTESTIMGUI_STATIC \ - -DWINDOWMODULE_STATIC \ + -I src -I include -I $imgui -I . \ + -lGL -lglfw -lGLEW \ + -Wall \ + -o $name + ''; + + installPhase = '' + mkdir -p $out/bin + cp $name $out/bin + ''; + + }; + + TerminalEmbed = pkgs.stdenvNoCC.mkDerivation { + + name = "Archimedes"; + + src = ./.; + + imgui = inputs.imgui; + + nativeBuildInputs = with pkgs; [ + clang + ]; + + buildInputs = with pkgs; [ + glfw + glew + ]; + + buildPhase = '' + clang++ \ + src/example_apps/TerminalEmbed/*.cpp \ + modules/Terminal/src/*.cpp \ + modules/WindowModule/src/*.cpp \ + modules/ImguiModule/src/*.cpp \ + $imgui/backends/imgui_impl_glfw.cpp \ + $imgui/backends/imgui_impl_opengl3.cpp \ + $imgui/*.cpp \ + -DRENDERER_OPENGL \ + -DWINDOW_GLFW \ -I src -I include -I $imgui -I . \ -lGL -lglfw -lGLEW \ -Wall \ diff --git a/src/example_apps/TerminalEmbed/TerminalEmbed.cpp b/src/example_apps/TerminalEmbed/TerminalEmbed.cpp new file mode 100644 index 0000000..d6246b9 --- /dev/null +++ b/src/example_apps/TerminalEmbed/TerminalEmbed.cpp @@ -0,0 +1,31 @@ +#include "TerminalEmbed.h" + +void TerminalEmbed::run() { + + for(auto m : runOrder) + modules[m]->onLoad(); + + // Main loop + while (!done && !runOrder.empty()) { + + for(auto m : runOrder) { + modules[m]->run(); + } + + for(auto m : toClose) { + unload(m); + } + toClose.clear(); + + for(auto m : toOpen) { + if(std::holds_alternative(m)) { + load(std::get(m))->onLoad(); + } else { + load(std::get(m))->onLoad(); + } + } + toOpen.clear(); + } + + +} diff --git a/src/example_apps/TerminalEmbed/TerminalEmbed.h b/src/example_apps/TerminalEmbed/TerminalEmbed.h new file mode 100644 index 0000000..294397e --- /dev/null +++ b/src/example_apps/TerminalEmbed/TerminalEmbed.h @@ -0,0 +1,27 @@ +#define ENTRYPOINT +#include "Archimedes.h" + +#include "modules/Terminal/src/Terminal.h" + +class TerminalEmbed : public Archimedes::App { + + private: + + void printHelp() {}; + + public: + TerminalEmbed() { + Archimedes::Module* m = (Archimedes::Module*) new Terminal(Get(), nullptr); + + load(m); + }; + ~TerminalEmbed() {}; + + void handleArgs(const int& argc, char* argv[]) {}; + + void run(); + +}; + +#define APP_TYPE TerminalEmbed +#include "endApp.h"