void ChartDialog::doTimeStepChanged(int index) { logMessage("ChartDialog::doTimeStepChanged()"); if (cmbTimeStep->currentIndex() != -1) { Util::scene()->sceneSolution()->setTimeStep(cmbTimeStep->currentIndex()); doPlot(); } }
DSceneFunction::DSceneFunction(SceneFunction *sceneFunction, QWidget *parent) : QDialog(parent) { logMessage("DSceneFunction::DSceneFunction()"); m_sceneFunction = sceneFunction; setWindowIcon(icon("scene-function")); setWindowTitle(tr("Function")); createControls(); load(); doPlot(); setMinimumSize(sizeHint()); }
void ChartDialog::doFieldVariable(int index) { logMessage("ChartDialog::doFieldVariable()"); PhysicFieldVariable physicFieldVariable = (PhysicFieldVariable) cmbFieldVariable->itemData(index).toInt(); cmbFieldVariableComp->clear(); if (isPhysicFieldVariableScalar(physicFieldVariable)) { cmbFieldVariableComp->addItem(tr("Scalar"), PhysicFieldVariableComp_Scalar); } else { cmbFieldVariableComp->addItem(tr("Magnitude"), PhysicFieldVariableComp_Magnitude); cmbFieldVariableComp->addItem(Util::scene()->problemInfo()->labelX(), PhysicFieldVariableComp_X); cmbFieldVariableComp->addItem(Util::scene()->problemInfo()->labelY(), PhysicFieldVariableComp_Y); } if (cmbFieldVariableComp->currentIndex() == -1) cmbFieldVariableComp->setCurrentIndex(0); if (isVisible()) doPlot(); }
void CQGnuPlotDataDialog:: addPlotSlot() { doPlot(true); }
void CQGnuPlotDataDialog:: overlayPlotSlot() { doPlot(false); }
void ChartDialog::doFieldVariableComp(int index) { logMessage("ChartDialog::doFieldVariableComp()"); if (isVisible()) doPlot(); }
void ChartDialog::createControls() { logMessage("ChartDialog::createControls()"); chart = new Chart(this); // controls QWidget *controls = new QWidget(this); QPushButton *btnPlot = new QPushButton(controls); btnPlot->setText(tr("Plot")); connect(btnPlot, SIGNAL(clicked()), this, SLOT(doPlot())); QPushButton *btnSaveImage = new QPushButton(controls); btnSaveImage->setText(tr("Save image")); connect(btnSaveImage, SIGNAL(clicked()), SLOT(doSaveImage())); QPushButton *btnExportData = new QPushButton(controls); btnExportData->setText(tr("Export")); connect(btnExportData, SIGNAL(clicked()), SLOT(doExportData())); // geometry lblStartX = new QLabel("X:"); lblStartY = new QLabel("Y:"); lblEndX = new QLabel("X:"); lblEndY = new QLabel("Y:"); txtStartX = new ValueLineEdit(); txtStartY = new ValueLineEdit(); txtEndX = new ValueLineEdit(); txtEndY = new ValueLineEdit(); connect(txtStartX, SIGNAL(editingFinished()), this, SLOT(doChartLine())); connect(txtStartY, SIGNAL(editingFinished()), this, SLOT(doChartLine())); connect(txtEndX, SIGNAL(editingFinished()), this, SLOT(doChartLine())); connect(txtEndY, SIGNAL(editingFinished()), this, SLOT(doChartLine())); // start QGridLayout *layoutStart = new QGridLayout(); layoutStart->addWidget(lblStartX, 0, 0); layoutStart->addWidget(txtStartX, 0, 1); layoutStart->addWidget(lblStartY, 1, 0); layoutStart->addWidget(txtStartY, 1, 1); QGroupBox *grpStart = new QGroupBox(tr("Start"), this); grpStart->setLayout(layoutStart); // end QGridLayout *layoutEnd = new QGridLayout(); layoutEnd->addWidget(lblEndX, 0, 0); layoutEnd->addWidget(txtEndX, 0, 1); layoutEnd->addWidget(lblEndY, 1, 0); layoutEnd->addWidget(txtEndY, 1, 1); QGroupBox *grpEnd = new QGroupBox(tr("End"), this); grpEnd->setLayout(layoutEnd); // angle txtAngle = new ValueLineEdit(); connect(txtAngle, SIGNAL(editingFinished()), this, SLOT(doChartLine())); QHBoxLayout *layoutAngle = new QHBoxLayout(); layoutAngle->addWidget(new QLabel("Angle")); layoutAngle->addWidget(txtAngle); QGroupBox *grpAngle = new QGroupBox(tr("Angle"), this); grpAngle->setLayout(layoutAngle); // x - axis radAxisLength = new QRadioButton(tr("Length"), this); radAxisLength->setChecked(true); radAxisX = new QRadioButton("X", this); radAxisY = new QRadioButton("Y", this); QButtonGroup *axisGroup = new QButtonGroup(this); axisGroup->addButton(radAxisLength); axisGroup->addButton(radAxisX); axisGroup->addButton(radAxisY); connect(radAxisLength, SIGNAL(clicked()), this, SLOT(doPlot())); connect(radAxisX, SIGNAL(clicked()), this, SLOT(doPlot())); connect(radAxisY, SIGNAL(clicked()), this, SLOT(doPlot())); // axis QHBoxLayout *layoutAxis = new QHBoxLayout(this); layoutAxis->addWidget(radAxisLength); layoutAxis->addWidget(radAxisX); layoutAxis->addWidget(radAxisY); QGroupBox *grpAxis = new QGroupBox(tr("Horizontal axis"), this); grpAxis->setLayout(layoutAxis); // axis points and time step txtAxisPoints = new QSpinBox(this); txtAxisPoints->setMinimum(2); txtAxisPoints->setMaximum(500); txtAxisPoints->setValue(200); chkAxisPointsReverse = new QCheckBox(tr("Reverse")); connect(chkAxisPointsReverse, SIGNAL(clicked()), this, SLOT(doPlot())); // timestep cmbTimeStep = new QComboBox(this); connect(cmbTimeStep, SIGNAL(currentIndexChanged(int)), this, SLOT(doTimeStepChanged(int))); QGridLayout *layoutAxisPointsAndTimeStep = new QGridLayout(); layoutAxisPointsAndTimeStep->addWidget(new QLabel(tr("Points:")), 0, 0); layoutAxisPointsAndTimeStep->addWidget(txtAxisPoints, 0, 1); layoutAxisPointsAndTimeStep->addWidget(chkAxisPointsReverse, 0, 2); layoutAxisPointsAndTimeStep->addWidget(new QLabel(tr("Time step:")), 1, 0); layoutAxisPointsAndTimeStep->addWidget(cmbTimeStep, 1, 1, 1, 2); QGroupBox *grpAxisPointsAndTimeStep = new QGroupBox(tr("Points and time step"), this); grpAxisPointsAndTimeStep->setLayout(layoutAxisPointsAndTimeStep); // time lblPointX = new QLabel("X:"); lblPointY = new QLabel("Y:"); txtPointX = new ValueLineEdit(); txtPointY = new ValueLineEdit(); QGridLayout *layoutTime = new QGridLayout(); layoutTime->addWidget(lblPointX, 0, 0); layoutTime->addWidget(txtPointX, 0, 1); layoutTime->addWidget(lblPointY, 1, 0); layoutTime->addWidget(txtPointY, 1, 1); QGroupBox *grpTime = new QGroupBox(tr("Point"), this); grpTime->setLayout(layoutTime); // plot // variable cmbFieldVariable = new QComboBox(this); connect(cmbFieldVariable, SIGNAL(currentIndexChanged(int)), this, SLOT(doFieldVariable(int))); // component cmbFieldVariableComp = new QComboBox(this); connect(cmbFieldVariableComp, SIGNAL(currentIndexChanged(int)), this, SLOT(doFieldVariableComp(int))); doFieldVariable(cmbFieldVariable->currentIndex()); QFormLayout *layoutVariable = new QFormLayout(this); layoutVariable->addRow(tr("Variable:"), cmbFieldVariable); layoutVariable->addRow(tr("Component:"), cmbFieldVariableComp); QWidget *grpVariable = new QWidget(this); grpVariable->setLayout(layoutVariable); // table trvTable = new QTableWidget(this); // button bar QHBoxLayout *layoutButton = new QHBoxLayout(); layoutButton->addStretch(); layoutButton->addWidget(btnPlot); layoutButton->addWidget(btnSaveImage); layoutButton->addWidget(btnExportData); QWidget *widButton = new QWidget(this); widButton->setLayout(layoutButton); // controls geometry widGeometry = new QWidget(this); QVBoxLayout *controlsGeometryLayout = new QVBoxLayout(); widGeometry->setLayout(controlsGeometryLayout); controlsGeometryLayout->addWidget(grpStart); controlsGeometryLayout->addWidget(grpEnd); controlsGeometryLayout->addWidget(grpAngle); controlsGeometryLayout->addWidget(grpAxis); controlsGeometryLayout->addWidget(grpAxisPointsAndTimeStep); controlsGeometryLayout->addStretch(); // controls time widTime = new QWidget(this); QVBoxLayout *controlsTimeLayout = new QVBoxLayout(); widTime->setLayout(controlsTimeLayout); controlsTimeLayout->addWidget(grpTime); controlsTimeLayout->addStretch(); tabAnalysisType = new QTabWidget(this); tabAnalysisType->addTab(widGeometry, icon(""), tr("Geometry")); tabAnalysisType->addTab(widTime, icon(""), tr("Time")); // controls QVBoxLayout *controlsLayout = new QVBoxLayout(); controls->setLayout(controlsLayout); controls->setMinimumWidth(280); controlsLayout->addWidget(tabAnalysisType); controlsLayout->addWidget(grpVariable); controlsLayout->addStretch(); controlsLayout->addWidget(widButton); // tab data widget tabOutput = new QTabWidget(this); tabOutput->addTab(chart, icon(""), tr("Chart")); tabOutput->addTab(trvTable, icon(""), tr("Table")); // main layout QHBoxLayout *layout = new QHBoxLayout(this); layout->addWidget(controls); layout->addWidget(tabOutput, 1); // chart picker picker = new QwtPlotPicker(QwtPlot::xBottom, QwtPlot::yLeft, QwtPicker::PointSelection | QwtPicker::DragSelection, QwtPlotPicker::CrossRubberBand, QwtPicker::AlwaysOn, chart->canvas()); picker->setRubberBandPen(QColor(Qt::green)); picker->setRubberBand(QwtPicker::CrossRubberBand); picker->setTrackerMode(QwtPicker::ActiveOnly); picker->setTrackerPen(QColor(Qt::black)); connect(picker, SIGNAL(moved(const QPoint &)), SLOT(doMoved(const QPoint &))); setLayout(layout); }
void DSceneFunction::createControls() { logMessage("DSceneFunction::createControls()"); // chart chart = new Chart(this); // axis labels QwtText text(""); text.setFont(QFont("Helvetica", 10, QFont::Normal)); text.setText("x"); chart->setAxisTitle(QwtPlot::xBottom, text); text.setText("y"); chart->setAxisTitle(QwtPlot::yLeft, text); // name txtName = new QLineEdit(""); txtFunction = new QLineEdit(); // interval txtStart = new ValueLineEdit(); txtStart->setMaximumWidth(100); connect(txtStart, SIGNAL(editingFinished()), this, SLOT(doPlot())); txtEnd = new ValueLineEdit(); txtEnd->setMaximumWidth(100); connect(txtEnd, SIGNAL(editingFinished()), this, SLOT(doPlot())); lblError = new QLabel(); lblError->setVisible(false); QPushButton *btnPlot = new QPushButton(this); btnPlot->setText(tr("Plot")); connect(btnPlot, SIGNAL(clicked()), this, SLOT(doPlot())); QPushButton *btnSaveImage = new QPushButton(this); btnSaveImage->setText(tr("Save image")); connect(btnSaveImage, SIGNAL(clicked()), SLOT(doSaveImage())); QGridLayout *controlsLayout = new QGridLayout(); controlsLayout->addWidget(new QLabel(tr("Start:")), 0, 0); controlsLayout->addWidget(txtStart, 0, 1); controlsLayout->addWidget(new QLabel(tr("End:")), 1, 0); controlsLayout->addWidget(txtEnd, 1, 1); controlsLayout->addWidget(new QLabel(tr("Name:")), 0, 2); controlsLayout->addWidget(txtName, 0, 3); controlsLayout->addWidget(new QLabel(tr("Function:")), 1, 2); controlsLayout->addWidget(txtFunction, 1, 3); controlsLayout->addWidget(lblError, 0, 4, 2, 1); controlsLayout->addWidget(btnPlot, 0, 5); controlsLayout->addWidget(btnSaveImage, 1, 5); // dialog buttons QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); connect(buttonBox, SIGNAL(accepted()), this, SLOT(doAccept())); connect(buttonBox, SIGNAL(rejected()), this, SLOT(doReject())); QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(chart); layout->addLayout(controlsLayout); layout->addWidget(buttonBox); setLayout(layout); }
extern "C" int graphicalInterface(int argc,char *argv[],pulsar *psr,int *npsr) { char parFile[MAX_PSR][MAX_FILELEN]; char oparFile[MAX_PSR][MAX_FILELEN]; // Overlay files char timFile[MAX_PSR][MAX_FILELEN]; char otimFile[MAX_PSR][MAX_FILELEN]; char tpar[MAX_PSR][MAX_FILELEN]; char ttim[MAX_PSR][MAX_FILELEN]; int i; int plotUs=0; float scale[1000]; int nScale=0; char grDev[100]="/vps"; // char grDev[100]="/xs"; FILE *pin; FILE *fin; char str[1000]; float fontsize = 1.2; float centreMJD=54500; int ptStyle=16; float ptSize = 1; int reverse=0; int error=1; float miny=-1; float maxy=-1; float minx=-1; float maxx=-1; int nOverlay=0; float labelsize=-1; float fracX = 0.85; *npsr = 0; strcpy(covarFuncFile2,"NULL"); printf("Graphical Interface: plotMany\n"); printf("Author: George Hobbs\n"); printf("Version: 1.0\n"); /* Obtain the .par and the .tim file from the command line */ for (i=1;i<argc;i++) { if (strcmp(argv[i],"-f")==0) { strcpy(parFile[*npsr],argv[i+1]); strcpy(timFile[*npsr],argv[i+2]); (*npsr)++; if (*npsr > MAX_PSR) { printf("Error, npsr > MAX_PSR. Must increase MAX_PSR\n"); exit(1); } } else if (strcmp(argv[i],"-overlay")==0) sscanf(argv[i+1],"%d",&nOverlay); else if (strcmp(argv[i],"-dcf")==0){ strcpy(covarFuncFile2,argv[++i]); } else if (strcmp(argv[i],"-g")==0) strcpy(grDev,argv[++i]); else if (strcmp(argv[i],"-h")==0) help(); else if (strcmp(argv[i],"-scale")==0) { sscanf(argv[i+1],"%f",&scale[nScale]); nScale++; } else if (strcmp(argv[i],"-fontsize")==0) sscanf(argv[i+1],"%f",&fontsize); else if (strcasecmp(argv[i],"-fracX")==0) sscanf(argv[i+1],"%f",&fracX); else if (strcasecmp(argv[i],"-labelSize")==0) sscanf(argv[i+1],"%f",&labelsize); else if (strcmp(argv[i],"-ptstyle")==0) sscanf(argv[i+1],"%d",&ptStyle); else if (strcmp(argv[i],"-ptsize")==0) sscanf(argv[i+1],"%f",&ptSize); else if (strcmp(argv[i],"-miny")==0) sscanf(argv[i+1],"%f",&miny); else if (strcmp(argv[i],"-maxy")==0) sscanf(argv[i+1],"%f",&maxy); else if (strcmp(argv[i],"-minx")==0) sscanf(argv[i+1],"%f",&minx); else if (strcmp(argv[i],"-maxx")==0) sscanf(argv[i+1],"%f",&maxx); else if (strcmp(argv[i],"-reverse")==0) reverse=1; else if (strcmp(argv[i],"-centremjd")==0) sscanf(argv[i+1],"%f",¢reMJD); else if (strcmp(argv[i],"-plotus")==0) plotUs=1; else if (strcmp(argv[i],"-noerror")==0) error=0; } if (*npsr==0) /* Select all files */ { printf("Using all available .par and .tim files\n"); sprintf(str,"ls `ls *.par | sed s/par/tim/` | sed s/.tim/\"\"/"); pin = popen(str,"r"); while (!feof(pin)) { if (fscanf(pin,"%s",str)==1) { sprintf(parFile[*npsr],"%s.par",str); sprintf(timFile[*npsr],"%s.tim",str); (*npsr)++; } } pclose(pin); printf("Obtained files for %d pulsars\n",*npsr); } if (reverse==1) // Reverse order of .par and .tim files { for (i=0;i<*npsr;i++) { strcpy(tpar[i],parFile[i]); strcpy(ttim[i],timFile[i]); } for (i=0;i<*npsr;i++) { // printf("Have %d %d %d >%s< >%s<\n",i,*npsr,(*npsr)-i-1,tpar[(*npsr)-i-1],ttim[(*npsr)-i-1]); strcpy(parFile[i],tpar[(*npsr)-i-1]); strcpy(timFile[i],ttim[(*npsr)-i-1]); // strcpy(timFile[i],"J0900-3144.new2.tim"); } } printf("Starting plugin1\n"); // initialise(psr,0); /* Initialise the structures */ readParfile(psr,parFile,timFile,*npsr); /* Load the parameters */ printf("Starting plugin2\n"); readTimfile(psr,timFile,*npsr); /* Load the arrival times */ printf("Starting plugin3\n"); preProcess(psr,*npsr,argc,argv); printf("Starting plugin4\n"); callFit(psr,*npsr); /* Do all the fitting routines */ printf("Starting plugin5\n"); doPlot(psr,*npsr,scale,nScale,grDev,plotUs,fontsize,centreMJD,ptStyle,ptSize,error,miny,maxy,minx,maxx,nOverlay,labelsize,fracX); /* Do plot */ printf("Starting plugin6\n"); }
extern "C" int graphicalInterface(int argc,char *argv[],pulsar *psr,int *npsr) { char parFile[MAX_PSR][MAX_FILELEN]; char timFile[MAX_PSR][MAX_FILELEN]; int i; int overlay=0; FILE *pin; char str[1000]; *npsr = 0; /* This graphical interface will only show results for one pulsar */ strcpy(dcmFile,"NULL"); strcpy(covarFuncFile,"NULL"); printf("Graphical Interface: plk emulator\n"); printf("Author: George Hobbs (21 Dec 2003)\n"); printf("CVS Version: $Revision $\n"); /* Obtain the .par and the .tim file from the command line */ for (i=1;i<argc;i++) { if (strcmp(argv[i],"-f")==0) { strcpy(parFile[*npsr],argv[i+1]); strcpy(timFile[*npsr],argv[i+2]); (*npsr)++; if (*npsr > MAX_PSR) { printf("Error, npsr > MAX_PSR. Must increase MAX_PSR\n"); exit(1); } } else if (strcmp(argv[i],"-dcm")==0) strcpy(dcmFile,argv[++i]); else if (strcmp(argv[i],"-dcf")==0) strcpy(covarFuncFile,argv[++i]); else if (strcmp(argv[i],"-overlay")==0) overlay=1; } if (*npsr==0) /* Select all files */ { printf("Using all available .par and .tim files\n"); sprintf(str,"ls `ls *.par | sed s/par/tim/` | sed s/.tim/\"\"/"); pin = popen(str,"r"); while (!feof(pin)) { if (fscanf(pin,"%s",str)==1) { sprintf(parFile[*npsr],"%s.par",str); sprintf(timFile[*npsr],"%s.tim",str); (*npsr)++; } } pclose(pin); printf("Obtained files for %d pulsars\n",*npsr); } // initialise(psr,0); /* Initialise the structures */ readParfile(psr,parFile,timFile,*npsr); /* Load the parameters */ readTimfile(psr,timFile,*npsr); /* Load the arrival times */ preProcess(psr,*npsr,argc,argv); callFit(psr,*npsr); /* Do all the fitting routines */ doPlot(psr,*npsr,overlay); /* Do plot */ return 0; }