forked from Green-Sky/tomato
add debug start screen ui + can load plugins
This commit is contained in:
parent
5547ff6d2b
commit
c9672bf352
@ -6,7 +6,7 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
MainScreen::MainScreen(SDL_Renderer* renderer_, std::string save_path) :
|
||||
MainScreen::MainScreen(SDL_Renderer* renderer_, std::string save_path, std::vector<std::string> plugins) :
|
||||
renderer(renderer_),
|
||||
rmm(cr),
|
||||
mts(rmm),
|
||||
@ -42,6 +42,7 @@ MainScreen::MainScreen(SDL_Renderer* renderer_, std::string save_path) :
|
||||
|
||||
g_provideInstance<ToxI>("ToxI", "host", &tc);
|
||||
g_provideInstance<ToxEventProviderI>("ToxEventProviderI", "host", &tc);
|
||||
g_provideInstance<ToxContactModel2>("ToxContactModel2", "host", &tcm);
|
||||
|
||||
// TODO: pm?
|
||||
|
||||
@ -50,6 +51,14 @@ MainScreen::MainScreen(SDL_Renderer* renderer_, std::string save_path) :
|
||||
g_provideInstance<TextureUploaderI>("TextureUploaderI", "host", &sdlrtu);
|
||||
}
|
||||
|
||||
for (const auto& ppath : plugins) {
|
||||
if (!pm.add(ppath)) {
|
||||
std::cerr << "MS error: loading plugin '" << ppath << "' failed!\n";
|
||||
// thow?
|
||||
assert(false && "failed to load plugin");
|
||||
}
|
||||
}
|
||||
|
||||
conf.dump();
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,7 @@ struct MainScreen final : public Screen {
|
||||
|
||||
ChatGui4 cg;
|
||||
|
||||
MainScreen(SDL_Renderer* renderer_, std::string save_path);
|
||||
MainScreen(SDL_Renderer* renderer_, std::string save_path, std::vector<std::string> plugins);
|
||||
~MainScreen(void);
|
||||
|
||||
bool handleEvent(SDL_Event& e) override;
|
||||
|
@ -2,7 +2,10 @@
|
||||
|
||||
#include "./main_screen.hpp"
|
||||
|
||||
#include <imgui/imgui.h>
|
||||
|
||||
#include <memory>
|
||||
#include <filesystem>
|
||||
|
||||
StartScreen::StartScreen(SDL_Renderer* renderer) : _renderer(renderer) {
|
||||
}
|
||||
@ -10,6 +13,7 @@ StartScreen::StartScreen(SDL_Renderer* renderer) : _renderer(renderer) {
|
||||
Screen* StartScreen::poll(bool&) {
|
||||
|
||||
// TODO: imgui tox profile selector?
|
||||
|
||||
// +----------------------------
|
||||
// | |*tox profile*| plugins |
|
||||
// | +------+ +--------
|
||||
@ -18,7 +22,56 @@ Screen* StartScreen::poll(bool&) {
|
||||
// | +------+ +--------
|
||||
// +----------------------------
|
||||
|
||||
auto new_screen = std::make_unique<MainScreen>(_renderer, "tomato.tox");
|
||||
if (ImGui::BeginTabBar("view")) {
|
||||
if (ImGui::BeginTabItem("load profile")) {
|
||||
ImGui::Text("TODO: profile path");
|
||||
ImGui::Text("TODO: profile password");
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
if (ImGui::BeginTabItem("create profile")) {
|
||||
ImGui::Text("TODO: profile path");
|
||||
ImGui::Text("TODO: profile name");
|
||||
ImGui::Text("TODO: profile password");
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
if (ImGui::BeginTabItem("plugins")) {
|
||||
// list of selected plugins (in order)
|
||||
for (auto it = queued_plugin_paths.begin(); it != queued_plugin_paths.end();) {
|
||||
if (ImGui::SmallButton("-")) {
|
||||
it = queued_plugin_paths.erase(it);
|
||||
continue;
|
||||
}
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::TextUnformatted(it->c_str());
|
||||
|
||||
it++;
|
||||
}
|
||||
|
||||
if (ImGui::Button("+")) {
|
||||
_fss.requestFile(
|
||||
[](const auto& path) -> bool { return std::filesystem::is_regular_file(path); },
|
||||
[this](const auto& path) {
|
||||
queued_plugin_paths.push_back(path.string());
|
||||
},
|
||||
[](){}
|
||||
);
|
||||
}
|
||||
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
ImGui::EndTabBar();
|
||||
}
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
if (ImGui::Button("load", {60, 25})) {
|
||||
auto new_screen = std::make_unique<MainScreen>(_renderer, "tomato.tox", queued_plugin_paths);
|
||||
return new_screen.release();
|
||||
}
|
||||
|
||||
_fss.render();
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,11 @@
|
||||
|
||||
#include "./screen.hpp"
|
||||
|
||||
#include "./file_selector.hpp"
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
// fwd
|
||||
extern "C" {
|
||||
struct SDL_Renderer;
|
||||
@ -9,6 +14,9 @@ extern "C" {
|
||||
|
||||
struct StartScreen final : public Screen {
|
||||
SDL_Renderer* _renderer;
|
||||
FileSelector _fss;
|
||||
|
||||
std::vector<std::string> queued_plugin_paths;
|
||||
|
||||
StartScreen(void) = delete;
|
||||
StartScreen(SDL_Renderer* renderer);
|
||||
|
Loading…
Reference in New Issue
Block a user