From 5a8c6b95e61da7717388241e0c4733de8c1d267f Mon Sep 17 00:00:00 2001 From: Mustafa Quraish Date: Mon, 6 Sep 2021 00:11:46 -0400 Subject: PixelPaint: Refactor `main.cpp` into `MainWidget` Previously, all the UI setup was done in `main.cpp`, with a whole bunch of lambdas,, and actions etc just being stored in the main function. This is probably an artifact from back when it was first created. Most other applications now have a "MainWidget" class of some sort which handles setting up all the UI/menubars, etc. More importantly,, it also lets us handle application-wide events which we were previously not able to do directly, since the main widget was just a default GUI::Widget. This patch moves all the core functionality of the PixelPaint application into PixelPaint::MainWidget, which is then instantiated by the main function. There is likely some more refactoring that would help, but this commit is big enough as it is doing mostly a direct port. --- Userland/Applications/PixelPaint/MainWidget.h | 73 +++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 Userland/Applications/PixelPaint/MainWidget.h (limited to 'Userland/Applications/PixelPaint/MainWidget.h') diff --git a/Userland/Applications/PixelPaint/MainWidget.h b/Userland/Applications/PixelPaint/MainWidget.h new file mode 100644 index 0000000000..4294608499 --- /dev/null +++ b/Userland/Applications/PixelPaint/MainWidget.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2021, Mustafa Quraish + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include "Guide.h" +#include "Image.h" +#include "ImageEditor.h" +#include "Layer.h" +#include "LayerListWidget.h" +#include "LayerPropertiesWidget.h" +#include "PaletteWidget.h" +#include "ProjectLoader.h" +#include "Tool.h" +#include "ToolPropertiesWidget.h" +#include "ToolboxWidget.h" +#include +#include +#include +#include +#include + +namespace PixelPaint { + +class MainWidget : public GUI::Widget { + C_OBJECT(MainWidget); + +public: + virtual ~MainWidget() {}; + + void initialize_menubar(GUI::Window&); + + void open_image_fd(int fd, String const& path); + void open_image_file(String const& path); + void create_default_image(); + +private: + MainWidget(); + + ImageEditor* current_image_editor(); + ImageEditor& create_new_editor(NonnullRefPtr); + + ProjectLoader m_loader; + + RefPtr m_toolbox; + RefPtr m_palette_widget; + RefPtr m_layer_list_widget; + RefPtr m_layer_properties_widget; + RefPtr m_tool_properties_widget; + RefPtr m_tab_widget; + RefPtr m_statusbar; + + RefPtr m_new_image_action; + RefPtr m_open_image_action; + RefPtr m_save_image_as_action; + + RefPtr m_copy_action; + RefPtr m_copy_merged_action; + RefPtr m_paste_action; + RefPtr m_undo_action; + RefPtr m_redo_action; + + RefPtr m_zoom_in_action; + RefPtr m_zoom_out_action; + RefPtr m_reset_zoom_action; + RefPtr m_add_guide_action; + RefPtr m_show_guides_action; +}; + +} -- cgit v1.2.3