diff --git a/SerialPrograms/Source/ComputerPrograms/Framework/ComputerProgramSession.h b/SerialPrograms/Source/ComputerPrograms/Framework/ComputerProgramSession.h index fb6360a8a8..b3bb9868a0 100644 --- a/SerialPrograms/Source/ComputerPrograms/Framework/ComputerProgramSession.h +++ b/SerialPrograms/Source/ComputerPrograms/Framework/ComputerProgramSession.h @@ -27,7 +27,10 @@ class ComputerProgramOption; class ProgramEnvironment; -class ComputerProgramSession final : public UiState, public ProgramSession{ +class ComputerProgramSession final + : public UiState + , public ProgramSession +{ public: virtual ~ComputerProgramSession(); ComputerProgramSession(const ComputerProgramDescriptor& descriptor); diff --git a/SerialPrograms/Source/ComputerPrograms/Framework/ComputerProgramWidget.cpp b/SerialPrograms/Source/ComputerPrograms/Framework/ComputerProgramWidget.cpp index 62806d27cd..914a3062b7 100644 --- a/SerialPrograms/Source/ComputerPrograms/Framework/ComputerProgramWidget.cpp +++ b/SerialPrograms/Source/ComputerPrograms/Framework/ComputerProgramWidget.cpp @@ -28,9 +28,6 @@ template class RegisterUiStateQtWidget; ComputerProgramWidget::~ComputerProgramWidget(){ m_session.remove_listener(*this); - delete m_actions_bar; - delete m_stats_bar; - delete m_options; } ComputerProgramWidget::ComputerProgramWidget( QWidget& parent, diff --git a/SerialPrograms/Source/ConsoleInfra/ConsolePanel.cpp b/SerialPrograms/Source/ConsoleInfra/ConsolePanel.cpp new file mode 100644 index 0000000000..d54b0a818e --- /dev/null +++ b/SerialPrograms/Source/ConsoleInfra/ConsolePanel.cpp @@ -0,0 +1,71 @@ +/* Console Panel + * + * From: https://github.com/PokemonAutomation/ + * + */ + +#include "Common/Cpp/Json/JsonValue.h" +#include "ConsolePanel.h" +#include "ConsolePanelSession.h" + +namespace PokemonAutomation{ +namespace ConsoleInfra{ + + + +ConsolePanelDescriptor::ConsolePanelDescriptor( + Color color, + std::string identifier, + std::string category, std::string display_name, + std::string doc_link, + std::string description, + size_t num_controllers, + bool deprecated, + std::vector required_resources +) + : PanelDescriptor( + color, + std::move(identifier), + std::move(category), std::move(display_name), + std::move(doc_link), + std::move(description), + std::move(required_resources) + ) + , m_deprecated(deprecated) + , m_num_controllers(num_controllers) +{} +std::unique_ptr ConsolePanelDescriptor::make_panel() const{ + return std::make_unique(*this); +} + + + +ConsolePanelInstance::ConsolePanelInstance() + : m_options(LockMode::UNLOCK_WHILE_RUNNING) +{} + +void ConsolePanelInstance::add_option(ConfigOption& option, std::string serialization_string){ + m_options.add_option(option, std::move(serialization_string)); +} +JsonValue ConsolePanelInstance::to_json() const{ + return m_options.to_json(); +} +void ConsolePanelInstance::load_json(const JsonValue& json){ + m_options.load_json(json); +} +std::string ConsolePanelInstance::check_validity() const{ + return m_options.check_validity(); +} +void ConsolePanelInstance::restore_defaults(){ + return m_options.restore_defaults(); +} + + + + + + + + +} +} diff --git a/SerialPrograms/Source/ConsoleInfra/ConsolePanel.h b/SerialPrograms/Source/ConsoleInfra/ConsolePanel.h new file mode 100644 index 0000000000..394e614146 --- /dev/null +++ b/SerialPrograms/Source/ConsoleInfra/ConsolePanel.h @@ -0,0 +1,108 @@ +/* Console Panel + * + * From: https://github.com/PokemonAutomation/ + * + */ + +#ifndef PokemonAutomation_ConsoleInfra_ConsolePanel_H +#define PokemonAutomation_ConsoleInfra_ConsolePanel_H + +#include "Common/Cpp/Options/BatchOption.h" +#include "CommonFramework/Panels/PanelDescriptor.h" + +namespace PokemonAutomation{ +namespace ConsoleInfra{ + + +class ConsoleSystemSession; +class ConsolePanelInstance; + + + +class ConsolePanelDescriptor : public PanelDescriptor{ +public: + ConsolePanelDescriptor( + Color color, + std::string identifier, + std::string category, std::string display_name, + std::string doc_link, + std::string description, + size_t num_controllers, + bool deprecated = false, + std::vector required_resources = {} + ); + + bool deprecated() const{ return m_deprecated; } + size_t num_controllers() const{ return m_num_controllers; } + + virtual std::unique_ptr make_panel() const override; + virtual std::unique_ptr make_instance(ConsoleSystemSession& system) const = 0; + + +private: + const bool m_deprecated; + const std::vector m_required_resources; + const size_t m_num_controllers; +}; + + + + +class ConsolePanelInstance{ +public: + virtual ~ConsolePanelInstance() = default; + ConsolePanelInstance(const ConsolePanelInstance&) = delete; + void operator=(const ConsolePanelInstance&) = delete; + + +public: + ConsolePanelInstance(); + + +public: + // Settings + + virtual JsonValue to_json() const; + virtual void load_json(const JsonValue& json); + + virtual std::string check_validity() const; + virtual void restore_defaults(); + + +protected: + friend class ConsolePanelSession; + + BatchOption m_options; + void add_option(ConfigOption& option, std::string serialization_string); + +}; + + + + +template +class ConsolePanelWrapper : public Descriptor{ +public: + virtual std::unique_ptr make_instance( + ConsoleSystemSession& system + ) const override{ + if constexpr (std::is_constructible_v){ + return std::make_unique(system); + }else{ + return std::make_unique(); + } + } +}; + +// Create a program PanelDescriptor +template +std::unique_ptr make_ConsolePanel(){ + return std::make_unique>(); +} + + + + +} +} +#endif diff --git a/SerialPrograms/Source/ConsoleInfra/ConsolePanelSession.cpp b/SerialPrograms/Source/ConsoleInfra/ConsolePanelSession.cpp new file mode 100644 index 0000000000..2a11aa2af2 --- /dev/null +++ b/SerialPrograms/Source/ConsoleInfra/ConsolePanelSession.cpp @@ -0,0 +1,64 @@ +/* Console Panel Session + * + * From: https://github.com/PokemonAutomation/ + * + */ + +#include "Common/Cpp/EarlyShutdown.h" +#include "Common/Cpp/Logging/GlobalLogger.h" +#include "Common/Cpp/Json/JsonValue.h" +#include "Common/Cpp/Json/JsonObject.h" +#include "ConsolePanelSession.h" + +namespace PokemonAutomation{ +namespace ConsoleInfra{ + + + +bool ConsolePanelSession::try_shutdown(){ + return m_system.try_shutdown(); +} +ConsolePanelSession::~ConsolePanelSession(){ + blocking_shutdown( + m_system.logger(), + "ConsolePanelSession", + [this]{ return try_shutdown(); } + ); +} +ConsolePanelSession::ConsolePanelSession(const ConsolePanelDescriptor& descriptor) + : UiState(descriptor) + , m_descriptor(descriptor) + , m_system_option(descriptor.num_controllers(), true) + , m_system(global_logger_raw(), m_system_option, 0) + , m_instance(descriptor.make_instance(m_system)) +{} + +ConfigOption& ConsolePanelSession::options(){ + return m_instance->m_options; +} +void ConsolePanelSession::restore_defaults(){ + m_instance->restore_defaults(); +} + + +JsonValue ConsolePanelSession::to_json() const{ + JsonObject obj = std::move(*m_instance->to_json().to_object()); + obj["ConsoleSetup"] = m_system_option.to_json(); + return obj; +} +void ConsolePanelSession::load_json(const JsonValue& json){ + const JsonObject* obj = json.to_object(); + if (obj == nullptr){ + return; + } + const JsonValue* value = obj->get_value("ConsoleSetup"); + if (value){ + m_system.load_json(*value); + } + m_instance->load_json(json); +} + + + +} +} diff --git a/SerialPrograms/Source/ConsoleInfra/ConsolePanelSession.h b/SerialPrograms/Source/ConsoleInfra/ConsolePanelSession.h new file mode 100644 index 0000000000..5aee2321d2 --- /dev/null +++ b/SerialPrograms/Source/ConsoleInfra/ConsolePanelSession.h @@ -0,0 +1,56 @@ +/* Console Panel Session + * + * From: https://github.com/PokemonAutomation/ + * + */ + +#ifndef PokemonAutomation_ConsoleInfra_ConsolePanelSession_H +#define PokemonAutomation_ConsoleInfra_ConsolePanelSession_H + +#include "CommonFramework/Panels/PanelSession.h" +#include "ConsoleSystemSession.h" +#include "ConsolePanel.h" + +namespace PokemonAutomation{ +namespace ConsoleInfra{ + + + +class ConsolePanelSession final : public UiState{ +public: + bool try_shutdown(); + ~ConsolePanelSession(); + ConsolePanelSession(const ConsolePanelDescriptor& descriptor); + + void restore_defaults(); + + +public: + const ConsolePanelDescriptor& descriptor() const{ return m_descriptor; } + + Logger& logger(){ return m_system.logger(); } + ConsoleSystemSession& system(){ return m_system; } + ConfigOption& options(); + + +private: + virtual JsonValue to_json() const override; + virtual void load_json(const JsonValue& json) override; + + +private: + const ConsolePanelDescriptor& m_descriptor; + + ConsoleSystemOption m_system_option; + ConsoleSystemSession m_system; + + std::unique_ptr m_instance; +}; + + + + + +} +} +#endif diff --git a/SerialPrograms/Source/ConsoleInfra/CommandRowWidget.cpp b/SerialPrograms/Source/ConsoleInfra/UI/CommandRowWidget.cpp similarity index 100% rename from SerialPrograms/Source/ConsoleInfra/CommandRowWidget.cpp rename to SerialPrograms/Source/ConsoleInfra/UI/CommandRowWidget.cpp diff --git a/SerialPrograms/Source/ConsoleInfra/CommandRowWidget.h b/SerialPrograms/Source/ConsoleInfra/UI/CommandRowWidget.h similarity index 94% rename from SerialPrograms/Source/ConsoleInfra/CommandRowWidget.h rename to SerialPrograms/Source/ConsoleInfra/UI/CommandRowWidget.h index cc41c55fc7..d3a1ada941 100644 --- a/SerialPrograms/Source/ConsoleInfra/CommandRowWidget.h +++ b/SerialPrograms/Source/ConsoleInfra/UI/CommandRowWidget.h @@ -13,7 +13,7 @@ #include #include "Common/Qt/CheckboxDropdown.h" #include "CommonFramework/VideoPipeline/VideoOverlaySession.h" -#include "ConsoleSystemSession.h" +#include "ConsoleInfra/ConsoleSystemSession.h" namespace PokemonAutomation{ namespace ConsoleInfra{ diff --git a/SerialPrograms/Source/ConsoleInfra/UI/ConsolePanelWidget.cpp b/SerialPrograms/Source/ConsoleInfra/UI/ConsolePanelWidget.cpp new file mode 100644 index 0000000000..1df89e22f4 --- /dev/null +++ b/SerialPrograms/Source/ConsoleInfra/UI/ConsolePanelWidget.cpp @@ -0,0 +1,74 @@ +/* Console Panel Widget + * + * From: https://github.com/PokemonAutomation/ + * + */ + +#include +#include "Common/Qt/ShutdownWithEvents.h" +#include "Common/Qt/Options/ConfigWidget.h" +#include "CommonFramework/Panels/UI/PanelElements.h" +#include "ConsolePanelWidget.h" + +namespace PokemonAutomation{ + +template class RegisterUiStateQtWidget; + +namespace ConsoleInfra{ + + + +ConsolePanelWidget::~ConsolePanelWidget(){ + shutdown_with_events( + m_session.logger(), + "ConsolePanelWidget", + [this]{ return m_session.try_shutdown(); } + ); +} +ConsolePanelWidget::ConsolePanelWidget( + QWidget& parent, + ConsolePanelSession& session +) + : QWidget(&parent) + , m_session(session) +{ + m_layout = new QVBoxLayout(this); + m_layout->setContentsMargins(0, 0, 0, 0); + + const ConsolePanelDescriptor& descriptor = session.descriptor(); + + CollapsibleGroupBox* header = make_panel_header( + *this, + descriptor.display_name(), + descriptor.doc_link(), + descriptor.description() + ); + m_layout->addWidget(header); + + + { + QScrollArea* scroll_outer = new QScrollArea(this); + m_layout->addWidget(scroll_outer); + scroll_outer->setWidgetResizable(true); + + QWidget* scroll_inner = new QWidget(scroll_outer); + scroll_outer->setWidget(scroll_inner); + QVBoxLayout* scroll_layout = new QVBoxLayout(scroll_inner); + scroll_layout->setAlignment(Qt::AlignTop); + + UiWrapper wrapper = m_session.system().make_ui_component(this); + m_system = dynamic_cast(wrapper.release()); + scroll_layout->addWidget(m_system); + + m_options = ConfigWidget::make_from_option(session.options(), this); + scroll_layout->addWidget(&m_options->widget()); + + scroll_layout->addStretch(1); + } +} + + + + +} +} diff --git a/SerialPrograms/Source/ConsoleInfra/UI/ConsolePanelWidget.h b/SerialPrograms/Source/ConsoleInfra/UI/ConsolePanelWidget.h new file mode 100644 index 0000000000..7ceaa84669 --- /dev/null +++ b/SerialPrograms/Source/ConsoleInfra/UI/ConsolePanelWidget.h @@ -0,0 +1,46 @@ +/* Console Panel Widget + * + * From: https://github.com/PokemonAutomation/ + * + */ + +#ifndef PokemonAutomation_ConsoleInfra_ConsolePanelWidget_H +#define PokemonAutomation_ConsoleInfra_ConsolePanelWidget_H + +#include +#include +#include "Common/Qt/UiStateQtWidget.h" +//#include "CommonFramework/Panels/UI/PanelElements.h" +#include "ConsoleInfra/ConsolePanel.h" +#include "ConsoleInfra/ConsolePanelSession.h" + +namespace PokemonAutomation{ +namespace ConsoleInfra{ + + +class ConsolePanelWidget : public QWidget, public UiComponentQtWidget{ +public: + using ParentState = ConsolePanelSession; + +public: + ~ConsolePanelWidget(); + ConsolePanelWidget(QWidget& parent, ConsolePanelSession& session); + + virtual QWidget& widget() override{ + return *this; + } + +private: + ConsolePanelSession& m_session; + QVBoxLayout* m_layout; + QWidget* m_system; + ConfigWidget* m_options; +// RunnablePanelActionBar* m_actions_bar; +}; + + + + +} +} +#endif diff --git a/SerialPrograms/Source/ConsoleInfra/ConsoleSystemWidget.cpp b/SerialPrograms/Source/ConsoleInfra/UI/ConsoleSystemWidget.cpp similarity index 100% rename from SerialPrograms/Source/ConsoleInfra/ConsoleSystemWidget.cpp rename to SerialPrograms/Source/ConsoleInfra/UI/ConsoleSystemWidget.cpp diff --git a/SerialPrograms/Source/ConsoleInfra/ConsoleSystemWidget.h b/SerialPrograms/Source/ConsoleInfra/UI/ConsoleSystemWidget.h similarity index 93% rename from SerialPrograms/Source/ConsoleInfra/ConsoleSystemWidget.h rename to SerialPrograms/Source/ConsoleInfra/UI/ConsoleSystemWidget.h index d7fd427b9d..b33add7d12 100644 --- a/SerialPrograms/Source/ConsoleInfra/ConsoleSystemWidget.h +++ b/SerialPrograms/Source/ConsoleInfra/UI/ConsoleSystemWidget.h @@ -15,7 +15,7 @@ #include "CommonFramework/AudioPipeline/UI/AudioDisplayWidget.h" #include "CommonFramework/VideoPipeline/UI/VideoSourceSelectorWidget.h" #include "CommonFramework/VideoPipeline/UI/VideoDisplayWidget.h" -#include "ConsoleSystemSession.h" +#include "ConsoleInfra/ConsoleSystemSession.h" namespace PokemonAutomation{ namespace ConsoleInfra{ diff --git a/SerialPrograms/Source/ConsoleInfra/VirtualConsole.cpp b/SerialPrograms/Source/ConsoleInfra/VirtualConsole.cpp deleted file mode 100644 index af2f65bfef..0000000000 --- a/SerialPrograms/Source/ConsoleInfra/VirtualConsole.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* Virtual Game Console - * - * From: https://github.com/PokemonAutomation/ - * - */ - -#include -#include -#include "Common/Cpp/Json/JsonValue.h" -#include "Common/Cpp/Logging/GlobalLogger.h" -#include "VirtualConsole.h" - -namespace PokemonAutomation{ - -template class RegisterUiStateQtWidget; - - -namespace ConsoleInfra{ - -VirtualConsole_Descriptor::VirtualConsole_Descriptor(size_t controllers) - : PanelDescriptor( - Color(), - controllers == 1 - ? "CC:VirtualConsole" - : "CC:MultiControllerTester", - "CC", - controllers == 1 - ? "Virtual Console" - : "Multi-Controller Tester", - "Programs/NintendoSwitch/VirtualConsole.html", - controllers == 1 - ? "Play your console from your computer." - : "Test multiple controllers at once." - ) - , m_controllers(controllers) -{} - - - -VirtualConsole::VirtualConsole(const VirtualConsole_Descriptor& descriptor) - : UiState(descriptor) - , m_console_options(descriptor.m_controllers, true) -{} -JsonValue VirtualConsole::to_json() const{ - return m_console_options.to_json(); -} -void VirtualConsole::load_json(const JsonValue& json){ - m_console_options.load_json(json); -} - - - -VirtualConsole_Widget::~VirtualConsole_Widget(){ - delete m_console_widget; -} -VirtualConsole_Widget::VirtualConsole_Widget( - QWidget& parent, - VirtualConsole& session -) - : PanelWidget(parent, session) - , m_session(global_logger_raw(), session.m_console_options, 0) -{ - QVBoxLayout* layout = new QVBoxLayout(this); - layout->setContentsMargins(0, 0, 0, 0); - layout->addWidget(make_header()); - - QScrollArea* scroll_outer = new QScrollArea(this); - layout->addWidget(scroll_outer); - scroll_outer->setWidgetResizable(true); - - QWidget* scroll_inner = new QWidget(scroll_outer); - scroll_outer->setWidget(scroll_inner); - QVBoxLayout* scroll_layout = new QVBoxLayout(scroll_inner); - scroll_layout->setAlignment(Qt::AlignTop); - - m_console_widget = new ConsoleSystemWidget(*this, m_session); - scroll_layout->addWidget(m_console_widget); -} - - - - - - -} -} - diff --git a/SerialPrograms/Source/ConsoleInfra/VirtualConsole.h b/SerialPrograms/Source/ConsoleInfra/VirtualConsole.h index 219448f9b0..ddcc33bc2a 100644 --- a/SerialPrograms/Source/ConsoleInfra/VirtualConsole.h +++ b/SerialPrograms/Source/ConsoleInfra/VirtualConsole.h @@ -7,70 +7,45 @@ #ifndef PokemonAutomation_ConsoleInfra_VirtualConsole_H #define PokemonAutomation_ConsoleInfra_VirtualConsole_H -#include "CommonFramework/Panels/PanelSession.h" -#include "CommonFramework/Panels/UI/PanelWidget.h" -#include "ConsoleInfra/ConsoleSystemOption.h" -#include "ConsoleInfra/ConsoleSystemSession.h" -#include "ConsoleInfra/ConsoleSystemWidget.h" +#include "ConsoleInfra/ConsolePanel.h" namespace PokemonAutomation{ namespace ConsoleInfra{ -// Descriptor for the program "Virtual Console". -// It defines basic info such as title name and color of the program on the program list panel. -// It inherits abstract base class PanelDescriptor but is still an abstract class as it does -// not define `make_panel()`, which functionality is simply to instantiate the PanelSession, the -// program panel. -// Call CommonFramework/Panels/PanelTools.h:make_panel() -// to create a wrapper class that implements `make_panel()` to instantiate the descriptor. -class VirtualConsole_Descriptor : public PanelDescriptor{ -public: - VirtualConsole_Descriptor(size_t controllers = 1); - const size_t m_controllers; -}; -class MultiControllerTester_Descriptor : public VirtualConsole_Descriptor{ +class VirtualConsole_Descriptor : public ConsolePanelDescriptor{ public: - MultiControllerTester_Descriptor() - : VirtualConsole_Descriptor(8) + VirtualConsole_Descriptor() + : ConsolePanelDescriptor( + Color(), + "CC:VirtualConsole", + "CC", + "Virtual Console", + "Programs/NintendoSwitch/VirtualConsole.html", + "Play your console from your computer.", + 1 + ) {} }; -// The program panel of Virtual Console. -// It calls make_widget() to create a VirtualConsole_Widget that holds the UI wideget. -class VirtualConsole : public UiState{ +class MultiControllerTester_Descriptor : public ConsolePanelDescriptor{ public: - VirtualConsole(const VirtualConsole_Descriptor& descriptor); - -public: - // Serialization - virtual JsonValue to_json() const override; - virtual void load_json(const JsonValue& json) override; - -private: - friend class VirtualConsole_Widget; - // switch control options like what micro-controller - // and what video source to use - ConsoleSystemOption m_console_options; + MultiControllerTester_Descriptor() + : ConsolePanelDescriptor( + Color(), + "CC:MultiControllerTester", + "CC", + "Multi-Controller Tester", + "Programs/NintendoSwitch/VirtualConsole.html", + "Test multiple controllers at once.", + 8 + ) + {} }; -// The UI of the prgoram Virtual Console -class VirtualConsole_Widget final : public PanelWidget{ -public: - using ParentState = VirtualConsole; - -public: - ~VirtualConsole_Widget(); - VirtualConsole_Widget(QWidget& parent, VirtualConsole& session); - -private: - ConsoleSystemSession m_session; - ConsoleSystemWidget* m_console_widget; -}; - diff --git a/SerialPrograms/Source/NintendoSwitch/Framework/NintendoSwitch_SingleSwitchProgramSession.h b/SerialPrograms/Source/NintendoSwitch/Framework/NintendoSwitch_SingleSwitchProgramSession.h index 66812d5580..1f71522e15 100644 --- a/SerialPrograms/Source/NintendoSwitch/Framework/NintendoSwitch_SingleSwitchProgramSession.h +++ b/SerialPrograms/Source/NintendoSwitch/Framework/NintendoSwitch_SingleSwitchProgramSession.h @@ -23,7 +23,6 @@ namespace PokemonAutomation{ namespace NintendoSwitch{ -class SingleSwitchProgramOption; class SingleSwitchProgramSession final diff --git a/SerialPrograms/Source/NintendoSwitch/Framework/UI/NintendoSwitch_CommandRow.h b/SerialPrograms/Source/NintendoSwitch/Framework/UI/NintendoSwitch_CommandRow.h index 58d1e1d451..4c52cf302f 100644 --- a/SerialPrograms/Source/NintendoSwitch/Framework/UI/NintendoSwitch_CommandRow.h +++ b/SerialPrograms/Source/NintendoSwitch/Framework/UI/NintendoSwitch_CommandRow.h @@ -7,7 +7,7 @@ #ifndef PokemonAutomation_NintendoSwitch_CommandRow_H #define PokemonAutomation_NintendoSwitch_CommandRow_H -#include "ConsoleInfra/CommandRowWidget.h" +#include "ConsoleInfra/UI/CommandRowWidget.h" #include "NintendoSwitch/Framework/NintendoSwitch_SwitchSystemSession.h" namespace PokemonAutomation{ diff --git a/SerialPrograms/Source/NintendoSwitch/Framework/UI/NintendoSwitch_SingleSwitchProgramWidget.h b/SerialPrograms/Source/NintendoSwitch/Framework/UI/NintendoSwitch_SingleSwitchProgramWidget.h index dbd98138e8..081fd6ef0c 100644 --- a/SerialPrograms/Source/NintendoSwitch/Framework/UI/NintendoSwitch_SingleSwitchProgramWidget.h +++ b/SerialPrograms/Source/NintendoSwitch/Framework/UI/NintendoSwitch_SingleSwitchProgramWidget.h @@ -25,7 +25,6 @@ QT_FORWARD_DECLARE_CLASS(QVBoxLayout) namespace PokemonAutomation{ - struct PanelHolder; class ProgramResourceDownloadTableWidget; namespace NintendoSwitch{ @@ -58,7 +57,6 @@ class SingleSwitchProgramWidget2 ProgramResourceDownloadTableWidget* ensure_downloads_table(); private: - std::optional m_owner; SingleSwitchProgramSession& m_session; QVBoxLayout* m_layout; QWidget* m_system; diff --git a/SerialPrograms/Source/NintendoSwitch/Framework/UI/NintendoSwitch_SwitchSystemWidget.h b/SerialPrograms/Source/NintendoSwitch/Framework/UI/NintendoSwitch_SwitchSystemWidget.h index 0de45771e5..a4304338d3 100644 --- a/SerialPrograms/Source/NintendoSwitch/Framework/UI/NintendoSwitch_SwitchSystemWidget.h +++ b/SerialPrograms/Source/NintendoSwitch/Framework/UI/NintendoSwitch_SwitchSystemWidget.h @@ -19,7 +19,7 @@ #define PokemonAutomation_NintendoSwitch_SwitchSystemWidget_H #include "NintendoSwitch/Framework/NintendoSwitch_SwitchSystemSession.h" -#include "ConsoleInfra/ConsoleSystemWidget.h" +#include "ConsoleInfra/UI/ConsoleSystemWidget.h" namespace PokemonAutomation{ namespace NintendoSwitch{ diff --git a/SerialPrograms/Source/NintendoSwitch/NintendoSwitch_Panels.cpp b/SerialPrograms/Source/NintendoSwitch/NintendoSwitch_Panels.cpp index 08339b8522..a35340b241 100644 --- a/SerialPrograms/Source/NintendoSwitch/NintendoSwitch_Panels.cpp +++ b/SerialPrograms/Source/NintendoSwitch/NintendoSwitch_Panels.cpp @@ -59,8 +59,8 @@ std::vector PanelListFactory::make_panels() const{ ret.emplace_back(make_settings()); ret.emplace_back("---- Virtual Consoles ----"); - ret.emplace_back(make_panel()); - ret.emplace_back(make_panel()); + ret.emplace_back(ConsoleInfra::make_ConsolePanel()); + ret.emplace_back(ConsoleInfra::make_ConsolePanel()); ret.emplace_back(make_panel()); ret.emplace_back("---- Programs ----"); diff --git a/SerialPrograms/Source/StaticRegistrationQt.cpp b/SerialPrograms/Source/StaticRegistrationQt.cpp index 8150aae888..2ccbf2e489 100644 --- a/SerialPrograms/Source/StaticRegistrationQt.cpp +++ b/SerialPrograms/Source/StaticRegistrationQt.cpp @@ -59,8 +59,8 @@ #include "ControllerInput/Keyboard/KeyBindingWidget.h" // Consoles -#include "ConsoleInfra/ConsoleSystemWidget.h" -#include "ConsoleInfra/VirtualConsole.h" +#include "ConsoleInfra/UI/ConsoleSystemWidget.h" +#include "ConsoleInfra/UI/ConsolePanelWidget.h" // Nintendo Switch #include "NintendoSwitch/Controllers/SysbotBase/SysbotBase_SelectorWidget.h" @@ -150,7 +150,7 @@ void register_all_statics(){ // Consoles RegisterUiStateQtWidget(); - RegisterUiStateQtWidget(); + RegisterUiStateQtWidget(); // Nintendo Switch RegisterUiStateQtWidget(); diff --git a/SerialPrograms/cmake/SourceFiles.cmake b/SerialPrograms/cmake/SourceFiles.cmake index 56b8c43df0..7ef83e4ac5 100644 --- a/SerialPrograms/cmake/SourceFiles.cmake +++ b/SerialPrograms/cmake/SourceFiles.cmake @@ -869,16 +869,22 @@ file(GLOB LIBRARY_SOURCES Source/ComputerPrograms/Framework/ComputerProgramSession.h Source/ComputerPrograms/Framework/ComputerProgramWidget.cpp Source/ComputerPrograms/Framework/ComputerProgramWidget.h - Source/ConsoleInfra/CommandRowWidget.cpp - Source/ConsoleInfra/CommandRowWidget.h + Source/ConsoleInfra/ConsolePanel.cpp + Source/ConsoleInfra/ConsolePanel.h + Source/ConsoleInfra/ConsolePanelSession.cpp + Source/ConsoleInfra/ConsolePanelSession.h Source/ConsoleInfra/ConsoleSystemOption.cpp Source/ConsoleInfra/ConsoleSystemOption.h Source/ConsoleInfra/ConsoleSystemSession.cpp Source/ConsoleInfra/ConsoleSystemSession.h - Source/ConsoleInfra/ConsoleSystemWidget.cpp - Source/ConsoleInfra/ConsoleSystemWidget.h Source/ConsoleInfra/VirtualConsole.cpp Source/ConsoleInfra/VirtualConsole.h + Source/ConsoleInfra/UI/CommandRowWidget.cpp + Source/ConsoleInfra/UI/CommandRowWidget.h + Source/ConsoleInfra/UI/ConsolePanelWidget.cpp + Source/ConsoleInfra/UI/ConsolePanelWidget.h + Source/ConsoleInfra/UI/ConsoleSystemWidget.cpp + Source/ConsoleInfra/UI/ConsoleSystemWidget.h Source/ControllerInput/Keyboard/GlobalKeyboardHidTracker.cpp Source/ControllerInput/Keyboard/GlobalKeyboardHidTracker.h Source/ControllerInput/Keyboard/GlobalQtKeyMap.cpp