+/** @file create.cpp
+ @package snark14Input
+ @author Bruno M. Carvalho and Deniz Sarioz
+ modified by Joanna Klukowska (June 2008)
+ added two fields in LAST line for agreement with snark14
+ removed SAVE and MODIFY options of Run since snark14 does not have file12
+ licensed under (open-source) QPL v1.0
+ which accompanies this distribution in the file QPL
+*/
+
+#include "create.h"
+#include "variables.h"
+#include "misc.h"
+#include <stdio.h>
+#include <math.h>
+
+#include <qbuttongroup.h>
+#include <qlabel.h>
+#include <qframe.h>
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qlineedit.h>
+#include <qmultilineedit.h>
+#include <qpushbutton.h>
+#include <qradiobutton.h>
+#include <qcombobox.h>
+#include <qtabwidget.h>
+#include <qwidget.h>
+#include <qregexp.h>
+#include <qlayout.h>
+#include <qvariant.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include <qmessagebox.h>
+
+/**
+ * Constructs a createwindow which is a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'
+ *
+ * The dialog will by default be modeless, unless you set 'modal' to
+ * true to construct a modal dialog.
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+createwindow::createwindow( QWidget* parent, const char* name, bool modal, WFlags fl )
+ : QDialog( parent, name, modal, fl )
+{
+ if ( !name )
+ setName( "createwindow" );
+ resize( 750, 629 );
+ setCaption( tr( "Create Window" ) );
+
+ tabwidget1 = new QTabWidget( this, "tabwidget1" );
+ tabwidget1->setGeometry( QRect( 0, 0, 750, 550 ) );
+ tabwidget1->setMinimumSize( QSize( 750, 550 ) );
+ tabwidget1->setMaximumSize( QSize( 750, 550 ) );
+ tabwidget1->setTabPosition( QTabWidget::Top );
+ tabwidget1->setTabShape( QTabWidget::Triangular );
+
+ /** Generates Tab number 1 - Header/Spectrum */
+
+ headerSpectrum = new QWidget( tabwidget1, "headerSpectrum" );
+
+ idheaderlabel = new QLabel( headerSpectrum, "idheaderlabel" );
+ idheaderlabel->setGeometry( QRect( 20, 30, 90, 20 ) );
+ idheaderlabel->setText( tr( "ID HEADER" ) );
+
+ idheader = new QLineEdit( headerSpectrum, "idheader" );
+ idheader->setGeometry( QRect( 120, 20, 500, 28 ) );
+
+ spectrumlabel = new QLabel( headerSpectrum, "spectrumlabel" );
+ spectrumlabel->setGeometry( QRect( 20, 70, 100, 20 ) );
+ spectrumlabel->setText( tr( "SPECTRUM" ) );
+
+ spectrumbuttongroup = new QButtonGroup( headerSpectrum, "spectrumbuttongroup" );
+ spectrumbuttongroup->setGeometry( QRect( 140, 70, 200, 100 ) );
+ spectrumbuttongroup->setTitle( tr( "spectrum type" ) );
+ spectrumbuttongroup->setAlignment( int( QButtonGroup::AlignHCenter ) );
+
+ monochromaticbutton = new QRadioButton( spectrumbuttongroup, "monochromaticbutton" );
+ monochromaticbutton->setGeometry( QRect( 10, 30, 170, 24 ) );
+ monochromaticbutton->setText( tr( "MONOCHROMATIC" ) );
+ monochromaticbutton->setChecked(true);
+ QObject::connect(monochromaticbutton,SIGNAL(clicked()),this,SLOT(activateMonochromaticFields()));
+
+ energy = new QLineEdit( headerSpectrum, "energy" );
+ energy->setGeometry( QRect( 350, 90, 60, 28 ) );
+ energy->setEnabled(true);
+
+ energylabel = new QLabel( headerSpectrum, "energylabel" );
+ energylabel->setGeometry( QRect( 355, 70, 50, 20 ) );
+ energylabel->setText( tr( "energy" ) );
+ energylabel->setEnabled(true);
+
+ polychromaticbutton = new QRadioButton( spectrumbuttongroup, "polychromaticbutton" );
+ polychromaticbutton->setGeometry( QRect( 10, 60, 170, 24 ) );
+ polychromaticbutton->setText( tr( "POLYCHROMATIC" ) );
+ QObject::connect(polychromaticbutton,SIGNAL(clicked()),this,SLOT(activatePolychromaticFields()));
+
+ nergy = new QLineEdit( headerSpectrum, "nergy" );
+ nergy->setGeometry( QRect( 350, 140, 60, 28 ) );
+ nergy->setEnabled(false);
+
+ nergylabel = new QLabel( headerSpectrum, "nergylabel" );
+ nergylabel->setGeometry( QRect( 360, 120, 40, 20 ) );
+ nergylabel->setText( tr( "nergy" ) );
+ nergylabel->setEnabled(false);
+
+ energy1 = new QLineEdit( headerSpectrum, "energy1" );
+ energy1->setGeometry( QRect( 30, 200, 70, 28 ) );
+ energy1->setEnabled(false);
+
+ energy1label = new QLabel( headerSpectrum, "energy1label" );
+ energy1label->setGeometry( QRect( 35, 180, 70, 20 ) );
+ energy1label->setText( tr( "energy1" ) );
+ energy1label->setEnabled(false);
+
+ percent1 = new QLineEdit( headerSpectrum, "percent1" );
+ percent1->setGeometry( QRect( 110, 200, 70, 28 ) );
+ percent1->setEnabled(false);
+
+ percent1label = new QLabel( headerSpectrum, "percent1label" );
+ percent1label->setGeometry( QRect( 115, 180, 70, 20 ) );
+ percent1label->setText( tr( "percent1" ) );
+ percent1label->setEnabled(false);
+
+ energy2 = new QLineEdit( headerSpectrum, "energy2" );
+ energy2->setGeometry( QRect( 190, 200, 70, 28 ) );
+ energy2->setEnabled(false);
+
+ energy2label = new QLabel( headerSpectrum, "energy2label" );
+ energy2label->setGeometry( QRect( 195, 180, 70, 20 ) );
+ energy2label->setText( tr( "energy2" ) );
+ energy2label->setEnabled(false);
+
+ percent2 = new QLineEdit( headerSpectrum, "percent2" );
+ percent2->setGeometry( QRect( 270, 200, 70, 28 ) );
+ percent2->setEnabled(false);
+
+ percent2label = new QLabel( headerSpectrum, "percent2label" );
+ percent2label->setGeometry( QRect( 275, 180, 70, 20 ) );
+ percent2label->setText( tr( "percent2" ) );
+ percent2label->setEnabled(false);
+
+ energy3 = new QLineEdit( headerSpectrum, "energy3" );
+ energy3->setGeometry( QRect( 350, 200, 70, 28 ) );
+ energy3->setEnabled(false);
+
+ energy3label = new QLabel( headerSpectrum, "energy3label" );
+ energy3label->setGeometry( QRect( 355, 180, 70, 20 ) );
+ energy3label->setText( tr( "energy3" ) );
+ energy3label->setEnabled(false);
+
+ percent3 = new QLineEdit( headerSpectrum, "percent3" );
+ percent3->setGeometry( QRect( 430, 200, 70, 28 ) );
+ percent3->setEnabled(false);
+
+ percent3label = new QLabel( headerSpectrum, "percent3label" );
+ percent3label->setGeometry( QRect( 435, 180, 70, 20 ) );
+ percent3label->setText( tr( "percent3" ) );
+ percent3label->setEnabled(false);
+
+ energy4 = new QLineEdit( headerSpectrum, "energy4" );
+ energy4->setGeometry( QRect( 510, 200, 70, 28 ) );
+ energy4->setEnabled(false);
+
+ energy4label = new QLabel( headerSpectrum, "energy4label" );
+ energy4label->setGeometry( QRect( 515, 180, 70, 20 ) );
+ energy4label->setText( tr( "energy4" ) );
+ energy4label->setEnabled(false);
+
+ percent4 = new QLineEdit( headerSpectrum, "percent4" );
+ percent4->setGeometry( QRect( 590, 200, 70, 28 ) );
+ percent4->setEnabled(false);
+
+ percent4label = new QLabel( headerSpectrum, "percent4label" );
+ percent4label->setGeometry( QRect( 595, 180, 70, 20 ) );
+ percent4label->setText( tr( "percent4" ) );
+ percent4label->setEnabled(false);
+
+ energy5 = new QLineEdit( headerSpectrum, "energy5" );
+ energy5->setGeometry( QRect( 30, 260, 70, 28 ) );
+ energy5->setEnabled(false);
+
+ energy5label = new QLabel( headerSpectrum, "energy5label" );
+ energy5label->setGeometry( QRect( 35, 240, 70, 20 ) );
+ energy5label->setText( tr( "energy5" ) );
+ energy5label->setEnabled(false);
+
+ percent5 = new QLineEdit( headerSpectrum, "percent5" );
+ percent5->setGeometry( QRect( 110, 260, 70, 28 ) );
+ percent5->setEnabled(false);
+
+ percent5label = new QLabel( headerSpectrum, "percent5label" );
+ percent5label->setGeometry( QRect( 115, 240, 70, 20 ) );
+ percent5label->setText( tr( "percent5" ) );
+ percent5label->setEnabled(false);
+
+ energy6 = new QLineEdit( headerSpectrum, "energy6" );
+ energy6->setGeometry( QRect( 190, 260, 70, 28 ) );
+ energy6->setEnabled(false);
+
+ energy6label = new QLabel( headerSpectrum, "energy6label" );
+ energy6label->setGeometry( QRect( 195, 240, 70, 20 ) );
+ energy6label->setText( tr( "energy6" ) );
+ energy6label->setEnabled(false);
+
+ percent6 = new QLineEdit( headerSpectrum, "percent6" );
+ percent6->setGeometry( QRect( 270, 260, 70, 28 ) );
+ percent6->setEnabled(false);
+
+ percent6label = new QLabel( headerSpectrum, "percent6label" );
+ percent6label->setGeometry( QRect( 270, 240, 70, 20 ) );
+ percent6label->setText( tr( "percent6" ) );
+ percent6label->setEnabled(false);
+
+ energy7 = new QLineEdit( headerSpectrum, "energy7" );
+ energy7->setGeometry( QRect( 350, 260, 70, 28 ) );
+ energy7->setEnabled(false);
+
+ energy7label = new QLabel( headerSpectrum, "energy7label" );
+ energy7label->setGeometry( QRect( 355, 240, 70, 20 ) );
+ energy7label->setText( tr( "energy7" ) );
+ energy7label->setEnabled(false);
+
+ percent7 = new QLineEdit( headerSpectrum, "percent7" );
+ percent7->setGeometry( QRect( 430, 260, 70, 28 ) );
+ percent7->setEnabled(false);
+
+ percent7label = new QLabel( headerSpectrum, "percent7label" );
+ percent7label->setGeometry( QRect( 435, 240, 70, 20 ) );
+ percent7label->setText( tr( "percent7" ) );
+ percent7label->setEnabled(false);
+
+ tabwidget1->insertTab( headerSpectrum, tr( "Header/Spectrum" ) );
+
+ /** Generates Tab number 2 - Objects */
+
+ objects = new QWidget( tabwidget1, "objects" );
+
+ objectslabel = new QLabel( objects, "objectslabel" );
+ objectslabel->setGeometry( QRect( 10, 20, 80, 20 ) );
+ objectslabel->setText( tr( "OBJECTS" ) );
+
+ shape = new QComboBox( objects, "shape" );
+ shape->setGeometry( QRect( 100, 55, 100, 28 ) );
+ shape->insertItem("RECT",-1);
+ shape->insertItem("ELIP",-1);
+ shape->insertItem("TRIA",-1);
+ shape->insertItem("SEGM",-1);
+ shape->insertItem("SECT",-1);
+
+ shapelabel = new QLabel( objects, "shapelabel" );
+ shapelabel->setGeometry( QRect( 125, 35, 60, 20 ) );
+ shapelabel->setText( tr( "shape" ) );
+
+ cx = new QLineEdit( objects, "cx" );
+ cx->setGeometry( QRect( 210, 55, 65, 28 ) );
+
+ cxlabel = new QLabel( objects, "cxlabel" );
+ cxlabel->setGeometry( QRect( 230, 35, 60, 20 ) );
+ cxlabel->setText( tr( "cx" ) );
+
+ cy = new QLineEdit( objects, "cy" );
+ cy->setGeometry( QRect( 285, 55, 65, 28 ) );
+
+ cylabel = new QLabel( objects, "cylabel" );
+ cylabel->setGeometry( QRect( 305, 35, 60, 20 ) );
+ cylabel->setText( tr( "cy" ) );
+
+ u = new QLineEdit( objects, "u" );
+ u->setGeometry( QRect( 360, 55, 65, 28 ) );
+
+ ulabel = new QLabel( objects, "ulabel" );
+ ulabel->setGeometry( QRect( 385, 35, 60, 20 ) );
+ ulabel->setText( tr( "u" ) );
+
+ v = new QLineEdit( objects, "v" );
+ v->setGeometry( QRect( 435, 55, 65, 28 ) );
+
+ vlabel = new QLabel( objects, "vlabel" );
+ vlabel->setGeometry( QRect( 460, 35, 60, 20 ) );
+ vlabel->setText( tr( "v" ) );
+
+ ang = new QLineEdit( objects, "ang" );
+ ang->setGeometry( QRect( 510, 55, 65, 28 ) );
+
+ anglabel = new QLabel( objects, "anglabel" );
+ anglabel->setGeometry( QRect( 520, 35, 60, 20 ) );
+ anglabel->setText( tr( "ang" ) );
+
+ den1 = new QLineEdit( objects, "den" );
+ den1->setGeometry( QRect( 585, 55, 65, 28 ) );
+
+ den1label = new QLabel( objects, "den1label" );
+ den1label->setGeometry( QRect( 595, 35, 60, 20 ) );
+ den1label->setText( tr( "den(1)" ) );
+
+ deni = new QLineEdit( objects, "deni" );
+ deni->setGeometry( QRect( 100, 108, 150, 28 ) );
+ deni->setEnabled(false);
+
+ denilabel = new QLabel( objects, "denilabel" );
+ denilabel->setGeometry( QRect( 150, 88, 60, 20 ) );
+ denilabel->setText( tr( "den(i)" ) );
+ denilabel->setEnabled(false);
+
+ addshapebutton = new QPushButton( objects, "addshape" );
+ addshapebutton->setGeometry( QRect( 15, 50, 80, 37 ) );
+ addshapebutton->setText( tr( "ADD" ) );
+ QObject::connect(addshapebutton,SIGNAL(clicked()),this,SLOT(addShape()));
+
+ objectsdescription = new QMultiLineEdit( objects, "objectsdescription" );
+ objectsdescription->setGeometry( QRect( 100, 150, 550, 300 ) );
+
+ lastlabel = new QLabel( objects, "lastlabel" );
+ lastlabel->setGeometry( QRect( 100, 485, 50, 20 ) );
+ lastlabel->setText( tr( "LAST" ) );
+
+ scale = new QLineEdit( objects, "scale" );
+ scale->setGeometry( QRect( 160, 480, 60, 28 ) );
+
+ scalelabel = new QLabel( objects, "scalelabel" );
+ scalelabel->setGeometry( QRect( 170, 460, 40, 20 ) );
+ scalelabel->setText( tr( "scale" ) );
+
+ /* jk 06/13/2008 added variabled to reflect tissue variabilit in snark14*/
+ seedvar = new QLineEdit( objects, "seedvar");
+ seedvar->setGeometry( QRect( 240, 480, 60, 28));
+ seedvar->setText( tr("0"));
+
+ seedvarlabel = new QLabel( objects, "seedvarlabel");
+ seedvarlabel->setGeometry( QRect( 250, 460, 40, 20));
+ seedvarlabel->setText( tr( "seed"));
+
+ var = new QLineEdit( objects, "var");
+ var->setGeometry( QRect( 320, 480, 60, 28));
+ var->setText( tr("0.0"));
+
+ varlabel = new QLabel( objects, "varlabel");
+ varlabel->setGeometry( QRect( 330, 460, 40, 20));
+ varlabel->setText( tr( "var"));
+
+
+ tabwidget1->insertTab( objects, tr( "Objects" ) );
+
+ /** Generates Tab number 3 - Phantom/Raysum */
+ phantomRaysum = new QWidget( tabwidget1, "phantomRaysum" );
+
+ phantomlabel = new QLabel( phantomRaysum, "phantomlabel" );
+ phantomlabel->setGeometry( QRect( 10, 40, 90, 20 ) );
+ phantomlabel->setText( tr( "PHANTOM" ) );
+
+ phantomaveragebutton = new QRadioButton( phantomRaysum, "phantomaveragebutton" );
+ phantomaveragebutton->setGeometry( QRect( 130, 40, 110, 24 ) );
+ phantomaveragebutton->setText( tr( "AVERAGE" ) );
+ QObject::connect(phantomaveragebutton,SIGNAL(clicked()),this,SLOT(activatePhantomAverageFields()));
+
+ nave1 = new QLineEdit( phantomRaysum, "nave1" );
+ nave1->setGeometry( QRect( 250, 30, 90, 28 ) );
+ nave1->setEnabled(false);
+
+ nave1label = new QLabel( phantomRaysum, "nave1label" );
+ nave1label->setGeometry( QRect( 270, 10, 50, 20 ) );
+ nave1label->setText( tr( "nave1" ) );
+ nave1label->setEnabled(false);
+
+ nelem = new QLineEdit( phantomRaysum, "nelem" );
+ nelem->setGeometry( QRect( 350, 30, 90, 28 ) );
+ nelem->setEnabled(false);
+
+ nelemlabel = new QLabel( phantomRaysum, "nelemlabel" );
+ nelemlabel->setGeometry( QRect( 370, 10, 50, 20 ) );
+ nelemlabel->setText( tr( "nelem" ) );
+ nelemlabel->setEnabled(false);
+
+ pixelsize = new QLineEdit( phantomRaysum, "pixelsize" );
+ pixelsize->setGeometry( QRect( 450, 30, 90, 28 ) );
+ pixelsize->setEnabled(false);
+
+ pixelsizelabel = new QLabel( phantomRaysum, "pixelsizelabel" );
+ pixelsizelabel->setGeometry( QRect( 460, 10, 70, 20 ) );
+ pixelsizelabel->setText( tr( "pixel_size" ) );
+ pixelsizelabel->setEnabled(false);
+
+ raysumlabel = new QLabel( phantomRaysum, "raysumlabel" );
+ raysumlabel->setGeometry( QRect( 10, 110, 90, 20 ) );
+ raysumlabel->setText( tr( "RAYSUM" ) );
+
+ raysumaveragebutton = new QRadioButton( phantomRaysum, "raysumaveragebutton" );
+ raysumaveragebutton->setGeometry( QRect( 130, 110, 110, 24 ) );
+ raysumaveragebutton->setText( tr( "AVERAGE" ) );
+ QObject::connect(raysumaveragebutton,SIGNAL(clicked()),this,SLOT(activateRaysumAverageFields()));
+ israysumaveragepresent=false;
+
+ nave2 = new QLineEdit( phantomRaysum, "nave2" );
+ nave2->setGeometry( QRect( 250, 100, 90, 28 ) );
+ nave2->setEnabled(false);
+
+ nave2label = new QLabel( phantomRaysum, "nave2label" );
+ nave2label->setGeometry( QRect( 270, 80, 50, 20 ) );
+ nave2label->setText( tr( "nave2" ) );
+ nave2label->setEnabled(false);
+
+ naper1 = new QLineEdit( phantomRaysum, "naper1" );
+ naper1->setGeometry( QRect( 20, 160, 70, 28 ) );
+ naper1->setEnabled(false);
+
+ naper1label = new QLabel( phantomRaysum, "naper1label" );
+ naper1label->setGeometry( QRect( 30, 140, 60, 20 ) );
+ naper1label->setText( tr( "naper1" ) );
+ naper1label->setEnabled(false);
+
+ naper2 = new QLineEdit( phantomRaysum, "naper2" );
+ naper2->setGeometry( QRect( 100, 160, 70, 28 ) );
+ naper2->setEnabled(false);
+
+ naper2label = new QLabel( phantomRaysum, "naper2label" );
+ naper2label->setGeometry( QRect( 110, 140, 50, 20 ) );
+ naper2label->setText( tr( "naper2" ) );
+ naper2label->setEnabled(false);
+
+ naper3 = new QLineEdit( phantomRaysum, "naper3" );
+ naper3->setGeometry( QRect( 180, 160, 70, 28 ) );
+ naper3->setEnabled(false);
+
+ naper3label = new QLabel( phantomRaysum, "naper3label" );
+ naper3label->setGeometry( QRect( 190, 140, 50, 20 ) );
+ naper3label->setText( tr( "naper3" ) );
+ naper3label->setEnabled(false);
+
+ naper4 = new QLineEdit( phantomRaysum, "naper4" );
+ naper4->setGeometry( QRect( 260, 160, 70, 28 ) );
+ naper4->setEnabled(false);
+
+ naper4label = new QLabel( phantomRaysum, "naper4label" );
+ naper4label->setGeometry( QRect( 270, 140, 50, 20 ) );
+ naper4label->setText( tr( "naper4" ) );
+ naper4label->setEnabled(false);
+
+ naper5 = new QLineEdit( phantomRaysum, "naper5" );
+ naper5->setGeometry( QRect( 340, 160, 70, 28 ) );
+ naper5->setEnabled(false);
+
+ naper5label = new QLabel( phantomRaysum, "naper5label" );
+ naper5label->setGeometry( QRect( 350, 140, 50, 20 ) );
+ naper5label->setText( tr( "naper5" ) );
+ naper5label->setEnabled(false);
+
+ naper6 = new QLineEdit( phantomRaysum, "naper6" );
+ naper6->setGeometry( QRect( 420, 160, 70, 28 ) );
+ naper6->setEnabled(false);
+
+ naper6label = new QLabel( phantomRaysum, "naper6label" );
+ naper6label->setGeometry( QRect( 430, 140, 50, 20 ) );
+ naper6label->setText( tr( "naper6" ) );
+ naper6label->setEnabled(false);
+
+ naper7 = new QLineEdit( phantomRaysum, "naper7" );
+ naper7->setGeometry( QRect( 500, 160, 70, 28 ) );
+ naper7->setEnabled(false);
+
+ naper7label = new QLabel( phantomRaysum, "naper7label" );
+ naper7label->setGeometry( QRect( 510, 140, 50, 20 ) );
+ naper7label->setText( tr( "naper7" ) );
+ naper7label->setEnabled(false);
+
+ naper8 = new QLineEdit( phantomRaysum, "naper8" );
+ naper8->setGeometry( QRect( 20, 220, 70, 28 ) );
+ naper8->setEnabled(false);
+
+ naper8label = new QLabel( phantomRaysum, "naper8label" );
+ naper8label->setGeometry( QRect( 30, 200, 50, 20 ) );
+ naper8label->setText( tr( "naper8" ) );
+ naper8label->setEnabled(false);
+
+ naper9 = new QLineEdit( phantomRaysum, "naper9" );
+ naper9->setGeometry( QRect( 100, 220, 70, 28 ) );
+ naper9->setEnabled(false);
+
+ naper9label = new QLabel( phantomRaysum, "naper9label" );
+ naper9label->setGeometry( QRect( 110, 200, 50, 20 ) );
+ naper9label->setText( tr( "naper9" ) );
+ naper9label->setEnabled(false);
+
+ naper10 = new QLineEdit( phantomRaysum, "naper10" );
+ naper10->setGeometry( QRect( 180, 220, 70, 28 ) );
+ naper10->setEnabled(false);
+
+ naper10label = new QLabel( phantomRaysum, "naper10label" );
+ naper10label->setGeometry( QRect( 185, 200, 60, 20 ) );
+ naper10label->setText( tr( "naper10" ) );
+ naper10label->setEnabled(false);
+
+ naper11 = new QLineEdit( phantomRaysum, "naper11" );
+ naper11->setGeometry( QRect( 260, 220, 70, 28 ) );
+ naper11->setEnabled(false);
+
+ naper11label = new QLabel( phantomRaysum, "naper11label" );
+ naper11label->setGeometry( QRect( 265, 200, 60, 20 ) );
+ naper11label->setText( tr( "naper11" ) );
+ naper11label->setEnabled(false);
+
+ naper12 = new QLineEdit( phantomRaysum, "naper12" );
+ naper12->setGeometry( QRect( 340, 220, 70, 28 ) );
+ naper12->setEnabled(false);
+
+ naper12label = new QLabel( phantomRaysum, "naper12label" );
+ naper12label->setGeometry( QRect( 345, 200, 60, 20 ) );
+ naper12label->setText( tr( "naper12" ) );
+ naper12label->setEnabled(false);
+
+ naper13 = new QLineEdit( phantomRaysum, "naper13" );
+ naper13->setGeometry( QRect( 420, 220, 70, 28 ) );
+ naper13->setEnabled(false);
+
+ naper13label = new QLabel( phantomRaysum, "naper13label" );
+ naper13label->setGeometry( QRect( 425, 200, 60, 20 ) );
+ naper13label->setText( tr( "naper13" ) );
+ naper13label->setEnabled(false);
+
+ tabwidget1->insertTab( phantomRaysum, tr( "Phantom/Raysum" ) );
+
+ /** Generates Tab number 4 - Geometry/Raysums */
+
+ geometryRaysums = new QWidget( tabwidget1, "geometryRaysums" );
+
+ geometrylabel = new QLabel( geometryRaysums, "geometrylabel" );
+ geometrylabel->setGeometry( QRect( 10, 20, 100, 20 ) );
+ geometrylabel->setText( tr( "GEOMETRY" ) );
+
+ geometrybuttongroup = new QButtonGroup( geometryRaysums, "geometrybuttongroup" );
+ // geometrybuttongroup->setGeometry( QRect( 120, 10, 570, 160 ) );
+ geometrybuttongroup->setGeometry( QRect( 120, 10, 570, 210 ) );
+ geometrybuttongroup->setTitle( tr( "" ) );
+ geometrybuttongroup->setEnabled(false);
+
+ parallelbutton = new QRadioButton( geometrybuttongroup, "parallelbutton" );
+ parallelbutton->setGeometry( QRect( 10, 20, 100, 24 ) );
+ parallelbutton->setText( tr( "PARALLEL" ) );
+ parallelbutton->setChecked(true);
+ QObject::connect(parallelbutton,SIGNAL(clicked()),this,SLOT(activateParallelFields()));
+
+ parallelbuttongroup = new QButtonGroup( geometrybuttongroup, "parallelbuttongroup" );
+ parallelbuttongroup->setGeometry( QRect( 130, 10, 120, 70 ) );
+ parallelbuttongroup->setTitle( tr( "" ) );
+ parallelbuttongroup->setEnabled(true);
+
+ uniformbutton = new QRadioButton( parallelbuttongroup, "uniformbutton" );
+ uniformbutton->setGeometry( QRect( 10, 10, 100, 24 ) );
+ uniformbutton->setText( tr( "UNIFORM" ) );
+ uniformbutton->setChecked(true);
+
+ variablebutton = new QRadioButton( parallelbuttongroup, "variablebutton" );
+ variablebutton->setGeometry( QRect( 10, 40, 100, 24 ) );
+ variablebutton->setText( tr( "VARIABLE" ) );
+
+ parallelbuttongroup2 = new QButtonGroup( geometrybuttongroup, "parallelbuttongroup2" );
+ parallelbuttongroup2->setGeometry( QRect( 260, 10, 90, 70 ) );
+ parallelbuttongroup2->setTitle( tr( "" ) );
+ parallelbuttongroup2->setEnabled(true);
+
+ stripbutton = new QRadioButton( parallelbuttongroup2, "stripbutton" );
+ stripbutton->setGeometry( QRect( 10, 10, 70, 24 ) );
+ stripbutton->setText( tr( "STRIP" ) );
+
+ linebutton = new QRadioButton( parallelbuttongroup2, "linebutton" );
+ linebutton->setGeometry( QRect( 10, 40, 70, 24 ) );
+ linebutton->setText( tr( "LINE" ) );
+ linebutton->setChecked(true);
+
+ divergentbutton = new QRadioButton( geometrybuttongroup, "divergentbutton" );
+ divergentbutton->setGeometry( QRect( 10, 100, 120, 24 ) );
+ divergentbutton->setText( tr( "DIVERGENT" ) );
+ QObject::connect(divergentbutton,SIGNAL(clicked()),this,SLOT(activateDivergentFields()));
+
+ divergentbuttongroup = new QButtonGroup( geometrybuttongroup, "divergentbuttongroup" );
+ divergentbuttongroup->setGeometry( QRect( 130, 80, 120, 70 ) );
+ divergentbuttongroup->setTitle( tr( "" ) );
+ divergentbuttongroup->setEnabled(false);
+
+ arcbutton = new QRadioButton( divergentbuttongroup, "arcbutton" );
+ arcbutton->setGeometry( QRect( 10, 10, 60, 24 ) );
+ arcbutton->setText( tr( "ARC" ) );
+
+ tangentbutton = new QRadioButton( divergentbuttongroup, "tangentbutton" );
+ tangentbutton->setGeometry( QRect( 10, 40, 100, 20 ) );
+ tangentbutton->setText( tr( "TANGENT" ) );
+
+ sourcetoorigin = new QLineEdit( geometrybuttongroup, "sourcetoorigin" );
+ sourcetoorigin->setGeometry( QRect( 260, 100, 140, 28 ) );
+ sourcetoorigin->setEnabled(false);
+
+ sourcetooriginlabel = new QLabel( geometrybuttongroup, "sourcetooriginlabel" );
+ sourcetooriginlabel->setGeometry( QRect( 270, 80, 120, 20 ) );
+ sourcetooriginlabel->setText( tr( "source_to_origin" ) );
+ sourcetooriginlabel->setEnabled(false);
+
+ sourcetodetector = new QLineEdit( geometrybuttongroup, "sourcetodetector" );
+ sourcetodetector->setGeometry( QRect( 410, 100, 140, 28 ) );
+ sourcetodetector->setEnabled(false);
+
+ sourcetodetectorlabel = new QLabel( geometrybuttongroup, "sourcetodetectorlabel" );
+ sourcetodetectorlabel->setGeometry( QRect( 410, 80, 140, 20 ) );
+ sourcetodetectorlabel->setText( tr( "source_to_detector" ) );
+ sourcetodetectorlabel->setEnabled(false);
+
+ linogrambutton = new QRadioButton( geometrybuttongroup, "divergentbutton" );
+ linogrambutton->setGeometry( QRect( 10, 180, 120, 24 ) );
+ linogrambutton->setText( tr( "LINOGRAM" ) );
+ QObject::connect(linogrambutton,SIGNAL(clicked()),this,SLOT(activateLinogramFields()));
+
+ raysumslabel = new QLabel( geometryRaysums, "raysumslabel" );
+ // raysumslabel->setGeometry( QRect( 10, 180, 90, 20 ) );
+ raysumslabel->setGeometry( QRect( 10, 230, 90, 20 ) );
+ raysumslabel->setText( tr( "RAYSUMS" ) );
+
+ raysumsbuttongroup = new QButtonGroup( geometryRaysums, "raysumsbuttongroup" );
+ // raysumsbuttongroup->setGeometry( QRect( 120, 180, 570, 120 ) );
+ raysumsbuttongroup->setGeometry( QRect( 120, 230, 570, 120 ) );
+ raysumsbuttongroup->setTitle( tr( "" ) );
+ raysumsbuttongroup->setEnabled(false);
+
+ userbutton = new QRadioButton( raysumsbuttongroup, "userbutton" );
+ userbutton->setGeometry( QRect( 10, 40, 70, 24 ) );
+ userbutton->setText( tr( "USER" ) );
+ userbutton->setChecked(true);
+ QObject::connect(userbutton,SIGNAL(clicked()),this,SLOT(activateUserFields()));
+
+ userrays = new QLineEdit( raysumsbuttongroup, "userrays" );
+ userrays->setGeometry( QRect( 130, 30, 90, 28 ) );
+ userrays->setEnabled(true);
+
+ userrayslabel = new QLabel( raysumsbuttongroup, "userrayslabel" );
+ userrayslabel->setGeometry( QRect( 140, 10, 70, 20 ) );
+ userrayslabel->setText( tr( "user_rays" ) );
+ userrayslabel->setEnabled(true);
+
+ programbutton = new QRadioButton( raysumsbuttongroup, "programbutton" );
+ programbutton->setGeometry( QRect( 10, 90, 110, 24 ) );
+ programbutton->setText( tr( "PROGRAM" ) );
+ QObject::connect(programbutton,SIGNAL(clicked()),this,SLOT(activateProgramFields()));
+
+ raysumsnelem = new QLineEdit( raysumsbuttongroup, "raysumsnelem" );
+ raysumsnelem->setGeometry( QRect( 130, 80, 90, 28 ) );
+ raysumsnelem->setEnabled(false);
+
+ raysumsnelemlabel = new QLabel( raysumsbuttongroup, "raysumsnelemlabel" );
+ raysumsnelemlabel->setGeometry( QRect( 150, 60, 50, 20 ) );
+ raysumsnelemlabel->setText( tr( "nelem" ) );
+ raysumsnelemlabel->setEnabled(false);
+
+ raysumspixelsize = new QLineEdit( raysumsbuttongroup, "raysumspixelsize" );
+ raysumspixelsize->setGeometry( QRect( 240, 80, 90, 28 ) );
+ raysumspixelsize->setEnabled(false);
+
+ raysumspixelsizelabel = new QLabel( raysumsbuttongroup, "raysumspixelsizelabel" );
+ raysumspixelsizelabel->setGeometry( QRect( 250, 60, 70, 20 ) );
+ raysumspixelsizelabel->setText( tr( "pixel_size" ) );
+ raysumspixelsizelabel->setEnabled(false);
+
+ detectorspacing = new QLineEdit( raysumsbuttongroup, "detectorspacing" );
+ detectorspacing->setGeometry( QRect( 370, 50, 140, 28 ) );
+
+ detectorspacinglabel = new QLabel( raysumsbuttongroup, "detectorspacinglabel" );
+ detectorspacinglabel->setGeometry( QRect( 380, 30, 130, 20 ) );
+ detectorspacinglabel->setText( tr( "detector_spacing" ) );
+
+ angleslabel = new QLabel( geometryRaysums, "angleslabel" );
+ // angleslabel->setGeometry( QRect( 8, 310, 70, 20 ) );
+ angleslabel->setGeometry( QRect( 10, 360, 70, 20 ) );
+ angleslabel->setText( tr( "ANGLES" ) );
+
+ anglesbuttongroup = new QButtonGroup( geometryRaysums, "anglesbuttongroup" );
+ // anglesbuttongroup->setGeometry( QRect( 120, 310, 570, 100 ) );
+ anglesbuttongroup->setGeometry( QRect( 120, 360, 570, 100 ) );
+ anglesbuttongroup->setTitle( tr( "" ) );
+ anglesbuttongroup->setEnabled(false);
+
+ prjnum = new QLineEdit( anglesbuttongroup, "prjnum" );
+ prjnum->setGeometry( QRect( 17, 40, 120, 28 ) );
+
+ prjnumlabel = new QLabel( anglesbuttongroup, "prjnumlabel" );
+ prjnumlabel->setGeometry( QRect( 50, 20, 50, 20 ) );
+ prjnumlabel->setText( tr( "prjnum" ) );
+
+// linobutton = new QRadioButton( anglesbuttongroup, "linobutton" );
+// linobutton->setGeometry( QRect( 160, 10, 60, 24 ) );
+// linobutton->setText( tr( "LINO" ) );
+// QObject::connect(linobutton,SIGNAL(clicked()),this,SLOT(deactivateEqualSpacingFields()));
+
+ equalspacingbutton = new QRadioButton( anglesbuttongroup, "equalspacingbutton" );
+ equalspacingbutton->setGeometry( QRect( 160, 40, 160, 24 ) );
+ equalspacingbutton->setText( tr( "EQUAL SPACING" ) );
+ QObject::connect(equalspacingbutton,SIGNAL(clicked()),this,SLOT(activateEqualSpacingFields()));
+
+ nonebutton = new QRadioButton( anglesbuttongroup, "nonebutton" );
+ nonebutton->setGeometry( QRect( 160, 70, 70, 24 ) );
+ nonebutton->setText( tr( "NONE" ) );
+ nonebutton->setChecked(true);
+ QObject::connect(nonebutton,SIGNAL(clicked()),this,SLOT(deactivateEqualSpacingFields()));
+
+ firstangle = new QLineEdit( anglesbuttongroup, "firstangle" );
+ firstangle->setGeometry( QRect( 340, 40, 80, 28 ) );
+ firstangle->setEnabled(false);
+
+ firstanglelabel = new QLabel( anglesbuttongroup, "firstanglelabel" );
+ firstanglelabel->setGeometry( QRect( 345, 20, 80, 20 ) );
+ firstanglelabel->setText( tr( "first_angle" ) );
+ firstanglelabel->setEnabled(false);
+
+ lastangle = new QLineEdit( anglesbuttongroup, "lastangle" );
+ lastangle->setGeometry( QRect( 440, 40, 80, 28 ) );
+ lastangle->setEnabled(false);
+
+ lastanglelabel = new QLabel( anglesbuttongroup, "lastanglelabel" );
+ lastanglelabel->setGeometry( QRect( 445, 20, 80, 20 ) );
+ lastanglelabel->setText( tr( "last_angle" ) );
+ lastanglelabel->setEnabled(false);
+
+ // angles = new QMultiLineEdit( geometryRaysums, "angles" );
+ angles = new QLineEdit( geometryRaysums, "angles" );
+ // angles->setGeometry( QRect( 120, 415, 570, 105 ) );
+ angles->setGeometry( QRect( 120, 465, 570, 55 ) );
+ angles->setEnabled(false);
+
+ tabwidget1->insertTab( geometryRaysums, tr( "Geometry/Raysums" ) );
+
+ /** Generates Tab number 5 - Measurement/Run */
+
+ measurementRun = new QWidget( tabwidget1, "measurementRun" );
+
+ measurementlabel = new QLabel( measurementRun, "measurementlabel" );
+ measurementlabel->setGeometry( QRect( 10, 20, 130, 20 ) );
+ measurementlabel->setText( tr( "MEASUREMENT" ) );
+
+ measurementbuttongroup = new QButtonGroup( measurementRun, "measurementbuttongroup" );
+ measurementbuttongroup->setGeometry( QRect( 20, 50, 710, 410 ) );
+ measurementbuttongroup->setTitle( tr( "" ) );
+ measurementbuttongroup->setEnabled(false);
+
+ perfectbutton = new QRadioButton( measurementbuttongroup, "perfectbutton" );
+ perfectbutton->setGeometry( QRect( 10, 10, 100, 24 ) );
+ perfectbutton->setText( tr( "PERFECT" ) );
+ perfectbutton->setChecked(true);
+ QObject::connect(perfectbutton,SIGNAL(clicked()),this,SLOT(deactivateNoisyFields()));
+
+ noisybutton = new QRadioButton( measurementbuttongroup, "noisybutton" );
+ noisybutton->setGeometry( QRect( 10, 40, 70, 24 ) );
+ noisybutton->setText( tr( "NOISY" ) );
+ QObject::connect(noisybutton,SIGNAL(clicked()),this,SLOT(activateNoisyFields()));
+
+ noisyframe = new QFrame( measurementbuttongroup, "noisyframe" );
+ noisyframe->setGeometry( QRect( 90, 40, 570, 250 ) );
+ noisyframe->setFrameStyle( 49 );
+ noisyframe->setEnabled(false);
+
+ quantumbutton = new QCheckBox( noisyframe, "quantumbutton" );
+ quantumbutton->setGeometry( QRect( 20, 30, 110, 24 ) );
+ quantumbutton->setText( tr( "QUANTUM" ) );
+ quantumbutton->setEnabled(false);
+ QObject::connect(quantumbutton,SIGNAL(clicked()),this,SLOT(activateQuantumFields()));
+
+ quanmn = new QLineEdit( noisyframe, "quanmn" );
+ quanmn->setGeometry( QRect( 180, 30, 80, 28 ) );
+ quanmn->setEnabled(false);
+
+ quanmnlabel = new QLabel( noisyframe, "quanmnlabel" );
+ quanmnlabel->setGeometry( QRect( 190, 10, 60, 20 ) );
+ quanmnlabel->setText( tr( "quanmn" ) );
+ quanmnlabel->setEnabled(false);
+
+ quancm = new QLineEdit( noisyframe, "quancm" );
+ quancm->setGeometry( QRect( 270, 30, 80, 28 ) );
+ quancm->setEnabled(false);
+
+ quancmlabel = new QLabel( noisyframe, "quancmlabel" );
+ quancmlabel->setGeometry( QRect( 280, 10, 60, 20 ) );
+ quancmlabel->setText( tr( "quancm" ) );
+ quancmlabel->setEnabled(false);
+
+ calibrationlabel = new QLabel( noisyframe, "calibrationlabel" );
+ calibrationlabel->setGeometry( QRect( 360, 30, 110, 20 ) );
+ calibrationlabel->setText( tr( "CALIBRATION" ) );
+ calibrationlabel->setEnabled(false);
+
+ quanin = new QComboBox( noisyframe, "quanin" );
+ quanin->setGeometry( QRect( 480, 30, 80, 28 ) );
+ quanin->insertItem("1",-1);
+ quanin->insertItem("2",-1);
+ quanin->insertItem("3",-1);
+ quanin->insertItem("4",-1);
+ quanin->setEnabled(false);
+
+ quaninlabel = new QLabel( noisyframe, "quaninlabel" );
+ quaninlabel->setGeometry( QRect( 490, 10, 50, 20 ) );
+ quaninlabel->setText( tr( "quanin" ) );
+ quaninlabel->setEnabled(false);
+
+ scatterbutton = new QCheckBox( noisyframe, "scatterbutton" );
+ scatterbutton->setGeometry( QRect( 20, 90, 100, 24 ) );
+ scatterbutton->setText( tr( "SCATTER" ) );
+ QObject::connect(scatterbutton,SIGNAL(clicked()),this,SLOT(activateScatterFields()));
+
+ sctnpk = new QLineEdit( noisyframe, "sctnpk" );
+ sctnpk->setGeometry( QRect( 180, 90, 80, 28 ) );
+ sctnpk->setEnabled(false);
+
+ sctnpklabel = new QLabel( noisyframe, "sctnpklabel" );
+ sctnpklabel->setGeometry( QRect( 190, 70, 50, 20 ) );
+ sctnpklabel->setText( tr( "sctnpk" ) );
+ sctnpklabel->setEnabled(false);
+
+ sctnwd = new QLineEdit( noisyframe, "sctnwd" );
+ sctnwd->setGeometry( QRect( 270, 90, 80, 28 ) );
+ sctnwd->setEnabled(false);
+
+ sctnwdlabel = new QLabel( noisyframe, "sctnwdlabel" );
+ sctnwdlabel->setGeometry( QRect( 280, 70, 60, 20 ) );
+ sctnwdlabel->setText( tr( "sctnwd" ) );
+ sctnwdlabel->setEnabled(false);
+
+ additivebutton = new QCheckBox( noisyframe, "additivebutton" );
+ additivebutton->setGeometry( QRect( 20, 150, 90, 24 ) );
+ additivebutton->setText( tr( "ADDITIVE" ) );
+ additivebutton->setChecked(false);
+ QObject::connect(additivebutton,SIGNAL(clicked()),this,SLOT(activateAdditiveFields()));
+
+ addnmn = new QLineEdit( noisyframe, "addnmn" );
+ addnmn->setGeometry( QRect( 180, 150, 80, 28 ) );
+ addnmn->setEnabled(false);
+
+ addnmnlabel = new QLabel( noisyframe, "addnmnlabel" );
+ addnmnlabel->setGeometry( QRect( 190, 130, 60, 20 ) );
+ addnmnlabel->setText( tr( "addnmn" ) );
+ addnmnlabel->setEnabled(false);
+
+ addnsd = new QLineEdit( noisyframe, "addnsd" );
+ addnsd->setGeometry( QRect( 270, 150, 80, 28 ) );
+ addnsd->setEnabled(false);
+
+ addnsdlabel = new QLabel( noisyframe, "addnsdlabel" );
+ addnsdlabel->setGeometry( QRect( 280, 130, 60, 20 ) );
+ addnsdlabel->setText( tr( "addnsd" ) );
+ addnsdlabel->setEnabled(false);
+
+ multiplicativebutton = new QCheckBox( noisyframe, "multiplicativebutton" );
+ multiplicativebutton->setGeometry( QRect( 20, 210, 150, 24 ) );
+ multiplicativebutton->setText( tr( "MULTIPLICATIVE" ) );
+ QObject::connect(multiplicativebutton,SIGNAL(clicked()),this,SLOT(activateMultiplicativeFields()));
+
+ multnmn = new QLineEdit( noisyframe, "multnmn" );
+ multnmn->setGeometry( QRect( 180, 210, 80, 28 ) );
+ multnmn->setEnabled(false);
+
+ multnmnlabel = new QLabel( noisyframe, "multnmnlabel" );
+ multnmnlabel->setGeometry( QRect( 190, 190, 70, 20 ) );
+ multnmnlabel->setText( tr( "multnmn" ) );
+ multnmnlabel->setEnabled(false);
+
+ multnsd = new QLineEdit( noisyframe, "multnsd" );
+ multnsd->setGeometry( QRect( 270, 210, 80, 28 ) );
+ multnsd->setEnabled(false);
+
+ multnsdlabel = new QLabel( noisyframe, "multnsdlabel" );
+ multnsdlabel->setGeometry( QRect( 280, 190, 70, 20 ) );
+ multnsdlabel->setText( tr( "multnsd" ) );
+ multnsdlabel->setEnabled(false);
+
+ seedlabel = new QLabel( measurementbuttongroup, "seedlabel" );
+ seedlabel->setGeometry( QRect( 10, 310, 110, 20 ) );
+ seedlabel->setText( tr( "SEED" ) );
+ seedlabel->setEnabled(false);
+
+ seed = new QLineEdit( measurementbuttongroup, "seed" );
+ seed->setGeometry( QRect( 140, 310, 70, 28 ) );
+ seed->setEnabled(false);
+
+ seedlabel1 = new QLabel( measurementbuttongroup, "seedlabel1" );
+ seedlabel1->setGeometry( QRect( 155, 290, 70, 20 ) );
+ seedlabel1->setText( tr( "seed" ) );
+ seedlabel1->setEnabled(false);
+
+ backgroundlabel = new QLabel( measurementbuttongroup, "backgroundlabel" );
+ backgroundlabel->setGeometry( QRect( 10, 370, 120, 20 ) );
+ backgroundlabel->setText( tr( "BACKGROUND" ) );
+
+ backgr1 = new QLineEdit( measurementbuttongroup, "backgr1" );
+ backgr1->setGeometry( QRect( 140, 370, 70, 28 ) );
+
+ backgr1label = new QLabel( measurementbuttongroup, "backgr1label" );
+ backgr1label->setGeometry( QRect( 145, 350, 70, 20 ) );
+ backgr1label->setText( tr( "backgr(1)" ) );
+
+ backgr2 = new QLineEdit( measurementbuttongroup, "backgr2" );
+ backgr2->setGeometry( QRect( 220, 370, 70, 28 ) );
+ backgr2->setEnabled(false);
+
+ backgr2label = new QLabel( measurementbuttongroup, "backgr2label" );
+ backgr2label->setGeometry( QRect( 225, 350, 70, 20 ) );
+ backgr2label->setText( tr( "backgr(2)" ) );
+ backgr2label->setEnabled(false);
+
+ backgr3 = new QLineEdit( measurementbuttongroup, "backgr3" );
+ backgr3->setGeometry( QRect( 300, 370, 70, 28 ) );
+ backgr3->setEnabled(false);
+
+ backgr3label = new QLabel( measurementbuttongroup, "backgr3label" );
+ backgr3label->setGeometry( QRect( 305, 350, 70, 20 ) );
+ backgr3label->setText( tr( "backgr(3)" ) );
+ backgr3label->setEnabled(false);
+
+ backgr4 = new QLineEdit( measurementbuttongroup, "backgr4" );
+ backgr4->setGeometry( QRect( 380, 370, 70, 28 ) );
+ backgr4->setEnabled(false);
+
+ backgr4label = new QLabel( measurementbuttongroup, "backgr4label" );
+ backgr4label->setGeometry( QRect( 385, 350, 70, 20 ) );
+ backgr4label->setText( tr( "backgr(4)" ) );
+ backgr4label->setEnabled(false);
+
+ backgr5 = new QLineEdit( measurementbuttongroup, "backgr5" );
+ backgr5->setGeometry( QRect( 460, 370, 70, 28 ) );
+ backgr5->setEnabled(false);
+
+ backgr5label = new QLabel( measurementbuttongroup, "backgr5label" );
+ backgr5label->setGeometry( QRect( 465, 350, 70, 20 ) );
+ backgr5label->setText( tr( "backgr(5)" ) );
+ backgr5label->setEnabled(false);
+
+ backgr6 = new QLineEdit( measurementbuttongroup, "backgr6" );
+ backgr6->setGeometry( QRect( 540, 370, 70, 28 ) );
+ backgr6->setEnabled(false);
+
+ backgr6label = new QLabel( measurementbuttongroup, "backgr6label" );
+ backgr6label->setGeometry( QRect( 545, 350, 70, 20 ) );
+ backgr6label->setText( tr( "backgr(6)" ) );
+ backgr6label->setEnabled(false);
+
+ backgr7 = new QLineEdit( measurementbuttongroup, "backgr7" );
+ backgr7->setGeometry( QRect( 620, 370, 70, 28 ) );
+ backgr7->setEnabled(false);
+
+ backgr7label = new QLabel( measurementbuttongroup, "backgr7label" );
+ backgr7label->setGeometry( QRect( 625, 350, 70, 20 ) );
+ backgr7label->setText( tr( "backgr(7)" ) );
+ backgr7label->setEnabled(false);
+
+ // jk 06/14/08 removal of file12 changes
+ /*runlabel = new QLabel( measurementRun, "runlabel" );
+ runlabel->setGeometry( QRect( 10, 490, 40, 20 ) );
+ runlabel->setText( tr( "RUN" ) );
+
+ runbuttongroup = new QButtonGroup( measurementRun, "runbuttongroup" );
+ //runbuttongroup->setGeometry( QRect( 80, 480, 320, 40 ) );
+ runbuttongroup->setGeometry( QRect( 80, 480, 120, 40 ) );
+ runbuttongroup->setTitle( tr( "" ) );
+ runbuttongroup->setEnabled(false);
+ */
+ /*savebutton = new QRadioButton( runbuttongroup, "savebutton" );
+ savebutton->setGeometry( QRect( 10, 10, 60, 24 ) );
+ savebutton->setText( tr( "SAVE" ) );
+
+ modifybutton = new QRadioButton( runbuttongroup, "modifybutton" );
+ modifybutton->setGeometry( QRect( 110, 10, 80, 24 ) );
+ modifybutton->setText( tr( "MODIFY" ) );
+ */
+ /*nonebutton_2 = new QRadioButton( runbuttongroup, "nonebutton_2" );
+ //nonebutton_2->setGeometry( QRect( 230, 10, 70, 24 ) );
+ nonebutton_2->setGeometry( QRect( 10, 10, 70, 24 ) );
+ nonebutton_2->setText( tr( "NONE" ) );
+ nonebutton_2->setChecked(true);
+ */
+ tabwidget1->insertTab( measurementRun, tr( "Measurement/Run" ) );
+ QObject::connect(tabwidget1,SIGNAL(currentChanged(QWidget*)),this,SLOT(activateOKButton()));
+
+ okbutton = new QPushButton( this, "okbutton" );
+ okbutton->setGeometry( QRect( 100, 560, 100, 40 ) );
+ okbutton->setText( tr( "OK" ) );
+ QObject::connect(okbutton,SIGNAL(clicked()),this,SLOT(checkValues()));
+ okbutton->setEnabled(false);
+
+ cancelbutton = new QPushButton( this, "cancelbutton" );
+ cancelbutton->setGeometry( QRect( 510, 560, 100, 40 ) );
+ cancelbutton->setText( tr( "Cancel" ) );
+ QObject::connect(cancelbutton,SIGNAL(clicked()),this,SLOT(reject()));
+
+}
+
+/**
+ * Destroys the object and frees any allocated resources
+ */
+createwindow::~createwindow()
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+
+/** Activates monochromatic fields and deactivates polychromatic fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activateMonochromaticFields()
+{
+ if(monochromaticbutton->isChecked()) {
+ energy->setEnabled(true);
+ energylabel->setEnabled(true);
+ nergy->setEnabled(false);
+ nergylabel->setEnabled(false);
+ energy1->setEnabled(false);
+ energy1label->setEnabled(false);
+ percent1->setEnabled(false);
+ percent1label->setEnabled(false);
+ energy2->setEnabled(false);
+ energy2label->setEnabled(false);
+ percent2->setEnabled(false);
+ percent2label->setEnabled(false);
+ energy3->setEnabled(false);
+ energy3label->setEnabled(false);
+ percent3->setEnabled(false);
+ percent3label->setEnabled(false);
+ energy4->setEnabled(false);
+ energy4label->setEnabled(false);
+ percent4->setEnabled(false);
+ percent4label->setEnabled(false);
+ energy5->setEnabled(false);
+ energy5label->setEnabled(false);
+ percent5->setEnabled(false);
+ percent5label->setEnabled(false);
+ energy6->setEnabled(false);
+ energy6label->setEnabled(false);
+ percent6->setEnabled(false);
+ percent6label->setEnabled(false);
+ energy7->setEnabled(false);
+ energy7label->setEnabled(false);
+ percent7->setEnabled(false);
+ percent7label->setEnabled(false);
+ deni->setEnabled(false);
+ denilabel->setEnabled(false);
+ backgr2->setEnabled(false);
+ backgr2label->setEnabled(false);
+ backgr3->setEnabled(false);
+ backgr3label->setEnabled(false);
+ backgr4->setEnabled(false);
+ backgr4label->setEnabled(false);
+ backgr5->setEnabled(false);
+ backgr5label->setEnabled(false);
+ backgr6->setEnabled(false);
+ backgr6label->setEnabled(false);
+ backgr7->setEnabled(false);
+ backgr7label->setEnabled(false);
+ activateOKButton();
+ }
+ else {
+ energy->setEnabled(false);
+ energylabel->setEnabled(false);
+ activateOKButton();
+ }
+}
+
+/** Activates polychromatic fields and deactivates monochromatic fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activatePolychromaticFields()
+{
+ if(polychromaticbutton->isChecked()) {
+ nergy->setEnabled(true);
+ nergylabel->setEnabled(true);
+ energy1->setEnabled(true);
+ energy1label->setEnabled(true);
+ percent1->setEnabled(true);
+ percent1label->setEnabled(true);
+ energy2->setEnabled(true);
+ energy2label->setEnabled(true);
+ percent2->setEnabled(true);
+ percent2label->setEnabled(true);
+ energy3->setEnabled(true);
+ energy3label->setEnabled(true);
+ percent3->setEnabled(true);
+ percent3label->setEnabled(true);
+ energy4->setEnabled(true);
+ energy4label->setEnabled(true);
+ percent4->setEnabled(true);
+ percent4label->setEnabled(true);
+ energy5->setEnabled(true);
+ energy5label->setEnabled(true);
+ percent5->setEnabled(true);
+ percent5label->setEnabled(true);
+ energy6->setEnabled(true);
+ energy6label->setEnabled(true);
+ percent6->setEnabled(true);
+ percent6label->setEnabled(true);
+ energy7->setEnabled(true);
+ energy7label->setEnabled(true);
+ percent7->setEnabled(true);
+ percent7label->setEnabled(true);
+ deni->setEnabled(true);
+ denilabel->setEnabled(true);
+ backgr2->setEnabled(true);
+ backgr2label->setEnabled(true);
+ backgr3->setEnabled(true);
+ backgr3label->setEnabled(true);
+ backgr4->setEnabled(true);
+ backgr4label->setEnabled(true);
+ backgr5->setEnabled(true);
+ backgr5label->setEnabled(true);
+ backgr6->setEnabled(true);
+ backgr6label->setEnabled(true);
+ backgr7->setEnabled(true);
+ backgr7label->setEnabled(true);
+ energy->setEnabled(false);
+ energylabel->setEnabled(false);
+ activateOKButton();
+ }
+ else {
+ nergy->setEnabled(false);
+ nergylabel->setEnabled(false);
+ energy1->setEnabled(false);
+ energy1label->setEnabled(false);
+ percent1->setEnabled(false);
+ percent1label->setEnabled(false);
+ energy2->setEnabled(false);
+ energy2label->setEnabled(false);
+ percent2->setEnabled(false);
+ percent2label->setEnabled(false);
+ energy3->setEnabled(false);
+ energy3label->setEnabled(false);
+ percent3->setEnabled(false);
+ percent3label->setEnabled(false);
+ energy4->setEnabled(false);
+ energy4label->setEnabled(false);
+ percent4->setEnabled(false);
+ percent4label->setEnabled(false);
+ energy5->setEnabled(false);
+ energy5label->setEnabled(false);
+ percent5->setEnabled(false);
+ percent5label->setEnabled(false);
+ energy6->setEnabled(false);
+ energy6label->setEnabled(false);
+ percent6->setEnabled(false);
+ percent6label->setEnabled(false);
+ energy7->setEnabled(false);
+ energy7label->setEnabled(false);
+ percent7->setEnabled(false);
+ percent7label->setEnabled(false);
+ activateOKButton();
+ }
+}
+
+/** Adds a shape to object description
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::addShape()
+{
+ float ft;
+ int f=0;
+ QString ts;
+ QString ts2;
+
+ switch(shape->currentItem()) {
+ case 0:ts.append("RECT ");break;
+ case 1:ts.append("ELIP ");break;
+ case 2:ts.append("TRIA ");break;
+ case 3:ts.append("SEGM ");break;
+ case 4:ts.append("SECT ");break;
+ }
+ ft=strtof((const char *)cx->text().lower());
+ if(errnum)
+ f=1;
+ ft=strtof((const char *)cy->text().lower());
+ if(errnum)
+ f=2;
+ ft=strtof((const char *)u->text().lower());
+ if(errnum)
+ f=3;
+ ft=strtof((const char *)v->text().lower());
+ if(errnum)
+ f=4;
+ ft=strtof((const char *)ang->text().lower());
+ if(errnum)
+ f=5;
+ ft=strtof((const char *)den1->text().lower());
+ if(errnum)
+ f=6;
+ switch(f) {
+ case 0: ts.append(cx->text());
+ ts.append(" ");
+ ts.append(cy->text());
+ ts.append(" ");
+ ts.append(u->text());
+ ts.append(" ");
+ ts.append(v->text());
+ ts.append(" ");
+ ts.append(ang->text());
+ ts.append(" ");
+ ts.append(den1->text());
+ objectsdescription->insertLine(ts,-1);
+ ft=strtof((const char *)deni->text().lower());
+ if((errnum!=2) && (polychromaticbutton->isChecked())) {
+ ts2.append("DENS ");
+ ts2.append(deni->text());
+ // objectsdescription->insertLine(deni->text(),-1);
+ objectsdescription->insertLine(ts2,-1);
+ }
+ cx->setText("");
+ cy->setText("");
+ u->setText("");
+ v->setText("");
+ ang->setText("");
+ den1->setText("");
+ deni->setText("");
+ break;
+ case 1: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid cx format.");
+ cx->setFocus();
+ break;
+ case 2: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid cy format.");
+ cy->setFocus();
+ break;
+ case 3: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid u format.");
+ u->setFocus();
+ break;
+ case 4: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid v format.");
+ v->setFocus();
+ break;
+ case 5: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid ang format.");
+ ang->setFocus();
+ break;
+ case 6: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid den(1) format.");
+ ang->setFocus();
+ break;
+ }
+ activateOKButton();
+}
+
+/** Activates phantom average fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activatePhantomAverageFields()
+{
+ if(phantomaveragebutton->isChecked()) {
+ nave1->setEnabled(true);
+ nave1label->setEnabled(true);
+ nelem->setEnabled(true);
+ nelemlabel->setEnabled(true);
+ pixelsize->setEnabled(true);
+ pixelsizelabel->setEnabled(true);
+ activateOKButton();
+ }
+ else {
+ nave1->setEnabled(false);
+ nave1label->setEnabled(false);
+ nelem->setEnabled(false);
+ nelemlabel->setEnabled(false);
+ pixelsize->setEnabled(false);
+ pixelsizelabel->setEnabled(false);
+ activateOKButton();
+ }
+}
+
+
+/** Activates raysum average fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activateRaysumAverageFields()
+{
+ if(raysumaveragebutton->isChecked()) {
+ nave2->setEnabled(true);
+ nave2label->setEnabled(true);
+ naper1->setEnabled(true);
+ naper1label->setEnabled(true);
+ naper2->setEnabled(true);
+ naper2label->setEnabled(true);
+ naper3->setEnabled(true);
+ naper3label->setEnabled(true);
+ naper4->setEnabled(true);
+ naper4label->setEnabled(true);
+ naper5->setEnabled(true);
+ naper5label->setEnabled(true);
+ naper6->setEnabled(true);
+ naper6label->setEnabled(true);
+ naper7->setEnabled(true);
+ naper7label->setEnabled(true);
+ naper8->setEnabled(true);
+ naper8label->setEnabled(true);
+ naper9->setEnabled(true);
+ naper9label->setEnabled(true);
+ naper10->setEnabled(true);
+ naper10label->setEnabled(true);
+ naper11->setEnabled(true);
+ naper11label->setEnabled(true);
+ naper12->setEnabled(true);
+ naper12label->setEnabled(true);
+ naper13->setEnabled(true);
+ naper13label->setEnabled(true);
+ geometrybuttongroup->setEnabled(true);
+ if(! (linogrambutton->isChecked()) ) { // a little caveat
+ raysumsbuttongroup->setEnabled(true);
+ anglesbuttongroup->setEnabled(true);
+ angles->setEnabled(true);
+ }
+ measurementbuttongroup->setEnabled(true);
+ //runbuttongroup->setEnabled(true);
+ israysumaveragepresent=true;
+ activateOKButton();
+ }
+ else {
+ nave2->setEnabled(false);
+ nave2label->setEnabled(false);
+ naper1->setEnabled(false);
+ naper1label->setEnabled(false);
+ naper2->setEnabled(false);
+ naper2label->setEnabled(false);
+ naper3->setEnabled(false);
+ naper3label->setEnabled(false);
+ naper4->setEnabled(false);
+ naper4label->setEnabled(false);
+ naper5->setEnabled(false);
+ naper5label->setEnabled(false);
+ naper6->setEnabled(false);
+ naper6label->setEnabled(false);
+ naper7->setEnabled(false);
+ naper7label->setEnabled(false);
+ naper8->setEnabled(false);
+ naper8label->setEnabled(false);
+ naper9->setEnabled(false);
+ naper9label->setEnabled(false);
+ naper10->setEnabled(false);
+ naper10label->setEnabled(false);
+ naper11->setEnabled(false);
+ naper11label->setEnabled(false);
+ naper12->setEnabled(false);
+ naper12label->setEnabled(false);
+ naper13->setEnabled(false);
+ naper13label->setEnabled(false);
+ geometrybuttongroup->setEnabled(false);
+ raysumsbuttongroup->setEnabled(false);
+ anglesbuttongroup->setEnabled(false);
+ angles->setEnabled(false);
+ measurementbuttongroup->setEnabled(false);
+ //runbuttongroup->setEnabled(false);
+ israysumaveragepresent=false;
+ activateOKButton();
+ }
+}
+
+
+bool createwindow::isRaysumAveragePresent()
+{
+ return israysumaveragepresent;
+}
+
+
+/** Activates parallel fields and deactivates divergent fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activateParallelFields()
+{
+ if(parallelbutton->isChecked()) {
+ parallelbuttongroup->setEnabled(true);
+ parallelbuttongroup2->setEnabled(true);
+ divergentbuttongroup->setEnabled(false);
+ sourcetoorigin->setEnabled(false);
+ sourcetooriginlabel->setEnabled(false);
+ sourcetodetector->setEnabled(false);
+ sourcetodetectorlabel->setEnabled(false);
+ activate__6_3__6_4__6_5( true );
+ activateOKButton();
+ }
+ else {
+ parallelbuttongroup->setEnabled(false);
+ parallelbuttongroup2->setEnabled(false);
+ activateOKButton();
+ }
+}
+
+/** Activates divergent fields and deactivates parallel fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activateDivergentFields()
+{
+ if(divergentbutton->isChecked()) {
+ divergentbuttongroup->setEnabled(true);
+ sourcetoorigin->setEnabled(true);
+ sourcetooriginlabel->setEnabled(true);
+ sourcetodetector->setEnabled(true);
+ sourcetodetectorlabel->setEnabled(true);
+ parallelbuttongroup->setEnabled(false);
+ parallelbuttongroup2->setEnabled(false);
+ activate__6_3__6_4__6_5( true );
+ activateOKButton();
+ }
+ else {
+ divergentbuttongroup->setEnabled(false);
+ sourcetoorigin->setEnabled(false);
+ sourcetooriginlabel->setEnabled(false);
+ sourcetodetector->setEnabled(false);
+ sourcetodetectorlabel->setEnabled(false);
+ activateOKButton();
+ }
+} // --createwindow::activateDivergentFields()
+
+/** @author deniz
+ @param enable, if false, will turn these off, on if true */
+void createwindow::activate__6_3__6_4__6_5(bool enable) {
+ raysumsbuttongroup->setEnabled ( enable );
+ anglesbuttongroup->setEnabled ( enable );
+ angles->setEnabled( enable );
+}
+
+/** Deactivates divergent fields as well as parallel fields
+ also deactivates everything below LINOGRAM
+ @author Deniz Sarioz
+*/
+void createwindow::activateLinogramFields() {
+ if(linogrambutton->isChecked()) {
+ parallelbuttongroup->setEnabled(false); // hate on parallel
+ parallelbuttongroup2->setEnabled(false);
+
+ divergentbuttongroup->setEnabled(false); // hate on divergent
+ sourcetoorigin->setEnabled(false);
+ sourcetooriginlabel->setEnabled(false);
+ sourcetodetector->setEnabled(false);
+ sourcetodetectorlabel->setEnabled(false);
+
+ activate__6_3__6_4__6_5( false );
+ } else {
+ activate__6_3__6_4__6_5( true );
+ }
+ activateOKButton();
+} // --createwindow::activateLinogramFields()
+
+/** Activates user fields and deactivates program fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activateUserFields()
+{
+ if(userbutton->isChecked()) {
+ userrays->setEnabled(true);
+ userrayslabel->setEnabled(true);
+ raysumsnelem->setEnabled(false);
+ raysumsnelemlabel->setEnabled(false);
+ raysumspixelsize->setEnabled(false);
+ raysumspixelsizelabel->setEnabled(false);
+ activateOKButton();
+ }
+ else {
+ userrays->setEnabled(false);
+ userrayslabel->setEnabled(false);
+ activateOKButton();
+ }
+} // --createwindow::activateUserFields()
+
+/** Activates program fields and deactivates user fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activateProgramFields()
+{
+ if(programbutton->isChecked()) {
+ raysumsnelem->setEnabled(true);
+ raysumsnelemlabel->setEnabled(true);
+ raysumspixelsize->setEnabled(true);
+ raysumspixelsizelabel->setEnabled(true);
+ userrays->setEnabled(false);
+ userrayslabel->setEnabled(false);
+ activateOKButton();
+ }
+ else {
+ raysumsnelem->setEnabled(false);
+ raysumsnelemlabel->setEnabled(false);
+ raysumspixelsize->setEnabled(false);
+ raysumspixelsizelabel->setEnabled(false);
+ activateOKButton();
+ }
+} // --createwindow::activateProgramFields()
+
+/** Activates equal spacing fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activateEqualSpacingFields()
+{
+ if(equalspacingbutton->isChecked()) {
+ firstangle->setEnabled(true);
+ firstanglelabel->setEnabled(true);
+ lastangle->setEnabled(true);
+ lastanglelabel->setEnabled(true);
+ angles->setEnabled(false);
+ activateOKButton();
+ }
+ else {
+ firstangle->setEnabled(false);
+ firstanglelabel->setEnabled(false);
+ lastangle->setEnabled(false);
+ lastanglelabel->setEnabled(false);
+ angles->setEnabled(true);
+ activateOKButton();
+ }
+} // --createwindow::activateEqualSpacingFields()
+
+/** Deactivates equal spacing fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::deactivateEqualSpacingFields()
+{
+ firstangle->setEnabled(false);
+ firstanglelabel->setEnabled(false);
+ lastangle->setEnabled(false);
+ lastanglelabel->setEnabled(false);
+ // if(linobutton->isChecked())
+ // angles->setEnabled(false);
+ // else
+ // if(nonebutton->isChecked())
+ angles->setEnabled(true);
+ activateOKButton();
+} // --createwindow::deactivateEqualSpacingFields()
+
+/** Activates noisy fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activateNoisyFields()
+{
+ if(noisybutton->isChecked()) {
+ noisyframe->setEnabled(true);
+ quantumbutton->setChecked(true);
+ quantumbutton->setEnabled(true);
+ quanmn->setEnabled(true);
+ quanmnlabel->setEnabled(true);
+ quancm->setEnabled(true);
+ quancmlabel->setEnabled(true);
+ calibrationlabel->setEnabled(true);
+ quanin->setEnabled(true);
+ quaninlabel->setEnabled(true);
+ seedlabel->setEnabled(true);
+ seed->setEnabled(true);
+ seedlabel1->setEnabled(true);
+ activateOKButton();
+ }
+ else {
+ noisyframe->setEnabled(false);
+ activateOKButton();
+ }
+} // --createwindow::activateNoisyFields()
+
+/** Deactivates noisy fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::deactivateNoisyFields()
+{
+ noisyframe->setEnabled(false);
+ seedlabel->setEnabled(false);
+ seed->setEnabled(false);
+ seedlabel1->setEnabled(false);
+ activateOKButton();
+} // --createwindow::deactivateNoisyFields()
+
+/** Activates quantum fields and deactivates scatter, additive and
+multiplicative fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activateQuantumFields()
+{
+ if(quantumbutton->isChecked()) {
+ quanmn->setEnabled(true);
+ quanmnlabel->setEnabled(true);
+ quancm->setEnabled(true);
+ quancmlabel->setEnabled(true);
+ calibrationlabel->setEnabled(true);
+ quanin->setEnabled(true);
+ quaninlabel->setEnabled(true);
+ seed->setEnabled(true);
+ seedlabel->setEnabled(true);
+ seedlabel1->setEnabled(true);
+ activateOKButton();
+ }
+ else {
+ quanmn->setEnabled(false);
+ quanmnlabel->setEnabled(false);
+ quancm->setEnabled(false);
+ quancmlabel->setEnabled(false);
+ calibrationlabel->setEnabled(false);
+ quanin->setEnabled(false);
+ quaninlabel->setEnabled(false);
+ if(!additivebutton->isChecked() && !multiplicativebutton->isChecked()) {
+ seed->setEnabled(false);
+ seedlabel->setEnabled(false);
+ seedlabel1->setEnabled(false);
+ }
+ activateOKButton();
+ }
+} // --createwindow::activateQuantumFields()
+
+/** Activates scatter fields and deactivates quantum, additive and
+multiplicative fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activateScatterFields()
+{
+ if(scatterbutton->isChecked()) {
+ sctnpk->setEnabled(true);
+ sctnpklabel->setEnabled(true);
+ sctnwd->setEnabled(true);
+ sctnwdlabel->setEnabled(true);
+ activateOKButton();
+ }
+ else {
+ sctnpk->setEnabled(false);
+ sctnpklabel->setEnabled(false);
+ sctnwd->setEnabled(false);
+ sctnwdlabel->setEnabled(false);
+ activateOKButton();
+ }
+} // --createwindow::activateScatterFields()
+
+/** Activates additive fields and deactivates quantum, scatter and
+multiplicative fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activateAdditiveFields()
+{
+ if(additivebutton->isChecked()) {
+ addnmn->setEnabled(true);
+ addnmnlabel->setEnabled(true);
+ addnsd->setEnabled(true);
+ addnsdlabel->setEnabled(true);
+ seed->setEnabled(true);
+ seedlabel->setEnabled(true);
+ seedlabel1->setEnabled(true);
+ activateOKButton();
+ }
+ else {
+ addnmn->setEnabled(false);
+ addnmnlabel->setEnabled(false);
+ addnsd->setEnabled(false);
+ addnsdlabel->setEnabled(false);
+ if(!quantumbutton->isChecked() && !multiplicativebutton->isChecked()) {
+ seed->setEnabled(false);
+ seedlabel->setEnabled(false);
+ seedlabel1->setEnabled(false);
+ }
+ activateOKButton();
+ }
+} // --createwindow::activateAdditiveFields()
+
+/** Activates multiplicative fields and deactivates quantum, scatter and
+additive fields
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activateMultiplicativeFields()
+{
+ if(multiplicativebutton->isChecked()) {
+ multnmn->setEnabled(true);
+ multnmnlabel->setEnabled(true);
+ multnsd->setEnabled(true);
+ multnsdlabel->setEnabled(true);
+ seed->setEnabled(true);
+ seedlabel->setEnabled(true);
+ seedlabel1->setEnabled(true);
+ activateOKButton();
+ }
+ else {
+ multnmn->setEnabled(false);
+ multnmnlabel->setEnabled(false);
+ multnsd->setEnabled(false);
+ multnsdlabel->setEnabled(false);
+ if(!quantumbutton->isChecked() && !additivebutton->isChecked()) {
+ seed->setEnabled(false);
+ seedlabel->setEnabled(false);
+ seedlabel1->setEnabled(false);
+ }
+ activateOKButton();
+ }
+} // --createwindow::activateMultiplicativeFields()
+
+/** Activates OK Button if the minimum information for create command is present
+@param void
+@author Bruno M. Carvalho
+@version 1.0 */
+void createwindow::activateOKButton()
+{
+ int pn,en,status=1;
+ float ds;
+
+ if(!strcmp((const char *)idheader->text(),""))
+ status=0;
+ if(monochromaticbutton->isChecked()) {
+ en=strtoi((const char *)energy->text());
+ if(errnum)
+ status=0;
+ }
+ else {
+ en=strtoi((const char *)nergy->text());
+ if(errnum)
+ status=0;
+ }
+ if(raysumaveragebutton->isChecked() && (! ( linogrambutton->isChecked() ) ) ) {
+ ds=strtof((const char *)detectorspacing->text().lower());
+ if(errnum)
+ status=0;
+ pn=strtoi((const char *)prjnum->text());
+ if(errnum)
+ status=0;
+ }
+ if(status)
+ okbutton->setEnabled(true);
+ else
+ okbutton->setEnabled(false);
+
+} // --createwindow::activateOKButton()
+
+
+/** Returns a string for set 1 of CREATE input sequence
+@param void
+@return indentifying header
+@author Bruno M. Carvalho
+@version 1.0 */
+QString createwindow::getOutput1()
+{
+ QString output;
+
+ output.sprintf("CREATE\n");
+ output+=idheader->text();
+ //output.append("\n");
+ return output;
+} // --createwindow::getOutput1()
+
+/** Returns a string for set 2 of CREATE input sequence
+@param void
+@return energy spectrum
+@author Bruno M. Carvalho
+@version 1.0 */
+QString createwindow::getOutput2()
+{
+ QString output;
+
+ output.sprintf("SPECTRUM ");
+ if(monochromaticbutton->isChecked()) {
+ output.append("MONOCHROMATIC ");
+ output+=energy->text();
+ //output.append("\n");
+ }
+ else
+ if(polychromaticbutton->isChecked()) {
+ output.append("POLYCHROMATIC ");
+ output+=nergy->text();
+ output.append("\n");
+ output+=energy1->text();
+ output.append(" ");
+ output+=percent1->text();
+ output.append(" ");
+ output+=energy2->text();
+ output.append(" ");
+ output+=percent2->text();
+ output.append(" ");
+ output+=energy3->text();
+ output.append(" ");
+ output+=percent3->text();
+ output.append(" ");
+ output+=energy4->text();
+ output.append(" ");
+ output+=percent4->text();
+ output.append(" ");
+ output+=energy5->text();
+ output.append(" ");
+ output+=percent5->text();
+ output.append(" ");
+ output+=energy6->text();
+ output.append(" ");
+ output+=percent6->text();
+ output.append(" ");
+ output+=energy7->text();
+ output.append(" ");
+ output+=percent7->text();
+ //output.append("\n");
+ }
+ return output;
+} // --createwindow::getOutput2()
+
+/** Returns a string for set 3 of CREATE input sequence
+@param void
+@return elemental objects
+@author Bruno M. Carvalho
+@notes slight bug (91-related) fix by Deniz
+@version 1.0 */
+QString createwindow::getOutput3()
+{
+ QString output;
+
+ output.sprintf("OBJECTS\n");
+ output+=objectsdescription->text(); // which might already have a newline
+ if(!(output.endsWith( "\n" ))) {
+ output.append("\n");
+ }
+ output.append("LAST ");
+ output+=scale->text();
+ //output.append("\n");
+
+ /* jk 06/13/2008 added variabled to reflect tissue variabilit in snark14*/
+ output.append(" ");
+ output+=seedvar->text();
+ output.append(" ");
+ output+=var->text();
+
+ return output;
+} // --createwindow::getOutput3()
+
+/** Returns a string for set 4 of CREATE input sequence
+@param void
+@return phantom generation
+@author Bruno M. Carvalho
+@version 1.0 */
+QString createwindow::getOutput4()
+{
+ QString output;
+
+ output.sprintf("PHANTOM ");
+ if(phantomaveragebutton->isChecked()) {
+ output.append("AVERAGE ");
+ output+=nave1->text();
+ output.append("\n");
+ output+=nelem->text();
+ output.append(" ");
+ output+=pixelsize->text();
+ }
+ //output.append("\n");
+ return output;
+} // --createwindow::getOutput4()
+
+/** Returns a string for set 5 of CREATE input sequence
+@param void
+@return raysum generation
+@author Bruno M. Carvalho
+@version 1.0 */
+QString createwindow::getOutput5()
+{
+ QString output;
+
+ output.sprintf("RAYSUM ");
+ if(raysumaveragebutton->isChecked()) {
+ output.append("AVERAGE ");
+ output+=nave2->text();
+ output.append("\n");
+ output+=naper1->text();
+ output.append(" ");
+ output+=naper2->text();
+ output.append(" ");
+ output+=naper3->text();
+ output.append(" ");
+ output+=naper4->text();
+ output.append(" ");
+ output+=naper5->text();
+ output.append(" ");
+ output+=naper6->text();
+ output.append(" ");
+ output+=naper7->text();
+ output.append(" ");
+ output+=naper8->text();
+ output.append(" ");
+ output+=naper9->text();
+ output.append(" ");
+ output+=naper10->text();
+ output.append(" ");
+ output+=naper11->text();
+ output.append(" ");
+ output+=naper12->text();
+ output.append(" ");
+ output+=naper13->text();
+ output.append(" ");
+ }
+ //output.append("\n");
+ return output;
+} // --createwindow::getOutput5()
+
+/** Returns a string for set 6 of CREATE input sequence
+@param void
+@return projection geometry specification
+@author Bruno M. Carvalho
+@version 1.0 */
+QString createwindow::getOutput6()
+{
+ QString output;
+
+ if(israysumaveragepresent) {
+ output.sprintf("GEOMETRY\n");
+ if(parallelbutton->isChecked()) {
+ output.append("PARALLEL ");
+ if(uniformbutton->isChecked()) {
+ output.append("UNIFORM ");
+ } else {
+ if(variablebutton->isChecked()) {
+ output.append("VARIABLE ");
+ }
+ }
+ if(stripbutton->isChecked()) {
+ output.append("STRIP ");
+ } else {
+ if(linebutton->isChecked()) {
+ output.append("LINE ");
+ }
+ }
+ } else {
+ if(divergentbutton->isChecked()) {
+ output.append("DIVERGENT ");
+ if(arcbutton->isChecked()) {
+ output.append("ARC ");
+ } else {
+ if(tangentbutton->isChecked()) {
+ output.append("TANGENT ");
+ }
+ }
+ output+=sourcetoorigin->text();
+ output.append(" ");
+ output+=sourcetodetector->text();
+ } else {
+ if(linogrambutton->isChecked()) {
+ output.append("LINOGRAM ");
+ return output;
+ }
+ }
+ }
+
+ output.append("\n");
+ output.append("RAYS ");
+ if(userbutton->isChecked()) {
+ output.append("USER ");
+ output+=userrays->text();
+ output.append(" ");
+ } else {
+ if(programbutton->isChecked()) {
+ output.append("PROGRAM ");
+ output+=raysumsnelem->text();
+ output.append(" ");
+ output+=raysumspixelsize->text();
+ output.append(" ");
+ }
+ }
+ output+=detectorspacing->text();
+ output.append("\n");
+ output.append("ANGLES ");
+ output+=prjnum->text();
+ output.append(" ");
+ // if(linobutton->isChecked()) {
+ // output.append("LINO ");
+ //output.append("\n");
+ // }
+ // else
+ if(equalspacingbutton->isChecked()) {
+ output.append("EQUAL SPACING ");
+ output.append("\n");
+ output+=firstangle->text();
+ output.append(" ");
+ output+=lastangle->text();
+ //output.append("\n");
+ } else {
+ output.append("\n");
+ output+=angles->text();
+ //output.append("\n");
+ }
+ }
+ return output;
+} // --createwindow::getOutput6()
+
+
+/** Returns a string for set 7 of CREATE input sequence
+@param void
+@return measurement statistics
+@author Bruno M. Carvalho
+@version 1.0 */
+QString createwindow::getOutput7()
+{
+ QString output,t;
+
+ if(israysumaveragepresent) {
+ output.sprintf("MEASUREMENT ");
+ if(perfectbutton->isChecked()) {
+ output.append("PERFECT ");
+ output.append("\n");
+ }
+ else
+ if(noisybutton->isChecked()) {
+ output.append("NOISY ");
+ output.append("\n");
+ if(quantumbutton->isChecked()) {
+ output.append("QUANTUM ");
+ output+=quanmn->text();
+ output.append(" ");
+ output+=quancm->text();
+ output.append(" ");
+ t.sprintf("CALIBRATION %d \n",quanin->currentItem()+1);
+ output.append(t);
+ output.append("SEED ");
+ output+=seed->text();
+ output.append("\n");
+ }
+ else
+ if(scatterbutton->isChecked()) {
+ output.append("SCATTER ");
+ output+=sctnpk->text();
+ output.append(" ");
+ output+=sctnwd->text();
+ output.append("\n");
+ }
+ else
+ if(additivebutton->isChecked()) {
+ output.append("ADDITIVE ");
+ output+=addnmn->text();
+ output.append(" ");
+ output+=addnsd->text();
+ output.append("\n");
+ output.append("SEED ");
+ output+=seed->text();
+ output.append("\n");
+ }
+ else
+ if(multiplicativebutton->isChecked()) {
+ output.append("MULTIPLICATIVE ");
+ output+=multnmn->text();
+ output.append(" ");
+ output+=multnsd->text();
+ output.append("\n");
+ output.append("SEED ");
+ output+=seed->text();
+ output.append("\n");
+ }
+ }
+ output.append("BACKGROUND ");
+ output+=backgr1->text();
+ output.append(" ");
+ if(polychromaticbutton->isChecked()) {
+ output+=backgr2->text();
+ output.append(" ");
+ output+=backgr3->text();
+ output.append(" ");
+ output+=backgr4->text();
+ output.append(" ");
+ output+=backgr5->text();
+ output.append(" ");
+ output+=backgr6->text();
+ output.append(" ");
+ output+=backgr7->text();
+ }
+ }
+ //output.append("\n");
+ return output;
+} // --createwindow::getOutput7()
+
+/** Returns a string for set 8 of CREATE input sequence
+@param void
+@return run descriptors
+@author Bruno M. Carvalho
+@version 1.0 */
+QString createwindow::getOutput8()
+{
+ QString output;
+
+ if(israysumaveragepresent) {
+ output.sprintf("RUN ");
+ //jk 6/14/2008 removed since snark14 has no file12 anytmore
+ /*if(savebutton->isChecked()) {
+ output.append("SAVE ");
+ }
+ else
+ if(modifybutton->isChecked()) {
+ output.append("MODIFY ");
+ }
+ */
+ }
+ //output.append("\n");
+ return output;
+} // --createwindow::getOutput8()
+
+void createwindow::checkValues()
+{
+ int f=0,en,ne,enes[7],percs[7],sump,i,nv1,nlm,nv2,sv;
+ int np1,np2,np3,np4,np5,np6,np7,np8,np9,np10,np11,np12,np13,npsum=0;
+ int usr,pnlm,pn,sed;
+ float sca,pxls,stoo,stod,ppxls,decs,fa,la,qm,qc,sw,sp,am,as,mm,ms,vrb;
+ float b1,b2,b3,b4,b5,b6,b7;
+
+ /* Consistency check for header/spectrum section */
+
+ if(monochromaticbutton->isChecked()) {
+ en=strtoi((const char *)energy->text());
+ if(errnum)
+ f=1;
+ else
+ if(en<1)
+ f=5;
+ }
+ if(polychromaticbutton->isChecked()) {
+ ne=strtoi((const char *)nergy->text());
+ if(errnum)
+ f=2;
+ else
+ if(ne<1 || ne>7)
+ f=6;
+ else {
+ switch(ne) {
+ case 7: enes[6]=strtoi((const char *)energy7->text());
+ if(errnum)
+ f=3;
+ else
+ if(enes[6]<1)
+ f=5;
+ percs[6]=strtoi((const char *)percent7->text());
+ if(errnum)
+ f=4;
+ else
+ if(percs[6]<0)
+ f=7;
+ case 6: enes[5]=strtoi((const char *)energy6->text());
+ if(errnum)
+ f=3;
+ else
+ if(enes[5]<1)
+ f=5;
+ percs[5]=strtoi((const char *)percent6->text());
+ if(errnum)
+ f=4;
+ else
+ if(percs[5]<0)
+ f=7;
+ case 5: enes[4]=strtoi((const char *)energy5->text());
+ if(errnum)
+ f=3;
+ else
+ if(enes[4]<1)
+ f=5;
+ percs[4]=strtoi((const char *)percent5->text());
+ if(errnum)
+ f=4;
+ else
+ if(percs[4]<0)
+ f=7;
+ case 4: enes[3]=strtoi((const char *)energy4->text());
+ if(errnum)
+ f=3;
+ else
+ if(enes[3]<1)
+ f=5;
+ percs[3]=strtoi((const char *)percent4->text());
+ if(errnum)
+ f=4;
+ else
+ if(percs[3]<0)
+ f=7;
+ case 3: enes[2]=strtoi((const char *)energy3->text());
+ if(errnum)
+ f=3;
+ else
+ if(enes[2]<1)
+ f=5;
+ percs[2]=strtoi((const char *)percent3->text());
+ if(errnum)
+ f=4;
+ else
+ if(percs[2]<0)
+ f=7;
+ case 2: enes[1]=strtoi((const char *)energy2->text());
+ if(errnum)
+ f=3;
+ else
+ if(enes[1]<1)
+ f=5;
+ percs[1]=strtoi((const char *)percent2->text());
+ if(errnum)
+ f=4;
+ else
+ if(percs[1]<0)
+ f=7;
+ case 1: enes[0]=strtoi((const char *)energy1->text());
+ if(errnum)
+ f=3;
+ else
+ if(enes[0]<1)
+ f=5;
+ percs[0]=strtoi((const char *)percent1->text());
+ if(errnum)
+ f=4;
+ else
+ if(percs[0]<0)
+ f=7;
+ }
+ sump=0;
+ for(i=0;i<ne;i++)
+ sump+=percs[i];
+ if(sump!=100)
+ f=8;
+ }
+ }
+
+ /* Consistency check for objects section */
+ /* falta object descriptions */
+ sca=strtof((const char *)scale->text().lower());
+ if(errnum)
+ f=9;
+ if(!(sca>0))
+ f=10;
+ /* jk 06/14/2008 added check for LAST line*/
+ sv = strtoi((const char *)seedvar->text());
+ if(errnum)
+ {
+ vrb = strtof((const char *)var->text());
+ if(errnum)
+ ; /* this is fine, both seed and var are not there so no variability*/
+ else
+ f=55; /*seed has to have a value if var has a value*/
+ }
+ else
+ {
+ vrb = strtof((const char *)var->text());
+ if(errnum)
+ f=57; /*var has to have a value if seed has a value*/
+ else
+ ; /* this is fine, both seed and var have a value*/
+ }
+ /* RD 09/21/2012 added check for SEED Bug 274*/
+ if(sv>=1000000000)
+ f=56;
+
+ /* Consistency check for phantom/raysum section */
+
+ if(phantomaveragebutton->isChecked()) {
+ nv1=strtoi((const char *)nave1->text());
+ if(errnum)
+ f=11;
+ if(nv1<1 || !(nv1%2))
+ f=16;
+ nlm=strtoi((const char *)nelem->text());
+ if(errnum)
+ f=12;
+ if(nlm<1 || !(nlm%2))
+ f=17;
+ pxls=strtof((const char *)pixelsize->text().lower());
+ if(errnum)
+ f=13;
+ if(!(pxls>0))
+ f=19;
+ }
+ if(raysumaveragebutton->isChecked()) {
+ nv2=strtoi((const char *)nave2->text());
+ if(errnum)
+ f=14;
+ if(nv2<1 || !(nv2%2) || nv2>13)
+ f=18;
+ else {
+ switch(nv2) {
+ case 13: np13=strtoi((const char *)naper13->text());
+ if(errnum)
+ f=15;
+ np12=strtoi((const char *)naper12->text());
+ if(errnum)
+ f=15;
+ if(np12<0 || np13<0)
+ f=20;
+ npsum+=np13+np12;
+ case 11: np11=strtoi((const char *)naper11->text());
+ if(errnum)
+ f=15;
+ np10=strtoi((const char *)naper10->text());
+ if(errnum)
+ f=15;
+ if(np10<0 || np11<0)
+ f=20;
+ npsum+=np11+np10;
+ case 9: np9=strtoi((const char *)naper9->text());
+ if(errnum)
+ f=15;
+ np8=strtoi((const char *)naper8->text());
+ if(errnum)
+ f=15;
+ if(np8<0 || np9<0)
+ f=20;
+ npsum+=np9+np8;
+ case 7: np7=strtoi((const char *)naper7->text());
+ if(errnum)
+ f=15;
+ np6=strtoi((const char *)naper6->text());
+ if(errnum)
+ f=15;
+ if(np6<0 || np7<0)
+ f=20;
+ npsum+=np7+np6;
+ case 5: np5=strtoi((const char *)naper5->text());
+ if(errnum)
+ f=15;
+ np4=strtoi((const char *)naper4->text());
+ if(errnum)
+ f=15;
+ if(np4<0 || np5<0)
+ f=20;
+ npsum+=np5+np4;
+ case 3: np3=strtoi((const char *)naper3->text());
+ if(errnum)
+ f=15;
+ np2=strtoi((const char *)naper2->text());
+ if(errnum)
+ f=15;
+ if(np2<0 || np3<0)
+ f=20;
+ npsum+=np3+np2;
+ case 1: np1=strtoi((const char *)naper1->text());
+ if(errnum)
+ f=15;
+ if(np1<0)
+ f=20;
+ npsum+=np1;
+ }
+ if(!npsum)
+ f=20;
+ }
+
+
+ /* Consistency check for geometry/raysums section */
+ // if linogram, don't check anything in this section!
+ if (! (linogrambutton->isChecked() ) ) {
+ if(divergentbutton->isChecked()) {
+ stoo=strtof((const char *)sourcetoorigin->text().lower());
+ if(errnum)
+ f=21;
+ stod=strtof((const char *)sourcetodetector->text().lower());
+ if(errnum)
+ f=22;
+ if(stoo<0)
+ f=30;
+ if(stod<0)
+ f=31;
+ }
+ if(userbutton->isChecked()) {
+ usr=strtoi((const char *)userrays->text());
+ if(errnum)
+ f=23;
+ if(usr<1 || !(usr%2))
+ f=34;
+ }
+ if(programbutton->isChecked()) {
+ pnlm=strtoi((const char *)raysumsnelem->text());
+ if(errnum)
+ f=24;
+ if(pnlm<1 || !(pnlm%2))
+ f=35;
+ ppxls=strtof((const char *)raysumspixelsize->text().lower());
+ if(errnum)
+ f=25;
+ if(ppxls<=0)
+ f=32;
+ else
+ if(divergentbutton->isChecked() && pnlm*ppxls*M_SQRT1_2 >= stoo)
+ f=37;
+ }
+ decs=strtof((const char *)detectorspacing->text().lower());
+ if(errnum)
+ f=26;
+ if(decs<0)
+ f=33;
+ if(divergentbutton->isChecked() && userbutton->isChecked())
+ if((usr-1)*decs>=stod*M_PI)
+ f=38;
+ pn=strtoi((const char *)prjnum->text());
+ if(errnum)
+ f=27;
+ if(pn<1)
+ f=36;
+ // if(linobutton->isChecked())
+ // if(pn<2)
+ // f=36;
+ if(equalspacingbutton->isChecked()) {
+ fa=strtof((const char *)firstangle->text().lower());
+ if(errnum)
+ f=28;
+ la=strtof((const char *)lastangle->text().lower());
+ if(errnum)
+ f=29;
+ if(pn<2)
+ f=36;
+ }
+ if(nonebutton->isChecked()) {
+ QString angst = angles->text();
+ //Splits angst into strings wherever the regular expression sep occurs, and return the list of those strings.
+ // If allowEmptyEntries is TRUE, a null string is inserted in the list wherever the separator matches twice without intervening text.
+ QRegExp sep("\\s+");
+ // whitespace. the first '\' is for escaping '\'
+ QStringList angleStringList = QStringList::split(sep, angst);
+ int angleCount = 0;
+ bool ok;
+ for ( QStringList::Iterator it = angleStringList.begin();
+ it != angleStringList.end(); ++it ) {
+ // check (*it) is really a float
+ // double QString::toDouble ( bool * ok = 0 ) const
+ ok = true;
+ (*it).toDouble(&ok);
+ if(!ok) f=39;
+ angleCount++;
+ }
+ // pn is already numerified value in prjnum field
+ if(angleCount != pn) f=39;
+ } // --if nonebutton checked
+ } // --if linogrambutton not checked
+
+ /* Consistency check for measurement/run section */
+
+ if(noisybutton->isChecked()) {
+ if(scatterbutton->isChecked()) {
+ sp=strtof((const char *)sctnpk->text().lower());
+ if(errnum)
+ f=42;
+ if(sp<=0)
+ f=51;
+ sw=strtof((const char *)sctnwd->text().lower());
+ if(errnum)
+ f=43;
+ if(sw<decs)
+ f=53;
+ }
+ else {
+ if(quantumbutton->isChecked() || additivebutton->isChecked() || multiplicativebutton->isChecked()) {
+ sed=strtoi((const char *)seed->text());
+ if(errnum)
+ f=48;
+ }
+ if(quantumbutton->isChecked()) {
+ qm=strtof((const char *)quanmn->text().lower());
+ if(errnum)
+ f=40;
+ qc=strtof((const char *)quancm->text().lower());
+ if(errnum)
+ f=41;
+ if(qc<=0)
+ f=50;
+ }
+ if(additivebutton->isChecked()) {
+ am=strtof((const char *)addnmn->text().lower());
+ if(errnum)
+ f=44;
+ as=strtof((const char *)addnsd->text().lower());
+ if(errnum)
+ f=45;
+ }
+ if(multiplicativebutton->isChecked()) {
+ mm=strtof((const char *)multnmn->text().lower());
+ if(errnum)
+ f=46;
+ if(mm==0)
+ f=52;
+ ms=strtof((const char *)multnsd->text().lower());
+ if(errnum)
+ f=47;
+ }
+ }
+ if(!quantumbutton->isChecked() && !scatterbutton->isChecked() && !additivebutton->isChecked() && !multiplicativebutton->isChecked())
+ f=54;
+ }
+ switch(ne) {
+ case 7: b7=strtof((const char *)backgr7->text().lower());
+ if(errnum)
+ f=49;
+ case 6: b6=strtof((const char *)backgr6->text().lower());
+ if(errnum)
+ f=49;
+ case 5: b5=strtof((const char *)backgr5->text().lower());
+ if(errnum)
+ f=49;
+ case 4: b4=strtof((const char *)backgr4->text().lower());
+ if(errnum)
+ f=49;
+ case 3: b3=strtof((const char *)backgr3->text().lower());
+ if(errnum)
+ f=49;
+ case 2: b2=strtof((const char *)backgr2->text().lower());
+ if(errnum)
+ f=49;
+ case 1: b1=strtof((const char *)backgr1->text().lower());
+ if(errnum)
+ f=49;
+ }
+ }
+
+ switch(f) {
+ case 0: accept();
+ break;
+ case 1: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid energy format.");
+ tabwidget1->setCurrentPage(0);
+ energy->setFocus();
+ break;
+ case 2: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid nergy format.");
+ tabwidget1->setCurrentPage(0);
+ nergy->setFocus();
+ break;
+ case 3: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid energy(i) format.");
+ tabwidget1->setCurrentPage(0);
+ energy1->setFocus();
+ break;
+ case 4: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid percent(i) format.");
+ tabwidget1->setCurrentPage(0);
+ percent1->setFocus();
+ break;
+ case 5: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "energy must be greater than 0.");
+ tabwidget1->setCurrentPage(0);
+ energy->setFocus();
+ break;
+ case 6: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "nergy must be greater or equal to 1 and less or equal to 7.");
+ tabwidget1->setCurrentPage(0);
+ nergy->setFocus();
+ break;
+ case 7: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "percent(i) must be nonnegative.");
+ tabwidget1->setCurrentPage(0);
+ percent1->setFocus();
+ break;
+ case 8: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "percent(1) ... percent(nergy) must add to 100.");
+ tabwidget1->setCurrentPage(0);
+ percent1->setFocus();
+ break;
+ case 9: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid scale format.");
+ tabwidget1->setCurrentPage(1);
+ scale->setFocus();
+ break;
+ case 10: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "scale must be positive.");
+ tabwidget1->setCurrentPage(1);
+ scale->setFocus();
+ break;
+ case 11: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid nave1 format.");
+ tabwidget1->setCurrentPage(2);
+ nave1->setFocus();
+ break;
+ case 12: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid nelem format.");
+ tabwidget1->setCurrentPage(2);
+ nelem->setFocus();
+ break;
+ case 13: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid pixel_size format.");
+ tabwidget1->setCurrentPage(2);
+ pixelsize->setFocus();
+ break;
+ case 14: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid nave2 format.");
+ tabwidget1->setCurrentPage(2);
+ nave2->setFocus();
+ break;
+ case 15: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid naper(i) format.");
+ tabwidget1->setCurrentPage(2);
+ naper1->setFocus();
+ break;
+ case 16: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "nave1 must be positive and odd.");
+ tabwidget1->setCurrentPage(2);
+ nave1->setFocus();
+ break;
+ case 17: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "nelem must be positive and odd.");
+ tabwidget1->setCurrentPage(2);
+ nelem->setFocus();
+ break;
+ case 18: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "nave2 must be positive, odd and smaller than 14.");
+ tabwidget1->setCurrentPage(2);
+ nave2->setFocus();
+ break;
+ case 19: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "pixel_size must be positive.");
+ tabwidget1->setCurrentPage(2);
+ pixelsize->setFocus();
+ break;
+ case 20: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "naper(i) must be nonnegative and the\n"
+ "sum of naper(i) must be positive.");
+ tabwidget1->setCurrentPage(2);
+ naper1->setFocus();
+ break;
+ case 21: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid source_to_origin format.");
+ tabwidget1->setCurrentPage(3);
+ sourcetoorigin->setFocus();
+ break;
+ case 22: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid source_to_detector format.");
+ tabwidget1->setCurrentPage(3);
+ sourcetodetector->setFocus();
+ break;
+ case 23: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid user_rays format.");
+ tabwidget1->setCurrentPage(3);
+ userrays->setFocus();
+ break;
+ case 24: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid nelem format.");
+ tabwidget1->setCurrentPage(3);
+ raysumsnelem->setFocus();
+ break;
+ case 25: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid pixel_size format.");
+ tabwidget1->setCurrentPage(3);
+ raysumspixelsize->setFocus();
+ break;
+ case 26: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid detector_spacing format.");
+ tabwidget1->setCurrentPage(3);
+ detectorspacing->setFocus();
+ break;
+ case 27: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid prjnum format.");
+ tabwidget1->setCurrentPage(3);
+ prjnum->setFocus();
+ break;
+ case 28: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid first_angle format.");
+ tabwidget1->setCurrentPage(3);
+ firstangle->setFocus();
+ break;
+ case 29: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid last_angle format.");
+ tabwidget1->setCurrentPage(3);
+ lastangle->setFocus();
+ break;
+ case 30: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "source_to_origin must be positive.");
+ tabwidget1->setCurrentPage(3);
+ sourcetoorigin->setFocus();
+ break;
+ case 31: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "source_to_detector must be positive.");
+ tabwidget1->setCurrentPage(3);
+ sourcetodetector->setFocus();
+ break;
+ case 32: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "pixel_size must be positive.");
+ tabwidget1->setCurrentPage(3);
+ raysumspixelsize->setFocus();
+ break;
+ case 33: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "detector_spacing must be equal or greater than 0.");
+ tabwidget1->setCurrentPage(3);
+ detectorspacing->setFocus();
+ break;
+ case 34: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "user_rays must be positive and odd.");
+ tabwidget1->setCurrentPage(3);
+ userrays->setFocus();
+ break;
+ case 35: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "nelem must be positive and odd.");
+ tabwidget1->setCurrentPage(3);
+ raysumsnelem->setFocus();
+ break;
+ case 36: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "projnum must be positive, and greater than 1\n"
+ "if LINO or EQUAL_SPACING is selected.");
+ tabwidget1->setCurrentPage(3);
+ prjnum->setFocus();
+ break;
+ case 37: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "nelem * pixel_size/sqrt(2) must be smaller than source_to_detector.");
+ tabwidget1->setCurrentPage(3);
+ raysumsnelem->setFocus();
+ break;
+ case 38: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "(user_rays-1) * detector_spacing must be smaller than source_to_detector * PI.");
+ tabwidget1->setCurrentPage(3);
+ detectorspacing->setFocus();
+ break;
+ // case 39 is never reached, since this was only half implemented.
+ case 39: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "number of angles must be equal to prjnum and each angle must be a floating-point number.");
+ tabwidget1->setCurrentPage(3);
+ angles->setFocus();
+ break;
+ case 40: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid quanmn format.");
+ tabwidget1->setCurrentPage(4);
+ quanmn->setFocus();
+ break;
+ case 41: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid quancm format.");
+ tabwidget1->setCurrentPage(4);
+ quancm->setFocus();
+ break;
+ case 42: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid sctnpk format.");
+ tabwidget1->setCurrentPage(4);
+ sctnpk->setFocus();
+ break;
+ case 43: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid sctnwd format.");
+ tabwidget1->setCurrentPage(4);
+ sctnwd->setFocus();
+ break;
+ case 44: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid addnmn format.");
+ tabwidget1->setCurrentPage(4);
+ addnmn->setFocus();
+ break;
+ case 45: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid addnsd format.");
+ tabwidget1->setCurrentPage(4);
+ addnsd->setFocus();
+ break;
+ case 46: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid multnmn format.");
+ tabwidget1->setCurrentPage(4);
+ multnmn->setFocus();
+ break;
+ case 47: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid multnsd format.");
+ tabwidget1->setCurrentPage(4);
+ multnsd->setFocus();
+ break;
+ case 48: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid seed format.");
+ tabwidget1->setCurrentPage(4);
+ seed->setFocus();
+ break;
+ case 49: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Invalid backgr(i) format.");
+ tabwidget1->setCurrentPage(4);
+ backgr1->setFocus();
+ break;
+ case 50: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "quancm must be positive.");
+ tabwidget1->setCurrentPage(4);
+ quancm->setFocus();
+ break;
+ case 51: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "sctnpk must be positive");
+ tabwidget1->setCurrentPage(4);
+ sctnpk->setFocus();
+ break;
+ case 52: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "multnmn must be nonzero.");
+ tabwidget1->setCurrentPage(4);
+ multnmn->setFocus();
+ break;
+ case 53: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "sctnwd must be greater than detector_spacing.");
+ tabwidget1->setCurrentPage(4);
+ sctnwd->setFocus();
+ break;
+ case 54: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "if NOISY is selected at least one of the options\n"
+ " QUANTUM, SCATTER, ADDITIVE OR MULTIPLICATIVE must be selected too.");
+ tabwidget1->setCurrentPage(4);
+ quantumbutton->setFocus();
+ break;
+ /* jk 06/14/2008 added check for LAST line*/
+ /* RD 09/21/2012 added check for SEED and VAR separately */ // Bug 274
+ case 55: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Please enter a valid value for SEED");
+ tabwidget1->setCurrentPage(1);
+ seed->setFocus();
+ break;
+ /* RD 09/21/2012 added check for SEED*/ // Bug 274
+ case 56: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "The length of SEED needs to be between \n"
+ "one and nine digits");
+ tabwidget1->setCurrentPage(1);
+ seed->setFocus();
+ break;
+ /* RD 09/21/2012 added check for SEED and VAR separately */ // Bug 274
+ case 57: QMessageBox::information(this,"SnarkInput","Error!\n"
+ "Please enter a valid value for VAR");
+ tabwidget1->setCurrentPage(1);
+ seed->setFocus();
+ break;
+
+
+ }
+}
+