void YarrGui::on_removePlot_button_clicked(){ removePlot(); if(ui->plotTree->topLevelItemCount() > 0){ ui->plotTree->setCurrentItem(ui->plotTree->topLevelItem(0)); } return; }
void SIM_PLOT_FRAME::onSignalDblClick( wxMouseEvent& event ) { // Remove signal from the plot panel when double clicked long idx = m_signals->GetFocusedItem(); if( idx != wxNOT_FOUND ) removePlot( m_signals->GetItemText( idx, 0 ) ); }
void YarrGui::on_removeAllButton_clicked(){ while(true){ ui->plotTree->setCurrentItem(ui->plotTree->topLevelItem(0)->child(0)->child(0)); ui->scanPlots_tabWidget->setCurrentIndex(0); removePlot(); if(ui->plotTree->topLevelItemCount() == 0){break;} } return; }
void SIM_PLOT_FRAME::onSimFinished( wxCommandEvent& aEvent ) { m_toolBar->SetToolNormalBitmap( ID_SIM_RUN, KiBitmap( sim_run_xpm ) ); SetCursor( wxCURSOR_ARROW ); SIM_TYPE simType = m_exporter->GetSimType(); if( simType == ST_UNKNOWN ) return; SIM_PLOT_PANEL* plotPanel = CurrentPlot(); if( !plotPanel || plotPanel->GetType() != simType ) plotPanel = NewPlotPanel( simType ); if( IsSimulationRunning() ) return; // If there are any signals plotted, update them if( SIM_PLOT_PANEL::IsPlottable( simType ) ) { TRACE_MAP& traceMap = m_plots[plotPanel].m_traces; for( auto it = traceMap.begin(); it != traceMap.end(); /* iteration occurs in the loop */) { if( !updatePlot( it->second, plotPanel ) ) { removePlot( it->first, false ); it = traceMap.erase( it ); // remove a plot that does not exist anymore } else { ++it; } } updateSignalList(); plotPanel->UpdateAll(); plotPanel->ResetScales(); } else { /// @todo do not make it hardcoded for ngspice for( const auto& net : m_exporter->GetNetIndexMap() ) { int node = net.second; if( node > 0 ) m_simulator->Command( wxString::Format( "print v(%d)", node ).ToStdString() ); } } }
void PlotWidget::removeIndicator2 (QString name) { QStringList tl; tl << tr("Remove") << name; QMessageBox msgBox; msgBox.setText(tl.join(" ")); msgBox.setInformativeText("Do you want to remove this indicator?"); msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Ok); int ret = msgBox.exec(); if (ret == QMessageBox::Cancel) return; removePlot(name); }
void YarrGui::detachPlot(){ if(ui->plotTree->currentItem() == nullptr){ std::cerr << "Please select plot to detach...\n"; return; } if(ui->plotTree->currentItem()->childCount() > 0){ std::cerr << "Please select plot to detach...\n"; return; } PlotDialog * myPDiag = new PlotDialog(); QCustomPlot * plotWidget = dynamic_cast<QCustomPlot*>(ui->scanPlots_tabWidget->currentWidget()); if(plotWidget == nullptr){ std::cerr << "Severe cast error. Aborting...\n"; return; } QCustomPlot * transferPlot = dynamic_cast<QCustomPlot*>(myPDiag->childAt(10, 10)); if(transferPlot == nullptr){ std::cerr << "Severe cast error. Aborting...\n"; return; } QCPPlotTitle * widgetPT = dynamic_cast<QCPPlotTitle*>(plotWidget->plotLayout()->element(0, 0)); if(widgetPT == nullptr){ std::cerr << "Severe cast error. Aborting... \n"; return; } if(dynamic_cast<QCPColorMap*>(plotWidget->plottable(0)) != nullptr){ QCPColorMap * widgetCMap = dynamic_cast<QCPColorMap*>(plotWidget->plottable(0)); QCPColorScale * widgetCScale = dynamic_cast<QCPColorScale*>(plotWidget->plotLayout()->element(1, 1)); if(widgetCScale == nullptr) { std::cerr << "Severe cast error. Aborting... \n"; return; } transferPlot->plotLayout()->insertRow(0); transferPlot->plotLayout()->addElement(0, 0, new QCPPlotTitle(transferPlot, widgetPT->text())); QCPColorMap * transferCMap = new QCPColorMap(transferPlot->xAxis, transferPlot->yAxis); transferPlot->addPlottable(transferCMap); transferCMap->data()->setSize(80, 336); transferCMap->setData(widgetCMap->data(), true); QCPColorScale * transferCScale = new QCPColorScale(transferPlot); transferPlot->plotLayout()->addElement(1, 1, transferCScale); transferCScale->setType(QCPAxis::atRight); transferCMap->setColorScale(transferCScale); transferCMap->keyAxis()->setLabel(widgetCMap->keyAxis()->label()); transferCMap->valueAxis()->setLabel(widgetCMap->valueAxis()->label()); transferCScale->axis()->setLabel(widgetCScale->axis()->label()); transferCMap->setGradient(QCPColorGradient::gpPolar); transferCMap->rescaleDataRange(); }else if(dynamic_cast<QCPBars*>(plotWidget->plottable(0)) != nullptr){ QCPBars * widgetBars = dynamic_cast<QCPBars*>(plotWidget->plottable(0)); QCPBars * transferBars = new QCPBars(transferPlot->xAxis, transferPlot->yAxis); transferBars->setData(widgetBars->data(), true); transferBars->rescaleAxes(); transferPlot->plotLayout()->insertRow(0); transferPlot->plotLayout()->addElement(0, 0, new QCPPlotTitle(transferPlot, widgetPT->text())); transferBars->keyAxis()->setLabel(widgetBars->keyAxis()->label()); transferBars->valueAxis()->setLabel(widgetBars->valueAxis()->label()); }else{ std::cerr << "Severe cast error. Aborting... \n"; //DEBUG return; } transferPlot->rescaleAxes(); transferPlot->replot(); myPDiag->setModal(false); myPDiag->show(); removePlot(); return; }
void plotWindow::setupPlotWindow() { plot = new QGraphicsView(this); plot->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::TextAntialiasing); plot->setScene(&plotdata); QWidget *centralWidget = new QWidget; QVBoxLayout *centralLayout = new QVBoxLayout; QHBoxLayout *topContainerLayout = new QHBoxLayout; QGridLayout *topLayout = new QGridLayout; centralWidget->setLayout(centralLayout); const int margin = centralLayout->margin(); centralLayout->setMargin(0); centralLayout->addLayout(topContainerLayout); centralLayout->addWidget(plot); topContainerLayout->setMargin(margin); topContainerLayout->addLayout(topLayout); topContainerLayout->addStretch(); QLabel *matfileLabel = new QLabel("MAT file"); QLabel *xvarLabel = new QLabel("X Coordinate"); QLabel *yvarLabel = new QLabel("Y Coordinate"); QLabel *ptlabelLabel = new QLabel("LABEL"); QLabel *dimLabel = new QLabel("DIM"); matfile = new QLineEdit; matfile->setReadOnly(true); QAction *matfileAct = new QAction(QIcon(":/res/images/cr16-action-fileopen.png"), tr("&Open"), this); QToolButton *matfileButton = new QToolButton(); matfileButton->setDefaultAction(matfileAct); connect(matfileAct, SIGNAL(triggered()), this, SLOT(open())); xvar = new QComboBox; yvar = new QComboBox; ptlabel = new QSpinBox; dim = new QSpinBox; plotSelect = new QListWidget; plotSelect->setSelectionMode(QAbstractItemView::SingleSelection); QVBoxLayout *dockLayout = new QVBoxLayout; QHBoxLayout *buttonsLayout = new QHBoxLayout; QWidget *dockWidget = new QWidget; QAction *removePlotAct = new QAction(QIcon(":/res/images/cr16-action-eraser.png"), "Remove Selected", this); QToolButton *removePlotButton = new QToolButton; removePlotButton->setDefaultAction(removePlotAct); connect(removePlotAct, SIGNAL(triggered()), this, SLOT(removePlot())); QAction *colorizePlotAct = new QAction(QIcon(":/res/images/cr16-action-colorize.png"), "Change Color", this); QToolButton *colorizePlotButton = new QToolButton; colorizePlotButton->setDefaultAction(colorizePlotAct); connect(colorizePlotAct, SIGNAL(triggered()), this, SLOT(colorizePlot())); dockWidget->setLayout(dockLayout); dockLayout->setMargin(0); dockLayout->addSpacing(margin); dockLayout->addLayout(buttonsLayout); dockLayout->addWidget(plotSelect); buttonsLayout->addWidget(removePlotButton); buttonsLayout->addWidget(colorizePlotButton); QAction *addPlotAct = new QAction(QIcon(":/res/images/cr16-action-add.png"), tr("Add Plot"), this); QToolButton *addPlotButton = new QToolButton(); addPlotButton->setDefaultAction(addPlotAct); connect(addPlotAct, SIGNAL(triggered()), this, SLOT(addPlot())); QAction *clearAllPlotAct = new QAction(QIcon(":/res/images/cr16-action-remove.png"), tr("Clear All"), this); QToolButton *clearAllPlotButton = new QToolButton(); clearAllPlotButton->setDefaultAction(clearAllPlotAct); connect(clearAllPlotAct, SIGNAL(triggered()), this, SLOT(clearPlot())); QAction *printAct = new QAction(QIcon(":/res/images/cr16-action-fileprint.png"), tr("Print"), this); QToolButton *printButton = new QToolButton(); printButton->setDefaultAction(printAct); connect(printAct, SIGNAL(triggered()), this, SLOT(print())); QAction *exportSvgAct = new QAction(QIcon(":/res/images/cr16-action-svg-export.png"), tr("Export to SVG"), this); QToolButton *exportSvgButton = new QToolButton(); exportSvgButton->setDefaultAction( exportSvgAct ); connect( exportSvgAct, SIGNAL(triggered()), this, SLOT(exportSvg()) ); QComboBox* xyLog = new QComboBox; xyLog->insertItem(0, "Linear"); xyLog->insertItem(1, "SemiLogX"); xyLog->insertItem(2, "SemiLogY"); xyLog->insertItem(3, "LogLog"); xyLog->setCurrentIndex(0); connect( xyLog, SIGNAL(currentIndexChanged(int)), &plotdata, SLOT(setAxes(int)) ); this->addWidget(dockWidget); this->addWidget(centralWidget); topLayout->addWidget(matfileLabel, 0, 0); topLayout->addWidget(xvarLabel, 0, 2); topLayout->addWidget(yvarLabel, 0, 3); topLayout->addWidget(ptlabelLabel, 0, 4); topLayout->addWidget(dimLabel, 0, 5); topLayout->addWidget(matfile, 1, 0); topLayout->addWidget(matfileButton, 1, 1); topLayout->addWidget(xvar, 1, 2); topLayout->addWidget(yvar, 1, 3); topLayout->addWidget(ptlabel, 1, 4); topLayout->addWidget(dim, 1, 5); topLayout->addWidget(addPlotButton, 1, 6); topLayout->addWidget(clearAllPlotButton, 1, 7); topLayout->addWidget(printButton, 1, 8); topLayout->addWidget(exportSvgButton, 1, 9 ); topLayout->addWidget(xyLog, 2, 0 ); plot->setMinimumSize(plot->mapFromScene(plotdata.sceneRect()).boundingRect().size()*1.1 + QSize(2*plot->frameWidth(), 2*plot->frameWidth())); }