mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-08-01 22:30:42 -07:00
cfg: reorganize menu bar (#330)
## Link to GitHub Issue, if one exists n/a ## Description of change Add `Help` menu. Move Licenses and About dialog under Help. Add links to the wiki. Make game selection drop-down slightly wider to make better use of space that has been freed up. ## Testing tested in cfg (with/without game), and in-game overlay
This commit is contained in:
@@ -16,7 +16,6 @@
|
||||
#include "avs/ea3.h"
|
||||
#include "avs/game.h"
|
||||
#include "launcher/launcher.h"
|
||||
#include "launcher/shutdown.h"
|
||||
#include "launcher/options.h"
|
||||
#include "misc/eamuse.h"
|
||||
#include "overlay/imgui/extensions.h"
|
||||
@@ -2914,7 +2913,7 @@ namespace overlay::windows {
|
||||
ImGui::TextUnformatted("");
|
||||
|
||||
if (ImGui::Button(PROJECT_URL)) {
|
||||
launch_shell(PROJECT_URL, nullptr);
|
||||
launch_shell(PROJECT_URL);
|
||||
}
|
||||
|
||||
ImGui::TextUnformatted("");
|
||||
@@ -2979,31 +2978,28 @@ namespace overlay::windows {
|
||||
void Config::build_menu(int *game_selected) {
|
||||
bool about_popup = false;
|
||||
bool licenses_popup = false;
|
||||
bool shutdown_popup = false;
|
||||
if (ImGui::BeginMenuBar()) {
|
||||
|
||||
// [spice2x]
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.f, 0.f, 0.f, 1.f));
|
||||
ImGui::PushStyleColor(ImGuiCol_TextDisabled, ImVec4(1.f, 0.f, 0.f, 1.f));
|
||||
ImGui::BeginDisabled(!cfg::CONFIGURATOR_STANDALONE);
|
||||
if (ImGui::MenuItem("[spice2x]")) {
|
||||
launch_shell(PROJECT_URL, nullptr);
|
||||
if (ImGui::BeginMenu("[spice2x]")) {
|
||||
ImGui::PopStyleColor();
|
||||
if (ImGui::MenuItem("spice2x.github.io")) {
|
||||
launch_shell(PROJECT_URL);
|
||||
}
|
||||
ImGui::EndDisabled();
|
||||
if (ImGui::MenuItem("Licenses")) {
|
||||
licenses_popup = true;
|
||||
}
|
||||
if (ImGui::MenuItem("About")) {
|
||||
about_popup = true;
|
||||
}
|
||||
ImGui::EndMenu();
|
||||
} else {
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopStyleColor();
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
// game selector
|
||||
ImGui::PushItemWidth(MIN(580, MAX(80, ImGui::GetWindowSize().x - 520)));
|
||||
ImGui::Combo("##game_selector", game_selected, games_names.data(), (int)games_list.size());
|
||||
ImGui::PopItemWidth();
|
||||
|
||||
ImGui::Separator();
|
||||
}
|
||||
|
||||
// shortcuts
|
||||
if (ImGui::BeginMenu("Shortcuts", cfg::CONFIGURATOR_STANDALONE)) {
|
||||
if (ImGui::BeginMenu("Shortcuts")) {
|
||||
if (ImGui::MenuItem("USB Game Controllers")) {
|
||||
launch_shell("control.exe", "joy.cpl");
|
||||
}
|
||||
@@ -3016,32 +3012,21 @@ namespace overlay::windows {
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
|
||||
// popup menus
|
||||
if (ImGui::MenuItem("Licenses")) {
|
||||
licenses_popup = true;
|
||||
// help
|
||||
if (ImGui::BeginMenu("Help")) {
|
||||
if (ImGui::MenuItem("FAQ")) {
|
||||
launch_shell("https://github.com/spice2x/spice2x.github.io/wiki/Known-issues");
|
||||
}
|
||||
if (ImGui::MenuItem("About")) {
|
||||
about_popup = true;
|
||||
}
|
||||
|
||||
// power - only active in games
|
||||
if (ImGui::BeginMenu("Power", !cfg::CONFIGURATOR_STANDALONE)) {
|
||||
if (ImGui::MenuItem("Restart Game")) {
|
||||
launcher::restart();
|
||||
}
|
||||
if (ImGui::MenuItem("Exit Game")) {
|
||||
launcher::shutdown();
|
||||
}
|
||||
ImGui::Spacing();
|
||||
ImGui::Separator();
|
||||
ImGui::Spacing();
|
||||
if (ImGui::MenuItem("Shutdown PC")) {
|
||||
shutdown_popup = true;
|
||||
if (ImGui::MenuItem("Wiki")) {
|
||||
launch_shell("https://github.com/spice2x/spice2x.github.io/wiki");
|
||||
}
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
|
||||
ImGui::Separator();
|
||||
// game selector
|
||||
ImGui::PushItemWidth(MIN(700, MAX(100, ImGui::GetWindowSize().x - 400)));
|
||||
ImGui::Combo("##game_selector", game_selected, games_names.data(), (int)games_list.size());
|
||||
ImGui::PopItemWidth();
|
||||
|
||||
ImGui::BeginDisabled();
|
||||
if (!avs::game::is_model("000")) {
|
||||
@@ -3059,45 +3044,9 @@ namespace overlay::windows {
|
||||
if (licenses_popup) {
|
||||
ImGui::OpenPopup("Licenses##topbarpopup");
|
||||
}
|
||||
if (shutdown_popup) {
|
||||
ImGui::OpenPopup("System##topbarpopup");
|
||||
}
|
||||
|
||||
// draw popups
|
||||
{
|
||||
// unused_open is needed for close button to appear on the popup
|
||||
bool unused_open = true;
|
||||
|
||||
if (ImGui::BeginPopupModal(
|
||||
"System##topbarpopup",
|
||||
&unused_open,
|
||||
ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize)) {
|
||||
|
||||
static bool force_shutdown = false;
|
||||
ImGui::Spacing();
|
||||
ImGui::Checkbox("Force", &force_shutdown);
|
||||
ImGui::Spacing();
|
||||
|
||||
const ImVec2 button_size(100.f, 0.f);
|
||||
|
||||
ImGui::Spacing();
|
||||
if (ImGui::Button("Shutdown PC", button_size)) {
|
||||
this->shutdown_system(force_shutdown, false);
|
||||
}
|
||||
ImGui::Spacing();
|
||||
if (ImGui::Button("Reboot PC", button_size)) {
|
||||
this->shutdown_system(force_shutdown, true);
|
||||
}
|
||||
ImGui::Spacing();
|
||||
ImGui::Separator();
|
||||
ImGui::Spacing();
|
||||
if (ImGui::Button("Cancel", button_size)) {
|
||||
ImGui::CloseCurrentPopup();
|
||||
}
|
||||
ImGui::Spacing();
|
||||
ImGui::EndPopup();
|
||||
}
|
||||
|
||||
const ImVec2 popup_size(
|
||||
std::min(ImGui::GetIO().DisplaySize.x * 0.9f, 800.f),
|
||||
std::min(ImGui::GetIO().DisplaySize.y * 0.9f, 800.f));
|
||||
@@ -3122,23 +3071,4 @@ namespace overlay::windows {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Config::shutdown_system(bool force, bool reboot_instead) {
|
||||
if (!acquire_shutdown_privs()) {
|
||||
return;
|
||||
}
|
||||
UINT flags = 0;
|
||||
if (force) {
|
||||
flags |= EWX_FORCE;
|
||||
}
|
||||
if (reboot_instead) {
|
||||
flags |= EWX_REBOOT;
|
||||
} else {
|
||||
flags |= EWX_SHUTDOWN | EWX_HYBRID_SHUTDOWN;
|
||||
}
|
||||
if (!ExitWindowsEx(flags, SHTDN_REASON_MAJOR_APPLICATION | SHTDN_REASON_MINOR_MAINTENANCE)) {
|
||||
return;
|
||||
}
|
||||
launcher::shutdown(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ namespace overlay::windows {
|
||||
void build_about();
|
||||
void build_licenses();
|
||||
void build_launcher();
|
||||
void launch_shell(LPCSTR app, LPCSTR file);
|
||||
void launch_shell(LPCSTR app, LPCSTR file=nullptr);
|
||||
|
||||
static void build_page_selector(int *page);
|
||||
void build_menu(int *game_selected);
|
||||
|
||||
Reference in New Issue
Block a user