Further improved UI/UX of welcome screen

This commit is contained in:
WerWolv 2021-01-30 23:02:03 +01:00
parent 5c7a529fa1
commit 073eee8fab
5 changed files with 38 additions and 9 deletions

View file

@ -54,7 +54,7 @@ namespace ImGui {
const ImVec2 label_size = CalcTextSize(label, NULL, true);
ImVec2 pos = window->DC.CursorPos;
ImVec2 size = CalcItemSize(size_arg, label_size.x, label_size.y);
ImVec2 size = CalcItemSize(size_arg, label_size.x, label_size.y) + ImVec2(g.FontSize + style.FramePadding.x * 2, 0.0f);
const ImRect bb(pos, pos + size);
if (!ItemAdd(bb, id))
@ -70,7 +70,7 @@ namespace ImGui {
PushStyleColor(ImGuiCol_Text, ImU32(col));
RenderBullet(window->DrawList, bb.Min + ImVec2(style.FramePadding.x + g.FontSize * 0.5f, g.FontSize * 0.5f), col);
RenderText(bb.Min + ImVec2(g.FontSize + style.FramePadding.x * 2, 0.0f), label, nullptr, false);
GetWindowDrawList()->AddLine(bb.Min + ImVec2(style.FramePadding.x, size.y), pos + size + ImVec2(g.FontSize * 2, 0), ImU32(col));
GetWindowDrawList()->AddLine(bb.Min + ImVec2(style.FramePadding.x, size.y), pos + size, ImU32(col));
ImGui::NewLine();
PopStyleColor();

View file

@ -31,7 +31,7 @@ namespace hex::dp {
[[nodiscard]] std::string_view getName() const { return this->m_name; }
void addConnectedAttribute(u32 linkId, Attribute *to) { this->m_connectedAttributes.insert({ linkId, to }); }
void removeConnectedAttribute(u32 linkId) { printf("%d\n", this->m_connectedAttributes.erase(linkId)); }
void removeConnectedAttribute(u32 linkId) { this->m_connectedAttributes.erase(linkId); }
[[nodiscard]] std::map<u32, Attribute*>& getConnectedAttributes() { return this->m_connectedAttributes; }
[[nodiscard]] Node* getParentNode() { return this->m_parentNode; }

View file

@ -147,6 +147,12 @@ namespace hex {
this->openFile(path);
this->getWindowOpenState() = true;
});
} else if (std::any_cast<const char*>(name) == std::string("Open Project")) {
View::openFileBrowser("Open Project", imgui_addons::ImGuiFileBrowser::DialogMode::OPEN, ".hexproj", [this](auto path) {
ProjectFile::load(path);
View::postEvent(Events::ProjectFileLoad);
this->getWindowOpenState() = true;
});
}
});
}

View file

@ -188,15 +188,12 @@ namespace hex {
switch (theme) {
default:
case 0: /* Dark theme */
ImGui::StyleColorsDark();
this->m_textEditor.SetPalette(TextEditor::GetDarkPalette());
break;
case 1: /* Light theme */
ImGui::StyleColorsLight();
this->m_textEditor.SetPalette(TextEditor::GetLightPalette());
break;
case 2: /* Classic theme */
ImGui::StyleColorsClassic();
this->m_textEditor.SetPalette(TextEditor::GetRetroBluePalette());
break;
}

View file

@ -66,11 +66,33 @@ namespace hex {
}
#endif
ContentRegistry::Settings::load();
View::postEvent(Events::SettingsChanged);
this->initGLFW();
this->initImGui();
ImGui::GetStyle().Colors[ImGuiCol_DockingEmptyBg] = ImGui::GetStyle().Colors[ImGuiCol_WindowBg];
EventManager::subscribe(Events::SettingsChanged, this, [](auto) -> std::any {
int theme = ContentRegistry::Settings::getSettingsData()["Interface"]["Color theme"];
switch (theme) {
default:
case 0: /* Dark theme */
ImGui::StyleColorsDark();
break;
case 1: /* Light theme */
ImGui::StyleColorsLight();
break;
case 2: /* Classic theme */
ImGui::StyleColorsClassic();
break;
}
ImGui::GetStyle().Colors[ImGuiCol_DockingEmptyBg] = ImGui::GetStyle().Colors[ImGuiCol_WindowBg];
return { };
});
ContentRegistry::Settings::load();
View::postEvent(Events::SettingsChanged);
}
Window::~Window() {
@ -83,6 +105,8 @@ namespace hex {
ContentRegistry::Views::getEntries().clear();
this->deinitPlugins();
EventManager::unsubscribe(Events::SettingsChanged, this);
}
void Window::loop() {
@ -272,6 +296,8 @@ namespace hex {
{
if (ImGui::BulletHyperlink("Open File"))
EventManager::post(Events::OpenWindow, "Open File");
if (ImGui::BulletHyperlink("Open Project"))
EventManager::post(Events::OpenWindow, "Open Project");
}
ImGui::TableNextRow(ImGuiTableRowFlags_None, 100);
ImGui::TableNextColumn();