diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-07-23 23:40:48 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-07-24 21:46:11 +0530 |
| commit | 43f3261635e1667367cfd31a2f746832e94c3957 (patch) | |
| tree | a68d385c1bee08e8527e2d0c44d69ab14010a4c0 /src/App.cpp | |
| parent | f18749fc37ef0d5bfb6bf240740a401cce372d0c (diff) | |
| download | null-browser-43f3261635e1667367cfd31a2f746832e94c3957.tar.gz null-browser-43f3261635e1667367cfd31a2f746832e94c3957.zip | |
Refactor main into App class
Diffstat (limited to '')
| -rw-r--r-- | src/App.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/App.cpp b/src/App.cpp new file mode 100644 index 0000000..7ce8932 --- /dev/null +++ b/src/App.cpp @@ -0,0 +1,72 @@ +#include "InstanceManager.hpp" +#include "LuaRuntime.hpp" +#include "widgets/BrowserApp.hpp" + +#include "App.hpp" + +App::App() { + configure_cli_parser(); + QApplication::setApplicationName("null-browser"); + QApplication::setApplicationVersion("0.0.0"); +} + +void App::run() { + cli_parser.process(*qApp); + instance_manager.initialize(); + + auto config_dir = get_cli_config_dir(); + if (!config_dir.isEmpty()) + configuration.set_config_dir(config_dir); + + if (instance_manager.is_server()) { + init_server(); + } else { + qInfo() << "Using current instance"; + init_client(); + } +} + +void App::configure_cli_parser() { + cli_parser.setApplicationDescription("null-browser"); + cli_parser.addHelpOption(); + cli_parser.addVersionOption(); + cli_parser.addPositionalArgument("url", "URL(s) to open", "[url]"); + cli_parser.addOptions({ + {{"e", "expr"}, "Lua expression to execute", "lua"}, + {{"C", "config-dir"}, "Config directory for null browser", "dir"}, + }); +} + +void App::init_server() { + auto urls = get_cli_urls(); + auto lua_expr = get_cli_lua_expr(); + + auto *browser = new BrowserApp(configuration); + browser->create_window(urls); + + auto &lua = LuaRuntime::instance(); + QObject::connect(&instance_manager, &InstanceManager::lua_eval_requested, &lua, + &LuaRuntime::evaluate); + QObject::connect(&instance_manager, &InstanceManager::urls_open_requested, browser, + &BrowserApp::create_window); + + if (!lua_expr.isEmpty()) + lua.evaluate(lua_expr); +} + +void App::init_client() { + auto urls = get_cli_urls(); + auto lua_expr = get_cli_lua_expr(); + + if (!urls.isEmpty() || lua_expr.isEmpty()) { + UrlServerMsg msg(urls); + instance_manager.write_message(msg); + } + + if (!lua_expr.isEmpty()) { + LuaExprServerMsg msg(lua_expr); + instance_manager.write_message(msg); + } + + instance_manager.close(); +} |
