Serenity Operating System
at master 51 lines 1.4 kB view raw
1/* 2 * Copyright (c) 2022, Dylan Katz <dykatz@uw.edu> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include <AK/StringUtils.h> 8#include <LibCore/ArgsParser.h> 9#include <LibGUI/Application.h> 10#include <LibGUI/Icon.h> 11#include <LibGUI/Window.h> 12#include <LibMain/Main.h> 13 14#include "MainWidget.h" 15 16ErrorOr<int> serenity_main(Main::Arguments arguments) 17{ 18 StringView file_to_open; 19 20 Core::ArgsParser args_parser; 21 args_parser.add_positional_argument(file_to_open, "Path to SQL script or DB", "file", Core::ArgsParser::Required::No); 22 args_parser.parse(arguments); 23 24 auto app = TRY(GUI::Application::try_create(arguments)); 25 26 auto app_icon = GUI::Icon::default_icon("app-sql-studio"sv); 27 28 auto window = TRY(GUI::Window::try_create()); 29 window->resize(640, 480); 30 window->set_icon(app_icon.bitmap_for_size(16)); 31 window->set_title("SQL Studio"); 32 33 auto main_widget = TRY(window->set_main_widget<MainWidget>()); 34 main_widget->initialize_menu(window); 35 36 window->on_close_request = [&] { 37 if (main_widget->request_close()) 38 return GUI::Window::CloseRequestDecision::Close; 39 return GUI::Window::CloseRequestDecision::StayOpen; 40 }; 41 42 if (!file_to_open.is_empty()) { 43 auto path = LexicalPath(file_to_open); 44 main_widget->open_script_from_file(path); 45 } else { 46 main_widget->open_new_script(); 47 } 48 49 window->show(); 50 return app->exec(); 51}