/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/smolbote.hg * * SPDX-License-Identifier: GPL-3.0 */ #include "configuration.h" #include #include namespace po = boost::program_options; Configuration::Configuration() { m_homePath = QStandardPaths::writableLocation(QStandardPaths::HomeLocation).toStdString(); // create description desc.add_options() // Browser default settings // default profile name the browser should use; "" is off-the-record ("browser.profile", po::value()->default_value("")) // default window size ("browser.window.height", po::value()->default_value(720)) ("browser.window.width", po::value()->default_value(1280)) ("browser.window.maximized", po::value()->default_value(true)) ("browser.window.title", po::value()->default_value("title — smolbote [profile]")) // window ui ("browser.ui.navtoolbarMovable", po::value()->default_value(false)) ("browser.ui.tabtoolbarMovable", po::value()->default_value(false)) // browser shortcuts // browser menu ("browser.shortcuts.newWindow", po::value()->default_value("Ctrl+N")) ("browser.shortcuts.newTab", po::value()->default_value("Ctrl+T")) ("browser.shortcuts.about", po::value()->default_value("F1")) ("browser.shortcuts.quit", po::value()->default_value("Ctrl+Q")) // navigation ("browser.shortcuts.back", po::value()->default_value("Ctrl+Left")) ("browser.shortcuts.forward", po::value()->default_value("Ctrl+Right")) ("browser.shortcuts.refresh", po::value()->default_value("F5")) ("browser.shortcuts.reload", po::value()->default_value("Ctrl+F5")) ("browser.shortcuts.home", po::value()->default_value("Ctrl+Home")) // tabs ("browser.shortcuts.tabClose", po::value()->default_value("Ctrl+X")) ("browser.shortcuts.tabLeft", po::value()->default_value("Ctrl+O")) ("browser.shortcuts.tabRight", po::value()->default_value("Ctrl+P")) // page ("browser.shortcuts.toggleSearchBox", po::value()->default_value("F3")) ("browser.shortcuts.focusAddress", po::value()->default_value("F4")) ("browser.shortcuts.fullscreen", po::value()->default_value("F11")) // Filter settings ("filter.path", po::value()->default_value("~/.config/smolbote/hosts.d")) // Plugin settings ("plugins.path", po::value()->default_value("~/.config/smolbote/plugins.d")) // Profile settings ("profile.path", po::value()->default_value("~/.config/smolbote/profiles.d")) ("profile.search", po::value()->default_value("https://duckduckgo.com/?q=$term&ia=web")) ("profile.homepage", po::value()->default_value("about:blank")) ("profile.newtab", po::value()->default_value("about:blank")) // Bookmark settings ("bookmarks.path", po::value()->default_value("~/.config/smolbote/bookmarks.xbel")) ("bookmarks.shortcut", po::value()->default_value("Ctrl+B")) // Downloads settings ("downloads.path", po::value()->default_value("~/Downloads")) ("downloads.shortcut", po::value()->default_value("Ctrl+D")) ; // store the defaults into the vm { const char* argv[0]; po::store(po::parse_command_line(0, argv, desc), vm); } } Configuration::~Configuration() = default; bool Configuration::read(const QString &path) { std::ifstream f(path.toStdString(), std::ifstream::in); po::store(po::parse_config_file(f, desc, false), vm); return true; } bool Configuration::parse(int argc, const char **argv) { try { po::store(po::parse_command_line(argc, argv, desc), vm); } catch (const po::error &e) { return false; } return true; }