/******************************************************************************* ** ** smolbote: yet another qute browser ** Copyright (C) 2017 Xian Nox ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . ** ******************************************************************************/ #include #include "browser.h" #include "mainwindow.h" #include #include /** * @brief printPoiToml Print the built-in config (if any) * @param output std::ostream to print to */ void printPoiToml(std::ostream &output) { QFile conf(":/poi.toml"); if(conf.open(QIODevice::ReadOnly)) { output << conf.readAll().toStdString() << std::endl; conf.close(); } } int main(int argc, char *argv[]) { // Browser app(argc, argv); if(app.isRunning()) { qDebug("Another instance is running, returning..."); return 0; } QCommandLineParser parser; parser.setApplicationDescription("yet another Qt browser"); parser.addHelpOption(); parser.addVersionOption(); QCommandLineOption configOption(QStringList() << "c" << "config", "Set configuration file.", "PATH"); parser.addOption(configOption); QCommandLineOption defaultConfigOption(QStringList() << "default-config", "Print default configuration."); parser.addOption(defaultConfigOption); QCommandLineOption profileOption(QStringList() << "p" << "profile", "Use this profile.", "PROFILE"); parser.addOption(profileOption); QCommandLineOption nopluginsOption(QStringList() << "n" << "no-plugins", "Don't load plugins"); parser.addOption(nopluginsOption); QCommandLineOption newInstanceOption(QStringList() << "new-instance", "Skip instance check at startup"); parser.addOption(newInstanceOption); QCommandLineOption newWindowOption(QStringList() << "in-new-window", "Open URL in new window"); parser.addOption(newWindowOption); QCommandLineOption newTabOption(QStringList() << "in-new-tab", "Open URL in new tab"); parser.addOption(newTabOption); parser.addPositionalArgument("URL", "URL(s) to open"); parser.process(app); if(parser.isSet(defaultConfigOption)) { printPoiToml(std::cout); return 0; } app.setWindowIcon(QIcon(QLatin1String(":/icon.svg"))); // This lets the web view automatically scale on high-dpi displays. app.setAttribute(Qt::AA_EnableHighDpiScaling); // Set configuration app.setConfigPath(parser.value(configOption)); // Load profiles app.loadProfiles(); // Load plugins if(!parser.isSet(nopluginsOption)) { app.loadPlugins(); } MainWindow *w = new MainWindow(parser.positionalArguments()); if(parser.isSet(profileOption)) { w->setProfile(app.profile(parser.value(profileOption))); } app.addWindow(w); return app.exec(); }