void Logger::loadSession(){ FILE* session = NULL; fopen_s(&session, sessionsFileName,"r+"); // load data to create a new session if(session != NULL){ char line[max_line_length] =""; int temp_id = 0; while(fgets(line,max_line_length,session) != NULL){ if(line[0] == '#' && line[1] == '#'){ fscanf(session,"%d",&temp_id); } } m_Session_id = temp_id+1; saveSession(session); } else // create the file where to store data about sessions { fopen_s(&session, sessionsFileName, "w"); saveSession(session); } fclose(session); }
void BrowserApplication::quitBrowser() { if (s_downloadManager && !downloadManager()->allowQuit()) return; if (QSettings().value(QLatin1String("tabs/confirmClosingMultipleTabs"), true).toBool()) { clean(); int tabCount = 0; for (int i = 0; i < m_mainWindows.count(); ++i) { tabCount += m_mainWindows.at(i)->tabWidget()->count(); } if (tabCount > 1) { int ret = QMessageBox::warning(mainWindow(), QString(), tr("There are %1 windows and %2 tabs open\n" "Do you want to quit anyway?").arg(m_mainWindows.count()).arg(tabCount), QMessageBox::Yes | QMessageBox::No, QMessageBox::No); if (ret == QMessageBox::No) return; } } saveSession(); exit(0); }
XtalOptDialog::~XtalOptDialog() { this->hide(); writeSettings(); saveSession(); // m_opt is deleted by ~AbstractDialog }
void SessionManager::switchSession() { saveSession(); QString session = _currentSession; if(open(_lastSession)){ _lastSession = session; emit statusMessage(tr("Open session ") + _currentSession); } }
void Core::handleNeedToClose () { BrowserWidget *w = dynamic_cast<BrowserWidget*> (sender ()); emit removeTab (w); w->deleteLater (); saveSession (); }
int exec(const char *cmd, char *cmdLine, const unsigned segOfEnv) { #ifdef FEATURE_XMS_SWAP # define buf dosCMDTAIL # define memcpy _fmemcpy #else unsigned char buf[128]; #endif struct fcb fcb1, fcb2; struct ExecBlock execBlock; int retval; assert(cmd); assert(cmdLine); assert(strlen(cmdLine) <= 125); invalidateNLSbuf(); /* generate Pascal string from the command line */ memcpy(&buf[1], cmdLine, buf[0] = strlen(cmdLine)); memcpy(&buf[1] + buf[0], "\xd", 2); /* fill FCBs */ if ((cmdLine = parsfnm(cmdLine, &fcb1, 1)) != 0) parsfnm(cmdLine, &fcb2, 1); saveSession(); #ifdef FEATURE_XMS_SWAP if(XMSisactive() && swapOnExec == TRUE) { /* Copy the prepared values into the buffers in CSWAP.ASM module */ _fmemcpy(dosFCB1, &fcb1, sizeof(fcb1)); _fmemcpy(dosFCB2, &fcb2, sizeof(fcb1)); assert(strlen(cmd) < 128); _fstrcpy(dosCMDNAME, cmd); dosParamDosExec.envSeg = segOfEnv; retval = XMSexec(); } else #endif { /* fill execute structure */ execBlock.segOfEnv = segOfEnv; execBlock.cmdLine = (char far *)buf; execBlock.fcb1 = (struct fcb far *)&fcb1; execBlock.fcb2 = (struct fcb far *)&fcb2; retval = lowLevelExec((char far*)cmd, (struct ExecBlock far*)&execBlock); } restoreSession(); return decode_exec_result(retval); }
GAPCDialog::~GAPCDialog() { this->hide(); m_opt->tracker()->lockForRead(); writeSettings(); saveSession(); m_opt->tracker()->unlock(); // m_opt is deleted by ~AbstractDialog }
SaveSessionDialog::SaveSessionDialog(QWidget *parent) : Dialog(parent), m_ui(new Ui::SaveSessionDialog) { m_ui->setupUi(this); m_ui->titleLineEdit->setText(SessionsManager::getSession(SessionsManager::getCurrentSession()).title); m_ui->identifierLineEdit->setText(SessionsManager::getCurrentSession()); m_ui->identifierLineEdit->setValidator(new QRegularExpressionValidator(QRegularExpression(QLatin1String("[a-z0-9\\-_]+")), this)); connect(m_ui->buttonBox, SIGNAL(accepted()), this, SLOT(saveSession())); connect(m_ui->buttonBox, SIGNAL(rejected()), this, SLOT(close())); }
// Startup methods. bool synthv1_jack_application::setup (void) { if (m_pApp == NULL) return false; if (!parse_args()) { m_pApp->quit(); return false; } m_pSynth = new synthv1_jack(); if (m_bGui) { m_pWidget = new synthv1widget_jack(m_pSynth); if (m_presets.isEmpty()) m_pWidget->initPreset(); else m_pWidget->loadPreset(m_presets.first()); m_pWidget->show(); } else if (!m_presets.isEmpty()) synthv1_param::loadPreset(m_pSynth, m_presets.first()); #ifdef CONFIG_NSM // Check whether to participate into a NSM session... const QString& nsm_url = QString::fromLatin1(::getenv("NSM_URL")); if (!nsm_url.isEmpty()) { m_pNsmClient = new synthv1_nsm(nsm_url); QObject::connect(m_pNsmClient, SIGNAL(open()), SLOT(openSession())); QObject::connect(m_pNsmClient, SIGNAL(save()), SLOT(saveSession())); QObject::connect(m_pNsmClient, SIGNAL(show()), SLOT(showSession())); QObject::connect(m_pNsmClient, SIGNAL(hide()), SLOT(hideSession())); QString caps(":switch:dirty:"); if (m_bGui) caps += "optional-gui:"; m_pNsmClient->announce(SYNTHV1_TITLE, caps.toLatin1().constData()); if (m_pWidget) m_pWidget->setNsmClient(m_pNsmClient); } #endif // CONFIG_NSM return true; }
void mainWindow::changeLogDirectory() { QDir dir("./"); QString myDir = dir.relativeFilePath(QFileDialog::getExistingDirectory(this, tr("Open Log"), logDirectory)); if(myDir.at(0)=='.'&&myDir.at(1)=='.') { qDebug() << myDir; myDir = dir.absoluteFilePath(myDir); } logDirectory = myDir; logMap->setMapping(ui->viewLog,logDirectory); saveSession(); }
int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QMainWindow::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: senderStringWrote((*reinterpret_cast< QByteArray(*)>(_a[1]))); break; case 1: receiverStringWrote((*reinterpret_cast< QByteArray(*)>(_a[1]))); break; case 2: on_receiverRegexpReplaceRemove_clicked(); break; case 3: on_receiverRegexpReplaceAdd_clicked(); break; case 4: on_senderRegexpReplaceRemove_clicked(); break; case 5: on_senderRegexpReplaceAdd_clicked(); break; case 6: on_receiverRegexpBlockRemove_clicked(); break; case 7: on_receiverRegexpBlockAdd_clicked(); break; case 8: on_senderRegexpBlockRemove_clicked(); break; case 9: on_senderRegexpBlockAdd_clicked(); break; case 10: on_connectButton_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 11: on_receiverDeleteItemButton_clicked(); break; case 12: on_forwardOnlyButton_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 13: on_receiverFollowButton_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 14: on_senderFollowButton_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 15: on_receiverPassAllButton_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 16: on_senderPassAllButton_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 17: on_senderDeleteItemButton_clicked(); break; case 18: on_receiverPassResponseButton_clicked(); break; case 19: on_receiverMessageList_itemSelectionChanged(); break; case 20: on_senderPassRequestButton_clicked(); break; case 21: on_receiverSyntaxHighlightCombo_currentIndexChanged((*reinterpret_cast< QString(*)>(_a[1]))); break; case 22: on_senderSyntaxHighlightCombo_currentIndexChanged((*reinterpret_cast< QString(*)>(_a[1]))); break; case 23: on_receiverConnectionOptionGroup_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 24: on_senderConnectionOptionGroup_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 25: on_senderMessageList_itemSelectionChanged(); break; case 26: displayInfo(); break; case 27: displayHelp(); break; case 28: saveSession(); break; case 29: loadSession(); break; case 30: displayErrorMessage((*reinterpret_cast< QString(*)>(_a[1]))); break; case 31: senderStringRead((*reinterpret_cast< QByteArray(*)>(_a[1]))); break; case 32: receiverStringRead((*reinterpret_cast< QByteArray(*)>(_a[1]))); break; case 33: senderStringWrite((*reinterpret_cast< QByteArray(*)>(_a[1]))); break; case 34: receiverStringWrite((*reinterpret_cast< QByteArray(*)>(_a[1]))); break; case 35: senderConnectionReady(); break; case 36: receiverConnectionReady(); break; case 37: senderConnectionNotReady(); break; case 38: receiverConnectionNotReady(); break; default: ; } _id -= 39; } return _id; }
void Core::RestoreSession (bool ask) { if (!SavedSessionState_.size ()) ; else if (ask) { std::auto_ptr<RestoreSessionDialog> dia (new RestoreSessionDialog (Core::Instance ().GetProxy ()->GetMainWindow ())); bool added = false; for (int i = 0; i < SavedSessionState_.size (); ++i) { QPair<QString, QString> pair = SavedSessionState_.at (i); QString title = pair.first; QString url = pair.second; if (url.isEmpty ()) continue; dia->AddPair (title, url); added = true; } if (added && dia->exec () == QDialog::Accepted) { RestoredURLs_ = dia->GetSelectedURLs (); QTimer::singleShot (2000, this, SLOT (restorePages ())); } else saveSession (); } else { for (int i = 0; i < SavedSessionState_.size (); ++i) { QString url = SavedSessionState_.at (i).second; if (url.isEmpty ()) continue; RestoredURLs_ << i; } QTimer::singleShot (2000, this, SLOT (restorePages ())); } QList<QUrl> toRestore; Q_FOREACH (int idx, RestoredURLs_) toRestore << SavedSessionState_ [idx].second; Util::DefaultHookProxy_ptr proxy (new Util::DefaultHookProxy); emit hookSessionRestoreScheduled (proxy, toRestore); if (proxy->IsCancelled ()) { RestoredURLs_.clear (); SavedSessionState_.clear (); } }
void SessionsManager::timerEvent(QTimerEvent *event) { if (event->timerId() == m_saveTimer) { m_dirty = false; killTimer(m_saveTimer); m_saveTimer = 0; saveSession(QString(), QString(), NULL, false); } }
void SessionsManager::timerEvent(QTimerEvent *event) { if (event->timerId() == m_autoSaveTimer) { m_dirty = false; killTimer(m_autoSaveTimer); m_autoSaveTimer = 0; saveSession(); } }
void Core::restorePages () { for (QList<int>::const_iterator i = RestoredURLs_.begin (), end = RestoredURLs_.end (); i != end; ++i) { int idx = *i; NewURL (SavedSessionState_.at (idx).second)-> SetWidgetSettings (SavedSessionSettings_.at (idx)); } SavedSessionState_.clear (); SavedSessionSettings_.clear (); saveSession (); }
void Core::Unregister (BrowserWidget *widget) { widgets_t::iterator pos = std::find (Widgets_.begin (), Widgets_.end (), widget); if (pos == Widgets_.end ()) { qWarning () << Q_FUNC_INFO << widget << "not found in the collection"; return; } QString title = widget->GetView ()->title (); if (title.isEmpty ()) title = widget->GetView ()->url ().toString (); if (!title.isEmpty ()) { if (title.size () > 53) title = title.left (50) + "..."; QAction *action = new QAction (widget->GetView ()->icon (), title, this); QByteArray ba; QDataStream out (&ba, QIODevice::WriteOnly); out << *widget->GetView ()->page ()->history (); UncloseData ud = { widget->GetView ()->url (), widget->GetView ()->page ()->mainFrame ()->scrollPosition (), ba }; action->setData (QVariant::fromValue (ud)); connect (action, SIGNAL (triggered ()), this, SLOT (handleUnclose ())); emit newUnclose (action); Unclosers_.push_front (action); } Widgets_.erase (pos); saveSession (); }
void MainWindow::on_actionSaveSession_triggered() { qDebug("Save Session Action"); static QString fileName; QStringList fileTypes = SessionFileFormat::supportedFileTypes( SessionFileFormat::kSaveFile); QString fileType; QString errorStr; QFileDialog::Options options; if (portsWindow->reservedPortCount()) { QString myself = appSettings->value(kUserKey, kUserDefaultValue) .toString(); if (QMessageBox::question(this, tr("Save Session"), QString("Some ports are reserved!\n\nOnly ports reserved by %1 will be saved. Proceed?").arg(myself), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::No) goto _exit; } // On Mac OS with Native Dialog, getSaveFileName() ignores fileType. // Although currently there's only one supported file type, we may // have more in the future #if defined(Q_OS_MAC) options |= QFileDialog::DontUseNativeDialog; #endif if (fileTypes.size()) fileType = fileTypes.at(0); fileName = QFileDialog::getSaveFileName(this, tr("Save Session"), fileName, fileTypes.join(";;"), &fileType, options); if (fileName.isEmpty()) goto _exit; if (!saveSession(fileName, fileType, errorStr)) QMessageBox::critical(this, qApp->applicationName(), errorStr); else if (!errorStr.isEmpty()) QMessageBox::warning(this, qApp->applicationName(), errorStr); fileName = QFileInfo(fileName).absolutePath(); _exit: return; }
void MainWindow::closeEvent(QCloseEvent *e) { saveSession(); ui.editorTabs->closeAll(); if (ui.editorTabs->count()) { if(e) e->ignore(); return; } QSettings settings; settings.setValue("lastPort", cbPort->currentText()); settings.setValue("windowSize", saveGeometry()); if(e) e->accept(); qApp->exit(0); }
void VideoWindow::createConnections() { connect(this->ui->b_play,SIGNAL(clicked()),this,SLOT(play())); connect(this->ui->b_pause,SIGNAL(clicked()),this,SLOT(pause())); connect(this->ui->b_stop,SIGNAL(clicked()),this,SLOT(stop())); connect(this->ui->speed,SIGNAL(valueChanged(int)),this,SLOT(setSpeed(int))); connect(this->ui->in_event,SIGNAL(returnPressed()),this,SLOT(newEntry())); connect(this->ui->in_event,SIGNAL(textChanged(QString)),this->_player,SLOT(pause())); connect(this->ui->sequence,SIGNAL(itemSelectionChanged()),this,SLOT(review())); connect(this->ui->sequence,SIGNAL(cellDoubleClicked(int,int)),this,SLOT(saveOrigText(int,int))); connect(this->ui->sequence,SIGNAL(cellEntered(int,int)),this,SLOT(saveOrigText(int,int))); connect(this->ui->b_excluir,SIGNAL(clicked()),this,SLOT(remove())); connect(this->ui->subject,SIGNAL(textChanged(QString)),this,SLOT(checkSaveCondition())); connect(this->ui->species,SIGNAL(textChanged(QString)),this,SLOT(checkSaveCondition())); connect(this->ui->description,SIGNAL(textChanged(QString)),this,SLOT(checkSaveCondition())); connect(this->ui->b_save,SIGNAL(clicked()),this,SLOT(saveSession())); connect(this->ui->b_dict,SIGNAL(clicked()),this,SLOT(showDict())); connect(this->_player,SIGNAL(timeChanged(int)),this,SLOT(highlight(int))); }
void SessionMgr::saveSessionAct() { QString name = SessionSaveDialog::getSessionName(this); if(name.isEmpty()) return; name.replace(QRegExp("[/\\\\<>\\*:\"\\|\\?]"), "_"); if(name.startsWith("..") || name.startsWith('_')) name.prepend("-"); try { saveSession(name); sWorkTabMgr.printToAllStatusBars(tr("Session %1 saved.").arg(name)); } catch(const QString& ex) { Utils::showErrorBox(ex); } updateSessions(); }
void BrowserApplication::quitBrowser() { clean(); int tabCount = 0; for (int i = 0; i < m_mainWindows.count(); ++i) { tabCount += m_mainWindows.at(i)->tabWidget()->count(); } if (tabCount > 1) { int ret = QMessageBox::warning(mainWindow(), QString(), tr("There are %1 windows and %2 tabs open\n" "Do you want to quit anyway?").arg(m_mainWindows.count()).arg(tabCount), QMessageBox::Yes | QMessageBox::No, QMessageBox::No); if (ret == QMessageBox::No) return; } saveSession(); exit(0); }
void Core::RestoreSession (bool ask) { if (!SavedSessionState_.size ()) ; else if (ask) { std::auto_ptr<RestoreSessionDialog> dia (new RestoreSessionDialog (Core::Instance ().GetProxy ()->GetMainWindow ())); bool added = false; for (int i = 0; i < SavedSessionState_.size (); ++i) { QPair<QString, QString> pair = SavedSessionState_.at (i); QString title = pair.first; QString url = pair.second; if (url.isEmpty ()) continue; dia->AddPair (title, url); added = true; } if (added && dia->exec () == QDialog::Accepted) { RestoredURLs_ = dia->GetSelectedURLs (); QTimer::singleShot (2000, this, SLOT (restorePages ())); } else saveSession (); } else { for (int i = 0; i < SavedSessionState_.size (); ++i) { QString url = SavedSessionState_.at (i).second; if (url.isEmpty ()) continue; RestoredURLs_ << i; } QTimer::singleShot (2000, this, SLOT (restorePages ())); } }
void Execute::slotNext() { switch( ui.stackedWidget->currentIndex() ) { case 0: { saveSession(); break; } case 1: { addTargetNotes(); break; } case 2: { addObservation(); ui.stackedWidget->setCurrentIndex( 1 ); ui.NextButton->setText( i18n( "Next Page >" ) ); QString prevTarget = currentTarget->name(); loadTargets(); ui.Target->setCurrentRow( findIndexOfTarget( prevTarget ), QItemSelectionModel::SelectCurrent ); selectNextTarget(); break; } } }
void MainWindow::initMenuFile() { //connect menu "File" Action connect(actionNew, SIGNAL(triggered()), _documentManager, SLOT(newDocument())); connect(actionOpen, SIGNAL(triggered()), _documentManager, SLOT(open())); connect(actionSave, SIGNAL(triggered()), _documentManager, SLOT(save())); connect(actionSaveAs, SIGNAL(triggered()), _documentManager, SLOT(saveAs())); connect(actionSaveACopyAs, SIGNAL(triggered()), _documentManager, SLOT(saveACopyAs())); connect(actionSaveAll, SIGNAL(triggered()), _documentManager, SLOT(saveAll())); connect(actionClose, SIGNAL(triggered()), _documentManager, SLOT(close())); connect(actionCloseAll, SIGNAL(triggered()), _documentManager, SLOT(closeAll())); connect(actionCloseAllExceptCurrentDocument, SIGNAL(triggered()), _documentManager, SLOT(closeAllExceptCurrentDocument())); connect(actionReload, SIGNAL(triggered()), _documentManager, SLOT(reload())); connect(actionPrint, SIGNAL(triggered()), _documentManager, SLOT(print())); connect(actionExit, SIGNAL(triggered()), qApp, SLOT(closeAllWindows())); connect(actionExportAsHTML, SIGNAL(triggered()), this, SLOT(exportDocument())); connect(actionNewSession, SIGNAL(triggered()), _sessionManager, SLOT(newSession())); connect(actionOpenSession, SIGNAL(triggered()), _sessionManager, SLOT(openSession())); connect(actionSwitchSession, SIGNAL(triggered()), _sessionManager, SLOT(switchSession())); connect(actionSaveSession, SIGNAL(triggered()), _sessionManager, SLOT(saveSession())); connect(actionSaveSessionAs, SIGNAL(triggered()), _sessionManager, SLOT(saveSessionAs())); connect(actionManageSessions, SIGNAL(triggered()), _sessionManager, SLOT(manageSessions())); //recent file actions connect(actionEmptyRecentFilesList, SIGNAL(triggered()), this, SLOT(clearRecentFile())); connect(actionOpenAllRecentFiles, SIGNAL(triggered()), this, SLOT(openAllRecentFile())); _recentFileSeparator = menuRecentFiles->addSeparator(); for (int i = 0; i < MaxRecentFiles; ++i) { _recentFileActions[i] = new QAction(this); _recentFileActions[i]->setVisible(false); connect(_recentFileActions[i], SIGNAL(triggered()),this, SLOT(openRecentFile())); menuRecentFiles->addAction(_recentFileActions[i]); } updateRecentFileActions(); }
static void execute(char *first, char *rest) { /* * This command (in first) was not found in the command table * * * first - first word on command line * rest - rest of command line * */ char *fullname; assert(first); assert(rest); if (strlen(first) + strlen(rest) + 1 > MAX_EXTERNAL_COMMAND_SIZE) { error_line_too_long(); return; } /* check for a drive change */ if ((strcmp(first + 1, ":") == 0) && isalpha(*first)) { changeDrive(*first); return; } if (strchr(first,'?') || strchr(first,'*')) { error_bad_command(); return; } /* search through %PATH% for the binary */ fullname = find_which(first); dprintf(("[find_which(%s) returned %s]\n", first, fullname)); if (!fullname) { error_bad_command(); return; } /* check if this is a .BAT file */ assert(strrchr(fullname, '.')); if (stricmp(strrchr(fullname, '.'), ".bat") == 0) { dprintf(("[BATCH: %s %s]\n", fullname, rest)); batch(fullname, first, rest); } else /* exec the program */ { int result; dprintf(("[EXEC: %s %s]\n", fullname, rest)); if(!saveSession()) { error_save_session(); exit_all_batch(); return; /* Don't invoke the program in this case */ } #ifdef FEATURE_KERNEL_SWAP_SHELL if(swapOnExec == TRUE && kswapMkStruc(fullname, rest)) { dprintf(("[EXEC: exiting to kernel swap support]\n")); exit(123); /* Let the kernel swap support do the rest */ } #ifdef DEBUG if(swapOnExec == TRUE) dprintf(("KSWAP: failed to save context, proceed without swapping\n")); #endif #endif result = exec(fullname, rest, 0); perform_exec_result(result); } }
void SQLiteSaver::saveProject(std::shared_ptr<AnnotatorLib::Project> project) { saveSession(project->getSession().get()); }
void MainMenu::init() { #define ADD_ACTION(name, menu, icon, trName, slot, shortcut) \ action = menu->addAction(icon, trName); \ action->setShortcut(QKeySequence(QSL(shortcut))); \ connect(action, SIGNAL(triggered()), this, slot); \ m_actions[QSL(name)] = action #define ADD_CHECKABLE_ACTION(name, menu, icon, trName, slot, shortcut) \ action = menu->addAction(icon, trName); \ action->setShortcut(QKeySequence(QSL(shortcut))); \ action->setCheckable(true); \ connect(action, SIGNAL(triggered(bool)), this, slot); \ m_actions[QSL(name)] = action // Standard actions - needed on Mac to be placed correctly in "application" menu QAction* action = new QAction(QIcon::fromTheme(QSL("help-about")), tr("&About QupZilla"), this); action->setMenuRole(QAction::AboutRole); connect(action, SIGNAL(triggered()), this, SLOT(showAboutDialog())); m_actions[QSL("Standard/About")] = action; action = new QAction(IconProvider::settingsIcon(), tr("Pr&eferences"), this); action->setMenuRole(QAction::PreferencesRole); action->setShortcut(QKeySequence(QKeySequence::Preferences)); connect(action, SIGNAL(triggered()), this, SLOT(showPreferences())); m_actions[QSL("Standard/Preferences")] = action; action = new QAction(QIcon::fromTheme(QSL("application-exit")), tr("Quit"), this); action->setMenuRole(QAction::QuitRole); // shortcut set from browserwindow connect(action, SIGNAL(triggered()), this, SLOT(quitApplication())); m_actions[QSL("Standard/Quit")] = action; // File menu m_menuFile = new QMenu(tr("&File")); connect(m_menuFile, SIGNAL(aboutToShow()), this, SLOT(aboutToShowFileMenu())); connect(m_menuFile, SIGNAL(aboutToHide()), this, SLOT(aboutToHideFileMenu())); ADD_ACTION("File/NewTab", m_menuFile, IconProvider::newTabIcon(), tr("New Tab"), SLOT(newTab()), "Ctrl+T"); ADD_ACTION("File/NewWindow", m_menuFile, IconProvider::newWindowIcon(), tr("&New Window"), SLOT(newWindow()), "Ctrl+N"); ADD_ACTION("File/NewPrivateWindow", m_menuFile, IconProvider::privateBrowsingIcon(), tr("New &Private Window"), SLOT(newPrivateWindow()), "Ctrl+Shift+P"); ADD_ACTION("File/OpenLocation", m_menuFile, QIcon::fromTheme(QSL("document-open-remote")), tr("Open Location"), SLOT(openLocation()), "Ctrl+L"); ADD_ACTION("File/OpenFile", m_menuFile, QIcon::fromTheme(QSL("document-open")), tr("Open &File..."), SLOT(openFile()), "Ctrl+O"); ADD_ACTION("File/CloseWindow", m_menuFile, QIcon::fromTheme(QSL("window-close")), tr("Close Window"), SLOT(closeWindow()), "Ctrl+Shift+W"); m_menuFile->addSeparator(); if (!mApp->isPrivate()) { action = new QAction(tr("New Session..."), this); connect(action, SIGNAL(triggered()), mApp->sessionManager(), SLOT(newSession())); m_actions[QSL("File/NewSession")] = action; m_menuFile->addAction(action); action = new QAction(tr("Save Session..."), this); connect(action, SIGNAL(triggered()), mApp->sessionManager(), SLOT(saveSession())); m_actions[QSL("File/SaveSession")] = action; m_menuFile->addAction(action); QMenu* sessionsSubmenu = new QMenu(tr("Sessions")); connect(sessionsSubmenu, SIGNAL(aboutToShow()), mApp->sessionManager(), SLOT(aboutToShowSessionsMenu())); m_menuFile->addMenu(sessionsSubmenu); m_menuFile->addSeparator(); } ADD_ACTION("File/SavePageAs", m_menuFile, QIcon::fromTheme(QSL("document-save")), tr("&Save Page As..."), SLOT(savePageAs()), "Ctrl+S"); ADD_ACTION("File/SendLink", m_menuFile, QIcon::fromTheme(QSL("mail-message-new")), tr("Send Link..."), SLOT(sendLink()), ""); ADD_ACTION("File/Print", m_menuFile, QIcon::fromTheme(QSL("document-print")), tr("&Print..."), SLOT(printPage()), "Ctrl+P"); m_menuFile->addSeparator(); m_menuFile->addAction(m_actions[QSL("Standard/Quit")]); // Edit menu m_menuEdit = new QMenu(tr("&Edit")); connect(m_menuEdit, SIGNAL(aboutToShow()), this, SLOT(aboutToShowEditMenu())); connect(m_menuEdit, SIGNAL(aboutToHide()), this, SLOT(aboutToHideEditMenu())); ADD_ACTION("Edit/Undo", m_menuEdit, QIcon::fromTheme(QSL("edit-undo")), tr("&Undo"), SLOT(editUndo()), "Ctrl+Z"); ADD_ACTION("Edit/Redo", m_menuEdit, QIcon::fromTheme(QSL("edit-redo")), tr("&Redo"), SLOT(editRedo()), "Ctrl+Shift+Z"); m_menuEdit->addSeparator(); ADD_ACTION("Edit/Cut", m_menuEdit, QIcon::fromTheme(QSL("edit-cut")), tr("&Cut"), SLOT(editCut()), "Ctrl+X"); ADD_ACTION("Edit/Copy", m_menuEdit, QIcon::fromTheme(QSL("edit-copy")), tr("C&opy"), SLOT(editCopy()), "Ctrl+C"); ADD_ACTION("Edit/Paste", m_menuEdit, QIcon::fromTheme(QSL("edit-paste")), tr("&Paste"), SLOT(editPaste()), "Ctrl+V"); m_menuEdit->addSeparator(); ADD_ACTION("Edit/SelectAll", m_menuEdit, QIcon::fromTheme(QSL("edit-select-all")), tr("Select &All"), SLOT(editSelectAll()), "Ctrl+A"); ADD_ACTION("Edit/Find", m_menuEdit, QIcon::fromTheme(QSL("edit-find")), tr("&Find"), SLOT(editFind()), "Ctrl+F"); m_menuEdit->addSeparator(); // View menu m_menuView = new QMenu(tr("&View")); connect(m_menuView, SIGNAL(aboutToShow()), this, SLOT(aboutToShowViewMenu())); connect(m_menuView, SIGNAL(aboutToHide()), this, SLOT(aboutToHideViewMenu())); QMenu* toolbarsMenu = new QMenu(tr("Toolbars")); connect(toolbarsMenu, SIGNAL(aboutToShow()), this, SLOT(aboutToShowToolbarsMenu())); QMenu* sidebarMenu = new QMenu(tr("Sidebar")); connect(sidebarMenu, SIGNAL(aboutToShow()), this, SLOT(aboutToShowSidebarsMenu())); QMenu* encodingMenu = new QMenu(tr("Character &Encoding")); connect(encodingMenu, SIGNAL(aboutToShow()), this, SLOT(aboutToShowEncodingMenu())); // Create menus to make shortcuts available even before first showing the menu m_window->createToolbarsMenu(toolbarsMenu); m_window->createSidebarsMenu(sidebarMenu); m_menuView->addMenu(toolbarsMenu); m_menuView->addMenu(sidebarMenu); ADD_CHECKABLE_ACTION("View/ShowStatusBar", m_menuView, QIcon(), tr("Sta&tus Bar"), SLOT(showStatusBar()), ""); m_menuView->addSeparator(); ADD_ACTION("View/Stop", m_menuView, QIcon::fromTheme(QSL("process-stop")), tr("&Stop"), SLOT(stop()), "Esc"); ADD_ACTION("View/Reload", m_menuView, QIcon::fromTheme(QSL("view-refresh")), tr("&Reload"), SLOT(reload()), "F5"); m_menuView->addSeparator(); ADD_ACTION("View/ZoomIn", m_menuView, QIcon::fromTheme(QSL("zoom-in")), tr("Zoom &In"), SLOT(zoomIn()), "Ctrl++"); ADD_ACTION("View/ZoomOut", m_menuView, QIcon::fromTheme(QSL("zoom-out")), tr("Zoom &Out"), SLOT(zoomOut()), "Ctrl+-"); ADD_ACTION("View/ZoomReset", m_menuView, QIcon::fromTheme(QSL("zoom-original")), tr("Reset"), SLOT(zoomReset()), "Ctrl+0"); m_menuView->addSeparator(); m_menuView->addMenu(encodingMenu); m_menuView->addSeparator(); ADD_ACTION("View/PageSource", m_menuView, QIcon::fromTheme(QSL("text-html")), tr("&Page Source"), SLOT(showPageSource()), "Ctrl+U"); ADD_CHECKABLE_ACTION("View/FullScreen", m_menuView, QIcon(), tr("&FullScreen"), SLOT(showFullScreen()), "F11"); // Tools menu m_menuTools = new QMenu(tr("&Tools")); connect(m_menuTools, SIGNAL(aboutToShow()), this, SLOT(aboutToShowToolsMenu())); connect(m_menuTools, SIGNAL(aboutToHide()), this, SLOT(aboutToHideToolsMenu())); ADD_ACTION("Tools/WebSearch", m_menuTools, QIcon(), tr("&Web Search"), SLOT(webSearch()), "Ctrl+K"); ADD_ACTION("Tools/SiteInfo", m_menuTools, QIcon::fromTheme(QSL("dialog-information")), tr("Site &Info"), SLOT(showSiteInfo()), "Ctrl+I"); m_menuTools->addSeparator(); ADD_ACTION("Tools/DownloadManager", m_menuTools, QIcon(), tr("&Download Manager"), SLOT(showDownloadManager()), "Ctrl+Y"); ADD_ACTION("Tools/CookiesManager", m_menuTools, QIcon(), tr("&Cookies Manager"), SLOT(showCookieManager()), ""); ADD_ACTION("Tools/AdBlock", m_menuTools, QIcon(), tr("&AdBlock"), SLOT(showAdBlockDialog()), ""); ADD_ACTION("Tools/WebInspector", m_menuTools, QIcon(), tr("Web In&spector"), SLOT(toggleWebInspector()), "Ctrl+Shift+I"); ADD_ACTION("Tools/ClearRecentHistory", m_menuTools, QIcon::fromTheme(QSL("edit-clear")), tr("Clear Recent &History"), SLOT(showClearRecentHistoryDialog()), "Ctrl+Shift+Del"); if (!WebInspector::isEnabled()) m_actions.value(QSL("Tools/WebInspector"))->setVisible(false); m_submenuExtensions = new QMenu(tr("&Extensions")); m_submenuExtensions->menuAction()->setVisible(false); m_menuTools->addMenu(m_submenuExtensions); m_menuTools->addSeparator(); // Help menu m_menuHelp = new QMenu(tr("&Help")); #ifndef Q_OS_MACOS ADD_ACTION("Help/AboutQt", m_menuHelp, QIcon(), tr("About &Qt"), SLOT(aboutQt()), ""); m_menuHelp->addAction(m_actions[QSL("Standard/About")]); m_menuHelp->addSeparator(); #endif ADD_ACTION("Help/InfoAboutApp", m_menuHelp, QIcon::fromTheme(QSL("help-contents")), tr("Information about application"), SLOT(showInfoAboutApp()), ""); ADD_ACTION("Help/ConfigInfo", m_menuHelp, QIcon(), tr("Configuration Information"), SLOT(showConfigInfo()), ""); ADD_ACTION("Help/ReportIssue", m_menuHelp, QIcon(), tr("Report &Issue"), SLOT(reportIssue()), ""); m_actions[QSL("Help/InfoAboutApp")]->setShortcut(QKeySequence(QKeySequence::HelpContents)); // History menu m_menuHistory = new HistoryMenu(); m_menuHistory->setMainWindow(m_window); // Bookmarks menu m_menuBookmarks = new BookmarksMenu(); m_menuBookmarks->setMainWindow(m_window); // Other actions action = new QAction(QIcon::fromTheme(QSL("user-trash")), tr("Restore &Closed Tab"), this); action->setShortcut(QKeySequence(QSL("Ctrl+Shift+T"))); connect(action, SIGNAL(triggered()), this, SLOT(restoreClosedTab())); m_actions[QSL("Other/RestoreClosedTab")] = action; #ifdef Q_OS_MACOS m_actions[QSL("View/FullScreen")]->setShortcut(QKeySequence(QSL("Ctrl+Meta+F"))); // Add standard actions to File Menu (as it won't be ever cleared) and Mac menubar should move them to "Application" menu m_menuFile->addAction(m_actions[QSL("Standard/About")]); m_menuFile->addAction(m_actions[QSL("Standard/Preferences")]); // Prevent ConfigInfo action to be detected as "Preferences..." action in Mac menubar m_actions[QSL("Help/ConfigInfo")]->setMenuRole(QAction::NoRole); // Create Dock menu QMenu* dockMenu = new QMenu(0); dockMenu->addAction(m_actions[QSL("File/NewTab")]); dockMenu->addAction(m_actions[QSL("File/NewWindow")]); dockMenu->addAction(m_actions[QSL("File/NewPrivateWindow")]); qt_mac_set_dock_menu(dockMenu); #endif #if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) m_menuEdit->addAction(m_actions[QSL("Standard/Preferences")]); #elif !defined(Q_OS_MACOS) m_menuTools->addAction(m_actions[QSL("Standard/Preferences")]); #endif // Menus are hidden by default aboutToHideFileMenu(); aboutToHideViewMenu(); aboutToHideEditMenu(); aboutToHideToolsMenu(); addActionsToWindow(); }
void AppFrame::OnMenu(wxCommandEvent& event) { if (event.GetId() >= wxID_RT_AUDIO_DEVICE && event.GetId() < wxID_RT_AUDIO_DEVICE + devices.size()) { if (activeDemodulator) { activeDemodulator->setOutputDevice(event.GetId() - wxID_RT_AUDIO_DEVICE); activeDemodulator = NULL; } } else if (event.GetId() == wxID_SET_FREQ_OFFSET) { long ofs = wxGetNumberFromUser("Shift the displayed frequency by this amount.\ni.e. -125000000 for -125 MHz", "Frequency (Hz)", "Frequency Offset", wxGetApp().getOffset(), -2000000000, 2000000000, this); if (ofs != -1) { wxGetApp().setOffset(ofs); wxGetApp().saveConfig(); } } else if (event.GetId() == wxID_SET_DS_OFF) { wxGetApp().setDirectSampling(0); wxGetApp().saveConfig(); } else if (event.GetId() == wxID_SET_DS_I) { wxGetApp().setDirectSampling(1); wxGetApp().saveConfig(); } else if (event.GetId() == wxID_SET_DS_Q) { wxGetApp().setDirectSampling(2); wxGetApp().saveConfig(); } else if (event.GetId() == wxID_SET_SWAP_IQ) { bool swap_state = !wxGetApp().getSwapIQ(); wxGetApp().setSwapIQ(swap_state); wxGetApp().saveConfig(); iqSwapMenuItem->Check(swap_state); } else if (event.GetId() == wxID_SET_PPM) { long ofs = wxGetNumberFromUser("Frequency correction for device in PPM.\ni.e. -51 for -51 PPM\n\nNote: you can adjust PPM interactively\nby holding ALT over the frequency tuning bar.\n", "Parts per million (PPM)", "Frequency Correction", wxGetApp().getPPM(), -1000, 1000, this); wxGetApp().setPPM(ofs); wxGetApp().saveConfig(); } else if (event.GetId() == wxID_SAVE) { if (!currentSessionFile.empty()) { saveSession(currentSessionFile); } else { wxFileDialog saveFileDialog(this, _("Save XML Session file"), "", "", "XML files (*.xml)|*.xml", wxFD_SAVE | wxFD_OVERWRITE_PROMPT); if (saveFileDialog.ShowModal() == wxID_CANCEL) { return; } saveSession(saveFileDialog.GetPath().ToStdString()); } } else if (event.GetId() == wxID_OPEN) { wxFileDialog openFileDialog(this, _("Open XML Session file"), "", "", "XML files (*.xml)|*.xml", wxFD_OPEN | wxFD_FILE_MUST_EXIST); if (openFileDialog.ShowModal() == wxID_CANCEL) { return; } loadSession(openFileDialog.GetPath().ToStdString()); } else if (event.GetId() == wxID_SAVEAS) { wxFileDialog saveFileDialog(this, _("Save XML Session file"), "", "", "XML files (*.xml)|*.xml", wxFD_SAVE | wxFD_OVERWRITE_PROMPT); if (saveFileDialog.ShowModal() == wxID_CANCEL) { return; } saveSession(saveFileDialog.GetPath().ToStdString()); } else if (event.GetId() == wxID_RESET) { wxGetApp().getDemodMgr().terminateAll(); wxGetApp().setFrequency(100000000); wxGetApp().setOffset(0); SetTitle(CUBICSDR_TITLE); currentSessionFile = ""; } else if (event.GetId() == wxID_EXIT) { Close(false); } else if (event.GetId() == wxID_THEME_DEFAULT) { ThemeMgr::mgr.setTheme(COLOR_THEME_DEFAULT); } else if (event.GetId() == wxID_THEME_SHARP) { ThemeMgr::mgr.setTheme(COLOR_THEME_SHARP); } else if (event.GetId() == wxID_THEME_BW) { ThemeMgr::mgr.setTheme(COLOR_THEME_BW); } else if (event.GetId() == wxID_THEME_RAD) { ThemeMgr::mgr.setTheme(COLOR_THEME_RAD); } else if (event.GetId() == wxID_THEME_TOUCH) { ThemeMgr::mgr.setTheme(COLOR_THEME_TOUCH); } else if (event.GetId() == wxID_THEME_HD) { ThemeMgr::mgr.setTheme(COLOR_THEME_HD); } else if (event.GetId() == wxID_THEME_RADAR) { ThemeMgr::mgr.setTheme(COLOR_THEME_RADAR); } switch (event.GetId()) { case wxID_BANDWIDTH_250K: wxGetApp().setSampleRate(250000); break; case wxID_BANDWIDTH_1000M: wxGetApp().setSampleRate(1000000); break; case wxID_BANDWIDTH_1024M: wxGetApp().setSampleRate(1024000); break; case wxID_BANDWIDTH_1500M: wxGetApp().setSampleRate(1500000); break; case wxID_BANDWIDTH_1800M: wxGetApp().setSampleRate(1800000); break; case wxID_BANDWIDTH_1920M: wxGetApp().setSampleRate(1920000); break; case wxID_BANDWIDTH_2000M: wxGetApp().setSampleRate(2000000); break; case wxID_BANDWIDTH_2048M: wxGetApp().setSampleRate(2048000); break; case wxID_BANDWIDTH_2160M: wxGetApp().setSampleRate(2160000); break; case wxID_BANDWIDTH_2400M: wxGetApp().setSampleRate(2400000); break; case wxID_BANDWIDTH_2560M: wxGetApp().setSampleRate(2560000); break; case wxID_BANDWIDTH_2880M: wxGetApp().setSampleRate(2880000); break; // case wxID_BANDWIDTH_3000M: // wxGetApp().setSampleRate(3000000); // break; case wxID_BANDWIDTH_3200M: wxGetApp().setSampleRate(3200000); break; } std::vector<SDRDeviceInfo *> *devs = wxGetApp().getDevices(); if (event.GetId() >= wxID_DEVICE_ID && event.GetId() <= wxID_DEVICE_ID + devs->size()) { int devId = event.GetId() - wxID_DEVICE_ID; wxGetApp().setDevice(devId); SDRDeviceInfo *dev = (*wxGetApp().getDevices())[devId]; DeviceConfig *devConfig = wxGetApp().getConfig()->getDevice(dev->getDeviceId()); int dsMode = devConfig->getDirectSampling(); if (dsMode >= 0 && dsMode <= 2) { directSamplingMenuItems[devConfig->getDirectSampling()]->Check(); } iqSwapMenuItem->Check(devConfig->getIQSwap()); } if (event.GetId() >= wxID_AUDIO_BANDWIDTH_BASE) { int evId = event.GetId(); std::vector<RtAudio::DeviceInfo>::iterator devices_i; std::map<int, RtAudio::DeviceInfo>::iterator mdevices_i; int i = 0; for (mdevices_i = outputDevices.begin(); mdevices_i != outputDevices.end(); mdevices_i++) { int menu_id = wxID_AUDIO_BANDWIDTH_BASE + wxID_AUDIO_DEVICE_MULTIPLIER * mdevices_i->first; int j = 0; for (std::vector<unsigned int>::iterator srate = mdevices_i->second.sampleRates.begin(); srate != mdevices_i->second.sampleRates.end(); srate++) { if (evId == menu_id + j) { //audioSampleRateMenuItems[menu_id+j]; //std::cout << "Would set audio sample rate on device " << mdevices_i->second.name << " (" << mdevices_i->first << ") to " << (*srate) << "Hz" << std::endl; AudioThread::setDeviceSampleRate(mdevices_i->first, *srate); } j++; } i++; } } }
bool GuiApp::perform (const InvocationInfo& info) { if (Commands::devicePadPress <= info.commandID && (Commands::devicePadPress + 13) > info.commandID) { const uint16 pad = info.commandID - Commands::devicePadPress; //ModifierKeys modKeys = ModifierKeys::getCurrentModifiersRealtime(); //unsigned long modifiers = 13;//kNoModifiers; if (info.isKeyDown) std::clog << "Pad pressed: " << pad << std::endl; else std::clog << "Pad released: " << pad << std::endl; } if (Commands::isDeviceTrackCommand (info.commandID)) { // pattern->setTrackIndex (info.commandID - Commands::deviceTrack); return true; } SessionRef sr (session()); switch (info.commandID) { case Commands::mediaSave: { //if (MediaManager::Document* doc = sr->media().openFile (sr.get(), pattern->getFile())) // doc->save(); return true; } case Commands::sessionClose: return true; break; case Commands::sessionNew: newSession(); return true; break; case Commands::sessionOpen: openSession(); return true; break; case Commands::sessionSave: { saveSession(); return true; break; } case Commands::sessionSaveAs: saveSession (true); return true; break; case Commands::showAbout: return true; break; case Commands::showLegacyView: openWindow (ELEMENT_LEGACY_WINDOW); return true; break; case Commands::showPluginManager: openWindow (ELEMENT_PLUGIN_MANAGER); return true; break; case Commands::showPreferences: runDialog (ELEMENT_PREFERENCES); return true; break; case Commands::transportRewind: break; case Commands::transportForward: break; case Commands::transportPlay: sr->testSetPlaying (true); break; case Commands::transportRecord: break; case Commands::transportSeekZero: break; case Commands::transportStop: sr->testSetRecording (false); sr->testSetPlaying (false); break; } return true; }
mainWindow::mainWindow() : QMainWindow(), ui(new Ui::MainWindow) { this->setMinimumSize(1000,500); // Creating the general UI ui->setupUi(this); // Making last minute adjustments and // initializing some parts of the UI ui->tabWidget->setCurrentIndex(0); ui->fileName->setText("log_file"); ui->actionDisconnect->setEnabled(false); // Creating the logger file instance log = new QFile(); // Creating the session file instance session = new QFile("session.dat"); // Creating the QVector of double needed to store the graphs // points y[0] = new QVector<double>(2); x[0] = new QVector<double>(2); x[1] = new QVector<double>(200); y[1] = new QVector<double>(200); y[2] = new QVector<double>(200); y[3] = new QVector<double>(200); y[4] = new QVector<double>(200); y[5] = new QVector<double>(200); y[6] = new QVector<double>(200); y[7] = new QVector<double>(200); // The SettingsDialog instance handles the serial port configuration // window settings = new SettingsDialog(); file_viewer = new FileViewer(); // The Protocole instance handles the communication through the selected // serial port and parses the data received through a RegEx string protocole = new Protocole(); // Now that everything's ready, try restoring // an existing session restoreSession(); // Connecting all the commands button QSignalMapper * cmdMap = new QSignalMapper(this); connect(ui->cmdFreq,SIGNAL(clicked()),cmdMap,SLOT(map())); connect(ui->cmdBurst,SIGNAL(clicked()),cmdMap,SLOT(map())); connect(ui->cmdStream,SIGNAL(clicked()),cmdMap,SLOT(map())); cmdMap -> setMapping (ui->cmdFreq, "FRQ") ; cmdMap -> setMapping (ui->cmdBurst, "BST") ; cmdMap -> setMapping (ui->cmdStream, "STR") ; connect(cmdMap,SIGNAL(mapped(QString)),this,SLOT(sendCommandBox(QString))); // Connecting the buttons for RTC sync connect(ui->sendTime,SIGNAL(clicked()),this,SLOT(sendRTCTime())); connect(ui->getTime,SIGNAL(clicked()),this,SLOT(getRTCTime())); connect(ui->syncSysTime,SIGNAL(clicked()),this,SLOT(getSysTime())); // Connecting the button to fetch the last logged frames // into the console connect(ui->logUpdate,SIGNAL(clicked()),this,SLOT(update_c())); // Connecting the buttons used to connect to and configure // the serial port connect(ui->actionConnect, SIGNAL(clicked()), this, SLOT(openSerialPort())); connect(ui->actionDisconnect, SIGNAL(clicked()), this, SLOT(closeSerialPort())); connect(ui->actionConfigure, SIGNAL(clicked()), settings, SLOT(show())); connect(ui->cmdCustomSend,SIGNAL(clicked()),this,SLOT(sendCustomCommand())); connect(ui->applyLog, SIGNAL(clicked()),this,SLOT(applyLog())); logMap = new QSignalMapper(this); logMap->setMapping(ui->viewLog,logDirectory); connect(ui->viewLog,SIGNAL(clicked()),logMap,SLOT(map())); connect(logMap,SIGNAL(mapped(QString)),file_viewer,SLOT(show_dialog(QString))); // Connectring the button to change the log directory connect(ui->changeDirectory,SIGNAL(clicked()),this,SLOT(changeLogDirectory())); // Creating graphs instances by linking them to UI elements graph[0] = ui->graphXY; graph[1] = ui->graphXAxis; graph[2] = ui->graphYAxis; graph[3] = ui->graphZAxis; graph[4] = ui->gyroX; graph[5] = ui->gyroY; graph[6] = ui->gyroZ; graph[7] = ui->weightGraph; // The pen is used to draw a dot on XY graphs QPen pen; pen.setColor(QColor(229,115,115,255)); pen.setWidth(10); pen.setCapStyle(Qt::RoundCap); // The line is used to draw classic graphs QPen line; line.setColor(QColor(25,118,210,255)); line.setWidth(1); QPen line_red; line_red.setColor(QColor(210,25,118,255)); line_red.setWidth(1); QPen line_green; line_green.setColor(QColor(118,210,25,255)); line_green.setWidth(1); // Graph 1 to 6 stores the accelerometer and gyroscope // axis, and share similar settings. // Their label can be set directly in the next array QString label[16] = { "", "X","Y","Z", // Accelerometer's three axis "X","Y","Z" // Gyroscope's three axis }; for(int i=1;i<8;i++) { // Only one curve on those graphs : axis/time graph[i]->addGraph(); // The datas are stored in x[1] (time) and y[i] vectors graph[i]->graph(0)->setData(*x[1],*y[i]); graph[i]->graph(0)->setPen(line); // Setting the labels of each axis, as well // as the range graph[i]->xAxis->setLabel("t"); graph[i]->yAxis->setLabel(label[i]); graph[i]->yAxis->setRange(-32000,32000); // The X Axis should display time (text) graph[i]->setLocale(QLocale(QLocale::English, QLocale::Canada)); graph[i]->xAxis->setTickLabelType(QCPAxis::ltDateTime); graph[i]->xAxis->setDateTimeFormat("hh:mm:ss"); graph[i]->xAxis->setDateTimeSpec(Qt::OffsetFromUTC); // Activating the zoom and drag interraction in vertical mode graph[i]->setInteraction(QCP::iRangeDrag, true); graph[i]->setInteraction(QCP::iRangeZoom, true); graph[i]->yAxis->axisRect()->setRangeDrag(Qt::Vertical); graph[i]->yAxis->axisRect()->setRangeZoom(Qt::Vertical); } graph[2]->graph(0)->setPen(line_green); graph[3]->graph(0)->setPen(line_red); graph[5]->graph(0)->setPen(line_green); graph[6]->graph(0)->setPen(line_red); graph[7]->yAxis->setRange(0,150); // Populating the XY graph // Only one curve on this graph : X axis /Y axis of accelerometer graph[0]->addGraph(); // The datas are stored in x[0] and y[0] vectors graph[0]->graph(0)->setData(*x[0],*y[0]); // Draw a red dot graph[0]->graph(0)->setPen(pen); // Setting the labels of each axis, as well // as the range graph[0]->xAxis->setLabel("X"); graph[0]->yAxis->setLabel("Y"); graph[0]->xAxis->setRange(-10000,10000); graph[0]->yAxis->setRange(-10000,10000); // Activating the zoom and drag interraction in vertical and horizontal mode graph[0]->setInteraction(QCP::iRangeDrag, true); graph[0]->setInteraction(QCP::iRangeZoom, true); // For each graph, making the lines lighter in order to clean up the view for(int i=0;i<8;i++) { graph[i]->xAxis->setBasePen(QPen(QColor(195,195,195))); graph[i]->xAxis->setTickPen(QPen(QColor(195,195,195))); graph[i]->xAxis->setSubTickPen(QPen(QColor(195,195,195))); graph[i]->yAxis->setBasePen(QPen(QColor(195,195,195))); graph[i]->yAxis->setTickPen(QPen(QColor(195,195,195))); graph[i]->yAxis->setSubTickPen(QPen(QColor(195,195,195))); } // For every setting that should be saved, connecting the saveSession slot to // the state change signal connect(ui->appendDate,SIGNAL(stateChanged(int)),this,SLOT(saveSession())); connect(ui->logToFile,SIGNAL(stateChanged(int)),this,SLOT(saveSession())); connect(ui->fileName,SIGNAL(textChanged(QString)),this,SLOT(saveSession())); connect(ui->cmdValue,SIGNAL(valueChanged(int)),this,SLOT(saveSession())); connect(settings,SIGNAL(updated()),this,SLOT(saveSession())); // Addding Window's title setWindowTitle("Doctor's Orders Data Logger"); // Creating a Timer for frame fetching serialFetch = new QTimer(); serialFetch->setInterval(2); connect(serialFetch,SIGNAL(timeout()),protocole,SLOT(fetch())); // Creating a Timer for GUI update guiUpdate = new QTimer(); guiUpdate->setInterval(50); connect(guiUpdate,SIGNAL(timeout()),this,SLOT(update())); // Connecting the serial port to the updateData slot connect(protocole,SIGNAL(updateData()),this,SLOT(updateData())); }