MainWindow::MainWindow(bool useSocket, QWidget *parent) : ParentWindow(parent), m_page(0), m_webView(new QGraphicsWebView), #ifndef MEEGO_EDITION_HARMATTAN m_actionMinimizeToTray(new QAction(i18n("&Minimize to Tray"), this)), #endif m_inspector(0), m_useSocket(useSocket) { #ifdef Q_OS_UNIX chdir(PREFIX); #endif setWindowTitle(i18n("Hotot")); setWindowIcon(QIcon::fromTheme("hotot_qt", QIcon("share/hotot-qt/html/image/ic64_hotot.png"))); qApp->setWindowIcon(QIcon::fromTheme("hotot_qt", QIcon("share/hotot-qt/html/image/ic64_hotot.png"))); m_webView->setPreferredSize(QSize(640, 480)); #ifndef MEEGO_EDITION_HARMATTAN HototWebView* view = new HototWebView(m_webView, this); this->resize(QSize(640, 480)); this->setCentralWidget(view); #else MApplicationPage* page = new MApplicationPage; page->setCentralWidget(m_webView); page->setComponentsDisplayMode(MApplicationPage::AllComponents, MApplicationPageModel::Hide); page->setAutoMarginsForComponentsEnabled(false); page->resize(page->exposedContentRect().size()); page->appear(this, MSceneWindow::DestroyWhenDone); page->setPannable(false); #endif #ifndef MEEGO_EDITION_HARMATTAN QSettings settings("hotot-qt", "hotot"); restoreGeometry(settings.value("geometry").toByteArray()); restoreState(settings.value("windowState").toByteArray()); #endif m_menu = new QMenu(this); #ifndef MEEGO_EDITION_HARMATTAN m_actionMinimizeToTray->setCheckable(true); m_actionMinimizeToTray->setChecked(settings.value("minimizeToTray", true).toBool()); connect(m_actionMinimizeToTray, SIGNAL(toggled(bool)), this, SLOT(toggleMinimizeToTray(bool))); m_menu->addAction(m_actionMinimizeToTray); #endif m_actionExit = new QAction(QIcon::fromTheme("application-exit"), i18n("&Exit"), this); m_actionExit->setShortcut(QKeySequence::Quit); connect(m_actionExit, SIGNAL(triggered()), this, SLOT(exit())); m_menu->addAction(m_actionExit); m_actionDev = new QAction(QIcon::fromTheme("configure"), i18n("&Developer Tool"), this); connect(m_actionDev, SIGNAL(triggered()), this, SLOT(showDeveloperTool())); #ifdef HAVE_KDE m_tray = new KDETrayBackend(this); #else m_tray = new QtTrayBackend(this); #endif m_tray->setContextMenu(m_menu); #ifndef MEEGO_EDITION_HARMATTAN addAction(m_actionExit); #endif m_page = new HototWebPage(this); QWebSettings::setOfflineStoragePath(QDir::homePath().append("/.config/hotot-qt")); QWebSettings::setOfflineStorageDefaultQuota(15 * 1024 * 1024); m_webView->setPage(m_page); m_webView->settings()->globalSettings()->setAttribute(QWebSettings::LocalContentCanAccessFileUrls, true); m_webView->settings()->globalSettings()->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, true); m_webView->settings()->globalSettings()->setAttribute(QWebSettings::LocalStorageEnabled, true); m_webView->settings()->globalSettings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true); m_webView->settings()->globalSettings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true); m_webView->settings()->globalSettings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true); m_webView->settings()->globalSettings()->setAttribute(QWebSettings::JavascriptEnabled, true); m_inspector = new QWebInspector; m_inspector->setPage(m_page); #ifdef MEEGO_EDITION_HARMATTAN connect(page, SIGNAL(exposedContentRectChanged()), this, SLOT(contentSizeChanged())); m_page->setPreferredContentsSize(page->exposedContentRect().size().toSize()); m_webView->setResizesToContents(true); #endif #ifdef Q_OS_UNIX m_webView->load(QUrl("file://" PREFIX "/share/hotot-qt/html/index.html")); #else QFileInfo f("share/hotot-qt/html/index.html"); m_webView->load(QUrl::fromLocalFile(f.absoluteFilePath())); #endif connect(m_webView, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished(bool))); }
QgsAttributeTableDialog::QgsAttributeTableDialog( QgsVectorLayer *theLayer, QWidget *parent, Qt::WindowFlags flags ) : QDialog( parent, flags ) , mDock( nullptr ) , mLayer( theLayer ) , mRubberBand( nullptr ) , mCurrentSearchWidgetWrapper( nullptr ) { setupUi( this ); Q_FOREACH ( const QgsField& field, mLayer->fields() ) { mVisibleFields.append( field.name() ); } // Fix selection color on loosing focus (Windows) setStyleSheet( QgisApp::instance()->styleSheet() ); setAttribute( Qt::WA_DeleteOnClose ); layout()->setMargin( 0 ); layout()->setContentsMargins( 0, 0, 0, 0 ); static_cast< QGridLayout* >( layout() )->setVerticalSpacing( 0 ); QSettings settings; int size = settings.value( QStringLiteral( "/IconSize" ), 16 ).toInt(); if ( size > 32 ) { size -= 16; } else if ( size == 32 ) { size = 24; } else { size = 16; } mToolbar->setIconSize( QSize( size, size ) ); // Initialize the window geometry restoreGeometry( settings.value( QStringLiteral( "/Windows/BetterAttributeTable/geometry" ) ).toByteArray() ); myDa = new QgsDistanceArea(); myDa->setSourceCrs( mLayer->crs() ); myDa->setEllipsoidalMode( QgisApp::instance()->mapCanvas()->mapSettings().hasCrsTransformEnabled() ); myDa->setEllipsoid( QgsProject::instance()->ellipsoid() ); mEditorContext.setDistanceArea( *myDa ); mEditorContext.setVectorLayerTools( QgisApp::instance()->vectorLayerTools() ); QgsFeatureRequest r; if ( mLayer->geometryType() != QgsWkbTypes::NullGeometry && settings.value( QStringLiteral( "/qgis/attributeTableBehaviour" ), QgsAttributeTableFilterModel::ShowAll ).toInt() == QgsAttributeTableFilterModel::ShowVisible ) { QgsMapCanvas *mc = QgisApp::instance()->mapCanvas(); QgsRectangle extent( mc->mapSettings().mapToLayerCoordinates( theLayer, mc->extent() ) ); r.setFilterRect( extent ); mRubberBand = new QgsRubberBand( mc, QgsWkbTypes::PolygonGeometry ); mRubberBand->setToGeometry( QgsGeometry::fromRect( extent ), theLayer ); mActionShowAllFilter->setText( tr( "Show All Features In Initial Canvas Extent" ) ); } // Initialize dual view mMainView->init( mLayer, QgisApp::instance()->mapCanvas(), r, mEditorContext ); QgsAttributeTableConfig config = mLayer->attributeTableConfig(); mMainView->setAttributeTableConfig( config ); // Initialize filter gui elements mFilterActionMapper = new QSignalMapper( this ); mFilterColumnsMenu = new QMenu( this ); mActionFilterColumnsMenu->setMenu( mFilterColumnsMenu ); mApplyFilterButton->setDefaultAction( mActionApplyFilter ); // Set filter icon in a couple of places QIcon filterIcon = QgsApplication::getThemeIcon( "/mActionFilter2.svg" ); mActionShowAllFilter->setIcon( filterIcon ); mActionAdvancedFilter->setIcon( filterIcon ); mActionSelectedFilter->setIcon( filterIcon ); mActionVisibleFilter->setIcon( filterIcon ); mActionEditedFilter->setIcon( filterIcon ); // Connect filter signals connect( mActionAdvancedFilter, SIGNAL( triggered() ), SLOT( filterExpressionBuilder() ) ); connect( mActionShowAllFilter, SIGNAL( triggered() ), SLOT( filterShowAll() ) ); connect( mActionSelectedFilter, SIGNAL( triggered() ), SLOT( filterSelected() ) ); connect( mActionVisibleFilter, SIGNAL( triggered() ), SLOT( filterVisible() ) ); connect( mActionEditedFilter, SIGNAL( triggered() ), SLOT( filterEdited() ) ); connect( mFilterActionMapper, SIGNAL( mapped( QObject* ) ), SLOT( filterColumnChanged( QObject* ) ) ); connect( mFilterQuery, SIGNAL( returnPressed() ), SLOT( filterQueryAccepted() ) ); connect( mActionApplyFilter, SIGNAL( triggered() ), SLOT( filterQueryAccepted() ) ); connect( mActionSetStyles, SIGNAL( triggered() ), SLOT( openConditionalStyles() ) ); // info from layer to table connect( mLayer, SIGNAL( editingStarted() ), this, SLOT( editingToggled() ) ); connect( mLayer, SIGNAL( editingStopped() ), this, SLOT( editingToggled() ) ); connect( mLayer, SIGNAL( destroyed() ), this, SLOT( close() ) ); connect( mLayer, SIGNAL( selectionChanged() ), this, SLOT( updateTitle() ) ); connect( mLayer, SIGNAL( featureAdded( QgsFeatureId ) ), this, SLOT( updateTitle() ) ); connect( mLayer, SIGNAL( featuresDeleted( QgsFeatureIds ) ), this, SLOT( updateTitle() ) ); connect( mLayer, SIGNAL( attributeAdded( int ) ), this, SLOT( columnBoxInit() ) ); connect( mLayer, SIGNAL( attributeDeleted( int ) ), this, SLOT( columnBoxInit() ) ); connect( mLayer, &QgsVectorLayer::readOnlyChanged, this, &QgsAttributeTableDialog::editingToggled ); // connect table info to window connect( mMainView, SIGNAL( filterChanged() ), this, SLOT( updateTitle() ) ); connect( mMainView, SIGNAL( filterExpressionSet( QString, QgsAttributeForm::FilterType ) ), this, SLOT( formFilterSet( QString, QgsAttributeForm::FilterType ) ) ); connect( mMainView, SIGNAL( formModeChanged( QgsAttributeForm::Mode ) ), this, SLOT( viewModeChanged( QgsAttributeForm::Mode ) ) ); // info from table to application connect( this, SIGNAL( saveEdits( QgsMapLayer * ) ), QgisApp::instance(), SLOT( saveEdits( QgsMapLayer * ) ) ); bool myDockFlag = settings.value( QStringLiteral( "/qgis/dockAttributeTable" ), false ).toBool(); if ( myDockFlag ) { mDock = new QgsAttributeTableDock( tr( "%1 (%n Feature(s))", "feature count", mMainView->featureCount() ).arg( mLayer->name() ), QgisApp::instance() ); mDock->setWidget( this ); connect( this, SIGNAL( destroyed() ), mDock, SLOT( close() ) ); QgisApp::instance()->addDockWidget( Qt::BottomDockWidgetArea, mDock ); } columnBoxInit(); updateTitle(); mActionRemoveSelection->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionDeselectAll.svg" ) ) ); mActionSelectAll->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionSelectAll.svg" ) ) ); mActionSelectedToTop->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionSelectedToTop.svg" ) ) ); mActionCopySelectedRows->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionEditCopy.svg" ) ) ); mActionPasteFeatures->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionEditPaste.svg" ) ) ); mActionZoomMapToSelectedRows->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionZoomToSelected.svg" ) ) ); mActionPanMapToSelectedRows->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionPanToSelected.svg" ) ) ); mActionInvertSelection->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionInvertSelection.svg" ) ) ); mActionToggleEditing->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionToggleEditing.svg" ) ) ); mActionSaveEdits->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionSaveEdits.svg" ) ) ); mActionDeleteSelected->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionDeleteSelected.svg" ) ) ); mActionOpenFieldCalculator->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionCalculateField.svg" ) ) ); mActionAddAttribute->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionNewAttribute.svg" ) ) ); mActionRemoveAttribute->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionDeleteAttribute.svg" ) ) ); mTableViewButton->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionOpenTable.svg" ) ) ); mAttributeViewButton->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionFormView.svg" ) ) ); mActionExpressionSelect->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mIconExpressionSelect.svg" ) ) ); mActionAddFeature->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionNewTableRow.svg" ) ) ); // toggle editing bool canChangeAttributes = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeAttributeValues; bool canDeleteFeatures = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::DeleteFeatures; bool canAddAttributes = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::AddAttributes; bool canDeleteAttributes = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::DeleteAttributes; bool canAddFeatures = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::AddFeatures; mActionToggleEditing->blockSignals( true ); mActionToggleEditing->setCheckable( true ); mActionToggleEditing->setChecked( mLayer->isEditable() ); mActionToggleEditing->blockSignals( false ); mActionSaveEdits->setEnabled( mActionToggleEditing->isEnabled() && mLayer->isEditable() ); mActionReload->setEnabled( ! mLayer->isEditable() ); mActionAddAttribute->setEnabled(( canChangeAttributes || canAddAttributes ) && mLayer->isEditable() ); mActionRemoveAttribute->setEnabled( canDeleteAttributes && mLayer->isEditable() ); mActionDeleteSelected->setEnabled( canDeleteFeatures && mLayer->isEditable() ); if ( !canDeleteFeatures ) mToolbar->removeAction( mActionDeleteSelected ); mActionAddFeature->setEnabled( canAddFeatures && mLayer->isEditable() ); if ( !canAddFeatures ) mToolbar->removeAction( mActionAddFeature ); if ( canDeleteFeatures || canAddFeatures ) mToolbar->insertSeparator( mActionExpressionSelect ); mMainViewButtonGroup->setId( mTableViewButton, QgsDualView::AttributeTable ); mMainViewButtonGroup->setId( mAttributeViewButton, QgsDualView::AttributeEditor ); // Load default attribute table filter QgsAttributeTableFilterModel::FilterMode defaultFilterMode = ( QgsAttributeTableFilterModel::FilterMode ) settings.value( QStringLiteral( "/qgis/attributeTableBehaviour" ), QgsAttributeTableFilterModel::ShowAll ).toInt(); switch ( defaultFilterMode ) { case QgsAttributeTableFilterModel::ShowVisible: filterVisible(); break; case QgsAttributeTableFilterModel::ShowSelected: filterSelected(); break; case QgsAttributeTableFilterModel::ShowAll: default: filterShowAll(); break; } mUpdateExpressionText->registerExpressionContextGenerator( this ); mFieldCombo->setFilters( QgsFieldProxyModel::AllTypes | QgsFieldProxyModel::HideReadOnly ); mFieldCombo->setLayer( mLayer ); connect( mRunFieldCalc, SIGNAL( clicked() ), this, SLOT( updateFieldFromExpression() ) ); connect( mRunFieldCalcSelected, SIGNAL( clicked() ), this, SLOT( updateFieldFromExpressionSelected() ) ); // NW TODO Fix in 2.6 - Doesn't work with field model for some reason. // connect( mUpdateExpressionText, SIGNAL( returnPressed() ), this, SLOT( updateFieldFromExpression() ) ); connect( mUpdateExpressionText, SIGNAL( fieldChanged( QString, bool ) ), this, SLOT( updateButtonStatus( QString, bool ) ) ); mUpdateExpressionText->setLayer( mLayer ); mUpdateExpressionText->setLeftHandButtonStyle( true ); int initialView = settings.value( QStringLiteral( "/qgis/attributeTableView" ), -1 ).toInt(); if ( initialView < 0 ) { initialView = settings.value( QStringLiteral( "/qgis/attributeTableLastView" ), QgsDualView::AttributeTable ).toInt(); } mMainView->setView( static_cast< QgsDualView::ViewMode >( initialView ) ); mMainViewButtonGroup->button( initialView )->setChecked( true ); connect( mActionToggleMultiEdit, SIGNAL( toggled( bool ) ), mMainView, SLOT( setMultiEditEnabled( bool ) ) ); connect( mActionSearchForm, SIGNAL( toggled( bool ) ), mMainView, SLOT( toggleSearchMode( bool ) ) ); updateMultiEditButtonState(); if ( mLayer->editFormConfig().layout() == QgsEditFormConfig::UiFileLayout ) { //not supported with custom UI mActionToggleMultiEdit->setEnabled( false ); mActionToggleMultiEdit->setToolTip( tr( "Multiedit is not supported when using custom UI forms" ) ); mActionSearchForm->setEnabled( false ); mActionSearchForm->setToolTip( tr( "Search is not supported when using custom UI forms" ) ); } editingToggled(); }
/*! * Function to restore dialog window state */ void QgsConfigureShortcutsDialog::restoreState() { QSettings settings; restoreGeometry( settings.value( "/Windows/ShortcutsDialog/geometry" ).toByteArray() ); }
QT_BEGIN_NAMESPACE MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent) : QMainWindow(parent) , m_bookmarkWidget(0) , m_filterCombo(0) , m_toolBarMenu(0) , m_cmdLine(cmdLine) , m_progressWidget(0) , m_qtDocInstaller(0) , m_connectedInitSignals(false) { TRACE_OBJ setToolButtonStyle(Qt::ToolButtonFollowStyle); setDockOptions(dockOptions() | AllowNestedDocks); QString collectionFile; if (usesDefaultCollection()) { MainWindow::collectionFileDirectory(true); collectionFile = MainWindow::defaultHelpCollectionFileName(); } else { collectionFile = cmdLine->collectionFile(); } HelpEngineWrapper &helpEngineWrapper = HelpEngineWrapper::instance(collectionFile); BookmarkManager *bookMarkManager = BookmarkManager::instance(); if (!initHelpDB(!cmdLine->collectionFileGiven())) { qDebug("Fatal error: Help engine initialization failed. " "Error message was: %s\nAssistant will now exit.", qPrintable(HelpEngineWrapper::instance().error())); std::exit(1); } m_centralWidget = new CentralWidget(this); setCentralWidget(m_centralWidget); m_indexWindow = new IndexWindow(this); QDockWidget *indexDock = new QDockWidget(tr("Index"), this); indexDock->setObjectName(QLatin1String("IndexWindow")); indexDock->setWidget(m_indexWindow); addDockWidget(Qt::LeftDockWidgetArea, indexDock); m_contentWindow = new ContentWindow; QDockWidget *contentDock = new QDockWidget(tr("Contents"), this); contentDock->setObjectName(QLatin1String("ContentWindow")); contentDock->setWidget(m_contentWindow); addDockWidget(Qt::LeftDockWidgetArea, contentDock); m_searchWindow = new SearchWidget(helpEngineWrapper.searchEngine()); m_searchWindow->setFont(!helpEngineWrapper.usesBrowserFont() ? qApp->font() : helpEngineWrapper.browserFont()); QDockWidget *searchDock = new QDockWidget(tr("Search"), this); searchDock->setObjectName(QLatin1String("SearchWindow")); searchDock->setWidget(m_searchWindow); addDockWidget(Qt::LeftDockWidgetArea, searchDock); QDockWidget *bookmarkDock = new QDockWidget(tr("Bookmarks"), this); bookmarkDock->setObjectName(QLatin1String("BookmarkWindow")); bookmarkDock->setWidget(m_bookmarkWidget = bookMarkManager->bookmarkDockWidget()); addDockWidget(Qt::LeftDockWidgetArea, bookmarkDock); QDockWidget *openPagesDock = new QDockWidget(tr("Open Pages"), this); openPagesDock->setObjectName(QLatin1String("Open Pages")); OpenPagesManager *openPagesManager = OpenPagesManager::createInstance(this, usesDefaultCollection(), m_cmdLine->url()); openPagesDock->setWidget(openPagesManager->openPagesWidget()); addDockWidget(Qt::LeftDockWidgetArea, openPagesDock); connect(m_centralWidget, SIGNAL(addBookmark(QString, QString)), bookMarkManager, SLOT(addBookmark(QString, QString))); connect(bookMarkManager, SIGNAL(escapePressed()), this, SLOT(activateCurrentCentralWidgetTab())); connect(bookMarkManager, SIGNAL(setSource(QUrl)), m_centralWidget, SLOT(setSource(QUrl))); connect(bookMarkManager, SIGNAL(setSourceInNewTab(QUrl)), openPagesManager, SLOT(createPage(QUrl))); QHelpSearchEngine *searchEngine = helpEngineWrapper.searchEngine(); connect(searchEngine, SIGNAL(indexingStarted()), this, SLOT(indexingStarted())); connect(searchEngine, SIGNAL(indexingFinished()), this, SLOT(indexingFinished())); QString defWindowTitle = tr("Qt Assistant"); setWindowTitle(defWindowTitle); setupActions(); statusBar()->show(); m_centralWidget->connectTabBar(); setupFilterToolbar(); setupAddressToolbar(); const QString windowTitle = helpEngineWrapper.windowTitle(); setWindowTitle(windowTitle.isEmpty() ? defWindowTitle : windowTitle); QByteArray iconArray = helpEngineWrapper.applicationIcon(); if (iconArray.size() > 0) { QPixmap pix; pix.loadFromData(iconArray); QIcon appIcon(pix); qApp->setWindowIcon(appIcon); } else { QIcon appIcon(QLatin1String(":/trolltech/assistant/images/assistant-128.png")); qApp->setWindowIcon(appIcon); } QToolBar *toolBar = addToolBar(tr("Bookmark Toolbar")); toolBar->setObjectName(QLatin1String("Bookmark Toolbar")); bookMarkManager->setBookmarksToolbar(toolBar); // Show the widget here, otherwise the restore geometry and state won't work // on x11. show(); toolBar->hide(); toolBarMenu()->addAction(toolBar->toggleViewAction()); QByteArray ba(helpEngineWrapper.mainWindow()); if (!ba.isEmpty()) restoreState(ba); ba = helpEngineWrapper.mainWindowGeometry(); if (!ba.isEmpty()) { restoreGeometry(ba); } else { tabifyDockWidget(contentDock, indexDock); tabifyDockWidget(indexDock, bookmarkDock); tabifyDockWidget(bookmarkDock, searchDock); contentDock->raise(); const QRect screen = QApplication::desktop()->screenGeometry(); resize(4*screen.width()/5, 4*screen.height()/5); } if (!helpEngineWrapper.hasFontSettings()) { helpEngineWrapper.setUseAppFont(false); helpEngineWrapper.setUseBrowserFont(false); helpEngineWrapper.setAppFont(qApp->font()); helpEngineWrapper.setAppWritingSystem(QFontDatabase::Latin); helpEngineWrapper.setBrowserFont(qApp->font()); helpEngineWrapper.setBrowserWritingSystem(QFontDatabase::Latin); } else { updateApplicationFont(); } updateAboutMenuText(); QTimer::singleShot(0, this, SLOT(insertLastPages())); if (m_cmdLine->enableRemoteControl()) (void)new RemoteControl(this); if (m_cmdLine->contents() == CmdLineParser::Show) showContents(); else if (m_cmdLine->contents() == CmdLineParser::Hide) hideContents(); if (m_cmdLine->index() == CmdLineParser::Show) showIndex(); else if (m_cmdLine->index() == CmdLineParser::Hide) hideIndex(); if (m_cmdLine->bookmarks() == CmdLineParser::Show) showBookmarksDockWidget(); else if (m_cmdLine->bookmarks() == CmdLineParser::Hide) hideBookmarksDockWidget(); if (m_cmdLine->search() == CmdLineParser::Show) showSearch(); else if (m_cmdLine->search() == CmdLineParser::Hide) hideSearch(); if (m_cmdLine->contents() == CmdLineParser::Activate) showContents(); else if (m_cmdLine->index() == CmdLineParser::Activate) showIndex(); else if (m_cmdLine->bookmarks() == CmdLineParser::Activate) showBookmarksDockWidget(); if (!m_cmdLine->currentFilter().isEmpty()) { const QString &curFilter = m_cmdLine->currentFilter(); if (helpEngineWrapper.customFilters().contains(curFilter)) helpEngineWrapper.setCurrentFilter(curFilter); } if (usesDefaultCollection()) QTimer::singleShot(0, this, SLOT(lookForNewQtDocumentation())); else checkInitState(); connect(&helpEngineWrapper, SIGNAL(documentationRemoved(QString)), this, SLOT(documentationRemoved(QString))); connect(&helpEngineWrapper, SIGNAL(documentationUpdated(QString)), this, SLOT(documentationUpdated(QString))); setTabPosition(Qt::AllDockWidgetAreas, QTabWidget::North); GlobalActions::instance()->updateActions(); if (helpEngineWrapper.addressBarEnabled()) showNewAddress(); }
QgsColorDialogV2::QgsColorDialogV2( QWidget *parent, Qt::WindowFlags fl, const QColor& color ) : QDialog( parent, fl ) , mPreviousColor( color ) , mAllowAlpha( true ) , mLastCustomColorIndex( 0 ) , mPickingColor( false ) { setupUi( this ); QSettings settings; restoreGeometry( settings.value( "/Windows/ColorDialog/geometry" ).toByteArray() ); mSchemeList->header()->hide(); mSchemeList->setColumnWidth( 0, 44 ); //get schemes with ShowInColorDialog set QList<QgsColorScheme *> schemeList = QgsColorSchemeRegistry::instance()->schemes( QgsColorScheme::ShowInColorDialog ); QList<QgsColorScheme *>::const_iterator schemeIt = schemeList.constBegin(); for ( ; schemeIt != schemeList.constEnd(); ++schemeIt ) { mSchemeComboBox->addItem(( *schemeIt )->schemeName() ); } int activeScheme = qMin( settings.value( "/Windows/ColorDialog/activeScheme", 0 ).toInt(), schemeList.length() - 1 ); if ( activeScheme < schemeList.length() ) { mSchemeList->setScheme( schemeList.at( activeScheme ) ); mSchemeComboBox->setCurrentIndex( activeScheme ); mActionImportColors->setEnabled( schemeList.at( activeScheme )->isEditable() ); mActionPasteColors->setEnabled( schemeList.at( activeScheme )->isEditable() ); mAddColorToSchemeButton->setEnabled( schemeList.at( activeScheme )->isEditable() ); mRemoveColorsFromSchemeButton->setEnabled( schemeList.at( activeScheme )->isEditable() ); } connect( mActionPasteColors, SIGNAL( triggered() ), mSchemeList, SLOT( pasteColors() ) ); connect( mActionExportColors, SIGNAL( triggered() ), this, SLOT( exportColors() ) ); connect( mActionImportColors, SIGNAL( triggered() ), this, SLOT( importColors() ) ); connect( mActionImportPalette, SIGNAL( triggered() ), this, SLOT( importPalette() ) ); connect( mRemoveColorsFromSchemeButton, SIGNAL( clicked() ), mSchemeList, SLOT( removeSelection() ) ); QMenu* schemeMenu = new QMenu( mSchemeToolButton ); schemeMenu->addAction( mActionPasteColors ); schemeMenu->addAction( mActionImportColors ); schemeMenu->addAction( mActionExportColors ); schemeMenu->addSeparator(); schemeMenu->addAction( mActionImportPalette ); mSchemeToolButton->setMenu( schemeMenu ); connect( mSchemeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( schemeIndexChanged( int ) ) ); connect( mSchemeList, SIGNAL( colorSelected( QColor ) ), this, SLOT( setColor( QColor ) ) ); if ( mPreviousColor.isValid() ) { QPushButton* resetButton = new QPushButton( tr( "Reset" ) ); mButtonBox->addButton( resetButton, QDialogButtonBox::ResetRole ); } else { mOldColorLabel->hide(); } mVerticalRamp->setOrientation( QgsColorRampWidget::Vertical ); mVerticalRamp->setInteriorMargin( 2 ); mVerticalRamp->setShowFrame( true ); mRedSlider->setComponent( QgsColorWidget::Red ); mGreenSlider->setComponent( QgsColorWidget::Green ); mBlueSlider->setComponent( QgsColorWidget::Blue ); mHueSlider->setComponent( QgsColorWidget::Hue ); mSaturationSlider->setComponent( QgsColorWidget::Saturation ); mValueSlider->setComponent( QgsColorWidget::Value ); mAlphaSlider->setComponent( QgsColorWidget::Alpha ); mSwatchButton1->setShowMenu( false ); mSwatchButton1->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton2->setShowMenu( false ); mSwatchButton2->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton3->setShowMenu( false ); mSwatchButton3->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton4->setShowMenu( false ); mSwatchButton4->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton5->setShowMenu( false ); mSwatchButton5->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton6->setShowMenu( false ); mSwatchButton6->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton7->setShowMenu( false ); mSwatchButton7->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton8->setShowMenu( false ); mSwatchButton8->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton9->setShowMenu( false ); mSwatchButton9->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton10->setShowMenu( false ); mSwatchButton10->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton11->setShowMenu( false ); mSwatchButton11->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton12->setShowMenu( false ); mSwatchButton12->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton13->setShowMenu( false ); mSwatchButton13->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton14->setShowMenu( false ); mSwatchButton14->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton15->setShowMenu( false ); mSwatchButton15->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton16->setShowMenu( false ); mSwatchButton16->setBehaviour( QgsColorButtonV2::SignalOnly ); //restore custom colors mSwatchButton1->setColor( settings.value( "/Windows/ColorDialog/customColor1", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton2->setColor( settings.value( "/Windows/ColorDialog/customColor2", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton3->setColor( settings.value( "/Windows/ColorDialog/customColor3", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton4->setColor( settings.value( "/Windows/ColorDialog/customColor4", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton5->setColor( settings.value( "/Windows/ColorDialog/customColor5", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton6->setColor( settings.value( "/Windows/ColorDialog/customColor6", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton7->setColor( settings.value( "/Windows/ColorDialog/customColor7", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton8->setColor( settings.value( "/Windows/ColorDialog/customColor8", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton9->setColor( settings.value( "/Windows/ColorDialog/customColor9", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton10->setColor( settings.value( "/Windows/ColorDialog/customColor10", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton11->setColor( settings.value( "/Windows/ColorDialog/customColor11", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton12->setColor( settings.value( "/Windows/ColorDialog/customColor12", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton13->setColor( settings.value( "/Windows/ColorDialog/customColor13", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton14->setColor( settings.value( "/Windows/ColorDialog/customColor14", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton15->setColor( settings.value( "/Windows/ColorDialog/customColor15", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton16->setColor( settings.value( "/Windows/ColorDialog/customColor16", QVariant( QColor() ) ).value<QColor>() ); //restore sample radius mSpinBoxRadius->setValue( settings.value( "/Windows/ColorDialog/sampleRadius", 1 ).toInt() ); mSamplePreview->setColor( QColor() ); if ( color.isValid() ) { setColor( color ); mColorPreview->setColor2( color ); } //restore active component radio button int activeRadio = settings.value( "/Windows/ColorDialog/activeComponent", 2 ).toInt(); switch ( activeRadio ) { case 0: mHueRadio->setChecked( true ); break; case 1: mSaturationRadio->setChecked( true ); break; case 2: mValueRadio->setChecked( true ); break; case 3: mRedRadio->setChecked( true ); break; case 4: mGreenRadio->setChecked( true ); break; case 5: mBlueRadio->setChecked( true ); break; } int currentTab = settings.value( "/Windows/ColorDialog/activeTab", 0 ).toInt(); mTabWidget->setCurrentIndex( currentTab ); //setup connections connect( mColorBox, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mColorWheel, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mColorText, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mVerticalRamp, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mRedSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mGreenSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mBlueSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mHueSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mValueSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSaturationSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mAlphaSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mColorPreview, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton1, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton2, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton3, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton4, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton5, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton6, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton7, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton8, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton9, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton10, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton11, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton12, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton13, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton14, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton15, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton16, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); }
QgsFieldCalculator::QgsFieldCalculator( QgsVectorLayer* vl ) : QDialog() , mVectorLayer( vl ) , mAttributeId( -1 ) { setupUi( this ); if ( !vl ) return; builder->setLayer( vl ); builder->loadFieldNames(); populateFields(); populateOutputFieldTypes(); connect( builder, SIGNAL( expressionParsed( bool ) ), this, SLOT( setOkButtonState() ) ); QgsDistanceArea myDa; myDa.setSourceCrs( vl->crs().srsid() ); myDa.setEllipsoidalMode( QgisApp::instance()->mapCanvas()->mapSettings().hasCrsTransformEnabled() ); myDa.setEllipsoid( QgsProject::instance()->readEntry( "Measure", "/Ellipsoid", GEO_NONE ) ); builder->setGeomCalculator( myDa ); //default values for field width and precision mOutputFieldWidthSpinBox->setValue( 10 ); mOutputFieldPrecisionSpinBox->setValue( 3 ); if ( vl->providerType() == "ogr" && vl->storageType() == "ESRI Shapefile" ) { mOutputFieldNameLineEdit->setMaxLength( 10 ); } mUpdateExistingGroupBox->setEnabled( vl->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeAttributeValues ); mNewFieldGroupBox->setEnabled( vl->dataProvider()->capabilities() & QgsVectorDataProvider::AddAttributes ); Q_ASSERT( mNewFieldGroupBox->isEnabled() || mUpdateExistingGroupBox->isEnabled() ); if ( mNewFieldGroupBox->isEnabled() ) { mNewFieldGroupBox->setChecked( true ); } else { mNewFieldGroupBox->setToolTip( tr( "Not available for layer" ) ); mUpdateExistingGroupBox->setChecked( true ); mUpdateExistingGroupBox->setCheckable( false ); } if ( mUpdateExistingGroupBox->isEnabled() ) { mUpdateExistingGroupBox->setChecked( !mNewFieldGroupBox->isEnabled() ); } else { mUpdateExistingGroupBox->setToolTip( tr( "Not available for layer" ) ); mNewFieldGroupBox->setChecked( true ); mNewFieldGroupBox->setCheckable( false ); } bool hasselection = vl->selectedFeaturesIds().size() > 0; mOnlyUpdateSelectedCheckBox->setChecked( hasselection ); mOnlyUpdateSelectedCheckBox->setEnabled( hasselection ); mOnlyUpdateSelectedCheckBox->setText( tr( "Only update %1 selected features" ).arg( vl->selectedFeaturesIds().size() ) ); builder->loadRecent( "fieldcalc" ); QSettings settings; restoreGeometry( settings.value( "/Windows/QgsFieldCalculator/geometry" ).toByteArray() ); }
BitcoinGUI::BitcoinGUI(const PlatformStyle *_platformStyle, const NetworkStyle *networkStyle, QWidget *parent) : QMainWindow(parent), enableWallet(false), clientModel(0), walletFrame(0), unitDisplayControl(0), labelWalletEncryptionIcon(0), labelWalletHDStatusIcon(0), connectionsControl(0), labelBlocksIcon(0), progressBarLabel(0), progressBar(0), progressDialog(0), appMenuBar(0), appToolBar(0), overviewAction(0), historyAction(0), quitAction(0), sendCoinsAction(0), sendCoinsMenuAction(0), usedSendingAddressesAction(0), usedReceivingAddressesAction(0), signMessageAction(0), verifyMessageAction(0), aboutAction(0), receiveCoinsAction(0), receiveCoinsMenuAction(0), optionsAction(0), toggleHideAction(0), encryptWalletAction(0), backupWalletAction(0), changePassphraseAction(0), aboutQtAction(0), openRPCConsoleAction(0), openAction(0), showHelpMessageAction(0), trayIcon(0), trayIconMenu(0), notificator(0), rpcConsole(0), helpMessageDialog(0), modalOverlay(0), prevBlocks(0), spinnerFrame(0), platformStyle(_platformStyle) { QSettings settings; if (!restoreGeometry(settings.value("MainWindowGeometry").toByteArray())) { // Restore failed (perhaps missing setting), center the window move(QApplication::desktop()->availableGeometry().center() - frameGeometry().center()); } QString windowTitle = tr(PACKAGE_NAME) + " - "; #ifdef ENABLE_WALLET enableWallet = WalletModel::isWalletEnabled(); #endif // ENABLE_WALLET if(enableWallet) { windowTitle += tr("Wallet"); } else { windowTitle += tr("Node"); } windowTitle += " " + networkStyle->getTitleAddText(); #ifndef Q_OS_MAC QApplication::setWindowIcon(networkStyle->getTrayAndWindowIcon()); setWindowIcon(networkStyle->getTrayAndWindowIcon()); #else MacDockIconHandler::instance()->setIcon(networkStyle->getAppIcon()); #endif setWindowTitle(windowTitle); #if defined(Q_OS_MAC) && QT_VERSION < 0x050000 // This property is not implemented in Qt 5. Setting it has no effect. // A replacement API (QtMacUnifiedToolBar) is available in QtMacExtras. setUnifiedTitleAndToolBarOnMac(true); #endif rpcConsole = new RPCConsole(_platformStyle, 0); helpMessageDialog = new HelpMessageDialog(this, false); #ifdef ENABLE_WALLET if(enableWallet) { /** Create wallet frame and make it the central widget */ walletFrame = new WalletFrame(_platformStyle, this); setCentralWidget(walletFrame); } else #endif // ENABLE_WALLET { /* When compiled without wallet or -disablewallet is provided, * the central widget is the rpc console. */ setCentralWidget(rpcConsole); } // Accept D&D of URIs setAcceptDrops(true); // Create actions for the toolbar, menu bar and tray/dock icon // Needs walletFrame to be initialized createActions(); // Create application menu bar createMenuBar(); // Create the toolbars createToolBars(); // Create system tray icon and notification createTrayIcon(networkStyle); // Create status bar statusBar(); // Disable size grip because it looks ugly and nobody needs it statusBar()->setSizeGripEnabled(false); // Status bar notification icons QFrame *frameBlocks = new QFrame(); frameBlocks->setContentsMargins(0,0,0,0); frameBlocks->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); QHBoxLayout *frameBlocksLayout = new QHBoxLayout(frameBlocks); frameBlocksLayout->setContentsMargins(3,0,3,0); frameBlocksLayout->setSpacing(3); unitDisplayControl = new UnitDisplayStatusBarControl(platformStyle); labelWalletEncryptionIcon = new QLabel(); labelWalletHDStatusIcon = new QLabel(); connectionsControl = new GUIUtil::ClickableLabel(); labelBlocksIcon = new GUIUtil::ClickableLabel(); if(enableWallet) { frameBlocksLayout->addStretch(); frameBlocksLayout->addWidget(unitDisplayControl); frameBlocksLayout->addStretch(); frameBlocksLayout->addWidget(labelWalletEncryptionIcon); frameBlocksLayout->addWidget(labelWalletHDStatusIcon); } frameBlocksLayout->addStretch(); frameBlocksLayout->addWidget(connectionsControl); frameBlocksLayout->addStretch(); frameBlocksLayout->addWidget(labelBlocksIcon); frameBlocksLayout->addStretch(); // Progress bar and label for blocks download progressBarLabel = new QLabel(); progressBarLabel->setVisible(false); progressBar = new GUIUtil::ProgressBar(); progressBar->setAlignment(Qt::AlignCenter); progressBar->setVisible(false); // Override style sheet for progress bar for styles that have a segmented progress bar, // as they make the text unreadable (workaround for issue #1071) // See https://qt-project.org/doc/qt-4.8/gallery.html QString curStyle = QApplication::style()->metaObject()->className(); if(curStyle == "QWindowsStyle" || curStyle == "QWindowsXPStyle") { progressBar->setStyleSheet("QProgressBar { background-color: #e8e8e8; border: 1px solid grey; border-radius: 7px; padding: 1px; text-align: center; } QProgressBar::chunk { background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #FF8000, stop: 1 orange); border-radius: 7px; margin: 0px; }"); } statusBar()->addWidget(progressBarLabel); statusBar()->addWidget(progressBar); statusBar()->addPermanentWidget(frameBlocks); // Install event filter to be able to catch status tip events (QEvent::StatusTip) this->installEventFilter(this); // Initially wallet actions should be disabled setWalletActionsEnabled(false); // Subscribe to notifications from core subscribeToCoreSignals(); connect(connectionsControl, SIGNAL(clicked(QPoint)), this, SLOT(toggleNetworkActive())); modalOverlay = new ModalOverlay(this->centralWidget()); #ifdef ENABLE_WALLET if(enableWallet) { connect(walletFrame, SIGNAL(requestedSyncWarningInfo()), this, SLOT(showModalOverlay())); connect(labelBlocksIcon, SIGNAL(clicked(QPoint)), this, SLOT(showModalOverlay())); connect(progressBar, SIGNAL(clicked(QPoint)), this, SLOT(showModalOverlay())); } #endif }
AddFixture::AddFixture(QWidget* parent, const Doc* doc, const Fixture* fxi) : QDialog(parent) , m_doc(doc) { m_addressValue = 0; m_universeValue = 0; m_amountValue = 1; m_gapValue = 0; m_channelsValue = 1; m_fixtureDef = NULL; m_mode = NULL; m_fxiCount = 0; m_fixtureID = Fixture::invalidId(); m_invalidAddressFlag = false; setupUi(this); m_addrErrorLabel->hide(); QAction* action = new QAction(this); action->setShortcut(QKeySequence(QKeySequence::Close)); connect(action, SIGNAL(triggered(bool)), this, SLOT(reject())); addAction(action); connect(m_tree, SIGNAL(itemSelectionChanged()), this, SLOT(slotSelectionChanged())); connect(m_tree, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(slotTreeDoubleClicked(QTreeWidgetItem*))); connect(m_modeCombo, SIGNAL(activated(const QString&)), this, SLOT(slotModeActivated(const QString&))); connect(m_universeCombo, SIGNAL(activated(int)), this, SLOT(slotUniverseActivated(int))); connect(m_addressSpin, SIGNAL(valueChanged(int)), this, SLOT(slotAddressChanged(int))); connect(m_channelsSpin, SIGNAL(valueChanged(int)), this, SLOT(slotChannelsChanged(int))); connect(m_nameEdit, SIGNAL(textEdited(const QString&)), this, SLOT(slotNameEdited(const QString&))); connect(m_gapSpin, SIGNAL(valueChanged(int)), this, SLOT(slotGapSpinChanged(int))); connect(m_amountSpin, SIGNAL(valueChanged(int)), this, SLOT(slotAmountSpinChanged(int))); connect(m_searchEdit, SIGNAL(textChanged(QString)), this, SLOT(slotSearchFilterChanged(QString))); connect(m_diptoolButton, SIGNAL(clicked()), this, SLOT(slotDiptoolButtonClicked())); /* Fill fixture definition tree (and select a fixture def) */ if (fxi != NULL) { fillTree(fxi->fixtureDef()->manufacturer(), fxi->fixtureDef()->model()); m_fixtureID = fxi->id(); } else fillTree(KXMLFixtureGeneric, KXMLFixtureGeneric); m_fixturesCount->setText(tr("Fixtures found: %1").arg(m_fxiCount)); /* Fill universe combo with available universes */ m_universeCombo->addItems(m_doc->inputOutputMap()->universeNames()); /* Simulate first selection and find the next free address */ slotSelectionChanged(); if (fxi != NULL) { // Universe m_universeCombo->setCurrentIndex(fxi->universe()); slotUniverseActivated(fxi->universe()); m_addressSpin->setValue(fxi->address() + 1); m_addressValue = fxi->address(); m_multipleGroup->setEnabled(false); // Name m_nameEdit->setText(fxi->name()); slotNameEdited(fxi->name()); m_nameEdit->setModified(true); // Prevent auto-naming // Mode int index = m_modeCombo->findText(fxi->fixtureMode()->name()); if (index != -1) { m_channelsSpin->setValue(fxi->channels()); m_modeCombo->setCurrentIndex(index); slotModeActivated(m_modeCombo->itemText(index)); } } else { slotUniverseActivated(0); findAddress(); m_channelsSpin->setValue(1); } QSettings settings; QVariant var = settings.value(SETTINGS_GEOMETRY); if (var.isValid() == true) restoreGeometry(var.toByteArray()); AppUtil::ensureWidgetIsVisible(this); }
QgsNewVectorLayerDialog::QgsNewVectorLayerDialog( QWidget *parent, const Qt::WindowFlags& fl ) : QDialog( parent, fl ) { setupUi( this ); QSettings settings; restoreGeometry( settings.value( "/Windows/NewVectorLayer/geometry" ).toByteArray() ); mAddAttributeButton->setIcon( QgsApplication::getThemeIcon( "/mActionNewAttribute.svg" ) ); mRemoveAttributeButton->setIcon( QgsApplication::getThemeIcon( "/mActionDeleteAttribute.svg" ) ); mTypeBox->addItem( tr( "Text data" ), "String" ); mTypeBox->addItem( tr( "Whole number" ), "Integer" ); mTypeBox->addItem( tr( "Decimal number" ), "Real" ); mTypeBox->addItem( tr( "Date" ), "Date" ); mWidth->setValidator( new QIntValidator( 1, 255, this ) ); mPrecision->setValidator( new QIntValidator( 0, 15, this ) ); mPointRadioButton->setChecked( true ); mFileFormatComboBox->addItem( tr( "ESRI Shapefile" ), "ESRI Shapefile" ); #if 0 // Disabled until provider properly supports editing the created file formats // When enabling this, adapt the window-title of the dialog and the title of all actions showing this dialog. mFileFormatComboBox->addItem( tr( "Comma Separated Value" ), "Comma Separated Value" ); mFileFormatComboBox->addItem( tr( "GML" ), "GML" ); mFileFormatComboBox->addItem( tr( "Mapinfo File" ), "Mapinfo File" ); #endif if ( mFileFormatComboBox->count() == 1 ) { mFileFormatComboBox->setVisible( false ); mFileFormatLabel->setVisible( false ); } mFileFormatComboBox->setCurrentIndex( 0 ); mFileEncoding->addItems( QgsVectorDataProvider::availableEncodings() ); // Use default encoding if none supplied QString enc = QSettings().value( "/UI/encoding", "System" ).toString(); // The specified decoding is added if not existing alread, and then set current. // This should select it. int encindex = mFileEncoding->findText( enc ); if ( encindex < 0 ) { mFileEncoding->insertItem( 0, enc ); encindex = 0; } mFileEncoding->setCurrentIndex( encindex ); mOkButton = buttonBox->button( QDialogButtonBox::Ok ); mAttributeView->addTopLevelItem( new QTreeWidgetItem( QStringList() << "id" << "Integer" << "10" << "" ) ); QgsCoordinateReferenceSystem defaultCrs = QgsCRSCache::instance()->crsByOgcWmsCrs( settings.value( "/Projections/layerDefaultCrs", GEO_EPSG_CRS_AUTHID ).toString() ); defaultCrs.validate(); mCrsSelector->setCrs( defaultCrs ); connect( mNameEdit, SIGNAL( textChanged( QString ) ), this, SLOT( nameChanged( QString ) ) ); connect( mAttributeView, SIGNAL( itemSelectionChanged() ), this, SLOT( selectionChanged() ) ); mAddAttributeButton->setEnabled( false ); mRemoveAttributeButton->setEnabled( false ); }
FocusX::FocusX(QWidget *parent) : QWidget(parent) { lb_now = new QLabel("FocusX:"); lb_start = new QLabel("start at:"); lb_focus_time = new QLabel("working time "); current_id = -1; le_now = new QLineEdit("nothing to do"); le_add_task = new QLineEdit(); le_start_time = new QLineEdit(); le_working_time = new QLineEdit(); le_now->setReadOnly(true); pb_done = new QPushButton("done"); pb_pause = new QPushButton("pause"); pb_add_task = new QPushButton("add"); dte_start = new QDateTimeEdit(QDateTime::currentDateTime()); te_working_time = new QTimeEdit(); le_working_time->setMinimumSize(100, 20); //le_working_time->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed); le_now->setMinimumSize(100, 20); //le_now->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed); //le_now->setSizePolicy (QSizePolicy::Ignored, QSizePolicy::Ignored); cb_pin = new QCheckBox("pin", this); cb_simple = new QCheckBox("simplify", this); connect(cb_pin, SIGNAL(clicked(bool)), this, SLOT(set_flag_pin())); connect(cb_simple, SIGNAL(clicked(bool)), this, SLOT(set_window_simple())); timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(timer_add_one_second())); tw_todolist = new QTreeWidget; tw_todolist->setColumnCount(2); QStringList tw_headers; tw_headers << "task" << "working time" << "status"; tw_todolist->setHeaderLabels(tw_headers); QTreeWidgetItem* tw_root = new QTreeWidgetItem(tw_todolist, QStringList(QString("root"))); new QTreeWidgetItem(tw_root, QStringList(QString("test1"))); new QTreeWidgetItem(tw_root, QStringList(QString("test2"))); QStringList temp; temp << "task" << "deadline"; new QTreeWidgetItem(tw_root, temp); QList<QTreeWidgetItem*> rootlist; rootlist << tw_root; tw_todolist->insertTopLevelItems(0, rootlist); tw_todolist->setMinimumHeight(200); //init_db(QString("focusx.db")); init_db(QString("focusx.db")); connect(pb_add_task, SIGNAL(clicked(bool)), this, SLOT(insert_task())); connect(pb_pause, SIGNAL(clicked(bool)), this, SLOT(pause_task())); connect(pb_done, SIGNAL(clicked(bool)), this, SLOT(finish_task())); mainlayout = new QGridLayout; set_ori_layout(); //mainlayout = new QGridLayout; setLayout(mainlayout); /*(mainlayout->addWidget(lb_add_task, 4, 0); mainlayout->addWidget(le_add_task, 4, 1); */ setWindowTitle("FocusX"); //resize(300, 300); update_from_db(); tw_todolist->setContextMenuPolicy(Qt::CustomContextMenu); connect(tw_todolist, &QTreeWidget::customContextMenuRequested, this, &FocusX::right_click_menu); //|Qt::WindowTitleHint|Qt::Window);//| Qt::FramelessWindowHint); QSettings settings("kinderlas", "focusx"); restoreGeometry(settings.value( "geometry", saveGeometry() ).toByteArray()); wflag = this->windowFlags(); oflag = this->windowFlags(); cb_pin->setChecked(true); //cb_simple->setChecked(true); wflag |= Qt::ToolTip; wflag |= Qt::WindowStaysOnTopHint; this->setWindowFlags(wflag); //this->setWindowFlags(wflag | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint); //| Qt::ToolTip);// | Qt::WindowTitleHint ); this->adjustSize(); qDebug() << this->width() << ", " << this->height(); }
QgsFieldCalculator::QgsFieldCalculator( QgsVectorLayer* vl, QWidget* parent ) : QDialog( parent ) , mVectorLayer( vl ) , mAttributeId( -1 ) { setupUi( this ); if ( !vl ) return; QgsExpressionContext expContext( QgsExpressionContextUtils::globalProjectLayerScopes( mVectorLayer ) ); expContext.lastScope()->addVariable( QgsExpressionContextScope::StaticVariable( QStringLiteral( "row_number" ), 1, true ) ); expContext.setHighlightedVariables( QStringList() << QStringLiteral( "row_number" ) ); builder->setLayer( vl ); builder->loadFieldNames(); builder->setExpressionContext( expContext ); populateFields(); populateOutputFieldTypes(); connect( builder, SIGNAL( expressionParsed( bool ) ), this, SLOT( setOkButtonState() ) ); connect( mOutputFieldWidthSpinBox, SIGNAL( editingFinished() ), this, SLOT( setPrecisionMinMax() ) ); QgsDistanceArea myDa; myDa.setSourceCrs( vl->crs().srsid() ); myDa.setEllipsoidalMode( true ); myDa.setEllipsoid( QgsProject::instance()->ellipsoid() ); builder->setGeomCalculator( myDa ); //default values for field width and precision mOutputFieldWidthSpinBox->setValue( 10 ); mOutputFieldPrecisionSpinBox->setValue( 3 ); setPrecisionMinMax(); if ( vl->providerType() == QLatin1String( "ogr" ) && vl->storageType() == QLatin1String( "ESRI Shapefile" ) ) { mOutputFieldNameLineEdit->setMaxLength( 10 ); } if ( !( vl->dataProvider()->capabilities() & QgsVectorDataProvider::AddAttributes ) ) { mCreateVirtualFieldCheckbox->setChecked( true ); mCreateVirtualFieldCheckbox->setEnabled( false ); mOnlyVirtualFieldsInfoLabel->setVisible( true ); mInfoIcon->setVisible( true ); } else { mOnlyVirtualFieldsInfoLabel->setVisible( false ); mInfoIcon->setVisible( false ); } if ( !( vl->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeAttributeValues ) ) { mUpdateExistingGroupBox->setEnabled( false ); mCreateVirtualFieldCheckbox->setChecked( true ); mCreateVirtualFieldCheckbox->setEnabled( false ); } Q_ASSERT( mNewFieldGroupBox->isEnabled() || mUpdateExistingGroupBox->isEnabled() ); if ( mNewFieldGroupBox->isEnabled() ) { mNewFieldGroupBox->setChecked( true ); } else { mNewFieldGroupBox->setToolTip( tr( "Not available for layer" ) ); mUpdateExistingGroupBox->setChecked( true ); mUpdateExistingGroupBox->setCheckable( false ); } if ( mUpdateExistingGroupBox->isEnabled() ) { mUpdateExistingGroupBox->setChecked( !mNewFieldGroupBox->isEnabled() ); } else { mUpdateExistingGroupBox->setToolTip( tr( "Not available for layer" ) ); mNewFieldGroupBox->setChecked( true ); mNewFieldGroupBox->setCheckable( false ); } if (( mNewFieldGroupBox->isChecked() && mCreateVirtualFieldCheckbox->isChecked() ) || mVectorLayer->isEditable() ) { mEditModeAutoTurnOnLabel->setVisible( false ); mInfoIcon->setVisible( false ); } else { mInfoIcon->setVisible( true ); } bool hasselection = vl->selectedFeatureCount() > 0; mOnlyUpdateSelectedCheckBox->setChecked( hasselection ); mOnlyUpdateSelectedCheckBox->setEnabled( hasselection ); mOnlyUpdateSelectedCheckBox->setText( tr( "Only update %1 selected features" ).arg( vl->selectedFeatureCount() ) ); builder->loadRecent( QStringLiteral( "fieldcalc" ) ); mInfoIcon->setPixmap( style()->standardPixmap( QStyle::SP_MessageBoxInformation ) ); setOkButtonState(); QSettings settings; restoreGeometry( settings.value( QStringLiteral( "/Windows/QgsFieldCalculator/geometry" ) ).toByteArray() ); }
XSettingsWindow::XSettingsWindow(const qutim_sdk_0_3::SettingsItemList& settings, QObject* controller, QWidget *parent) : QMainWindow(parent), p(new XSettingsWindowPrivate) { setAttribute(Qt::WA_DeleteOnClose); p->controller = controller; setWindowModality(controller ? Qt::WindowModal : Qt::NonModal); //setup ui QWidget *w = new QWidget(this); QVBoxLayout *l = new QVBoxLayout(w); Config cfg; cfg.beginGroup("xsettings/window"); QByteArray data; p->parent = qobject_cast<XSettingsWindow*>(qApp->activeWindow()); if(p->parent) { QRect geom = p->parent->geometry(); int width = geom.width()/15; int height = geom.height()/15; geom.adjust(width,height,-width,-height); setGeometry(geom); } else { data = cfg.value("geometry", QByteArray()); if (data.isEmpty() || !restoreGeometry(data)) { QSize desktopSize = QApplication::desktop()->availableGeometry(QCursor::pos()).size(); resize(desktopSize.width() / 2, desktopSize.height() * 2 / 3); centerizeWidget(this); } } //init widgets p->splitter = new QSplitter(Qt::Horizontal,w); p->listWidget = new QListWidget(w); p->stackedWidget = new QStackedWidget(w); //default widget QWidget *empty = new QWidget(this); p->stackedWidget->addWidget(empty); p->splitter->addWidget(p->listWidget); p->splitter->addWidget(p->stackedWidget); data = cfg.value("splitterState", QByteArray()); if (data.isEmpty() || !p->splitter->restoreState(data)) p->splitter->setSizes(QList<int>() << 80 << 250); l->addWidget(p->splitter); QDialogButtonBox::StandardButtons buttons; if (controller) buttons = QDialogButtonBox::Ok; else buttons = QDialogButtonBox::Save | QDialogButtonBox::Cancel; p->buttonBox = new QDialogButtonBox(buttons, Qt::Horizontal, w); l->addWidget(p->buttonBox); p->buttonBox->setVisible(controller); //init actiontoolbar setCentralWidget(w); setUnifiedTitleAndToolBarOnMac(true); p->toolBar = new ActionToolBar(w); addToolBar(Qt::TopToolBarArea,p->toolBar); int width = style()->pixelMetric(QStyle::PM_IconViewIconSize); QSize size = QSize(width, width); p->toolBar->setIconSize(size); p->toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); p->toolBar->setObjectName(QLatin1String("SettingsBar")); p->toolBar->setMovable(false); #if defined (Q_WS_WIN32) || defined(Q_WS_MAC) width = 22; #else width = style()->pixelMetric(QStyle::PM_ToolBarIconSize); #endif size = QSize(width, width); p->listWidget->setIconSize(size); p->group = new QActionGroup(w); p->group->setExclusive(true); //connections connect(p->group,SIGNAL(triggered(QAction*)), SLOT(onGroupActionTriggered(QAction*))); connect(p->listWidget, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), SLOT(onCurrentItemChanged(QListWidgetItem*)) ); connect(p->buttonBox,SIGNAL(accepted()), SLOT(save())); connect(p->buttonBox,SIGNAL(rejected()), SLOT(cancel())); loadSettings(settings); if (p->group->actions().count()) p->group->actions().first()->trigger(); }
QgsAttributeTableDialog::QgsAttributeTableDialog( QgsVectorLayer *theLayer, QWidget *parent, Qt::WindowFlags flags ) : QDialog( parent, flags ) , mDock( 0 ) , mLayer( theLayer ) { setupUi( this ); // Fix selection color on loosing focus (Windows) setStyleSheet( QgisApp::instance()->styleSheet() ); setAttribute( Qt::WA_DeleteOnClose ); QSettings settings; // Initialize the window geometry restoreGeometry( settings.value( "/Windows/BetterAttributeTable/geometry" ).toByteArray() ); QgsAttributeEditorContext context; myDa = new QgsDistanceArea(); myDa->setSourceCrs( mLayer->crs() ); myDa->setEllipsoidalMode( QgisApp::instance()->mapCanvas()->mapSettings().hasCrsTransformEnabled() ); myDa->setEllipsoid( QgsProject::instance()->readEntry( "Measure", "/Ellipsoid", GEO_NONE ) ); context.setDistanceArea( *myDa ); context.setVectorLayerTools( QgisApp::instance()->vectorLayerTools() ); // Initialize dual view mMainView->init( mLayer, QgisApp::instance()->mapCanvas(), QgsFeatureRequest(), context ); // Initialize filter gui elements mFilterActionMapper = new QSignalMapper( this ); mFilterColumnsMenu = new QMenu( this ); mActionFilterColumnsMenu->setMenu( mFilterColumnsMenu ); mApplyFilterButton->setDefaultAction( mActionApplyFilter ); // Set filter icon in a couple of places QIcon filterIcon = QgsApplication::getThemeIcon( "/mActionFilter.svg" ); mActionShowAllFilter->setIcon( filterIcon ); mActionAdvancedFilter->setIcon( filterIcon ); mActionSelectedFilter->setIcon( filterIcon ); mActionVisibleFilter->setIcon( filterIcon ); mActionEditedFilter->setIcon( filterIcon ); // Connect filter signals connect( mActionAdvancedFilter, SIGNAL( triggered() ), SLOT( filterExpressionBuilder() ) ); connect( mActionShowAllFilter, SIGNAL( triggered() ), SLOT( filterShowAll() ) ); connect( mActionSelectedFilter, SIGNAL( triggered() ), SLOT( filterSelected() ) ); connect( mActionVisibleFilter, SIGNAL( triggered() ), SLOT( filterVisible() ) ); connect( mActionEditedFilter, SIGNAL( triggered() ), SLOT( filterEdited() ) ); connect( mFilterActionMapper, SIGNAL( mapped( QObject* ) ), SLOT( filterColumnChanged( QObject* ) ) ); connect( mFilterQuery, SIGNAL( returnPressed() ), SLOT( filterQueryAccepted() ) ); connect( mActionApplyFilter, SIGNAL( triggered() ), SLOT( filterQueryAccepted() ) ); // info from layer to table connect( mLayer, SIGNAL( editingStarted() ), this, SLOT( editingToggled() ) ); connect( mLayer, SIGNAL( editingStopped() ), this, SLOT( editingToggled() ) ); connect( mLayer, SIGNAL( layerDeleted() ), this, SLOT( close() ) ); connect( mLayer, SIGNAL( selectionChanged() ), this, SLOT( updateTitle() ) ); connect( mLayer, SIGNAL( attributeAdded( int ) ), this, SLOT( columnBoxInit() ) ); connect( mLayer, SIGNAL( attributeDeleted( int ) ), this, SLOT( columnBoxInit() ) ); // connect table info to window connect( mMainView, SIGNAL( filterChanged() ), this, SLOT( updateTitle() ) ); // info from table to application connect( this, SIGNAL( saveEdits( QgsMapLayer * ) ), QgisApp::instance(), SLOT( saveEdits( QgsMapLayer * ) ) ); bool myDockFlag = settings.value( "/qgis/dockAttributeTable", false ).toBool(); if ( myDockFlag ) { mDock = new QgsAttributeTableDock( tr( "Attribute table - %1 (%n Feature(s))", "feature count", mMainView->featureCount() ).arg( mLayer->name() ), QgisApp::instance() ); mDock->setAllowedAreas( Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea ); mDock->setWidget( this ); connect( this, SIGNAL( destroyed() ), mDock, SLOT( close() ) ); QgisApp::instance()->addDockWidget( Qt::BottomDockWidgetArea, mDock ); } columnBoxInit(); updateTitle(); mRemoveSelectionButton->setIcon( QgsApplication::getThemeIcon( "/mActionUnselectAttributes.png" ) ); mSelectedToTopButton->setIcon( QgsApplication::getThemeIcon( "/mActionSelectedToTop.png" ) ); mCopySelectedRowsButton->setIcon( QgsApplication::getThemeIcon( "/mActionCopySelected.png" ) ); mZoomMapToSelectedRowsButton->setIcon( QgsApplication::getThemeIcon( "/mActionZoomToSelected.svg" ) ); mPanMapToSelectedRowsButton->setIcon( QgsApplication::getThemeIcon( "/mActionPanToSelected.svg" ) ); mInvertSelectionButton->setIcon( QgsApplication::getThemeIcon( "/mActionInvertSelection.png" ) ); mToggleEditingButton->setIcon( QgsApplication::getThemeIcon( "/mActionToggleEditing.svg" ) ); mSaveEditsButton->setIcon( QgsApplication::getThemeIcon( "/mActionSaveEdits.svg" ) ); mDeleteSelectedButton->setIcon( QgsApplication::getThemeIcon( "/mActionDeleteSelected.svg" ) ); mOpenFieldCalculator->setIcon( QgsApplication::getThemeIcon( "/mActionCalculateField.png" ) ); mAddAttribute->setIcon( QgsApplication::getThemeIcon( "/mActionNewAttribute.png" ) ); mRemoveAttribute->setIcon( QgsApplication::getThemeIcon( "/mActionDeleteAttribute.png" ) ); mTableViewButton->setIcon( QgsApplication::getThemeIcon( "/mActionOpenTable.png" ) ); mAttributeViewButton->setIcon( QgsApplication::getThemeIcon( "/mActionPropertyItem.png" ) ); mExpressionSelectButton->setIcon( QgsApplication::getThemeIcon( "/mIconExpressionSelect.svg" ) ); mAddFeature->setIcon( QgsApplication::getThemeIcon( "/mActionNewTableRow.png" ) ); // toggle editing bool canChangeAttributes = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::ChangeAttributeValues; bool canDeleteFeatures = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::DeleteFeatures; bool canAddAttributes = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::AddAttributes; bool canDeleteAttributes = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::DeleteAttributes; bool canAddFeatures = mLayer->dataProvider()->capabilities() & QgsVectorDataProvider::AddFeatures; mToggleEditingButton->blockSignals( true ); mToggleEditingButton->setCheckable( true ); mToggleEditingButton->setChecked( mLayer->isEditable() ); mToggleEditingButton->setEnabled(( canChangeAttributes || canDeleteFeatures || canAddAttributes || canDeleteAttributes || canAddFeatures ) && !mLayer->isReadOnly() ); mToggleEditingButton->blockSignals( false ); mSaveEditsButton->setEnabled( mToggleEditingButton->isEnabled() && mLayer->isEditable() ); mAddAttribute->setEnabled(( canChangeAttributes || canAddAttributes ) && mLayer->isEditable() ); mDeleteSelectedButton->setEnabled( canDeleteFeatures && mLayer->isEditable() ); mAddFeature->setEnabled( canAddFeatures && mLayer->isEditable() && mLayer->geometryType() == QGis::NoGeometry ); mAddFeature->setHidden( !canAddFeatures || mLayer->geometryType() != QGis::NoGeometry ); mMainViewButtonGroup->setId( mTableViewButton, QgsDualView::AttributeTable ); mMainViewButtonGroup->setId( mAttributeViewButton, QgsDualView::AttributeEditor ); // Load default attribute table filter QgsAttributeTableFilterModel::FilterMode defaultFilterMode = ( QgsAttributeTableFilterModel::FilterMode ) settings.value( "/qgis/attributeTableBehaviour", QgsAttributeTableFilterModel::ShowAll ).toInt(); switch ( defaultFilterMode ) { case QgsAttributeTableFilterModel::ShowVisible: filterVisible(); break; case QgsAttributeTableFilterModel::ShowSelected: filterSelected(); break; case QgsAttributeTableFilterModel::ShowAll: default: filterShowAll(); break; } mFieldModel = new QgsFieldModel(); mFieldModel->setLayer( mLayer ); mFieldCombo->setModel( mFieldModel ); connect( mRunFieldCalc, SIGNAL( clicked() ), this, SLOT( updateFieldFromExpression() ) ); connect( mRunFieldCalcSelected, SIGNAL( clicked() ), this, SLOT( updateFieldFromExpressionSelected() ) ); // NW TODO Fix in 2.6 - Doesn't work with field model for some reason. // connect( mUpdateExpressionText, SIGNAL( returnPressed() ), this, SLOT( updateFieldFromExpression() ) ); connect( mUpdateExpressionText, SIGNAL( fieldChanged( QString, bool ) ), this, SLOT( updateButtonStatus( QString, bool ) ) ); mUpdateExpressionText->setLayer( mLayer ); mUpdateExpressionText->setLeftHandButtonStyle( true ); editingToggled(); }
void QgsGPSPluginGui::restoreState() { QSettings settings; restoreGeometry( settings.value( "/Plugin-GPS/geometry" ).toByteArray() ); tabWidget->setCurrentIndex( settings.value( "/Plugin-GPS/lastTab", 4 ).toInt() ); }
BaseStation::BaseStation() : QMainWindow() { // Create a logfile-prefix QString logFilePrefix = QString("log/kopterlog-%1-%2-basestation") .arg(QDateTime::currentDateTime().toString("yyyyMMdd-hhmmss")) .arg(QString::number(QCoreApplication::applicationPid())); qDebug() << __PRETTY_FUNCTION__ << "logfile prefix is" << logFilePrefix; mMessageHandler = new MessageHandler(logFilePrefix); mTimerJoystick = 0; mLogPlayer = 0; mAudioPlayer = 0; mDiffCorrFetcher = 0; mMenuFile = menuBar()->addMenu("File"); mMenuView = menuBar()->addMenu("View"); mMenuWindowList = menuBar()->addMenu("Windows"); mConnectionDialog = new ConnectionDialog(this); mConnectionDialog->exec(); mOperatingMode = mConnectionDialog->result() == QDialog::Accepted ? OperatingMode::OperatingOnline : OperatingMode::OperatingOffline; mControlWidget = new ControlWidget(this); addDockWidget(Qt::RightDockWidgetArea, mControlWidget); mMenuWindowList->addAction("Control Widget", this, SLOT(slotToggleControlWidget())); mSatelliteWidget = new SatelliteWidget(this); addDockWidget(Qt::RightDockWidgetArea, mSatelliteWidget); mMenuWindowList->addAction("Satellite Manager", this, SLOT(slotToggleSatelliteWidget())); mLogWidget = new LogWidget(this); addDockWidget(Qt::BottomDockWidgetArea, mLogWidget); mMenuWindowList->addAction("Log Viewer", this, SLOT(slotToggleLogWidget())); mGlScene = new GlScene; mGlWindow = new GlWindow(mGlScene); QWidget* glContainer = QWidget::createWindowContainer(mGlWindow, this); glContainer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); setCentralWidget(glContainer); // Create a large cloud. Less large for notebook. If the dense cloud doesn't include NEGATIVE_Y points, // then scanning points slightly below 0 will not make it into collider cloud and collision avoidance!!! const quint32 numberOfPoints = QHostInfo::localHostName() == "tams58" ? 1*1024*1024 : 1*1024*1024; mPointCloud = new PointCloudCuda(Box3D(QVector3D(-512, -2, -512), QVector3D(512, 30, 512)), numberOfPoints, "DenseCloud"); connect(mGlWindow, &GlWindow::message, mLogWidget, &LogWidget::log); // register dense pointcloud for rendering. mGlScene->slotPointCloudRegister(mPointCloud); mFlightPlanner = new FlightPlannerParticles(this, mGlWindow, mPointCloud); connect(mFlightPlanner, &FlightPlannerParticles::volumeLocal, mGlScene, &GlScene::slotSetVolumeLocal); connect(mFlightPlanner, &FlightPlannerParticles::volumeGlobal, mGlScene, &GlScene::slotSetVolumeGlobal); connect(mFlightPlanner, &FlightPlannerParticles::cameraRotation, mGlWindow, &GlWindow::slotSetCameraRotation); connect(mFlightPlanner, &FlightPlannerParticles::vboInfoParticles, mGlScene, &GlScene::slotSetVboInfoParticles); connect(mFlightPlanner, &FlightPlannerParticles::vboInfoGridOccupancy, mGlScene, &GlScene::slotSetVboInfoGridOccupancy); connect(mFlightPlanner, &FlightPlannerParticles::vboInfoGridPathPlanner, mGlScene, &GlScene::slotSetVboInfoGridPathPlanner); connect(mFlightPlanner, &FlightPlannerParticles::vboInfoGridInformationGain, mGlScene, &GlScene::slotSetVboInfoGridInformationGain); connect(mFlightPlanner, &FlightPlannerParticles::wayPointListAhead, mGlScene, &GlScene::slotSetWayPointListAhead); connect(mFlightPlanner, &FlightPlannerParticles::wayPointListPassed, mGlScene, &GlScene::slotSetWayPointListPassed); connect(mFlightPlanner, &FlightPlannerParticles::processingState, mGlScene, &GlScene::slotSetFlightPlannerProcessingState); connect(mFlightPlanner, &FlightPlannerParticles::renderInformationGain, [=](const bool value) {mGlScene->mRenderInformationGain = value; mGlWindow->slotRenderLater();}); connect(mFlightPlanner, &FlightPlannerParticles::renderOccupancyGrid, [=](const bool value) {mGlScene->mRenderOccupancyGrid = value; mGlWindow->slotRenderLater();}); connect(mFlightPlanner, &FlightPlannerParticles::renderParticles, [=](const bool value) {mGlScene->mRenderParticles = value; mGlWindow->slotRenderLater();}); connect(mFlightPlanner, &FlightPlannerParticles::renderPathPlannerGrid, [=](const bool value) {mGlScene->mRenderPathPlannerGrid = value; mGlWindow->slotRenderLater();}); connect(mFlightPlanner, &FlightPlannerParticles::particleOpacity, [=](const float value) {mGlScene->mParticleOpacity = value; mGlWindow->slotRenderLater();}); connect(mFlightPlanner, &FlightPlannerParticles::message, mLogWidget, &LogWidget::log); connect(mFlightPlanner, &FlightPlannerParticles::wayPoints, mControlWidget, &ControlWidget::slotSetWayPoints); connect(mFlightPlanner, &FlightPlannerParticles::suggestVisualization, mGlWindow, &GlWindow::slotRenderLater); connect(mGlWindow, &GlWindow::initializingInGlContext, mFlightPlanner, &FlightPlannerParticles::slotInitialize); // mPtuController = new PtuController("/dev/serial/by-id/usb-Hjelmslund_Electronics_USB485_ISO4W_HEVGI92A-if00-port0", this); // addDockWidget(Qt::BottomDockWidgetArea, mPtuController); // mPtuController->setVisible(false); // mMenuWindowList->addAction("PTU Controller", this, SLOT(slotTogglePtuControllerWidget())); // connect(mPtuController, &PtuController::message, mLogWidget, &LogWidget::log); // if(mPtuController->isOpened()) // mLogWidget->log(Information, "BaseStation::BaseStation()", "Enabling PtuController with real PTU."); // else // mLogWidget->log(Information, "BaseStation::BaseStation()", "Enabling PtuController with dummy PTU."); connect(mControlWidget, &ControlWidget::wayPoints, mFlightPlanner, &FlightPlannerParticles::slotSetWayPoints); connect(mControlWidget, &ControlWidget::volumeGlobal, mFlightPlanner, &FlightPlannerParticles::slotSetVolumeGlobal); connect(mControlWidget, &ControlWidget::volumeLocal, mFlightPlanner, &FlightPlannerParticles::slotSetVolumeLocal); connect(mControlWidget, &ControlWidget::showUserInterface, mFlightPlanner, &FlightPlannerParticles::slotShowUserInterface); connect(mControlWidget, &ControlWidget::wayPointSelected, mGlScene, &GlScene::slotSetActiveWayPoint); // this should be in GlWindow... // Connect ControlWidget and FlightPlanner mMenuFile->addAction("Load Cloud", this, SLOT(slotImportCloud())); mMenuFile->addAction("Save Cloud", this, SLOT(slotExportCloud())); mMenuFile->addAction("Save Log", mLogWidget, SLOT(save())); // Setup actions in menus // QAction* action; mActions.actionReloadShaders = new QAction("Reload Shaders", this); mMenuView->addAction(mActions.actionReloadShaders); connect(mActions.actionReloadShaders, &QAction::triggered, [=]() {mGlScene->reloadShaders(); mGlWindow->slotRenderLater();}); mActions.actionClearDenseCloud = new QAction("Clear Dense Cloud", this); mMenuView->addAction(mActions.actionClearDenseCloud); connect(mActions.actionClearDenseCloud, &QAction::triggered, [=]() {mPointCloud->slotReset(); mGlWindow->slotRenderLater();}); mMenuView->insertSeparator(mActions.actionClearDenseCloud); mActions.actionClearTrajectory = new QAction("Clear Trajectory", this); mMenuView->addAction(mActions.actionClearTrajectory); connect(mActions.actionClearTrajectory, &QAction::triggered, [=]() {mGlScene->slotClearVehicleTrajectory(); mGlWindow->slotRenderLater();}); mActions.actionClearPassedWayPoints = new QAction("Clear Passed Waypoints", this); mMenuView->addAction(mActions.actionClearPassedWayPoints); connect(mActions.actionClearPassedWayPoints, &QAction::triggered, [=]() {mFlightPlanner->slotClearWayPointsPassed(); mGlWindow->slotRenderLater();}); mActions.actionShowDenseCloud = new QAction("Show Dense Cloud", this); mMenuView->addAction(mActions.actionShowDenseCloud); mActions.actionShowDenseCloud->setCheckable(true); mActions.actionShowDenseCloud->setChecked(true); connect(mActions.actionShowDenseCloud, &QAction::triggered, [=](const bool &checked) { if(checked) mGlScene->slotPointCloudRegister(mPointCloud); else mGlScene->slotPointCloudUnregister(mPointCloud); mGlWindow->slotRenderLater(); }); mMenuView->insertSeparator(mActions.actionShowDenseCloud); mActions.actionShowSparseCloud = new QAction("Show Sparse Cloud", this); mMenuView->addAction(mActions.actionShowSparseCloud); mActions.actionShowSparseCloud->setCheckable(true); mActions.actionShowSparseCloud->setChecked(true); connect(mActions.actionShowSparseCloud, &QAction::triggered, [=](const bool &checked) { if(checked) mGlScene->slotPointCloudRegister(mFlightPlanner->getPointCloudColliders()); else mGlScene->slotPointCloudUnregister(mFlightPlanner->getPointCloudColliders()); mGlWindow->slotRenderLater(); }); mActions.actionShowWayPointsAhead = new QAction("Show WayPoints Ahead", this); mMenuView->addAction(mActions.actionShowWayPointsAhead); mActions.actionShowWayPointsAhead->setCheckable(true); mActions.actionShowWayPointsAhead->setChecked(true); connect(mActions.actionShowWayPointsAhead, &QAction::triggered, [=](const bool &checked) {mGlScene->mRenderWayPointsAhead = checked; mGlWindow->slotRenderLater();}); mActions.actionShowWayPointsPassed = new QAction("Show WayPoints Passed", this); mMenuView->addAction(mActions.actionShowWayPointsPassed); mActions.actionShowWayPointsPassed->setCheckable(true); mActions.actionShowWayPointsPassed->setChecked(true); connect(mActions.actionShowWayPointsPassed, &QAction::triggered, [=](const bool &checked) {mGlScene->mRenderWayPointsPassed = checked; mGlWindow->slotRenderLater();}); mActions.actionShowAxesBase = new QAction("Show Axes Base", this); mMenuView->addAction(mActions.actionShowAxesBase); mActions.actionShowAxesBase->setCheckable(true); mActions.actionShowAxesBase->setChecked(true); connect(mActions.actionShowAxesBase, &QAction::triggered, [=](const bool &checked) {mGlScene->mRenderAxisBase = checked; mGlWindow->slotRenderLater();}); mActions.actionShowAxesVehicle = new QAction("Show Axes Vehicle", this); mMenuView->addAction(mActions.actionShowAxesVehicle); mActions.actionShowAxesVehicle->setCheckable(true); mActions.actionShowAxesVehicle->setChecked(true); connect(mActions.actionShowAxesVehicle, &QAction::triggered, [=](const bool &checked) {mGlScene->mRenderAxisVehicle = checked; mGlWindow->slotRenderLater();}); mActions.actionShowVehicle = new QAction("Show Vehicle", this); mMenuView->addAction(mActions.actionShowVehicle); mActions.actionShowVehicle->setCheckable(true); mActions.actionShowVehicle->setChecked(true); connect(mActions.actionShowVehicle, &QAction::triggered, [=](const bool &checked) {mGlScene->mRenderVehicle = checked; mGlWindow->slotRenderLater();}); mActions.actionShowBoundingBoxGlobal = new QAction("Show Global BBox", this); mMenuView->addAction(mActions.actionShowBoundingBoxGlobal); mActions.actionShowBoundingBoxGlobal->setCheckable(true); mActions.actionShowBoundingBoxGlobal->setChecked(false); connect(mActions.actionShowBoundingBoxGlobal, &QAction::triggered, [=](const bool &checked) {mGlScene->mRenderBoundingBoxGlobal = checked; mGlWindow->slotRenderLater();}); mActions.actionShowBoundingBoxLocal = new QAction("Show Local BBox", this); mMenuView->addAction(mActions.actionShowBoundingBoxLocal); mActions.actionShowBoundingBoxLocal->setCheckable(true); mActions.actionShowBoundingBoxLocal->setChecked(true); connect(mActions.actionShowBoundingBoxLocal, &QAction::triggered, [=](const bool &checked) {mGlScene->mRenderBoundingBoxLocal = checked; mGlWindow->slotRenderLater();}); mActions.actionShowRawScan = new QAction("Show Raw Scan", this); mMenuView->addAction(mActions.actionShowRawScan); mActions.actionShowRawScan->setCheckable(true); mActions.actionShowRawScan->setChecked(true); connect(mActions.actionShowRawScan, &QAction::triggered, [=](const bool &checked) {mGlScene->mRenderRawScanRays = checked; mGlWindow->slotRenderLater();}); mActions.actionShowTrajectory = new QAction("Show Trajectory", this); mMenuView->addAction(mActions.actionShowTrajectory); mActions.actionShowTrajectory->setCheckable(true); mActions.actionShowTrajectory->setChecked(true); connect(mActions.actionShowTrajectory, &QAction::triggered, [=](const bool &checked) {mGlScene->mRenderTrajectory = checked; mGlWindow->slotRenderLater();}); mActions.actionShowSatelliteSignals = new QAction("Show Satellite Signals", this); mMenuView->addAction(mActions.actionShowSatelliteSignals); mActions.actionShowSatelliteSignals->setCheckable(true); mActions.actionShowSatelliteSignals->setChecked(false); connect(mActions.actionShowSatelliteSignals, &QAction::triggered, [=](const bool &checked) {mGlScene->mRenderSatelliteSignals = checked; mGlWindow->slotRenderLater();}); mActions.menuSliderRotateView = new MenuSlider("Rotate View", -1.0, 0.0, 1.0, this, 0.1f); connect(mActions.menuSliderRotateView, &MenuSlider::value, [=](const float &value) {mGlWindow->slotSetCameraRotation(-value);}); mMenuView->addAction(mActions.menuSliderRotateView); mMenuView->insertSeparator(mActions.menuSliderRotateView); mActions.menuSliderBackgroundBrightness = new MenuSlider("BG Brightness", 0, 0.2, 1.0, this); connect(mActions.menuSliderBackgroundBrightness, &MenuSlider::value, [=](const float &value) {mGlWindow->mBackgroundBrightness = value; mGlWindow->slotRenderLater();}); mMenuView->addAction(mActions.menuSliderBackgroundBrightness); mActions.menuSliderParticleVisSize = new MenuSlider("Particle VisSize", 0, 0.5, 2.0, this); connect(mActions.menuSliderParticleVisSize, &MenuSlider::value, [=](const float &value) {mGlScene->mParticleRadius = value; mGlWindow->slotRenderLater();}); mMenuView->addAction(mActions.menuSliderParticleVisSize); mActions.menuSliderParticleOpacity = new MenuSlider("Particle Opacity", 0, 1.0, 1.0, this); connect(mActions.menuSliderParticleOpacity, &MenuSlider::value, [=](const float &value) {mGlScene->mParticleOpacity = value; mGlWindow->slotRenderLater();}); mMenuView->addAction(mActions.menuSliderParticleOpacity); mActions.menuSliderDistanceThreshold = new MenuSlider("Distance Threshold", 0, 30, 30, this); connect(mActions.menuSliderDistanceThreshold, &MenuSlider::value, [=](const float &value) {mGlScene->mMaxPointVisualizationDistance = value; mGlWindow->slotRenderLater(); qDebug() << value;}); mMenuView->addAction(mActions.menuSliderDistanceThreshold); mActions.menuSliderPointSize = new MenuSlider("Point Size", 0.1f, 1.0f, 10.0f, this); connect(mActions.menuSliderPointSize, &MenuSlider::value, [=](const float &value) {mGlScene->mPointCloudPointSize = value; mGlWindow->slotRenderLater();}); mMenuView->addAction(mActions.menuSliderPointSize); mActions.menuSliderPointAlpha = new MenuSlider("Point Alpha", 0.01f, 0.3f, 1.0f, this); connect(mActions.menuSliderPointAlpha, &MenuSlider::value, [=](const float &value) {mGlScene->mPointCloudPointAlpha = value; mGlWindow->slotRenderLater();}); mMenuView->addAction(mActions.menuSliderPointAlpha); mActions.menuSliderColorLow = new MenuSlider("Color Low", -5.0f, -2.0f, 20.0f, this); connect(mActions.menuSliderColorLow, &MenuSlider::value, [=](const float &value) {mGlScene->mPointCloudColorLow = value; mGlWindow->slotRenderLater();qDebug() << value;}); mMenuView->addAction(mActions.menuSliderColorLow); mActions.menuSliderColorHigh = new MenuSlider("Color High", -5.0f, 10.0f, 20.0f, this); connect(mActions.menuSliderColorHigh, &MenuSlider::value, [=](const float &value) {mGlScene->mPointCloudColorHigh = value; mGlWindow->slotRenderLater();}); mMenuView->addAction(mActions.menuSliderColorHigh); mActionEnableAudio = new QAction("Speech", this); mActionEnableAudio->setCheckable(true); mActionEnableAudio->setChecked(true); menuBar()->addAction(mActionEnableAudio); mPidControllerWidget = new PidControllerWidget(this); addDockWidget(Qt::BottomDockWidgetArea, mPidControllerWidget); mMenuWindowList->addAction("PID Controllers", this, SLOT(slotTogglePidControllerWidget())); // Only start RTK fetcher, RoverConnection, PtuController etc. if we're working online if(mOperatingMode == OperatingMode::OperatingOnline) { mRoverConnection = new RoverConnection(mConnectionDialog->getRoverHostName(), mConnectionDialog->getRoverPort(), this); connect(mControlWidget, &ControlWidget::setScannerState, mRoverConnection, &RoverConnection::slotSendScannerState); mPidControllerWidget->setControllers(mRoverConnection->getFlightControllerValues()); // set this once. Table is rebuilt when signal from roverconnection comes in mJoystick = new Joystick; if(!mJoystick->isValid()) { QMessageBox::warning(this, "Joystick not found", "Joystick initialization failed, using manual control will be impossible."); } else { connect(mJoystick, &Joystick::motion, mRoverConnection, &RoverConnection::slotSendMotionToKopter); connect(mJoystick, &Joystick::buttonStateChanged, this, &BaseStation::slotManageJoystick); mTimerJoystick = new QTimer(this); connect(mTimerJoystick, &QTimer::timeout, mJoystick, &Joystick::slotEmitMotionCommands); } connect(mPidControllerWidget, &PidControllerWidget::controllerWeight, mRoverConnection, &RoverConnection::slotSendControllerWeights); connect(mRoverConnection, &RoverConnection::flightState, mControlWidget, &ControlWidget::slotSetFlightState); connect(mRoverConnection, &RoverConnection::flightStateRestriction, mControlWidget, &ControlWidget::slotSetFlightStateRestriction); connect(mRoverConnection, &RoverConnection::message, mLogWidget, &LogWidget::log); connect(mRoverConnection, &RoverConnection::vehiclePose, mControlWidget, &ControlWidget::slotUpdatePose); connect(mRoverConnection, &RoverConnection::vehiclePose, mFlightPlanner, &FlightPlannerParticles::slotVehiclePoseChanged); // connect(mRoverConnection, &RoverConnection::vehiclePose, mPtuController, &PtuController::slotVehiclePoseChanged); connect(mRoverConnection, &RoverConnection::vehiclePose, mGlScene, &GlScene::slotNewVehiclePose); connect(mRoverConnection, &RoverConnection::connectionStatusRover, mControlWidget, &ControlWidget::slotUpdateConnectionRover); connect(mRoverConnection, &RoverConnection::scanData, mFlightPlanner, &FlightPlannerParticles::slotNewScanFused); connect(mRoverConnection, &RoverConnection::vehicleStatus, mControlWidget, &ControlWidget::slotUpdateVehicleStatus); connect(mRoverConnection, &RoverConnection::gnssStatus, mControlWidget, &ControlWidget::slotUpdateInsStatus); connect(mRoverConnection, &RoverConnection::gnssStatus, mGlScene, &GlScene::slotSetInsStatus); connect(mRoverConnection, &RoverConnection::flightControllerValues, this, &BaseStation::slotSetFlightControllerValues); connect(mRoverConnection, &RoverConnection::wayPointReachedByRover, mFlightPlanner, &FlightPlannerParticles::slotWayPointReached); connect(mRoverConnection, &RoverConnection::wayPoints, mFlightPlanner, &FlightPlannerParticles::slotSetWayPoints); connect(mFlightPlanner, &FlightPlannerParticles::wayPoints, mRoverConnection, &RoverConnection::slotSetWayPoints); mDiffCorrFetcher = new DiffCorrFetcher(mConnectionDialog->getRtkBaseHostName(), mConnectionDialog->getRtkBasePort(), this); connect(mDiffCorrFetcher, &DiffCorrFetcher::differentialCorrections, mRoverConnection, &RoverConnection::slotSendDiffCorrToRover); connect(mDiffCorrFetcher, &DiffCorrFetcher::connectionStatus, mControlWidget, &ControlWidget::slotUpdateConnectionDiffCorr); menuBar()->addAction("Connect", mRoverConnection, SLOT(slotConnectToRover())); mAudioPlayer = new AudioPlayer; connect(mRoverConnection, &RoverConnection::gnssStatus, this, &BaseStation::slotSpeakGnssStatus); mActionEnableAudio->setChecked(true); // enable audio out by default when in the field mRoverConnection->slotConnectToRover(); mLogWidget->log(Information, "BaseStation::BaseStation()", "Working online, enabling RoverConnection+RtkFetcher+PtuController, disabling LogPlayer."); } else { mLogPlayer = new LogPlayer(this); mLogPlayer->setAllowedAreas(Qt::AllDockWidgetAreas); addDockWidget(Qt::BottomDockWidgetArea, mLogPlayer); mMenuWindowList->addAction("Log Player", this, SLOT(slotToggleLogPlayer())); connect(mLogPlayer, &LogPlayer::message, mLogWidget, &LogWidget::log); connect(mLogPlayer, &LogPlayer::vehiclePose, mControlWidget, &ControlWidget::slotUpdatePose); connect(mLogPlayer, &LogPlayer::vehiclePose, mFlightPlanner, &FlightPlannerParticles::slotVehiclePoseChanged); connect(mLogPlayer, &LogPlayer::scanRaw, mGlScene, &GlScene::slotNewRawScan); // connect(mLogPlayer, &LogPlayer::vehiclePose, mPtuController, &PtuController::slotVehiclePoseChanged); connect(mLogPlayer, &LogPlayer::vehiclePose, mGlScene, &GlScene::slotNewVehiclePose); connect(mLogPlayer, &LogPlayer::scanFused, mFlightPlanner, &FlightPlannerParticles::slotNewScanFused); connect(mLogPlayer, &LogPlayer::gnssStatus, mControlWidget, &ControlWidget::slotUpdateInsStatus); connect(mLogPlayer, &LogPlayer::gnssStatus, mGlScene, &GlScene::slotSetInsStatus); connect(mLogPlayer, &LogPlayer::flightState, mControlWidget, &ControlWidget::slotSetFlightState); connect(mLogPlayer, &LogPlayer::flightStateRestriction, mControlWidget, &ControlWidget::slotSetFlightStateRestriction); mAudioPlayer = new AudioPlayer; connect(mLogPlayer, &LogPlayer::gnssStatus, this, &BaseStation::slotSpeakGnssStatus); mPidControllerWidget->setEnabled(false); // do not allow changes to PID values while playing a recorded flight. mPidControllerWidget->setControllers(mLogPlayer->getFlightControllerValues()); // set this once. Table is rebuilt when signal from roverconnection comes in connect(mLogPlayer, &LogPlayer::flightControllerValues, this, &BaseStation::slotSetFlightControllerValues); mLogWidget->log(Information, "BaseStation::BaseStation()", "Working offline, disabling RoverConnection+RtkFetcher, enabling LogPlayer."); } QSettings settings("BenAdler", "basestation"); restoreGeometry(settings.value("geometry").toByteArray()); restoreState(settings.value("windowState").toByteArray()); // After connecting consumers of initializingInGlContext(), initialze glWindow, which will emit the signal. mGlWindow->slotInitialize(); mLogWidget->log(Information, "BaseStation::BaseStation()", "Startup finished, ready."); }
void NoteWindow::readSettings() { QSettings settings("OSS", "MyNote"); restoreGeometry(settings.value("geometry").toByteArray()); }
QgsGrassNewMapset::QgsGrassNewMapset( QgisInterface *iface, QgsGrassPlugin *plugin, QWidget * parent, Qt::WindowFlags f ) : QWizard( parent, f ) , QgsGrassNewMapsetBase() { QgsDebugMsg( "QgsGrassNewMapset()" ); setupUi( this ); #ifdef Q_OS_MAC setWizardStyle( QWizard::ClassicStyle ); #endif mRunning = true; mIface = iface; mProjectionSelector = 0; mPreviousPage = -1; mRegionModified = false; QString mapPath = ":/images/grass/world.png"; QgsDebugMsg( QString( "mapPath = %1" ).arg( mapPath ) ); //mPixmap = QPixmap( *(mRegionMap->pixmap()) ); mPixmap.load( mapPath ); QgsDebugMsg( QString( "mPixmap.isNull() = %1" ).arg( mPixmap.isNull() ) ); mRegionsInited = false; mPlugin = plugin; setError( mDatabaseErrorLabel ); setError( mLocationErrorLabel ); setError( mProjErrorLabel ); setError( mRegionErrorLabel ); setError( mMapsetErrorLabel ); // DATABASE QSettings settings; QString gisdbase = settings.value( "/GRASS/lastGisdbase" ).toString(); if ( gisdbase.isEmpty() ) { gisdbase = QDir::homePath() + QDir::separator() + "grassdata"; } mDatabaseLineEdit->setText( gisdbase ); databaseChanged(); // LOCATION QRegExp rx( "[A-Za-z0-9_.]+" ); mLocationLineEdit->setValidator( new QRegExpValidator( rx, mLocationLineEdit ) ); // CRS // MAPSET mMapsetsListView->clear(); mMapsetLineEdit->setValidator( new QRegExpValidator( rx, mMapsetLineEdit ) ); mMapsetsListView->header()->setResizeMode( QHeaderView::ResizeToContents ); // FINISH mOpenNewMapsetCheckBox->setChecked( settings.value( "/GRASS/newMapsetWizard/openMapset", true ).toBool() ); connect( this, SIGNAL( currentIdChanged( int ) ), SLOT( pageSelected( int ) ) ); restoreGeometry( settings.value( "/Windows/QgsGrassNewMapset/geometry" ).toByteArray() ); }
void MOTabCplx::readGUIState() { QSettings settings("MO", "GUI_"); bool ok = restoreGeometry(settings.value(projectName+"/"+name+"/geometry").toByteArray()); ok = restoreState(settings.value(projectName+"/"+name+"/windowState").toByteArray()); }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), tcore(new ThunderCore (this)), tpanel(new ThunderPanel (this)), vpanel(new VideoPanel (this)), lpanel(new LogView (this)), bpanel(new Browser (this)), transf0r(new Transf0r (this)), osd(new OSD (this)) { ui->setupUi(this); setWindowTitle (tr("%1 $VER %2").arg(QApplication::applicationName()) .arg(QApplication::applicationVersion())); vpanel->setStatusBar(ui->statusBar); ui->tabWidget->addTab(tpanel, "Cloud"); ui->tabWidget->addTab(vpanel, "Video"); ui->tabWidget->addTab(bpanel, "Browser"); ui->tabWidget->addTab(lpanel, "Log"); ui->tabWidget->addTab(transf0r, "Transf0r"); /// connect (tcore, SIGNAL(StatusChanged(ThunderCore::ChangeType)), SLOT(slotStatusChanged(ThunderCore::ChangeType))); connect (tcore, SIGNAL(error(QString,ThunderCore::ErrorCategory)), lpanel, SLOT(logReceived(QString,ThunderCore::ErrorCategory))); connect (tcore, SIGNAL(BTSubTaskReady(Thunder::BitorrentTask)), tpanel, SLOT(setBTSubTask(Thunder::BitorrentTask))); connect (tcore, SIGNAL(CookiesReady(QString)), tpanel, SLOT(slotCookiesReady(QString))); connect (tpanel, SIGNAL(doThisLink(Thunder::RemoteTask, ThunderPanel::RequestType,bool)), SLOT(slotRequestReceived(Thunder::RemoteTask, ThunderPanel::RequestType,bool))); connect (tpanel, SIGNAL(doIndirectRequest(ThunderPanel::IndirectRequestType)), SLOT(slotIndirectRequestReceived(ThunderPanel::IndirectRequestType))); connect (osd, SIGNAL(doubleClicked()), SLOT(slotShowOrHideWindow())); // WILL BE REMOVED LATER! connect (tcore, SIGNAL(error(QString,ThunderCore::ErrorCategory)), SLOT(slotError(QString,ThunderCore::ErrorCategory))); connect (bpanel, SIGNAL(browserLinksReady(QString)), SLOT(slotBrowserLinksReady(QString))); /// osd->osd_menu->addAction(ui->actionNewTask); osd->osd_menu->addSeparator(); osd->osd_menu->addAction(ui->actionQ_uit); /// { QSettings settings; settings.beginGroup("UI"); restoreState( settings.value("State").toByteArray()); restoreGeometry( settings.value("Geometry").toByteArray() ); } login (); }
LogDialog::LogDialog(KConfig& cfg, QWidget *parent) : QDialog(parent) , cvsService(0) , partConfig(cfg) { QVBoxLayout *mainLayout = new QVBoxLayout; setLayout(mainLayout); splitter = new QSplitter(Qt::Vertical, this); mainLayout->addWidget(splitter); tree = new LogTreeView(this); connect( tree, SIGNAL(revisionClicked(QString,bool)), this, SLOT(revisionSelected(QString,bool)) ); QWidget* listWidget = new QWidget(this); QVBoxLayout* listLayout = new QVBoxLayout(listWidget); QHBoxLayout* searchLayout = new QHBoxLayout(); listLayout->addLayout(searchLayout); list = new LogListView(partConfig, listWidget); listLayout->addWidget(list, 1); KTreeWidgetSearchLine* searchLine = new KTreeWidgetSearchLine(listWidget, list); QLabel* searchLabel = new QLabel(i18n("Search:"),listWidget); searchLabel->setBuddy(searchLine); searchLayout->addWidget(searchLabel); searchLayout->addWidget(searchLine, 1); connect( list, SIGNAL(revisionClicked(QString,bool)), this, SLOT(revisionSelected(QString,bool)) ); plain = new LogPlainView(this); connect( plain, SIGNAL(revisionClicked(QString,bool)), this, SLOT(revisionSelected(QString,bool)) ); tabWidget = new QTabWidget; tabWidget->addTab(tree, i18n("&Tree")); tabWidget->addTab(listWidget, i18n("&List")); tabWidget->addTab(plain, i18n("CVS &Output")); splitter->addWidget(tabWidget); splitter->setStretchFactor(0, 1); connect(tabWidget, &QTabWidget::currentChanged, this, &LogDialog::tabChanged); tree->setWhatsThis( i18n("Choose revision A by clicking with the left " "mouse button,\nrevision B by clicking with " "the middle mouse button.")); QWidget *mainWidget = new QWidget; splitter->addWidget(mainWidget); QBoxLayout *layout = new QVBoxLayout(mainWidget); layout->setMargin(0); for (int i = 0; i < 2; ++i) { if ( i == 1 ) { QFrame *frame = new QFrame(mainWidget); frame->setFrameStyle(QFrame::HLine | QFrame::Sunken); layout->addWidget(frame); } QGridLayout *grid = new QGridLayout(); layout->addLayout( grid ); grid->setRowStretch(0, 0); grid->setRowStretch(1, 0); grid->setRowStretch(2, 1); grid->setColumnStretch(0, 0); grid->setColumnStretch(1, 1); grid->setColumnStretch(2, 0); grid->setColumnStretch(3, 1); grid->setColumnStretch(4, 2); QString versionident = (i==0)? i18n("Revision A:") : i18n("Revision B:"); QLabel *versionlabel = new QLabel(versionident, mainWidget); grid->addWidget(versionlabel, 0, 0); revbox[i] = new QLabel(mainWidget); revbox[i]->setFrameStyle(QFrame::Panel | QFrame::Sunken); revbox[i]->setTextInteractionFlags(Qt::TextSelectableByMouse); grid->addWidget(revbox[i], 0, 1, Qt::AlignVCenter); QLabel *selectlabel = new QLabel(i18n("Select by tag:"), mainWidget); grid->addWidget(selectlabel, 0, 2); tagcombo[i] = new KComboBox(mainWidget); QFontMetrics fm(tagcombo[i]->fontMetrics()); tagcombo[i]->setMinimumWidth(fm.width("X")*20); grid->addWidget(tagcombo[i], 0, 3); QLabel *authorlabel = new QLabel(i18n("Author:"), mainWidget); grid->addWidget(authorlabel, 1, 0); authorbox[i] = new QLabel(mainWidget); authorbox[i]->setFrameStyle(QFrame::Panel | QFrame::Sunken); authorbox[i]->setTextInteractionFlags(Qt::TextSelectableByMouse); grid->addWidget(authorbox[i], 1, 1); QLabel *datelabel = new QLabel(i18n("Date:"), mainWidget); grid->addWidget(datelabel, 1, 2); datebox[i] = new QLabel(mainWidget); datebox[i]->setFrameStyle(QFrame::Panel | QFrame::Sunken); datebox[i]->setTextInteractionFlags(Qt::TextSelectableByMouse); grid->addWidget(datebox[i], 1, 3); QLabel *commentlabel = new QLabel(i18n("Comment/Tags:"), mainWidget); grid->addWidget(commentlabel, 2, 0); commentbox[i] = new KTextEdit(mainWidget); commentbox[i]->setReadOnly(true); fm = commentbox[i]->fontMetrics(); commentbox[i]->setMinimumHeight(2*fm.lineSpacing()+10); grid->addWidget(commentbox[i], 2, 1, 1, 3); tagsbox[i] = new KTextEdit(mainWidget); tagsbox[i]->setReadOnly(true); tagsbox[i]->setMinimumHeight(2*fm.lineSpacing()+10); grid->addWidget(tagsbox[i], 0, 4, 3, 1); } buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Help | QDialogButtonBox::Close | QDialogButtonBox::Apply); okButton = buttonBox->button(QDialogButtonBox::Ok); okButton->setShortcut(Qt::CTRL | Qt::Key_Return); connect(okButton, &QPushButton::clicked, this, &LogDialog::slotOk); user1Button = new QPushButton; buttonBox->addButton(user1Button, QDialogButtonBox::ActionRole); user2Button = new QPushButton; buttonBox->addButton(user2Button, QDialogButtonBox::ActionRole); user3Button = new QPushButton; buttonBox->addButton(user3Button, QDialogButtonBox::ActionRole); connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); KGuiItem::assign(user1Button, KGuiItem(i18n("&Annotate A"))); KGuiItem::assign(user2Button, KGuiItem(i18n("&Diff"))); KGuiItem::assign(user3Button, KGuiItem(i18n("&Find"))); user3Button->setVisible(false); // initially make the version info widget as small as possible splitter->setSizes(QList<int>() << height() << 10); revbox[0]->setWhatsThis(i18n("This revision is used when you click " "Annotate.\nIt is also used as the first " "item of a Diff operation.")); revbox[1]->setWhatsThis(i18n("This revision is used as the second " "item of a Diff operation.")); connect(tagcombo[0], SIGNAL(activated(int)), this, SLOT(tagASelected(int))); connect(tagcombo[1], SIGNAL(activated(int)), this, SLOT(tagBSelected(int))); connect(user1Button, SIGNAL(clicked()), this, SLOT(annotateClicked())); connect(user2Button, SIGNAL(clicked()), this, SLOT(diffClicked())); connect(user3Button, SIGNAL(clicked()), this, SLOT(findClicked())); connect(buttonBox->button(QDialogButtonBox::Apply), SIGNAL(clicked()), this, SLOT(slotPatch())); connect(buttonBox, &QDialogButtonBox::helpRequested, this, &LogDialog::slotHelp); KGuiItem::assign(okButton, KGuiItem(i18n("&View A"))); KGuiItem::assign(buttonBox->button(QDialogButtonBox::Apply), KGuiItem(i18n("Create Patch..."))); mainLayout->addWidget(buttonBox); buttonBox->button(QDialogButtonBox::Close)->setDefault(true); setAttribute(Qt::WA_DeleteOnClose, true); KConfigGroup cg(&partConfig, "LogDialog"); tabWidget->setCurrentIndex(cg.readEntry("ShowTab", 0)); restoreGeometry(cg.readEntry<QByteArray>("geometry", QByteArray())); splitter->restoreState(cg.readEntry<QByteArray>("Splitter", QByteArray())); updateButtons(); }
// --- StyleSheetEditorDialog StyleSheetEditorDialog::StyleSheetEditorDialog(QDesignerFormEditorInterface *core, QWidget *parent, Mode mode): QDialog(parent), m_buttonBox(new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel|QDialogButtonBox::Help)), m_editor(new StyleSheetEditor), m_validityLabel(new QLabel(tr("Valid Style Sheet"))), m_core(core), m_addResourceAction(new QAction(tr("Add Resource..."), this)), m_addGradientAction(new QAction(tr("Add Gradient..."), this)), m_addColorAction(new QAction(tr("Add Color..."), this)), m_addFontAction(new QAction(tr("Add Font..."), this)) { setWindowTitle(tr("Edit Style Sheet")); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); connect(m_buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(m_buttonBox, SIGNAL(rejected()), this, SLOT(reject())); connect(m_buttonBox, SIGNAL(helpRequested()), this, SLOT(slotRequestHelp())); m_buttonBox->button(QDialogButtonBox::Help)->setShortcut(QKeySequence::HelpContents); connect(m_editor, SIGNAL(textChanged()), this, SLOT(validateStyleSheet())); QToolBar *toolBar = new QToolBar; QGridLayout *layout = new QGridLayout; layout->addWidget(toolBar, 0, 0, 1, 2); layout->addWidget(m_editor, 1, 0, 1, 2); layout->addWidget(m_validityLabel, 2, 0, 1, 1); layout->addWidget(m_buttonBox, 2, 1, 1, 1); setLayout(layout); m_editor->setContextMenuPolicy(Qt::CustomContextMenu); connect(m_editor, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenuRequested(QPoint))); QSignalMapper *resourceActionMapper = new QSignalMapper(this); QSignalMapper *gradientActionMapper = new QSignalMapper(this); QSignalMapper *colorActionMapper = new QSignalMapper(this); resourceActionMapper->setMapping(m_addResourceAction, QString()); gradientActionMapper->setMapping(m_addGradientAction, QString()); colorActionMapper->setMapping(m_addColorAction, QString()); connect(m_addResourceAction, SIGNAL(triggered()), resourceActionMapper, SLOT(map())); connect(m_addGradientAction, SIGNAL(triggered()), gradientActionMapper, SLOT(map())); connect(m_addColorAction, SIGNAL(triggered()), colorActionMapper, SLOT(map())); connect(m_addFontAction, SIGNAL(triggered()), this, SLOT(slotAddFont())); m_addResourceAction->setEnabled(mode == ModePerForm); const char * const resourceProperties[] = { "background-image", "border-image", "image", 0 }; const char * const colorProperties[] = { "color", "background-color", "alternate-background-color", "border-color", "border-top-color", "border-right-color", "border-bottom-color", "border-left-color", "gridline-color", "selection-color", "selection-background-color", 0 }; QMenu *resourceActionMenu = new QMenu(this); QMenu *gradientActionMenu = new QMenu(this); QMenu *colorActionMenu = new QMenu(this); for (int resourceProperty = 0; resourceProperties[resourceProperty]; ++resourceProperty) { QAction *action = resourceActionMenu->addAction(QLatin1String(resourceProperties[resourceProperty])); connect(action, SIGNAL(triggered()), resourceActionMapper, SLOT(map())); resourceActionMapper->setMapping(action, QLatin1String(resourceProperties[resourceProperty])); } for (int colorProperty = 0; colorProperties[colorProperty]; ++colorProperty) { QAction *gradientAction = gradientActionMenu->addAction(QLatin1String(colorProperties[colorProperty])); QAction *colorAction = colorActionMenu->addAction(QLatin1String(colorProperties[colorProperty])); connect(gradientAction, SIGNAL(triggered()), gradientActionMapper, SLOT(map())); connect(colorAction, SIGNAL(triggered()), colorActionMapper, SLOT(map())); gradientActionMapper->setMapping(gradientAction, QLatin1String(colorProperties[colorProperty])); colorActionMapper->setMapping(colorAction, QLatin1String(colorProperties[colorProperty])); } connect(resourceActionMapper, SIGNAL(mapped(QString)), this, SLOT(slotAddResource(QString))); connect(gradientActionMapper, SIGNAL(mapped(QString)), this, SLOT(slotAddGradient(QString))); connect(colorActionMapper, SIGNAL(mapped(QString)), this, SLOT(slotAddColor(QString))); m_addResourceAction->setMenu(resourceActionMenu); m_addGradientAction->setMenu(gradientActionMenu); m_addColorAction->setMenu(colorActionMenu); toolBar->addAction(m_addResourceAction); toolBar->addAction(m_addGradientAction); toolBar->addAction(m_addColorAction); toolBar->addAction(m_addFontAction); m_editor->setFocus(); QDesignerSettingsInterface *settings = core->settingsManager(); settings->beginGroup(QLatin1String(StyleSheetDialogC)); if (settings->contains(QLatin1String(Geometry))) restoreGeometry(settings->value(QLatin1String(Geometry)).toByteArray()); settings->endGroup(); }
void MainWin::modules_loaded() { QSettings settings; restoreGeometry(settings.value("MainWin/geometry").toByteArray()); }
void MainWindow::set_window_size() { restoreGeometry(theSettings->value("mainwindow_geometry").toByteArray()); restoreState(theSettings->value("mainwindow_state").toByteArray()); if (theSettings->value("is_main_maximized",false).toBool()) showMaximized(); }
EventsWindow::EventsWindow(DVRServerRepository *serverRepository, QWidget *parent) : QWidget(parent, Qt::Window), m_serverRepository(serverRepository), m_tagsLabel(0), m_tagInput(0) { setAttribute(Qt::WA_DeleteOnClose); resize(QSize(900, 600)); QBoxLayout *layout = new QHBoxLayout(this); QBoxLayout *filtersLayout = new QVBoxLayout; layout->addLayout(filtersLayout); m_eventsUpdater = new EventsUpdater(bcApp->serverRepository(), this); createResultsView(); /* Filters */ m_sourcesView = new DVRServersView(m_serverRepository); EventSourcesModel *sourcesModel = new EventSourcesModel(m_serverRepository, m_sourcesView); DVRServersProxyModel *proxyModel = new DVRServersProxyModel(sourcesModel); proxyModel->setDynamicSortFilter(true); proxyModel->setSourceModel(sourcesModel); proxyModel->sort(0); m_sourcesView->setModel(proxyModel); m_sourcesView->setMaximumWidth(180); //m_sourcesView->setMaximumHeight(150); filtersLayout->addWidget(m_sourcesView); connect(sourcesModel, SIGNAL(checkedSourcesChanged(QMap<DVRServer*,QSet<int>>)), this, SLOT(setFilterSources(QMap<DVRServer*,QSet<int>>))); createDateFilter(filtersLayout); createLoadButton(filtersLayout); #if 1 /* This is not useful currently. */ m_minimumLevelLabel = new QLabel; m_minimumLevelLabel->setStyleSheet(QLatin1String("font-weight:bold;")); filtersLayout->addWidget(m_minimumLevelLabel); filtersLayout->addWidget(createLevelFilter()); #endif m_typeLabel = new QLabel(tr("Type")); m_typeLabel->setStyleSheet(QLatin1String("font-weight:bold;")); filtersLayout->addWidget(m_typeLabel); filtersLayout->addWidget(createTypeFilter()); #if 0 /* Tags are not fully implemented yet */ m_tagsLabel= new QLabel; m_tagsLabel->setStyleSheet(QLatin1String("font-weight:bold;")); filtersLayout->addWidget(m_tagsLabel); filtersLayout->addWidget(createTags()); filtersLayout->addWidget(createTagsInput()); #endif /* Splitter between results and playback */ m_videoSplitter = new QSplitter(Qt::Vertical); layout->addWidget(m_videoSplitter, 1); /* Results */ m_resultTabs = new QTabWidget; m_videoSplitter->addWidget(m_resultTabs); m_videoSplitter->setCollapsible(0, false); m_timelineContainer = createTimeline(); m_resultTabs->addTab(m_resultsView, tr("List")); m_resultTabs->addTab(m_timelineContainer, tr("Timeline")); /* Playback */ m_eventViewer = new EventViewWindow; m_eventViewer->layout()->setMargin(0); m_eventViewer->hide(); m_videoSplitter->addWidget(m_eventViewer); m_modelEventsCursor = new ModelEventsCursor(); m_modelEventsCursor->setModel(m_resultsView->model()); m_eventViewer->setEventsCursor(m_modelEventsCursor); connect(m_modelEventsCursor, SIGNAL(indexUpdated()), this, SLOT(cursorIndexUpdated())); /* Settings */ QSettings settings; restoreGeometry(settings.value(QLatin1String("ui/events/geometry")).toByteArray()); m_videoSplitter->restoreState(settings.value(QLatin1String("ui/events/videoSplitter")).toByteArray()); retranslateUI(); }
void QgsHelpViewer::restorePosition() { QSettings settings; restoreGeometry( settings.value( "/HelpViewer/geometry" ).toByteArray() ); }
QgsVectorLayerProperties::QgsVectorLayerProperties( QgsVectorLayer *lyr, QWidget * parent, Qt::WFlags fl ) : QDialog( parent, fl ) , layer( lyr ) , mMetadataFilled( false ) , mRendererDialog( 0 ) { setupUi( this ); mMaximumScaleIconLabel->setPixmap( QgsApplication::getThemePixmap( "/mActionZoomIn.png" ) ); mMinimumScaleIconLabel->setPixmap( QgsApplication::getThemePixmap( "/mActionZoomOut.png" ) ); connect( buttonBox, SIGNAL( accepted() ), this, SLOT( accept() ) ); connect( buttonBox, SIGNAL( rejected() ), this, SLOT( reject() ) ); connect( buttonBox->button( QDialogButtonBox::Apply ), SIGNAL( clicked() ), this, SLOT( apply() ) ); connect( this, SIGNAL( accepted() ), this, SLOT( apply() ) ); connect( insertFieldButton, SIGNAL( clicked() ), this, SLOT( insertField() ) ); connect( insertExpressionButton, SIGNAL( clicked() ), this, SLOT( insertExpression() ) ); connect( btnUseNewSymbology, SIGNAL( clicked() ), this, SLOT( useNewSymbology() ) ); QVBoxLayout *layout; if ( layer->hasGeometryType() ) { // Create the Labeling dialog tab layout = new QVBoxLayout( labelingFrame ); layout->setMargin( 0 ); labelingDialog = new QgsLabelingGui( QgisApp::instance()->palLabeling(), layer, QgisApp::instance()->mapCanvas(), labelingFrame ); layout->addWidget( labelingDialog ); labelingFrame->setLayout( layout ); // Create the Labeling (deprecated) dialog tab layout = new QVBoxLayout( labelOptionsFrame ); layout->setMargin( 0 ); labelDialog = new QgsLabelDialog( layer->label(), labelOptionsFrame ); layout->addWidget( labelDialog ); labelOptionsFrame->setLayout( layout ); connect( labelDialog, SIGNAL( labelSourceSet() ), this, SLOT( setLabelCheckBox() ) ); } else { labelingDialog = 0; labelDialog = 0; tabWidget->setTabEnabled( 1, false ); // hide labeling item tabWidget->setTabEnabled( 2, false ); // hide labeling (deprecated) item } // Create the Actions dialog tab QVBoxLayout *actionLayout = new QVBoxLayout( actionOptionsFrame ); actionLayout->setMargin( 0 ); const QgsFields &fields = layer->pendingFields(); actionDialog = new QgsAttributeActionDialog( layer->actions(), fields, actionOptionsFrame ); actionLayout->addWidget( actionDialog ); // Create the menu for the save style button to choose the output format mSaveAsMenu = new QMenu( pbnSaveStyleAs ); mSaveAsMenu->addAction( tr( "QGIS Layer Style File" ) ); mSaveAsMenu->addAction( tr( "SLD File" ) ); QObject::connect( mSaveAsMenu, SIGNAL( triggered( QAction * ) ), this, SLOT( saveStyleAsMenuTriggered( QAction * ) ) ); mFieldsPropertiesDialog = new QgsFieldsProperties( layer, mFieldsFrame ); mFieldsFrame->setLayout( new QVBoxLayout( mFieldsFrame ) ); mFieldsFrame->layout()->addWidget( mFieldsPropertiesDialog ); connect( mFieldsPropertiesDialog, SIGNAL( toggleEditing() ), this, SLOT( toggleEditing() ) ); connect( this, SIGNAL( toggleEditing( QgsMapLayer* ) ), QgisApp::instance(), SLOT( toggleEditing( QgsMapLayer* ) ) ); reset(); if ( layer->dataProvider() )//enable spatial index button group if supported by provider { int capabilities = layer->dataProvider()->capabilities(); if ( !( capabilities & QgsVectorDataProvider::CreateSpatialIndex ) ) { pbnIndex->setEnabled( false ); } if ( capabilities & QgsVectorDataProvider::SetEncoding ) { cboProviderEncoding->addItems( QgsVectorDataProvider::availableEncodings() ); QString enc = layer->dataProvider()->encoding(); int encindex = cboProviderEncoding->findText( enc ); if ( encindex < 0 ) { cboProviderEncoding->insertItem( 0, enc ); encindex = 0; } cboProviderEncoding->setCurrentIndex( encindex ); } else { // currently only encoding can be set in this group, so hide it completely grpProviderOptions->hide(); } } leSpatialRefSys->setText( layer->crs().authid() + " - " + layer->crs().description() ); leSpatialRefSys->setCursorPosition( 0 ); connect( sliderTransparency, SIGNAL( valueChanged( int ) ), this, SLOT( sliderTransparency_valueChanged( int ) ) ); //insert existing join info const QList< QgsVectorJoinInfo >& joins = layer->vectorJoins(); for ( int i = 0; i < joins.size(); ++i ) { addJoinToTreeWidget( joins[i] ); } diagramPropertiesDialog = new QgsDiagramProperties( layer, mDiagramFrame ); mDiagramFrame->setLayout( new QVBoxLayout( mDiagramFrame ) ); mDiagramFrame->layout()->addWidget( diagramPropertiesDialog ); //layer title and abstract if ( layer ) { mLayerTitleLineEdit->setText( layer->title() ); mLayerAbstractTextEdit->setPlainText( layer->abstract() ); } QSettings settings; restoreGeometry( settings.value( "/Windows/VectorLayerProperties/geometry" ).toByteArray() ); int tabIndex = settings.value( "/Windows/VectorLayerProperties/row", 0 ).toInt(); // if the last used tab is not enabled display the first enabled one if ( !tabWidget->isTabEnabled( tabIndex ) ) { tabIndex = 0; for ( int i = 0; i < tabWidget->count(); i++ ) { if ( tabWidget->isTabEnabled( i ) ) { tabIndex = i; break; } } } tabWidget->setCurrentIndex( tabIndex ); setWindowTitle( tr( "Layer Properties - %1" ).arg( layer->name() ) ); } // QgsVectorLayerProperties ctor
QgsNewGeoPackageLayerDialog::QgsNewGeoPackageLayerDialog( QWidget *parent, Qt::WindowFlags fl ) : QDialog( parent, fl ) , mOkButton( nullptr ) , mTableNameEdited( false ) , mLayerIdentifierEdited( false ) { setupUi( this ); QSettings settings; restoreGeometry( settings.value( "/Windows/NewGeoPackageLayer/geometry" ).toByteArray() ); mAddAttributeButton->setIcon( QgsApplication::getThemeIcon( "/mActionNewAttribute.png" ) ); mRemoveAttributeButton->setIcon( QgsApplication::getThemeIcon( "/mActionDeleteAttribute.png" ) ); #ifdef SUPPORT_GEOMETRY_LESS mGeometryTypeBox->addItem( tr( "Non spatial" ), wkbNone ); #endif mGeometryTypeBox->addItem( tr( "Point" ), wkbPoint ); mGeometryTypeBox->addItem( tr( "Line" ), wkbLineString ); mGeometryTypeBox->addItem( tr( "Polygon" ), wkbPolygon ); mGeometryTypeBox->addItem( tr( "Multi point" ), wkbMultiPoint ); mGeometryTypeBox->addItem( tr( "Multi line" ), wkbMultiLineString ); mGeometryTypeBox->addItem( tr( "Multi polygon" ), wkbMultiPolygon ); #ifdef SUPPORT_CURVE_GEOMETRIES #if 0 // QGIS always create CompoundCurve and there's no real interest of having just CircularString. CompoundCurve are more useful mGeometryTypeBox->addItem( tr( "Circular string" ), wkbCircularString ); #endif mGeometryTypeBox->addItem( tr( "Compound curve" ), wkbCompoundCurve ); mGeometryTypeBox->addItem( tr( "Curve polygon" ), wkbCurvePolygon ); mGeometryTypeBox->addItem( tr( "Multi curve" ), wkbMultiCurve ); mGeometryTypeBox->addItem( tr( "Multi surface" ), wkbMultiSurface ); #endif #ifdef SUPPORT_GEOMETRY_LESS mGeometryColumnEdit->setEnabled( false ); mCheckBoxCreateSpatialIndex->setEnabled( false ); mCrsSelector->setEnabled( false ); #endif mFieldTypeBox->addItem( tr( "Text data" ), "text" ); mFieldTypeBox->addItem( tr( "Whole number (integer)" ), "integer" ); #ifdef SUPPORT_INTEGER64 mFieldTypeBox->addItem( tr( "Whole number (integer 64 bit)" ), "integer64" ); #endif mFieldTypeBox->addItem( tr( "Decimal number (real)" ), "real" ); mFieldTypeBox->addItem( tr( "Date" ), "date" ); mFieldTypeBox->addItem( tr( "Date&time" ), "datetime" ); mOkButton = buttonBox->button( QDialogButtonBox::Ok ); mOkButton->setEnabled( false ); // Set the SRID box to a default of WGS84 QgsCoordinateReferenceSystem defaultCrs; defaultCrs.createFromOgcWmsCrs( settings.value( "/Projections/layerDefaultCrs", GEO_EPSG_CRS_AUTHID ).toString() ); defaultCrs.validate(); mCrsSelector->setCrs( defaultCrs ); connect( mFieldNameEdit, SIGNAL( textChanged( const QString& ) ), this, SLOT( fieldNameChanged( QString ) ) ); connect( mAttributeView, SIGNAL( itemSelectionChanged() ), this, SLOT( selectionChanged() ) ); connect( mTableNameEdit, SIGNAL( textChanged( const QString& ) ), this, SLOT( checkOk() ) ); connect( mDatabaseEdit, SIGNAL( textChanged( const QString& ) ), this, SLOT( checkOk() ) ); mAddAttributeButton->setEnabled( false ); mRemoveAttributeButton->setEnabled( false ); #ifndef SUPPORT_SPATIAL_INDEX mCheckBoxCreateSpatialIndex->hide(); mCheckBoxCreateSpatialIndex->setChecked( false ); #else mCheckBoxCreateSpatialIndex->setChecked( true ); #endif #ifndef SUPPORT_IDENTIFIER_DESCRIPTION mLayerIdentifierLabel->hide(); mLayerIdentifierEdit->hide(); mLayerDescriptionLabel->hide(); mLayerDescriptionEdit->hide(); #endif #ifndef SUPPORT_FIELD_WIDTH mFieldLengthLabel->hide(); mFieldLengthEdit->hide(); #endif }
void QgsBookmarks::restorePosition() { QgsSettings settings; restoreGeometry( settings.value( QStringLiteral( "Windows/Bookmarks/geometry" ) ).toByteArray() ); }
MainWindow::MainWindow(QString projectPath, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), m_progressDialog(NULL), m_renderProgressDialog(NULL), m_flowExaminer(NULL), m_cs(this) { ui->setupUi(this); restoreGeometry(m_settings.value("geometry").toByteArray()); restoreState(m_settings.value("windowState").toByteArray()); m_project = new Project_sV(); m_wCanvas = new Canvas(m_project, this); setCentralWidget(m_wCanvas); m_wInputMonitor = new FrameMonitor(this); m_wInputMonitorDock = new QDockWidget(tr("Input monitor"), this); m_wInputMonitorDock->setWidget(m_wInputMonitor); m_wInputMonitorDock->setObjectName("inputMonitor"); addDockWidget(Qt::TopDockWidgetArea, m_wInputMonitorDock); m_wCurveMonitor = new FrameMonitor(this); m_wCurveMonitorDock = new QDockWidget(tr("Curve monitor"), this); m_wCurveMonitorDock->setWidget(m_wCurveMonitor); m_wCurveMonitorDock->setObjectName("curveMonitor"); addDockWidget(Qt::TopDockWidgetArea, m_wCurveMonitorDock); m_wRenderPreview = new RenderPreview(m_project, this); m_wRenderPreviewDock = new QDockWidget(tr("Render preview"), this); m_wRenderPreviewDock->setWidget(m_wRenderPreview); m_wRenderPreviewDock->setObjectName("renderPreview"); addDockWidget(Qt::TopDockWidgetArea, m_wRenderPreviewDock); // Fill the view menu that allows (de)activating widgets QObjectList windowChildren = children(); QDockWidget *w; for (int i = 0; i < windowChildren.size(); i++) { if ((w = dynamic_cast<QDockWidget*>(windowChildren.at(i))) != NULL) { qDebug() << "Adding " << w->windowTitle() << " to the menu's widget list"; QAction *a = new QAction("&" + w->objectName(), this); a->setCheckable(true); bool b = true; b &= connect(a, SIGNAL(toggled(bool)), w, SLOT(setVisible(bool))); // This does not work since it is also emitted e.g. when the window is minimized // (with «Show Desktop» on KDE4), therefore an event filter is required. (below.) // Thanks ArGGu^^ for the tip! // b &= connect(w, SIGNAL(visibilityChanged(bool)), a, SLOT(setChecked(bool))); Q_ASSERT(b); a->setChecked(true); // To uncheck the menu entry when the widget is closed via the (x) w->installEventFilter(this); ui->menuView->addAction(a); m_widgetActions << a; } }
CreateSnapshotDialog::CreateSnapshotDialog( QWidget *parent, QString domainName, QString _conName, bool _state, virConnectPtr *connPtrPtr) : QDialog(parent) { QString winTitle = QString("Create Snapshot of <%1> in [ %2 ] connection") .arg(domainName).arg(_conName); setWindowTitle(winTitle); settings.beginGroup("CreateSnapshotDialog"); restoreGeometry( settings.value("Geometry").toByteArray() ); settings.endGroup(); titleLayout = new QHBoxLayout(this); nameLabel = new QLabel("Name:", this); name = new QLineEdit(this); name->setPlaceholderText("generate if omit"); name->setMinimumWidth(100); addTimeSuff = new QCheckBox(this); addTimeSuff->setToolTip("Add Time to Snapshot Name"); timeLabel = new QLabel(this); QString _date(QTime::currentTime().toString()); _date.append("-"); _date.append(QDate::currentDate().toString("dd.MM.yyyy")); timeLabel->setText(_date); timeLabel->setEnabled(false); titleLayout->addWidget(nameLabel); titleLayout->addWidget(name); titleLayout->addWidget(addTimeSuff); titleLayout->addWidget(timeLabel); titleWdg = new QWidget(this); titleWdg->setLayout(titleLayout); description = new QLineEdit(this); description->setPlaceholderText("Short Description"); snapshotType = new QComboBox(this); snapshotType->addItems(SNAPSHOT_TYPES); flagsMenu = new CreateSnapshotFlags(this); flags = new QPushButton(QIcon::fromTheme("flag"), "", this); flags->setMenu(flagsMenu); flags->setMaximumWidth(flags->sizeHint().width()); flags->setToolTip("Creation Snapshot Flags"); // because first item is non-actual there flags->setEnabled(false); typeLayout = new QHBoxLayout(this); typeLayout->addWidget(snapshotType); typeLayout->addWidget(flags); typeWdg = new QWidget(this); typeWdg->setLayout(typeLayout); baseWdg = new QStackedWidget(this); baseWdg->addWidget(new MemStateSnapshot(this, _state)); baseWdg->addWidget(new DiskSnapshot(this, _state, false)); baseWdg->addWidget(new DiskSnapshot(this, _state, true)); baseWdg->addWidget(new SystemCheckpoint(this, _state, false)); baseWdg->addWidget(new SystemCheckpoint(this, _state, true)); info = new QLabel("<a href='https://libvirt.org/formatsnapshot.html'>About</a>", this); info->setOpenExternalLinks(true); info->setToolTip("https://libvirt.org/formatsnapshot.html"); ok = new QPushButton("Ok", this); // because first item is non-actual there ok->setEnabled(false); cancel = new QPushButton("Cancel", this); buttonsLayout = new QHBoxLayout(this); buttonsLayout->addWidget(info); buttonsLayout->addWidget(ok); buttonsLayout->addWidget(cancel); buttonsWdg = new QWidget(this); buttonsWdg->setLayout(buttonsLayout); commonLayout = new QVBoxLayout(this); commonLayout->addWidget(titleWdg); commonLayout->addWidget(description); commonLayout->addWidget(typeWdg); commonLayout->addWidget(baseWdg); commonLayout->addWidget(buttonsWdg); //commonLayout->addStretch(-1); setLayout(commonLayout); connect(snapshotType, SIGNAL(currentIndexChanged(int)), baseWdg, SLOT(setCurrentIndex(int))); connect(snapshotType, SIGNAL(currentIndexChanged(int)), this, SLOT(snapshotTypeChange(int))); connect(ok, SIGNAL(clicked()), this, SLOT(accept())); connect(cancel, SIGNAL(clicked()), this, SLOT(reject())); connect(addTimeSuff, SIGNAL(toggled(bool)), timeLabel, SLOT(setEnabled(bool))); for (int i=0; i<baseWdg->count(); i++) { _SnapshotStuff *wdg = static_cast<_SnapshotStuff*>( baseWdg->widget(i)); if ( nullptr!=wdg ) wdg->setParameters(connPtrPtr, domainName); connect(wdg, SIGNAL(errMsg(QString&)), this, SIGNAL(errMsg(QString&))); }; timerID = startTimer(1000); }