void MainWindow::populateMenus() { if(!myHandler->loadConfigFile()){ ui->outputBox->setText("Failed to load " FWCONFIG_FILENAME); return; } populateDevices(); populateFirmwares(ui->cmbDevice->currentIndex()); }
MainWindow::MainWindow(mbp::PatcherConfig *pc, QWidget *parent) : QWidget(parent), d_ptr(new MainWindowPrivate()) { Q_D(MainWindow); setWindowIcon(QIcon(QStringLiteral(":/icons/icon.png"))); setWindowTitle(qApp->applicationName()); // If we're passed an argument, switch to automatic mode if (qApp->arguments().size() > 2) { d->autoMode = true; d->fileName = qApp->arguments().at(1); } else { d->autoMode = false; d->fileName.clear(); } d->pc = pc; addWidgets(); setWidgetActions(); populateDevices(); populateInstallationLocations(); updateWidgetsVisibility(); QString lastDeviceId = d->settings.value( QStringLiteral("last_device"), QString()).toString(); for (size_t i = 0; i < d->devices.size(); ++i) { if (strcmp(mb_device_id(d->devices[i].get()), lastDeviceId.toUtf8().data()) == 0) { d->deviceSel->setCurrentIndex(i); break; } } // Create thread d->thread = new QThread(this); d->task = new PatcherTask(); d->task->moveToThread(d->thread); connect(d->thread, &QThread::finished, d->task, &QObject::deleteLater); connect(this, &MainWindow::runThread, d->task, &PatcherTask::patch); connect(d->task, &PatcherTask::finished, this, &MainWindow::onPatchingFinished); connect(d->task, &PatcherTask::progressUpdated, this, &MainWindow::onProgressUpdated); connect(d->task, &PatcherTask::filesUpdated, this, &MainWindow::onFilesUpdated); connect(d->task, &PatcherTask::detailsUpdated, this, &MainWindow::onDetailsUpdated); d->thread->start(); }
QgsGPSInformationWidget::QgsGPSInformationWidget( QgsMapCanvas * thepCanvas, QWidget * parent, Qt::WindowFlags f ) : QWidget( parent, f ) , mNmea( 0 ) , mpCanvas( thepCanvas ) { setupUi( this ); mpLastLayer = 0; mLastGpsPosition = QgsPoint( 0.0, 0.0 ); mpMapMarker = 0; mpRubberBand = 0; populateDevices(); QWidget * mpHistogramWidget = mStackedWidget->widget( 1 ); #if (!WITH_QWTPOLAR) mBtnSatellites->setVisible( false ); #endif // // Set up the graph for signal strength // mpPlot = new QwtPlot( mpHistogramWidget ); mpPlot->setAutoReplot( false ); // plot on demand //mpPlot->setTitle(QObject::tr("Signal Status")); //mpPlot->insertLegend(new QwtLegend(), QwtPlot::BottomLegend); // Set axis titles //mpPlot->setAxisTitle(QwtPlot::xBottom, QObject::tr("Satellite")); //mpPlot->setAxisTitle(QwtPlot::yLeft, QObject::tr("Value")); mpPlot->setAxisScale( QwtPlot::xBottom, 0, 20 ); mpPlot->setAxisScale( QwtPlot::yLeft, 0, 100 ); // max is 50dB SNR, I believe - SLM // add a grid //QwtPlotGrid * mypGrid = new QwtPlotGrid(); //mypGrid->attach( mpPlot ); //display satellites first mpCurve = new QwtPlotCurve(); mpCurve->setRenderHint( QwtPlotItem::RenderAntialiased ); mpCurve->setPen( QPen( Qt::blue ) ); mpCurve->setBrush( QBrush( Qt::blue ) ); mpPlot->enableAxis( QwtPlot::yLeft, false ); mpPlot->enableAxis( QwtPlot::xBottom, false ); mpCurve->attach( mpPlot ); //ensure all children get removed mpPlot->setAutoDelete( true ); QVBoxLayout *mpHistogramLayout = new QVBoxLayout( mpHistogramWidget ); mpHistogramLayout->setContentsMargins( 0, 0, 0, 0 ); mpHistogramLayout->addWidget( mpPlot ); mpHistogramWidget->setLayout( mpHistogramLayout ); // // Set up the polar graph for satellite pos // #if (WITH_QWTPOLAR) QWidget * mpPolarWidget = mStackedWidget->widget( 2 ); mpSatellitesWidget = new QwtPolarPlot( /*QwtText( tr( "Satellite View" ), QwtText::PlainText ),*/ mpPolarWidget ); // possible title for graph removed for now as it is too large in small windows mpSatellitesWidget->setAutoReplot( false ); // plot on demand (after all data has been handled) mpSatellitesWidget->setPlotBackground( Qt::white ); // scales mpSatellitesWidget->setScale( QwtPolar::ScaleAzimuth, 360, //min - reverse the min/max values to get compass orientation - increasing clockwise 0, //max 90 //interval - just show cardinal and intermediate (NE, N, NW, etc.) compass points (in degrees) ); mpSatellitesWidget->setAzimuthOrigin( M_PI_2 ); // to get compass orientation - need to rotate 90 deg. ccw; this is in Radians (not indicated in QwtPolarPlot docs) // mpSatellitesWidget->setScaleMaxMinor( QwtPolar::ScaleRadius, 2 ); // seems unnecessary mpSatellitesWidget->setScale( QwtPolar::ScaleRadius, 90, //min - reverse the min/max to get 0 at edge, 90 at center 0, //max 45 //interval ); // grids, axes QwtPolarGrid * mypSatellitesGrid = new QwtPolarGrid(); mypSatellitesGrid->setGridAttribute( QwtPolarGrid::AutoScaling, false ); // This fixes the issue of autoscaling on the Radius grid. It is ON by default AND is separate from the scaleData.doAutoScale in QwtPolarPlot::setScale(), etc. THIS IS VERY TRICKY! mypSatellitesGrid->setPen( QPen( Qt::black ) ); QPen minorPen( Qt::gray ); // moved outside of for loop; NOTE setting the minor pen isn't necessary if the minor grids aren't shown for ( int scaleId = 0; scaleId < QwtPolar::ScaleCount; scaleId++ ) { //mypSatellitesGrid->showGrid( scaleId ); //mypSatellitesGrid->showMinorGrid(scaleId); mypSatellitesGrid->setMinorGridPen( scaleId, minorPen ); } // mypSatellitesGrid->setAxisPen( QwtPolar::AxisAzimuth, QPen( Qt::black ) ); mypSatellitesGrid->showAxis( QwtPolar::AxisAzimuth, true ); mypSatellitesGrid->showAxis( QwtPolar::AxisLeft, false ); //alt axis mypSatellitesGrid->showAxis( QwtPolar::AxisRight, false );//alt axis mypSatellitesGrid->showAxis( QwtPolar::AxisTop, false );//alt axis mypSatellitesGrid->showAxis( QwtPolar::AxisBottom, false );//alt axis mypSatellitesGrid->showGrid( QwtPolar::ScaleAzimuth, false ); // hide the grid; just show ticks at edge mypSatellitesGrid->showGrid( QwtPolar::ScaleRadius, true ); // mypSatellitesGrid->showMinorGrid( QwtPolar::ScaleAzimuth, true ); mypSatellitesGrid->showMinorGrid( QwtPolar::ScaleRadius, true ); // for 22.5, 67.5 degree circles mypSatellitesGrid->attach( mpSatellitesWidget ); //QwtLegend *legend = new QwtLegend; //mpSatellitesWidget->insertLegend(legend, QwtPolarPlot::BottomLegend); QVBoxLayout *mpPolarLayout = new QVBoxLayout( mpPolarWidget ); mpPolarLayout->setContentsMargins( 0, 0, 0, 0 ); mpPolarLayout->addWidget( mpSatellitesWidget ); mpPolarWidget->setLayout( mpPolarLayout ); // replot on command mpSatellitesWidget->replot(); #endif mpPlot->replot(); // Restore state QSettings mySettings; mGroupShowMarker->setChecked( mySettings.value( "/gps/showMarker", "true" ).toBool() ); mSliderMarkerSize->setValue( mySettings.value( "/gps/markerSize", "12" ).toInt() ); mSpinTrackWidth->setValue( mySettings.value( "/gps/trackWidth", "2" ).toInt() ); mTrackColor = mySettings.value( "/gps/trackColor", QColor( Qt::red ) ).value<QColor>(); QString myPortMode = mySettings.value( "/gps/portMode", "scanPorts" ).toString(); mSpinMapExtentMultiplier->setValue( mySettings.value( "/gps/mapExtentMultiplier", "50" ).toInt() ); mDateTimeFormat = mySettings.value( "/gps/dateTimeFormat", "" ).toString(); // zero-length string signifies default format mGpsdHost->setText( mySettings.value( "/gps/gpsdHost", "localhost" ).toString() ); mGpsdPort->setText( mySettings.value( "/gps/gpsdPort", 2947 ).toString() ); mGpsdDevice->setText( mySettings.value( "/gps/gpsdDevice" ).toString() ); //port mode if ( myPortMode == "scanPorts" ) { mRadAutodetect->setChecked( true ); } else if ( myPortMode == "internalGPS" ) { mRadInternal->setChecked( true ); } else if ( myPortMode == "explicitPort" ) { mRadUserPath->setChecked( true ); } else if ( myPortMode == "gpsd" ) { mRadGpsd->setChecked( true ); } //disable the internal port method if build is without QtLocation #ifndef HAVE_QT_MOBILITY_LOCATION mRadInternal->setDisabled( true ); mRadAutodetect->setChecked( true ); #endif //auto digitising behaviour mCbxAutoAddVertices->setChecked( mySettings.value( "/gps/autoAddVertices", "false" ).toBool() ); mCbxAutoCommit->setChecked( mySettings.value( "/gps/autoCommit", "false" ).toBool() ); //pan mode QString myPanMode = mySettings.value( "/gps/panMode", "recenterWhenNeeded" ).toString(); if ( myPanMode == "none" ) { radNeverRecenter->setChecked( true ); } else if ( myPanMode == "recenterAlways" ) { radRecenterMap->setChecked( true ); } else { radRecenterWhenNeeded->setChecked( true ); } mWgs84CRS.createFromOgcWmsCrs( "EPSG:4326" ); mBtnDebug->setVisible( mySettings.value( "/gps/showDebug", "false" ).toBool() ); // use a registry setting to control - power users/devs could set it // status = unknown setStatusIndicator( NoData ); //SLM - added functionality mLogFile = 0; connect( QgisApp::instance()->layerTreeView(), SIGNAL( currentLayerChanged( QgsMapLayer* ) ), this, SLOT( updateCloseFeatureButton( QgsMapLayer* ) ) ); mStackedWidget->setCurrentIndex( 3 ); // force to Options mBtnPosition->setFocus( Qt::TabFocusReason ); }