/* * Copyright (c) 2022, Dylan Katz * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include #include #include #include #include "MainWidget.h" ErrorOr serenity_main(Main::Arguments arguments) { char const* file_to_open = nullptr; Core::ArgsParser args_parser; args_parser.add_positional_argument(file_to_open, "Path to SQL script or DB", "file", Core::ArgsParser::Required::No); args_parser.parse(arguments); auto app = TRY(GUI::Application::try_create(arguments)); auto app_icon = GUI::Icon::default_icon("app-sql-studio"); auto window = TRY(GUI::Window::try_create()); window->resize(640, 480); window->set_icon(app_icon.bitmap_for_size(16)); window->set_title("SQL Studio"); auto main_widget = TRY(window->try_set_main_widget()); main_widget->initialize_menu(window); window->on_close_request = [&] { if (main_widget->request_close()) return GUI::Window::CloseRequestDecision::Close; return GUI::Window::CloseRequestDecision::StayOpen; }; auto needs_new_script = true; if (file_to_open) { auto path = LexicalPath(file_to_open); if (path.extension().equals_ignoring_case("sql"sv)) { main_widget->open_script_from_file(path); needs_new_script = false; } else if (path.extension().equals_ignoring_case("db"sv)) { main_widget->open_database_from_file(path); } } if (needs_new_script) main_widget->open_new_script(); window->show(); return app->exec(); }