Serenity Operating System
at master 78 lines 2.1 kB view raw
1/* 2 * Copyright (c) 2022, Dylan Katz <dykatz@uw.edu> 3 * Copyright (c) 2022, Tim Flynn <trflynn89@serenityos.org> 4 * 5 * SPDX-License-Identifier: BSD-2-Clause 6 */ 7 8#pragma once 9 10#include <AK/LexicalPath.h> 11#include <AK/Vector.h> 12#include <LibGUI/Widget.h> 13#include <LibSQL/SQLClient.h> 14 15namespace SQLStudio { 16 17class ScriptEditor; 18 19class MainWidget : public GUI::Widget { 20 C_OBJECT(MainWidget) 21 22public: 23 virtual ~MainWidget() = default; 24 25 void initialize_menu(GUI::Window*); 26 void open_new_script(); 27 void open_script_from_file(LexicalPath const&); 28 29 bool request_close(); 30 31private: 32 MainWidget(); 33 34 ScriptEditor* active_editor(); 35 36 void update_title(); 37 void on_editor_change(); 38 void update_statusbar(ScriptEditor*); 39 void update_editor_actions(ScriptEditor*); 40 41 virtual void drag_enter_event(GUI::DragEvent&) override; 42 virtual void drop_event(GUI::DropEvent&) override; 43 44 RefPtr<GUI::Action> m_new_action; 45 RefPtr<GUI::Action> m_open_action; 46 RefPtr<GUI::Action> m_save_action; 47 RefPtr<GUI::Action> m_save_as_action; 48 RefPtr<GUI::Action> m_save_all_action; 49 RefPtr<GUI::Action> m_copy_action; 50 RefPtr<GUI::Action> m_cut_action; 51 RefPtr<GUI::Action> m_paste_action; 52 RefPtr<GUI::Action> m_undo_action; 53 RefPtr<GUI::Action> m_redo_action; 54 RefPtr<GUI::Action> m_connect_to_database_action; 55 RefPtr<GUI::Action> m_run_script_action; 56 57 int m_new_script_counter { 1 }; 58 RefPtr<GUI::ComboBox> m_databases_combo_box; 59 RefPtr<GUI::TabWidget> m_tab_widget; 60 RefPtr<GUI::Statusbar> m_statusbar; 61 RefPtr<GUI::TabWidget> m_action_tab_widget; 62 RefPtr<GUI::Widget> m_query_results_widget; 63 RefPtr<GUI::TableView> m_query_results_table_view; 64 65 RefPtr<SQL::SQLClient> m_sql_client; 66 Optional<SQL::ConnectionID> m_connection_id; 67 Vector<DeprecatedString> m_result_column_names; 68 Vector<Vector<DeprecatedString>> m_results; 69 70 void read_next_sql_statement_of_editor(); 71 Optional<DeprecatedString> read_next_line_of_editor(); 72 size_t m_current_line_for_parsing { 0 }; 73 int m_editor_line_level { 0 }; 74}; 75 76} 77 78using SQLStudio::MainWidget;