瀏覽代碼

GMLPlayground: Add a Statusbar

Sam Atkins 2 年之前
父節點
當前提交
ae6bde6847

+ 4 - 0
Userland/DevTools/GMLPlayground/GMLPlaygroundWindow.gml

@@ -20,4 +20,8 @@
             name: "preview_frame"
             name: "preview_frame"
         }
         }
     }
     }
+
+    @GUI::Statusbar {
+        name: "statusbar"
+    }
 }
 }

+ 13 - 1
Userland/DevTools/GMLPlayground/MainWidget.cpp

@@ -24,6 +24,7 @@
 #include <LibGUI/Painter.h>
 #include <LibGUI/Painter.h>
 #include <LibGUI/RegularEditingEngine.h>
 #include <LibGUI/RegularEditingEngine.h>
 #include <LibGUI/Splitter.h>
 #include <LibGUI/Splitter.h>
+#include <LibGUI/Statusbar.h>
 #include <LibGUI/TextEditor.h>
 #include <LibGUI/TextEditor.h>
 #include <LibGUI/Toolbar.h>
 #include <LibGUI/Toolbar.h>
 #include <LibGUI/VimEditingEngine.h>
 #include <LibGUI/VimEditingEngine.h>
@@ -62,7 +63,7 @@ void UnregisteredWidget::paint_event(GUI::PaintEvent& event)
 
 
 ErrorOr<NonnullRefPtr<MainWidget>> MainWidget::try_create(GUI::Icon const& icon)
 ErrorOr<NonnullRefPtr<MainWidget>> MainWidget::try_create(GUI::Icon const& icon)
 {
 {
-    auto main_widget = TRY(try_make_ref_counted<MainWidget>());
+    auto main_widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) MainWidget()));
     TRY(main_widget->load_from_gml(gml_playground_window_gml));
     TRY(main_widget->load_from_gml(gml_playground_window_gml));
     main_widget->m_icon = icon;
     main_widget->m_icon = icon;
 
 
@@ -70,6 +71,7 @@ ErrorOr<NonnullRefPtr<MainWidget>> MainWidget::try_create(GUI::Icon const& icon)
     main_widget->m_splitter = main_widget->find_descendant_of_type_named<GUI::HorizontalSplitter>("splitter");
     main_widget->m_splitter = main_widget->find_descendant_of_type_named<GUI::HorizontalSplitter>("splitter");
     main_widget->m_editor = main_widget->find_descendant_of_type_named<GUI::TextEditor>("text_editor");
     main_widget->m_editor = main_widget->find_descendant_of_type_named<GUI::TextEditor>("text_editor");
     main_widget->m_preview_frame_widget = main_widget->find_descendant_of_type_named<GUI::Frame>("preview_frame");
     main_widget->m_preview_frame_widget = main_widget->find_descendant_of_type_named<GUI::Frame>("preview_frame");
+    main_widget->m_statusbar = main_widget->find_descendant_of_type_named<GUI::Statusbar>("statusbar");
 
 
     main_widget->m_preview_window = TRY(GUI::Window::try_create(main_widget));
     main_widget->m_preview_window = TRY(GUI::Window::try_create(main_widget));
     main_widget->m_preview_window->set_title("Preview - GML Playground");
     main_widget->m_preview_window->set_title("Preview - GML Playground");
@@ -100,6 +102,16 @@ ErrorOr<NonnullRefPtr<MainWidget>> MainWidget::try_create(GUI::Icon const& icon)
     return main_widget;
     return main_widget;
 }
 }
 
 
+MainWidget::MainWidget()
+{
+    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({});
+    };
+}
+
 void MainWidget::update_title()
 void MainWidget::update_title()
 {
 {
     window()->set_title(DeprecatedString::formatted("{}[*] - GML Playground", m_file_path.is_empty() ? "Untitled"sv : m_file_path.view()));
     window()->set_title(DeprecatedString::formatted("{}[*] - GML Playground", m_file_path.is_empty() ? "Untitled"sv : m_file_path.view()));

+ 2 - 0
Userland/DevTools/GMLPlayground/MainWidget.h

@@ -30,6 +30,7 @@ public:
     GUI::TextEditor& editor() const { return *m_editor; }
     GUI::TextEditor& editor() const { return *m_editor; }
 
 
 private:
 private:
+    MainWidget();
     virtual void drag_enter_event(GUI::DragEvent&) override;
     virtual void drag_enter_event(GUI::DragEvent&) override;
     virtual void drop_event(GUI::DropEvent&) override;
     virtual void drop_event(GUI::DropEvent&) override;
 
 
@@ -37,6 +38,7 @@ private:
     RefPtr<GUI::TextEditor> m_editor;
     RefPtr<GUI::TextEditor> m_editor;
     RefPtr<GUI::Toolbar> m_toolbar;
     RefPtr<GUI::Toolbar> m_toolbar;
     RefPtr<GUI::Splitter> m_splitter;
     RefPtr<GUI::Splitter> m_splitter;
+    RefPtr<GUI::Statusbar> m_statusbar;
 
 
     RefPtr<GUI::Frame> m_preview_frame_widget;
     RefPtr<GUI::Frame> m_preview_frame_widget;
     RefPtr<GUI::Window> m_preview_window;
     RefPtr<GUI::Window> m_preview_window;