예제 #1
0
int main(int argc, char *argv[])
{
    QTextCodec *localCode = QTextCodec::codecForLocale();
    //QTextCodec *localCode = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForLocale(localCode);
    QTextCodec::setCodecForCStrings(localCode);
    QTextCodec::setCodecForTr(localCode);

    QApplication a(argc, argv);
    MainWindow w;
    CommandParameters commandParameters;

    // 显示版本号时无视其它参数内容
    if (commandParameters.hasVersion()) {
        printf(VERSION_STRING);
        return 0;
    }

    // 显示帮助时 无视 --command 参数值 立即显示出窗口
    if (commandParameters.hasHelp()) {
        w.show();
        return a.exec();
    }

    // --command 参数没有时显示窗口
    if (!commandParameters.isCommandMode()) {
        w.show();
        return a.exec();
    }

    // 命令行模式并且没有开启help
    // 进行 start 和 script 脚本执行判断
    // 如果没有脚本可执行 则立即关闭自身
    if (commandParameters.isCommandMode() && !commandParameters.hasHelp()) {
        // 开启命令模式时 --script 参数值为空则立即退出
        if (commandParameters.hasScript() &&
            commandParameters.getParams()["script"] == "") {
            a.quit();
            return 0;
        }

        // 开启命令模式时 --script 参数值为空则立即退出
        if (!commandParameters.hasScript() &&
            !commandParameters.hasStart()) {
            a.quit();
            return 0;
        }
    }

    // 用来修补sendEvent在不显示窗口时失效问题
    // 先最小化显示再隐藏
    // 初步怀疑是show窗口之后才能开始接收GUI归属的消息
    w.showMinimized();
    w.hide();

    return a.exec();
}
예제 #2
0
void MainWindow::initUserScript()
{
    CommandParameters cmdParams;

    if (cmdParams.hasScript()) {
        QString scriptFunc = script->readFile(getAppPath() +
                                              cmdParams.getParams()["script"],
                                              QTextCodec::codecForName("UTF-8"));

        if (script->getScriptEngine()->canEvaluate(scriptFunc)) {
            script->runScript(scriptFunc);
        } else {
            ui->outputScriptResults_txt->setPlainText(scriptFunc);
        }
    }

    if (cmdParams.hasStart()) {
        QString scriptFunc = "App.loadScript(App.path + 'js/conf/init.js', function(err, func){func(App,App.webview)});";
        script->runScript(scriptFunc);
        return;
    }
}