From d5e8fc6fea3808917652e1807b8f8b79a4756a1d Mon Sep 17 00:00:00 2001 From: Gauvain 'GovanifY' Roussel-Tarbouriech Date: Fri, 29 Jan 2021 18:58:24 +0100 Subject: [PATCH] GSDump: further painful work on the UI, preview icon added --- pcsx2/CMakeLists.txt | 3 +- pcsx2/gui/Dialogs/GSDumpDialog.cpp | 48 +++++++++++++---------------- pcsx2/gui/Resources/NoIcon.png | Bin 0 -> 14500 bytes 3 files changed, 24 insertions(+), 27 deletions(-) create mode 100644 pcsx2/gui/Resources/NoIcon.png diff --git a/pcsx2/CMakeLists.txt b/pcsx2/CMakeLists.txt index ee1d416b17..5c1c6df7ab 100644 --- a/pcsx2/CMakeLists.txt +++ b/pcsx2/CMakeLists.txt @@ -713,6 +713,7 @@ set(pcsx2GuiResources ${res_bin}/ConfigIcon_Speedhacks.h ${res_bin}/ConfigIcon_Video.h ${res_bin}/Logo.h + ${res_bin}/NoIcon.h ${res_bin}/Breakpoint_Active.h ${res_bin}/Breakpoint_Inactive.h ) @@ -1093,7 +1094,7 @@ include_directories( file(MAKE_DIRECTORY ${res_bin}) foreach(res_file IN ITEMS - AppIcon16 AppIcon32 AppIcon64 BackgroundLogo Logo ButtonIcon_Camera + AppIcon16 AppIcon32 AppIcon64 BackgroundLogo Logo NoIcon ButtonIcon_Camera ConfigIcon_Cpu ConfigIcon_Gamefixes ConfigIcon_MemoryCard ConfigIcon_Paths ConfigIcon_Plugins ConfigIcon_Speedhacks ConfigIcon_Video Breakpoint_Active Breakpoint_Inactive) add_custom_command(OUTPUT "${res_bin}/${res_file}.h" COMMAND perl ${CMAKE_SOURCE_DIR}/linux_various/hex2h.pl "${res_src}/${res_file}.png" "${res_bin}/${res_file}" ) diff --git a/pcsx2/gui/Dialogs/GSDumpDialog.cpp b/pcsx2/gui/Dialogs/GSDumpDialog.cpp index cf2e365382..c909b692f2 100644 --- a/pcsx2/gui/Dialogs/GSDumpDialog.cpp +++ b/pcsx2/gui/Dialogs/GSDumpDialog.cpp @@ -20,6 +20,10 @@ #include "Dialogs/ModalPopups.h" + +#include "Utilities/EmbeddedImage.h" +#include "Resources/NoIcon.h" + #include #include #include @@ -40,43 +44,22 @@ Dialogs::GSDumpDialog::GSDumpDialog(wxWindow* parent) const float scale = MSW_GetDPIScale(); SetMinWidth(scale * 460); -#ifdef _WIN32 - const int padding = 15; -#else - const int padding = 8; -#endif - - wxFlexGridSizer& general(*new wxFlexGridSizer(2, StdPadding, StdPadding)); wxBoxSizer& dump_info(*new wxBoxSizer(wxVERTICAL)); + wxBoxSizer& dump_preview(*new wxBoxSizer(wxVERTICAL)); wxFlexGridSizer& debugger(*new wxFlexGridSizer(2, StdPadding, StdPadding)); + wxBoxSizer& dumps(*new wxBoxSizer(wxHORIZONTAL)); wxBoxSizer& dbg_tree(*new wxBoxSizer(wxVERTICAL)); wxBoxSizer& dbg_actions(*new wxBoxSizer(wxVERTICAL)); wxBoxSizer& gif(*new wxBoxSizer(wxVERTICAL)); + wxBoxSizer& dumps_list(*new wxBoxSizer(wxVERTICAL)); - // dump list - //general += new wxListView(this, wxID_ANY); - - // dump directory - //general += new wxDirPickerCtrl(this, wxID_ANY); - //general += padding; - - // renderer override + //dump_info += new wxFilePickerCtrl(this, wxID_ANY); dump_info += new wxRadioButton(this, wxID_ANY, _("None")); dump_info += new wxRadioButton(this, wxID_ANY, _("D3D11 HW")); dump_info += new wxRadioButton(this, wxID_ANY, _("OGL HW")); dump_info += new wxRadioButton(this, wxID_ANY, _("OGL SW")); - dump_info += padding; - - // dump screenshot - // - // wxImage img = EmbeddedImage().Get(); - // img.Rescale(img.GetWidth() * scale, img.GetHeight() * scale, wxIMAGE_QUALITY_HIGH); - // auto bitmap_logo = new wxStaticBitmap(this, wxID_ANY, wxBitmap(img)); - - // launch dump dump_info += new wxButton(this, wxID_ANY, _("Run")); - dump_info += padding; @@ -97,7 +80,20 @@ Dialogs::GSDumpDialog::GSDumpDialog(wxWindow* parent) debugger += dbg_tree; debugger += dbg_actions; - general += new wxListView(this, wxID_ANY); + dumps_list += new wxStaticText(this, wxID_ANY, _("GS Dumps List")); + dumps_list += new wxListView(this, wxID_ANY, wxDefaultPosition, wxSize(250, 200)); + + dump_preview += new wxStaticText(this, wxID_ANY, _("Preview")); + wxImage img = EmbeddedImage().Get(); + img.Rescale(250 * scale, 200 * scale, wxIMAGE_QUALITY_HIGH); + dump_preview += new wxStaticBitmap(this, wxID_ANY, wxBitmap(img)); + + + dumps += dumps_list; + dumps += dump_info; + dumps += dump_preview; + + general += dumps; general += dump_info; general += debugger; general += gif; diff --git a/pcsx2/gui/Resources/NoIcon.png b/pcsx2/gui/Resources/NoIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..0c393a2abb4c2c4a2a1ce41e0eeaa414237e9ac1 GIT binary patch literal 14500 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 literal 0 HcmV?d00001