Add GUI
This commit is contained in:
parent
ebf11a94ab
commit
6052530efc
|
@ -1,5 +1,19 @@
|
|||
configure_file(info.hpp.in info.hpp)
|
||||
add_executable(installer main.cpp ui.cpp ui.hpp meta.cpp meta.hpp info.hpp)
|
||||
target_link_libraries(installer PRIVATE wx::base wx::core wx::net)
|
||||
|
||||
configure_file(info.hpp.in info.hpp)
|
||||
|
||||
# From https://docs.wxwidgets.org/latest/overview_cmake.html
|
||||
set(XRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/InstallerFrame_UI.xrc)
|
||||
set(WXRC $<TARGET_FILE:wxrc>)
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/resources.cpp ${CMAKE_CURRENT_BINARY_DIR}/resources.h
|
||||
COMMAND ${WXRC} -c -e -o ${CMAKE_CURRENT_BINARY_DIR}/resources.cpp ${XRC_FILES}
|
||||
DEPENDS ${XRC_FILES}
|
||||
DEPENDS wxrc
|
||||
COMMENT "Compiling XRC resources"
|
||||
)
|
||||
target_sources(installer PRIVATE resources.cpp resources.h)
|
||||
|
||||
target_link_libraries(installer PRIVATE wx::base wx::core wx::net wx::xrc)
|
||||
include_directories(lib/wx/include)
|
||||
include_directories(lib/json/include)
|
||||
|
|
188
installer/InstallerFrame_UI.xrc
Normal file
188
installer/InstallerFrame_UI.xrc
Normal file
|
@ -0,0 +1,188 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.5.3.0">
|
||||
<object class="wxFrame" name="InstallerFrame_UI">
|
||||
<size>500,500</size>
|
||||
<style>wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL</style>
|
||||
<title></title>
|
||||
<centered>1</centered>
|
||||
<aui_managed>0</aui_managed>
|
||||
<object class="wxBoxSizer" name="content">
|
||||
<orient>wxVERTICAL</orient>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND|wxFIXED_MINSIZE</flag>
|
||||
<border>5</border>
|
||||
<option>1</option>
|
||||
<object class="wxBoxSizer" name="options">
|
||||
<orient>wxVERTICAL</orient>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALL</flag>
|
||||
<border>5</border>
|
||||
<option>0</option>
|
||||
<object class="wxStaticText" name="version_label">
|
||||
<label>Version</label>
|
||||
<wrap>-1</wrap>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALL|wxEXPAND</flag>
|
||||
<border>5</border>
|
||||
<option>0</option>
|
||||
<object class="wxChoice" name="m_choice1">
|
||||
<selection>0</selection>
|
||||
<content/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALL</flag>
|
||||
<border>5</border>
|
||||
<option>0</option>
|
||||
<object class="wxStaticText" name="launcher_data_dir_label">
|
||||
<label>Launcher Data Directory</label>
|
||||
<wrap>-1</wrap>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<flag>wxEXPAND</flag>
|
||||
<border>5</border>
|
||||
<option>0</option>
|
||||
<object class="wxBoxSizer" name="launcher_data_dir_options">
|
||||
<orient>wxHORIZONTAL</orient>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
|
||||
<border>5</border>
|
||||
<option>1</option>
|
||||
<object class="wxTextCtrl" name="launcher_data_dir_input">
|
||||
<value></value>
|
||||
<maxlength>0</maxlength>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
|
||||
<border>5</border>
|
||||
<option>0</option>
|
||||
<object class="wxButton" name="launcher_data_dir_select">
|
||||
<label>Select</label>
|
||||
<default>0</default>
|
||||
<auth_needed>0</auth_needed>
|
||||
<markup>0</markup>
|
||||
<bitmap/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALL|wxEXPAND</flag>
|
||||
<border>5</border>
|
||||
<option>0</option>
|
||||
<object class="wxStaticBoxSizer" name="installation_options">
|
||||
<orient>wxVERTICAL</orient>
|
||||
<label>Installation</label>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALL|wxEXPAND</flag>
|
||||
<border>8</border>
|
||||
<option>1</option>
|
||||
<object class="wxBoxSizer" name="installation_options_content">
|
||||
<orient>wxVERTICAL</orient>
|
||||
<object class="sizeritem">
|
||||
<flag>wxBOTTOM|wxLEFT|wxRIGHT</flag>
|
||||
<border>5</border>
|
||||
<option>0</option>
|
||||
<object class="wxStaticText" name="name_label">
|
||||
<label>Name</label>
|
||||
<wrap>-1</wrap>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALL|wxEXPAND</flag>
|
||||
<border>5</border>
|
||||
<option>0</option>
|
||||
<object class="wxTextCtrl" name="name_input">
|
||||
<value></value>
|
||||
<maxlength>0</maxlength>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALL|wxEXPAND</flag>
|
||||
<border>5</border>
|
||||
<option>0</option>
|
||||
<object class="wxStaticText" name="game_directory_label">
|
||||
<label>Game Directory</label>
|
||||
<wrap>-1</wrap>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<flag>wxEXPAND</flag>
|
||||
<border>5</border>
|
||||
<option>1</option>
|
||||
<object class="wxBoxSizer" name="game_dir_options">
|
||||
<orient>wxHORIZONTAL</orient>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
|
||||
<border>5</border>
|
||||
<option>1</option>
|
||||
<object class="wxTextCtrl" name="game_data_dir_input">
|
||||
<value></value>
|
||||
<maxlength>0</maxlength>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
|
||||
<border>5</border>
|
||||
<option>0</option>
|
||||
<object class="wxButton" name="game_data_dir_select">
|
||||
<label>Select</label>
|
||||
<default>0</default>
|
||||
<auth_needed>0</auth_needed>
|
||||
<markup>0</markup>
|
||||
<bitmap/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALL|wxEXPAND</flag>
|
||||
<border>5</border>
|
||||
<option>0</option>
|
||||
<object class="wxBoxSizer" name="actions">
|
||||
<orient>wxHORIZONTAL</orient>
|
||||
<object class="spacer">
|
||||
<flag>wxEXPAND</flag>
|
||||
<border>5</border>
|
||||
<option>1</option>
|
||||
<size>0,0</size>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALL</flag>
|
||||
<border>5</border>
|
||||
<option>0</option>
|
||||
<object class="wxButton" name="m_button1">
|
||||
<label>_Cancel</label>
|
||||
<default>0</default>
|
||||
<auth_needed>0</auth_needed>
|
||||
<markup>0</markup>
|
||||
<bitmap/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<flag>wxALL</flag>
|
||||
<border>5</border>
|
||||
<option>0</option>
|
||||
<object class="wxButton" name="m_button2">
|
||||
<label>_Install</label>
|
||||
<default>0</default>
|
||||
<auth_needed>0</auth_needed>
|
||||
<markup>0</markup>
|
||||
<bitmap/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</resource>
|
|
@ -11,28 +11,15 @@ public:
|
|||
|
||||
wxLog::SetActiveTarget(new wxLogStream(&std::cout));
|
||||
|
||||
get_loader_version(this, "placeholder", [](std::optional<LoaderVersion> value) {
|
||||
if (!value.has_value())
|
||||
return;
|
||||
wxXmlResource::Get()->InitAllHandlers();
|
||||
InitXmlResource();
|
||||
|
||||
wxString buf('\n');
|
||||
// we need to do this explicitly on Windows for dark mode
|
||||
if (const auto result = SetAppearance(Appearance::System); result != AppearanceResult::Success)
|
||||
wxLogWarning("SetAppearance returned %d", result);
|
||||
|
||||
buf += "Version: " + value->version + '\n';
|
||||
buf += "Release Date: " + value->release_date.Format() + '\n';
|
||||
buf += "Libraries:\n";
|
||||
|
||||
for (const auto &library : value->libraries) {
|
||||
buf += "- Name: " + library.name + '\n';
|
||||
buf += " URL: " + library.url + '\n';
|
||||
buf += " SHA-1: " + library.sha1 + '\n';
|
||||
buf += " Size: " + wxString::Format("%ld", library.size) + '\n';
|
||||
}
|
||||
|
||||
wxLogInfo(buf);
|
||||
});
|
||||
|
||||
auto *window = new InstallerWindow;
|
||||
window->Show();
|
||||
auto *frame = new InstallerFrame;
|
||||
frame->Show();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
#include "ui.hpp"
|
||||
|
||||
InstallerWindow::InstallerWindow() {}
|
||||
InstallerFrame::InstallerFrame() : InstallerFrame_UI(nullptr) {
|
||||
|
||||
}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
#pragma once
|
||||
|
||||
#include "wx/window.h"
|
||||
#include "wx/wx.h"
|
||||
#include "wx/xrc/xmlres.h"
|
||||
#include "resources.h"
|
||||
|
||||
class InstallerWindow final : public wxWindow {
|
||||
class InstallerFrame final : public InstallerFrame_UI {
|
||||
public:
|
||||
explicit InstallerWindow();
|
||||
explicit InstallerFrame();
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue