KNStdLibCategorySwitcher::KNStdLibCategorySwitcher(QWidget *parent) : KNLibCategorySwitcher(parent) { //Set properties. setContentsMargins(0,0,0,0); //Set layouts. m_layout=new QBoxLayout(QBoxLayout::LeftToRight, this); m_layout->setContentsMargins(0,0,0,0); m_layout->setSpacing(0); setLayout(m_layout); //Set category switcher. m_categoryWidgets=new KNWidgetSwitcher(this); m_layout->addWidget(m_categoryWidgets); //Initial the dummy shadow to disable the operate of the contents. m_dummyShadow=new QWidget(this); m_dummyShadow->setAutoFillBackground(true); m_dummyPalette=m_dummyShadow->palette(); changeOpacity(0); m_dummyShadow->hide(); }
QgsPalettedRendererWidget::QgsPalettedRendererWidget( QgsRasterLayer *layer, const QgsRectangle &extent ): QgsRasterRendererWidget( layer, extent ) { setupUi( this ); mCalculatingProgressBar->hide(); mCancelButton->hide(); mContextMenu = new QMenu( tr( "Options" ), this ); mContextMenu->addAction( tr( "Change Color…" ), this, SLOT( changeColor() ) ); mContextMenu->addAction( tr( "Change Opacity…" ), this, SLOT( changeOpacity() ) ); mContextMenu->addAction( tr( "Change Label…" ), this, SLOT( changeLabel() ) ); mAdvancedMenu = new QMenu( tr( "Advanced Options" ), this ); QAction *mLoadFromLayerAction = mAdvancedMenu->addAction( tr( "Load Classes from Layer" ) ); connect( mLoadFromLayerAction, &QAction::triggered, this, &QgsPalettedRendererWidget::loadFromLayer ); QAction *loadFromFile = mAdvancedMenu->addAction( tr( "Load Color Map from File…" ) ); connect( loadFromFile, &QAction::triggered, this, &QgsPalettedRendererWidget::loadColorTable ); QAction *exportToFile = mAdvancedMenu->addAction( tr( "Export Color Map to File…" ) ); connect( exportToFile, &QAction::triggered, this, &QgsPalettedRendererWidget::saveColorTable ); mButtonAdvanced->setMenu( mAdvancedMenu ); mModel = new QgsPalettedRendererModel( this ); mTreeView->setSortingEnabled( false ); mTreeView->setModel( mModel ); #ifdef ENABLE_MODELTEST new ModelTest( mModel, this ); #endif mSwatchDelegate = new QgsColorSwatchDelegate( this ); mTreeView->setItemDelegateForColumn( QgsPalettedRendererModel::ColorColumn, mSwatchDelegate ); mTreeView->setColumnWidth( QgsPalettedRendererModel::ColorColumn, Qgis::UI_SCALE_FACTOR * fontMetrics().width( 'X' ) * 6.6 ); mTreeView->setContextMenuPolicy( Qt::CustomContextMenu ); mTreeView->setSelectionMode( QAbstractItemView::ExtendedSelection ); mTreeView->setDragEnabled( true ); mTreeView->setAcceptDrops( true ); mTreeView->setDropIndicatorShown( true ); mTreeView->setDragDropMode( QAbstractItemView::InternalMove ); mTreeView->setSelectionBehavior( QAbstractItemView::SelectRows ); mTreeView->setDefaultDropAction( Qt::MoveAction ); connect( mTreeView, &QTreeView::customContextMenuRequested, this, [ = ]( QPoint ) { mContextMenu->exec( QCursor::pos() ); } ); btnColorRamp->setShowRandomColorRamp( true ); connect( btnColorRamp, &QgsColorRampButton::colorRampChanged, this, &QgsPalettedRendererWidget::applyColorRamp ); mBandComboBox->setLayer( mRasterLayer ); if ( mRasterLayer ) { QgsRasterDataProvider *provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } setFromRenderer( mRasterLayer->renderer() ); } connect( mBandComboBox, &QgsRasterBandComboBox::bandChanged, this, &QgsRasterRendererWidget::widgetChanged ); connect( mModel, &QgsPalettedRendererModel::classesChanged, this, &QgsPalettedRendererWidget::widgetChanged ); connect( mDeleteEntryButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::deleteEntry ); connect( mButtonDeleteAll, &QPushButton::clicked, mModel, &QgsPalettedRendererModel::deleteAll ); connect( mAddEntryButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::addEntry ); connect( mClassifyButton, &QPushButton::clicked, this, &QgsPalettedRendererWidget::classify ); QgsRasterDataProvider *provider = mRasterLayer->dataProvider(); if ( provider ) { mLoadFromLayerAction->setEnabled( !provider->colorTable( mBandComboBox->currentBand() ).isEmpty() ); } else { mLoadFromLayerAction->setEnabled( false ); } connect( QgsProject::instance(), static_cast < void ( QgsProject::* )( QgsMapLayer * ) >( &QgsProject::layerWillBeRemoved ), this, &QgsPalettedRendererWidget::layerWillBeRemoved ); connect( mBandComboBox, &QgsRasterBandComboBox::bandChanged, this, &QgsPalettedRendererWidget::bandChanged ); }