Browse Source

ThemeEditor: Add a Statusbar

Sam Atkins 2 years ago
parent
commit
16240942ba

+ 13 - 6
Userland/Applications/ThemeEditor/MainWidget.cpp

@@ -1,7 +1,7 @@
 /*
 /*
  * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
  * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
  * Copyright (c) 2021-2022, networkException <networkexception@serenityos.org>
  * Copyright (c) 2021-2022, networkException <networkexception@serenityos.org>
- * Copyright (c) 2021-2022, Sam Atkins <atkinssj@serenityos.org>
+ * Copyright (c) 2021-2023, Sam Atkins <atkinssj@serenityos.org>
  * Copyright (c) 2021, Antonio Di Stefano <tonio9681@gmail.com>
  * Copyright (c) 2021, Antonio Di Stefano <tonio9681@gmail.com>
  * Copyright (c) 2022, Filiph Sandström <filiph.sandstrom@filfatstudios.com>
  * Copyright (c) 2022, Filiph Sandström <filiph.sandstrom@filfatstudios.com>
  *
  *
@@ -31,11 +31,11 @@
 #include <LibGUI/Menubar.h>
 #include <LibGUI/Menubar.h>
 #include <LibGUI/MessageBox.h>
 #include <LibGUI/MessageBox.h>
 #include <LibGUI/ScrollableContainerWidget.h>
 #include <LibGUI/ScrollableContainerWidget.h>
-#include <LibGfx/Filters/ColorBlindnessFilter.h>
+#include <LibGUI/Statusbar.h>
 
 
 namespace ThemeEditor {
 namespace ThemeEditor {
 
 
-static const PropertyTab window_tab {
+static PropertyTab const window_tab {
     "Windows"sv,
     "Windows"sv,
     {
     {
         { "General",
         { "General",
@@ -91,7 +91,7 @@ static const PropertyTab window_tab {
     }
     }
 };
 };
 
 
-static const PropertyTab widgets_tab {
+static PropertyTab const widgets_tab {
     "Widgets"sv,
     "Widgets"sv,
     {
     {
         { "General",
         { "General",
@@ -160,7 +160,7 @@ static const PropertyTab widgets_tab {
     }
     }
 };
 };
 
 
-static const PropertyTab syntax_highlighting_tab {
+static PropertyTab const syntax_highlighting_tab {
     "Syntax Highlighting"sv,
     "Syntax Highlighting"sv,
     {
     {
         { "General",
         { "General",
@@ -184,7 +184,7 @@ static const PropertyTab syntax_highlighting_tab {
     }
     }
 };
 };
 
 
-static const PropertyTab color_scheme_tab {
+static PropertyTab const color_scheme_tab {
     "Color Scheme"sv,
     "Color Scheme"sv,
     {
     {
         { "General",
         { "General",
@@ -219,6 +219,7 @@ ErrorOr<NonnullRefPtr<MainWidget>> MainWidget::try_create()
     TRY(main_widget->load_from_gml(theme_editor_gml));
     TRY(main_widget->load_from_gml(theme_editor_gml));
     main_widget->m_preview_widget = main_widget->find_descendant_of_type_named<ThemeEditor::PreviewWidget>("preview_widget");
     main_widget->m_preview_widget = main_widget->find_descendant_of_type_named<ThemeEditor::PreviewWidget>("preview_widget");
     main_widget->m_property_tabs = main_widget->find_descendant_of_type_named<GUI::TabWidget>("property_tabs");
     main_widget->m_property_tabs = main_widget->find_descendant_of_type_named<GUI::TabWidget>("property_tabs");
+    main_widget->m_statusbar = main_widget->find_descendant_of_type_named<GUI::Statusbar>("statusbar");
 
 
     TRY(main_widget->add_property_tab(window_tab));
     TRY(main_widget->add_property_tab(window_tab));
     TRY(main_widget->add_property_tab(widgets_tab));
     TRY(main_widget->add_property_tab(widgets_tab));
@@ -234,6 +235,12 @@ MainWidget::MainWidget(NonnullRefPtr<AlignmentModel> alignment_model)
     : m_current_palette(GUI::Application::the()->palette())
     : m_current_palette(GUI::Application::the()->palette())
     , m_alignment_model(move(alignment_model))
     , m_alignment_model(move(alignment_model))
 {
 {
+    GUI::Application::the()->on_action_enter = [this](GUI::Action& action) {
+        m_statusbar->set_override_text(action.status_tip());
+    };
+    GUI::Application::the()->on_action_leave = [this](GUI::Action&) {
+        m_statusbar->set_override_text({});
+    };
 }
 }
 
 
 ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
 ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)

+ 2 - 1
Userland/Applications/ThemeEditor/MainWidget.h

@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (c) 2022, Sam Atkins <atkinssj@serenityos.org>
+ * Copyright (c) 2022-2023, Sam Atkins <atkinssj@serenityos.org>
  *
  *
  * SPDX-License-Identifier: BSD-2-Clause
  * SPDX-License-Identifier: BSD-2-Clause
  */
  */
@@ -117,6 +117,7 @@ private:
 
 
     RefPtr<PreviewWidget> m_preview_widget;
     RefPtr<PreviewWidget> m_preview_widget;
     RefPtr<GUI::TabWidget> m_property_tabs;
     RefPtr<GUI::TabWidget> m_property_tabs;
+    RefPtr<GUI::Statusbar> m_statusbar;
     RefPtr<GUI::Action> m_save_action;
     RefPtr<GUI::Action> m_save_action;
 
 
     RefPtr<GUI::Button> m_theme_override_apply;
     RefPtr<GUI::Button> m_theme_override_apply;

+ 37 - 29
Userland/Applications/ThemeEditor/ThemeEditor.gml

@@ -1,44 +1,52 @@
 @GUI::Widget {
 @GUI::Widget {
-    layout: @GUI::VerticalBoxLayout {
-        margins: [0, 4, 4]
-        spacing: 6
-    }
+    layout: @GUI::VerticalBoxLayout {}
     fill_with_background_color: true
     fill_with_background_color: true
 
 
     @GUI::Widget {
     @GUI::Widget {
-        layout: @GUI::HorizontalBoxLayout {
-            spacing: 4
+        layout: @GUI::VerticalBoxLayout {
+            margins: [0, 4, 4]
+            spacing: 6
         }
         }
 
 
-        @ThemeEditor::PreviewWidget {
-            name: "preview_widget"
-        }
+        @GUI::Widget {
+            layout: @GUI::HorizontalBoxLayout {
+                spacing: 4
+            }
 
 
-        @GUI::TabWidget {
-            name: "property_tabs"
-            container_margins: [5]
-        }
-    }
+            @ThemeEditor::PreviewWidget {
+                name: "preview_widget"
+            }
 
 
-    @GUI::Widget {
-        name: "theme_override_controls"
-        layout: @GUI::HorizontalBoxLayout {
-            spacing: 6
+            @GUI::TabWidget {
+                name: "property_tabs"
+                container_margins: [5]
+            }
         }
         }
-        preferred_height: "shrink"
 
 
-        @GUI::Layout::Spacer {}
+        @GUI::Widget {
+            name: "theme_override_controls"
+            layout: @GUI::HorizontalBoxLayout {
+                spacing: 6
+            }
+            preferred_height: "shrink"
 
 
-        @GUI::DialogButton {
-            name: "reset_button"
-            text: "Reset"
-            enabled: false
-        }
+            @GUI::Layout::Spacer {}
+
+            @GUI::DialogButton {
+                name: "reset_button"
+                text: "Reset"
+                enabled: false
+            }
 
 
-        @GUI::DialogButton {
-            name: "apply_button"
-            text: "Apply"
-            enabled: false
+            @GUI::DialogButton {
+                name: "apply_button"
+                text: "Apply"
+                enabled: false
+            }
         }
         }
     }
     }
+
+    @GUI::Statusbar {
+        name: "statusbar"
+    }
 }
 }