From 9b1e754d56d80f5983d9a5308aa4145f56d81ca8 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Wed, 28 Dec 2022 11:38:46 -0500 Subject: [PATCH] SQLStudio: Convert SQLStudio to GML --- Userland/DevTools/SQLStudio/CMakeLists.txt | 6 +++++ Userland/DevTools/SQLStudio/MainWidget.cpp | 21 ++++++++--------- Userland/DevTools/SQLStudio/SQLStudio.gml | 27 ++++++++++++++++++++++ 3 files changed, 42 insertions(+), 12 deletions(-) create mode 100644 Userland/DevTools/SQLStudio/SQLStudio.gml diff --git a/Userland/DevTools/SQLStudio/CMakeLists.txt b/Userland/DevTools/SQLStudio/CMakeLists.txt index ffd5b0c6b81..143734e7df2 100644 --- a/Userland/DevTools/SQLStudio/CMakeLists.txt +++ b/Userland/DevTools/SQLStudio/CMakeLists.txt @@ -4,11 +4,17 @@ serenity_component( TARGETS SQLStudio ) +compile_gml(SQLStudio.gml SQLStudioGML.h sql_studio_gml) + set(SOURCES main.cpp MainWidget.cpp ScriptEditor.cpp ) +set(GENERATED_SOURCES + SQLStudioGML.h +) + serenity_app(SQLStudio ICON app-sql-studio) target_link_libraries(SQLStudio PRIVATE LibCore LibDesktop LibGfx LibGUI LibIPC LibMain LibSQL LibSyntax) diff --git a/Userland/DevTools/SQLStudio/MainWidget.cpp b/Userland/DevTools/SQLStudio/MainWidget.cpp index 72067d84576..8da961e7505 100644 --- a/Userland/DevTools/SQLStudio/MainWidget.cpp +++ b/Userland/DevTools/SQLStudio/MainWidget.cpp @@ -4,6 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ +#include #include #include #include @@ -29,12 +30,14 @@ #include "MainWidget.h" #include "ScriptEditor.h" +REGISTER_WIDGET(SQLStudio, MainWidget); + namespace SQLStudio { MainWidget::MainWidget() { - set_fill_with_background_color(true); - set_layout(); + if (!load_from_gml(sql_studio_gml)) + VERIFY_NOT_REACHED(); m_new_action = GUI::Action::create("&New", { Mod_Ctrl, Key_N }, Gfx::Bitmap::try_load_from_file("/res/icons/16x16/new.png"sv).release_value_but_fixme_should_propagate_errors(), [this](auto&) { open_new_script(); @@ -158,9 +161,7 @@ MainWidget::MainWidget() } }); - auto& toolbar_container = add(); - auto& toolbar = toolbar_container.add(); - + auto& toolbar = *find_descendant_of_type_named("toolbar"sv); toolbar.add_action(*m_new_action); toolbar.add_action(*m_open_action); toolbar.add_action(*m_save_action); @@ -175,9 +176,7 @@ MainWidget::MainWidget() toolbar.add_separator(); toolbar.add_action(*m_run_script_action); - m_tab_widget = add(); - m_tab_widget->set_close_button_enabled(true); - m_tab_widget->set_reorder_allowed(true); + m_tab_widget = find_descendant_of_type_named("script_tab_widget"sv); m_tab_widget->on_tab_close_click = [&](auto& widget) { auto editor = dynamic_cast(&widget); @@ -200,9 +199,7 @@ MainWidget::MainWidget() on_editor_change(); }; - m_action_tab_widget = add(); - m_action_tab_widget->set_fixed_height(0); - m_action_tab_widget->set_close_button_enabled(true); + m_action_tab_widget = find_descendant_of_type_named("action_tab_widget"sv); m_query_results_widget = m_action_tab_widget->add_tab("Results"); m_query_results_widget->set_layout(); @@ -213,7 +210,7 @@ MainWidget::MainWidget() m_action_tab_widget->set_fixed_height(0); }; - m_statusbar = add(3); + m_statusbar = find_descendant_of_type_named("statusbar"sv); m_statusbar->segment(1).set_mode(GUI::Statusbar::Segment::Mode::Fixed); m_statusbar->segment(1).set_fixed_width(font().width("000000 characters (00000 words) selected"sv) + font().max_glyph_width()); diff --git a/Userland/DevTools/SQLStudio/SQLStudio.gml b/Userland/DevTools/SQLStudio/SQLStudio.gml new file mode 100644 index 00000000000..7de474a8d71 --- /dev/null +++ b/Userland/DevTools/SQLStudio/SQLStudio.gml @@ -0,0 +1,27 @@ +@SQLStudio::MainWidget { + layout: @GUI::VerticalBoxLayout {} + fill_with_background_color: true + + @GUI::ToolbarContainer { + @GUI::Toolbar { + name: "toolbar" + } + } + + @GUI::TabWidget { + name: "script_tab_widget" + reorder_allowed: true + show_close_buttons: true + } + + @GUI::TabWidget { + name: "action_tab_widget" + show_close_buttons: true + fixed_height: 0 + } + + @GUI::Statusbar { + name: "statusbar" + segment_count: 3 + } +}