/* * Copyright (c) 2022, Dylan Katz * Copyright (c) 2022, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include namespace SQLStudio { class ScriptEditor; class MainWidget : public GUI::Widget { C_OBJECT_ABSTRACT(MainWidget) public: virtual ~MainWidget() = default; static ErrorOr> try_create(); ErrorOr initialize(); ErrorOr initialize_menu(GUI::Window*); void open_new_script(); void open_script_from_file(LexicalPath const&); bool request_close(); private: ScriptEditor* active_editor(); void update_title(); void on_editor_change(); void update_statusbar(ScriptEditor*); void update_editor_actions(ScriptEditor*); virtual void drag_enter_event(GUI::DragEvent&) override; virtual void drop_event(GUI::DropEvent&) override; RefPtr m_new_action; RefPtr m_open_action; RefPtr m_save_action; RefPtr m_save_as_action; RefPtr m_save_all_action; RefPtr m_copy_action; RefPtr m_cut_action; RefPtr m_paste_action; RefPtr m_undo_action; RefPtr m_redo_action; RefPtr m_connect_to_database_action; RefPtr m_run_script_action; int m_new_script_counter { 1 }; RefPtr m_databases_combo_box; RefPtr m_tab_widget; RefPtr m_statusbar; RefPtr m_action_tab_widget; RefPtr m_query_results_widget; RefPtr m_query_results_table_view; RefPtr m_sql_client; Optional m_connection_id; Vector m_result_column_names; Vector> m_results; void read_next_sql_statement_of_editor(); Optional read_next_line_of_editor(); size_t m_current_line_for_parsing { 0 }; int m_editor_line_level { 0 }; }; } using SQLStudio::MainWidget;