コード例 #1
0
ファイル: controlpeer.cpp プロジェクト: sigsergv/guzum
void ControlPeer::editFile(const QString & fn)
{
    QString filename(fn);

    if (mode() == ModeServer) {
        EncryptedTextWindow * textWindow;
        QFileInfo fi(filename);
        if (!fi.exists()) {
            QMessageBox::critical(0, EncryptedTextWindow::tr("Error"), 
                    EncryptedTextWindow::tr("File `%1' not found").arg(filename));
            return;
        }
        // init gpgme if required
        GPGME_Error err = GPGME::init(QString());
        if (err != GPG_ERR_NO_ERROR) {
            QMessageBox::critical(0, EncryptedTextWindow::tr("Error"),
                    EncryptedTextWindow::tr("Cannot initialize GPG backend"));
            return;
        }

        filename = fi.canonicalFilePath();
        textWindow = new EncryptedTextWindow(filename, QString());

        QApplication::setActiveWindow(textWindow);
        if (!textWindow->show()) {
            return;
        }
    } else if (mode() == ModeClient) {
        sendRawMessage(QString("%1\n%2").arg(OPEN_FILE_METHOD).arg(filename), 1000);
    }
}
コード例 #2
0
ファイル: controlpeer.cpp プロジェクト: sigsergv/guzum
ControlPeer::ControlPeer(QObject * parent)
    : QObject(parent)
{
    p = new Private;
    p->error = NoError;
    p->mode = ModeUndefined;

    QString controlSocketPath = Guzum::Config::controlSocketPath();

    p->server = new QLocalServer(this);
    bool res = p->server->listen(controlSocketPath);
    if (!res) {
        if (p->server->serverError() == QAbstractSocket::AddressInUseError) {
            // check is the server alive, if not then remove socket file and try again
            p->mode = ModeClient;
            QString response = sendRawMessage("test", 1000);
            if (error() != NoError) {
                // failed to send message so there is no listeners there
                // so try to start again
                QFile::remove(controlSocketPath);
                res = p->server->listen(controlSocketPath);
                if (!res) {
                    p->error = FailedToStartServerError;
                    p->mode = ModeUndefined;
                } else {
                    p->error = NoError;
                    p->mode = ModeServer;
                    QObject::connect(p->server, SIGNAL(newConnection()), SLOT(receiveConnection()));
                }
                return;
            } else {
                // service responded, so we are really in client mode
                p->error = NoError;
                p->mode = ModeClient;
            }
        } else {
            p->error = FailedToStartServerError;
            p->mode = ModeUndefined;
        }
    } else {
        p->error = NoError;
        p->mode = ModeClient;
    }
}
コード例 #3
0
ファイル: controlpeer.cpp プロジェクト: sigsergv/guzum
void ControlPeer::showFileSelectorDialog()
{
    if (mode() == ModeServer) {
        QString editFilename;
        // read last used dir name from the settings
        QSettings * settings = Guzum::Config::settings();
        settings->beginGroup("EditFileSelector");
        QString initDir = settings->value("init-dir").toString();
        settings->endGroup();

        if (initDir.isEmpty()) {
            initDir = QDir::homePath();
        }
        QPointer<QFileDialog> fileDialog = new QFileDialog(0, EncryptedTextWindow::tr("Select file encrypted by Gnupg"),
            initDir, EncryptedTextWindow::tr("Encrypted files (*.gpg, *.asc) (*.gpg *.asc);;All files (*.*)"));

        if (fileDialog->exec()) {
            QStringList files = fileDialog->selectedFiles();
            editFilename = files[0];
        }

        if (editFilename.isEmpty()) {
            return;
        }

#ifdef Q_OS_MAC
        // special workaround for MacOSX
        // to let system hide dialog
        QTest::qWait(500);
#endif
        editFile(editFilename);
        // remember last used directory
        QFileInfo fi(editFilename);
        settings->beginGroup("EditFileSelector");
        settings->setValue("init-dir", fi.canonicalPath());
        settings->endGroup();
        settings->sync();
    } else if (mode() == ModeClient) {
        sendRawMessage(SHOW_DIALOG_METHOD, 1000);
    }
}
コード例 #4
0
void ofxPd::sendFloat( const string& receive_target, float the_float )
{
	sendRawMessage( ";"+receive_target+" "+ofToString(the_float) );
}