/** * Shows a context menu for the layer widget. Launched with a right click. */ void QG_LayerWidget::contextMenuEvent(QContextMenuEvent *e) { if (actionHandler) { QMenu* contextMenu = new QMenu(this); QLabel* caption = new QLabel(tr("Layer Menu"), this); QPalette palette; palette.setColor(caption->backgroundRole(), RS_Color(0,0,0)); palette.setColor(caption->foregroundRole(), RS_Color(255,255,255)); caption->setPalette(palette); caption->setAlignment( Qt::AlignCenter ); contextMenu->addAction( tr("&Defreeze all Layers"), actionHandler, SLOT(slotLayersDefreezeAll()), 0); contextMenu->addAction( tr("&Freeze all Layers"), actionHandler, SLOT(slotLayersFreezeAll()), 0); contextMenu->addSeparator(); contextMenu->addAction( tr("&Add Layer"), actionHandler, SLOT(slotLayersAdd()), 0); contextMenu->addAction( tr("&Remove Layer"), actionHandler, SLOT(slotLayersRemove()), 0); contextMenu->addAction( tr("Edit Layer &Attributes"), actionHandler, SLOT(slotLayersEdit()), 0); contextMenu->addAction( tr("Toggle Layer &Visibility"), actionHandler, SLOT(slotLayersToggleView()), 0); contextMenu->addAction( tr("Toggle Layer &Printing"), actionHandler, SLOT(slotLayersTogglePrint()), 0); contextMenu->addAction( tr("Toggle &Construction Layer"), actionHandler, SLOT(slotLayersToggleConstruction()), 0); contextMenu->exec(QCursor::pos()); delete contextMenu; } e->accept(); }
/** * Constructor. */ QG_LayerWidget::QG_LayerWidget(QG_ActionHandler* ah, QWidget* parent, const char* name, Qt::WindowFlags f) : QWidget(parent, f) { setObjectName(name); actionHandler = ah; layerList = nullptr; showByBlock = false; lastLayer = nullptr; layerModel = new QG_LayerModel(this); layerView = new QTableView(this); layerView->setModel(layerModel); layerView->setShowGrid(true); layerView->setSelectionMode(QAbstractItemView::SingleSelection); layerView->setEditTriggers(QAbstractItemView::NoEditTriggers); layerView->setFocusPolicy(Qt::NoFocus); layerView->setMinimumHeight(140); layerView->setColumnWidth(QG_LayerModel::VISIBLE, 24); layerView->setColumnWidth(QG_LayerModel::LOCKED, 24); layerView->setColumnWidth(QG_LayerModel::PRINT, 24); layerView->setColumnWidth(QG_LayerModel::CONSTRUCTION, 24); layerView->setColumnWidth(QG_LayerModel::COLOR_SAMPLE, 24); layerView->verticalHeader()->hide(); layerView->horizontalHeader()->setStretchLastSection(true); layerView->horizontalHeader()->hide(); QVBoxLayout* lay = new QVBoxLayout(this); lay->setContentsMargins(2, 2, 2, 2); QHBoxLayout* layButtons = new QHBoxLayout; QToolButton* but; const QSize minButSize(28,28); // show all layer: but = new QToolButton(this); but->setIcon(QIcon(":/icons/visible.svg")); but->setMinimumSize(minButSize); but->setToolTip(tr("Show all layers")); connect(but, SIGNAL(clicked()), actionHandler, SLOT(slotLayersDefreezeAll())); layButtons->addWidget(but); // hide all layer: but = new QToolButton(this); but->setIcon(QIcon(":/icons/invisible.svg")); but->setMinimumSize(minButSize); but->setToolTip(tr("Hide all layers")); connect(but, SIGNAL(clicked()), actionHandler, SLOT(slotLayersFreezeAll())); layButtons->addWidget(but); // add layer: but = new QToolButton(this); but->setIcon(QIcon(":/icons/add.svg")); but->setMinimumSize(minButSize); but->setToolTip(tr("Add a layer")); connect(but, SIGNAL(clicked()), actionHandler, SLOT(slotLayersAdd())); layButtons->addWidget(but); // remove layer: but = new QToolButton(this); but->setIcon(QIcon(":/icons/remove.svg")); but->setMinimumSize(minButSize); but->setToolTip(tr("Remove the current layer")); connect(but, SIGNAL(clicked()), actionHandler, SLOT(slotLayersRemove())); layButtons->addWidget(but); // rename layer: but = new QToolButton(this); but->setIcon(QIcon(":/icons/rename_active_block.svg")); but->setMinimumSize(minButSize); but->setToolTip(tr("Modify layer attributes / rename")); connect(but, SIGNAL(clicked()), actionHandler, SLOT(slotLayersEdit())); layButtons->addWidget(but); // lineEdit to filter layer list with RegEx matchLayerName = new QLineEdit(this); matchLayerName->setReadOnly(false); //matchLayerName->setText("*"); matchLayerName->setToolTip(tr("Looking for matching layer names")); connect(matchLayerName, SIGNAL( textChanged(QString) ), this, SLOT( slotUpdateLayerList() ) ); //lay->addWidget(caption); lay->addWidget(matchLayerName); lay->addLayout(layButtons); lay->addWidget(layerView); this->setLayout(lay); connect(layerView, SIGNAL(pressed(QModelIndex)), this, SLOT(slotActivated(QModelIndex))); }
/** * Constructor. */ QG_LayerWidget::QG_LayerWidget(QG_ActionHandler* ah, QWidget* parent, const char* name, Qt::WFlags f) : QWidget(parent, f) { setObjectName(name); actionHandler = ah; layerList = NULL; showByBlock = false; lastLayer = NULL; layerModel = new QG_LayerModel; layerView = new QTableView(this); layerView->setModel (layerModel); layerView->setShowGrid (false); layerView->setSelectionMode(QAbstractItemView::SingleSelection); layerView->setEditTriggers(QAbstractItemView::NoEditTriggers); layerView->setFocusPolicy(Qt::NoFocus); layerView->setMinimumHeight(140); layerView->setColumnWidth(QG_LayerModel::VISIBLE, 20); layerView->setColumnWidth(QG_LayerModel::LOCKED, 20); layerView->verticalHeader()->hide(); layerView->horizontalHeader()->setStretchLastSection(true); layerView->horizontalHeader()->hide(); QVBoxLayout* lay = new QVBoxLayout(this); lay->setSpacing ( 0 ); lay->setContentsMargins(2, 2, 2, 2); QHBoxLayout* layButtons = new QHBoxLayout(); QToolButton* but; // show all layer: but = new QToolButton(this); but->setIcon(QIcon(":ui/visiblelayer.png")); but->setMinimumSize(QSize(22,22)); but->setToolTip(tr("Show all layers")); connect(but, SIGNAL(clicked()), actionHandler, SLOT(slotLayersDefreezeAll())); layButtons->addWidget(but); // hide all layer: but = new QToolButton(this); but->setIcon(QIcon(":ui/hiddenlayer.png")); but->setMinimumSize(QSize(22,22)); but->setToolTip(tr("Hide all layers")); connect(but, SIGNAL(clicked()), actionHandler, SLOT(slotLayersFreezeAll())); layButtons->addWidget(but); // add layer: but = new QToolButton(this); but->setIcon(QIcon(":ui/layeradd.png")); but->setMinimumSize(QSize(22,22)); but->setToolTip(tr("Add a layer")); connect(but, SIGNAL(clicked()), actionHandler, SLOT(slotLayersAdd())); layButtons->addWidget(but); // remove layer: but = new QToolButton(this); but->setIcon(QIcon(":ui/layerremove.png")); but->setMinimumSize(QSize(22,22)); but->setToolTip(tr("Remove the current layer")); connect(but, SIGNAL(clicked()), actionHandler, SLOT(slotLayersRemove())); layButtons->addWidget(but); // rename layer: but = new QToolButton(this); but->setIcon(QIcon(":ui/layeredit.png")); but->setMinimumSize(QSize(22,22)); but->setToolTip(tr("Modify layer attributes / rename")); connect(but, SIGNAL(clicked()), actionHandler, SLOT(slotLayersEdit())); layButtons->addWidget(but); //lay->addWidget(caption); lay->addLayout(layButtons); lay->addWidget(layerView); connect(layerView, SIGNAL(clicked(QModelIndex)), this, SLOT(slotActivated(QModelIndex))); connect(layerView, SIGNAL(clicked(QModelIndex)), this, SLOT(slotActivated(QModelIndex))); }