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); } }
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; } }
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); } }
void ofxPd::sendFloat( const string& receive_target, float the_float ) { sendRawMessage( ";"+receive_target+" "+ofToString(the_float) ); }