void LiteApp::load(bool bUseSession, IApplication *baseApp) { QSplashScreen *splash = 0; bool bSplash = m_settings->value(LITEAPP_SPLASHVISIBLE,true).toBool(); if (baseApp) { bSplash = false; } if (bSplash) { splash = new QSplashScreen(QPixmap::fromImage(makeSplashImage(this)),Qt::WindowStaysOnTopHint); } if (bSplash) { splash->show(); } if (bSplash) { splash->showMessage("Scanning plugins...",Qt::AlignLeft|Qt::AlignBottom); } qApp->processEvents(); loadMimeType(); loadPlugins(); if (bSplash) { splash->showMessage("Loading plugins...",Qt::AlignLeft|Qt::AlignBottom); } qApp->processEvents(); initPlugins(); if (bSplash) { splash->showMessage("Loading state...",Qt::AlignLeft|Qt::AlignBottom); } qApp->processEvents(); loadState(); if (baseApp) { if (baseApp->mainWindow()->isMaximized()) { m_mainwindow->resize(800,600); m_mainwindow->show(); } else { QRect rc = baseApp->mainWindow()->geometry(); rc.adjust(20,20,20,20); m_mainwindow->setGeometry(rc); m_mainwindow->show(); } } else { m_mainwindow->show(); } emit loaded(); m_projectManager->setCurrentProject(0); if (bSplash) { splash->showMessage("Loading session...",Qt::AlignLeft|Qt::AlignBottom); } qApp->processEvents(); bool b = m_settings->value(LITEAPP_AUTOLOADLASTSESSION,true).toBool(); if (b && bUseSession) { loadSession("default"); } if (bSplash) { m_mainwindow->raise(); splash->finish(m_mainwindow); splash->deleteLater(); } this->appendLog("HtmlWidgetFactory",m_htmlWidgetManager->classNameList().join(" ")); this->appendLog("DefaultHtmlWidgetFactory",m_htmlWidgetManager->defaultClassName()); m_goProxy->call("version"); m_goProxy->call("cmdlist"); appendLog("LiteApp","Finished loading"); }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { setWindowTitle(QCoreApplication::applicationName()); ui.setupUi(this); // setup preferences dialog connect(&preferences, SIGNAL(accepted()), this, SLOT(getApplicationSettings())); connect(&builder, SIGNAL(highlightLine(const QString &, int, int, const QString &)), this, SLOT(highlightFileLine(const QString &, int, int))); connect(&builder, SIGNAL(finished()), this, SLOT(setBuildAvailable())); connect(&builder, SIGNAL(buildError()), &preferences, SLOT(showPreferences())); parser = language.parser(); connect(&preferences, SIGNAL(updateColors()), this, SLOT(recolorProjectView())); connect(&preferences, SIGNAL(updateFonts(const QFont &)), this, SLOT(recolorProjectView())); connect(&preferences, SIGNAL(updateFonts(const QFont &)), this, SLOT(recolorBuildManager())); connect(&preferences, SIGNAL(accepted()), ui.editorTabs, SIGNAL(accepted())); connect(&preferences, SIGNAL(updateColors()), ui.editorTabs, SIGNAL(updateColors())); connect(&preferences, SIGNAL(updateFonts(const QFont &)), ui.editorTabs, SIGNAL(updateFonts(const QFont &))); recolorProjectView(); recolorBuildManager(); // project editor tabs ui.finder->connectFileManager(ui.editorTabs); QSplitterHandle *hndl = ui.splitter->handle(1); hndl->setEnabled(false); connect(ui.editorTabs, SIGNAL(fileUpdated(int)), this, SLOT(setProject())); // File Menu connect(ui.action_New, SIGNAL(triggered()), ui.editorTabs, SLOT(newFile())); connect(ui.actionNew_From_File, SIGNAL(triggered()), ui.editorTabs, SLOT(newFromFile())); connect(ui.actionNew_From_Template, SIGNAL(triggered()), this, SLOT(newFromTemplate())); connect(ui.action_Open, SIGNAL(triggered()), ui.editorTabs, SLOT(open())); connect(ui.action_Save,SIGNAL(triggered()),ui.editorTabs,SLOT(save())); connect(ui.actionSave_As,SIGNAL(triggered()),ui.editorTabs,SLOT(saveAs())); connect(ui.actionSave_All,SIGNAL(triggered()),ui.editorTabs,SLOT(saveAll())); ui.actionPrint->setEnabled(true); connect(ui.actionPrint,SIGNAL(triggered()),this,SLOT(printFile())); ui.action_Zip->setEnabled(true); connect(ui.action_Zip,SIGNAL(triggered()),this,SLOT(zipFiles())); recentFiles = findChildren<QAction *>(QRegExp("action_[0-9]+_File")); for (int i = 0; i < recentFiles.size(); i++) connect(recentFiles.at(i), SIGNAL(triggered()),this, SLOT(openRecentFile())); connect(ui.action_Close, SIGNAL(triggered()), ui.editorTabs, SLOT(closeFile())); connect(ui.actionClose_All, SIGNAL(triggered()), ui.editorTabs, SLOT(closeAll())); connect(ui.action_Quit, SIGNAL(triggered()), this, SLOT(quitProgram())); connect(ui.editorTabs, SIGNAL(saveAvailable(bool)), this, SLOT(setSaveAvailable(bool))); connect(ui.editorTabs, SIGNAL(saveAvailable(bool)), this, SLOT(setSaveAvailable(bool))); connect(ui.editorTabs, SIGNAL(closeAvailable(bool)), this, SLOT(setCloseAvailable(bool))); connect(ui.editorTabs, SIGNAL(closeAvailable(bool)), this, SLOT(setCloseAvailable(bool))); connect(ui.editorTabs, SIGNAL(closeAvailable(bool)), this, SLOT(setBuildAvailable(bool))); // Edit Menu connect(ui.action_Undo, SIGNAL(triggered()), ui.editorTabs, SLOT(undo())); connect(ui.action_Redo, SIGNAL(triggered()), ui.editorTabs, SLOT(redo())); connect(ui.action_Cut, SIGNAL(triggered()), ui.editorTabs, SLOT(cut())); connect(ui.action_Copy, SIGNAL(triggered()), ui.editorTabs, SLOT(copy())); connect(ui.action_Paste, SIGNAL(triggered()), ui.editorTabs, SLOT(paste())); connect(ui.actionSelect_All, SIGNAL(triggered()), ui.editorTabs, SLOT(selectAll())); connect(ui.action_Find, SIGNAL(triggered()), ui.finder, SLOT(showFinder())); connect(ui.actionFind_Next, SIGNAL(triggered()), ui.finder, SLOT(findNext())); connect(ui.actionFind_Previous,SIGNAL(triggered()), ui.finder, SLOT(findPrevious())); connect(ui.actionPreferences, SIGNAL(triggered()), &preferences, SLOT(showPreferences())); connect(ui.editorTabs, SIGNAL(undoAvailable(bool)), ui.action_Undo,SLOT(setEnabled(bool))); connect(ui.editorTabs, SIGNAL(redoAvailable(bool)), ui.action_Redo,SLOT(setEnabled(bool))); connect(ui.editorTabs, SIGNAL(copyAvailable(bool)), ui.action_Cut,SLOT(setEnabled(bool))); connect(ui.editorTabs, SIGNAL(copyAvailable(bool)), ui.action_Copy,SLOT(setEnabled(bool))); // View Menu connect(ui.actionShow_Browser, SIGNAL(triggered()), this, SLOT(showBrowser())); connect(ui.actionBigger_Font, SIGNAL(triggered()), this, SLOT(fontBigger())); connect(ui.actionSmaller_Font, SIGNAL(triggered()), this, SLOT(fontSmaller())); ui.actionBigger_Font->setShortcuts(QList<QKeySequence>() << QKeySequence::ZoomIn << Qt::CTRL+Qt::Key_Equal); // Project Menu connect(ui.actionMemory_Map,SIGNAL(triggered()), this, SLOT(spawnMemoryMap())); connect(ui.actionBuild, SIGNAL(triggered()), this, SLOT(programBuild())); connect(ui.actionRun, SIGNAL(triggered()), this, SLOT(programRun())); connect(ui.actionWrite, SIGNAL(triggered()), this, SLOT(programWrite())); connect(ui.actionTerminal, SIGNAL(triggered()), this, SLOT(spawnTerminal())); // Help Menu connect(ui.actionPropeller_Quick_Reference, SIGNAL(triggered()), this, SLOT(propellerQuickReference())); connect(ui.actionPropeller_Datasheet, SIGNAL(triggered()), this, SLOT(propellerDatasheet())); connect(ui.actionPropeller_Manual, SIGNAL(triggered()), this, SLOT(propellerManual())); connect(ui.actionPropBASIC_Manual, SIGNAL(triggered()), this, SLOT(propBasicManual())); connect(ui.action_About, SIGNAL(triggered()), this, SLOT(about())); // Toolbar Extras cbPort = new QComboBox(this); cbPort->setLayoutDirection(Qt::LeftToRight); cbPort->setToolTip(tr("Select Serial Port")); cbPort->setSizeAdjustPolicy(QComboBox::AdjustToContents); ui.toolBar->addWidget(cbPort); connect(ui.projectview, SIGNAL(showFileLine(QString, int)), this, SLOT(highlightFileLine(QString, int))); updateRecentFileActions(); connect(ui.editorTabs, SIGNAL(sendMessage(const QString &)), this,SLOT(showMessage(const QString &))); connect(ui.finder, SIGNAL(sendMessage(const QString &)), this,SLOT(showMessage(const QString &))); restoreGeometry(QSettings().value("windowSize").toByteArray()); getApplicationSettings(); connect(&manager, SIGNAL(portListChanged()), this, SLOT(updatePorts())); manager.enablePortMonitor(true); updatePorts(); QSettings settings; QString lastport = settings.value("lastPort", QString()).toString(); if (!lastport.isEmpty()) { int index = cbPort->findText(lastport); if (index != -1) cbPort->setCurrentIndex(index); } ui.editorTabs->newFile(); loadSession(); installEventFilter(this); statusBar(); }
void LiteApp::load(bool bUseSession) { QSplashScreen *splash = 0; bool bSplash = m_settings->value(LITEAPP_SPLASHVISIBLE,true).toBool(); if (bSplash) { splash = new QSplashScreen(QPixmap::fromImage(makeSplashImage(this)),Qt::WindowStaysOnTopHint); } if (bSplash) { splash->show(); } if (bSplash) { splash->showMessage("liteide scan plugins ...",Qt::AlignLeft|Qt::AlignBottom); } qApp->processEvents(); loadMimeType(); loadPlugins(); if (bSplash) { splash->showMessage("liteide load plugins ...",Qt::AlignLeft|Qt::AlignBottom); } qApp->processEvents(); initPlugins(); if (bSplash) { splash->showMessage("liteide load state ...",Qt::AlignLeft|Qt::AlignBottom); } qApp->processEvents(); loadState(); m_mainwindow->show(); emit loaded(); m_projectManager->setCurrentProject(0); if (bSplash) { splash->showMessage("liteide load session ...",Qt::AlignLeft|Qt::AlignBottom); } qApp->processEvents(); appendLog("LiteApp","loaded"); bool b = m_settings->value(LITEAPP_AUTOLOADLASTSESSION,true).toBool(); if (b && bUseSession) { loadSession("default"); } if (bSplash) { m_mainwindow->raise(); splash->finish(m_mainwindow); splash->deleteLater(); } this->appendLog("HtmlWidgetFactory",m_htmlWidgetManager->classNameList().join(" ")); this->appendLog("DefaultHtmlWidgetFactory",m_htmlWidgetManager->defaultClassName()); m_goProxy->call("version"); m_goProxy->call("cmdlist"); }
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++; } } }