bool do_project_select(Buffer &b) { projects = NULL; snapUpdateIDs = NULL; projectBuffer = &b; bool result = true; int index = DialogBox(hModule, MAKEINTRESOURCE(IDD_PROJECT_SELECT), mainWindow, ProjectDlgProc); if (index == -1) { #ifdef DEBUG msg(PLUGIN_NAME": project select canceled\n"); #endif result = false; } else { selectProject(index); } freeProjectFields(); return result; }
US_ExperimentGui::US_ExperimentGui( bool signal_wanted, US_Experiment& dataIn, int select_db_disk ) : US_WidgetsDialog( 0, 0 ), expInfo( dataIn ) { signal = signal_wanted; setPalette( US_GuiSettings::frameColor() ); setWindowTitle( tr( "Experiment Information" ) ); setAttribute( Qt::WA_DeleteOnClose ); // Set up left panel with experiment information QGridLayout* experiment = new QGridLayout; int row = 0; // Current experiment information QLabel* lb_experiment_banner = us_banner( tr( "Experiment: " ) ); experiment->addWidget( lb_experiment_banner, row++, 0, 1, 2 ); // Show current runID QLabel* lb_runID = us_label( tr( "Run ID " ) ); experiment->addWidget( lb_runID, row++, 0, 1, 2 ); le_runID = us_lineedit( "", 0, true ); experiment->addWidget( le_runID, row++, 0, 1, 2 ); // Experiment label QLabel* lb_label = us_label( tr( "Label:" ) ); experiment->addWidget( lb_label, row++, 0, 1, 2 ); le_label = us_lineedit(); connect( le_label, SIGNAL( editingFinished () ), SLOT ( saveLabel () ) ); experiment->addWidget( le_label, row++, 0, 1, 2 ); // Project QLabel* lb_project = us_label( tr( "Project:" ) ); experiment->addWidget( lb_project, row, 0 ); QPushButton* pb_project = us_pushbutton( tr( "Select Project" ) ); connect( pb_project, SIGNAL( clicked() ), SLOT( selectProject() ) ); pb_project->setEnabled( true ); experiment->addWidget( pb_project, row++, 1 ); le_project = us_lineedit( "", 0, true ); experiment->addWidget( le_project, row++, 0, 1, 2 ); // Experiment type QLabel* lb_expType = us_label( tr( "Experiment Type:" ) ); experiment->addWidget( lb_expType, row, 0 ); cb_expType = us_expTypeComboBox(); experiment->addWidget( cb_expType, row++, 1 ); // Optical system QLabel* lb_opticalSystem = us_label( tr( "Optical System:" ) ); experiment->addWidget( lb_opticalSystem, row, 0 ); QLineEdit* le_opticalSystem = us_lineedit( "", 0, true ); experiment->addWidget( le_opticalSystem, row++, 1 ); // The optical system won't change if ( ( expInfo.opticalSystem == "RA" ) || ( expInfo.opticalSystem == "WA" ) ) le_opticalSystem->setText( "Absorbance" ); else if ( ( expInfo.opticalSystem == "RI" ) || ( expInfo.opticalSystem == "WI" ) ) le_opticalSystem->setText( "Intensity" ); else if ( expInfo.opticalSystem == "IP" ) le_opticalSystem->setText( "Interference" ); else if ( expInfo.opticalSystem == "FI" ) le_opticalSystem->setText( "Fluorescence" ); else // Unsupported optical system le_opticalSystem->setText( "Unsupported" ); // Now for predominantly hardware info QGridLayout* hardware = new QGridLayout; row = 0; // Selected hardware information QLabel* lb_hardware_banner = us_banner( tr( "Hardware: " ) ); hardware->addWidget( lb_hardware_banner, row++, 0, 1, 2 ); QPushButton* pb_rotor = us_pushbutton( tr( "Select Lab / Rotor / Calibration" ) ); connect( pb_rotor, SIGNAL( clicked() ), SLOT( selectRotor() ) ); pb_rotor->setEnabled( true ); hardware->addWidget( pb_rotor, row++, 0, 1, 2 ); le_rotorDesc = us_lineedit( "", 0, true ); hardware->addWidget( le_rotorDesc, row++, 0, 1, 2 ); // Rotor speeds QLabel* lb_rotorSpeeds = us_label( tr( "Unique Rotor Speeds:" ) ); hardware->addWidget( lb_rotorSpeeds, row++, 0, 1, 2 ); lw_rotorSpeeds = us_listwidget(); lw_rotorSpeeds ->setMaximumHeight( 50 ); lw_rotorSpeeds ->setPalette( vlgray ); hardware->addWidget( lw_rotorSpeeds, row, 0, 2, 2 ); row += 2; // The rotor speed information won't change foreach ( double rpm, expInfo.rpms ) lw_rotorSpeeds -> addItem( QString::number( rpm ) ); // instrumentID QLabel* lb_instrument = us_label( tr( "Instrument:" ) ); hardware->addWidget( lb_instrument, row, 0 ); cb_instrument = new US_SelectBox( this ); connect( cb_instrument, SIGNAL( activated ( int ) ), SLOT ( change_instrument( int ) ) ); hardware->addWidget( cb_instrument, row++, 1 ); // operatorID QLabel* lb_operator = us_label( tr( "Operator:" ) ); hardware->addWidget( lb_operator, row, 0 ); cb_operator = new US_SelectBox( this ); hardware->addWidget( cb_operator, row++, 1 ); // Run Temperature QLabel* lb_runTemp = us_label( tr( "Average Run Temperature:" ) ); hardware->addWidget( lb_runTemp, row, 0 ); le_runTemp = us_lineedit( "", 0, true ); hardware->addWidget( le_runTemp, row++, 1 ); // Run temperature won't change le_runTemp ->setText( expInfo.runTemp ); // Some pushbuttons QHBoxLayout* buttons = new QHBoxLayout; QPushButton* pb_help = us_pushbutton( tr( "Help" ) ); connect( pb_help, SIGNAL( clicked() ), SLOT( help() ) ); buttons->addWidget( pb_help ); QPushButton* pb_cancel = us_pushbutton( tr( "Cancel" ) ); connect( pb_cancel, SIGNAL( clicked() ), SLOT( cancel() ) ); buttons->addWidget( pb_cancel ); pb_accept = us_pushbutton( tr( "Accept" ) ); connect( pb_accept, SIGNAL( clicked() ), SLOT( accept() ) ); buttons->addWidget( pb_accept ); // Now let's assemble the page QGridLayout* main = new QGridLayout( this ); main->setSpacing ( 2 ); main->setContentsMargins ( 2, 2, 2, 2 ); row = 0; // Database choices QStringList DB = US_Settings::defaultDB(); if ( DB.isEmpty() ) DB << "Undefined"; QLabel* lb_DB = us_banner( tr( "Database: " ) + DB.at( 0 ) ); main->addWidget( lb_DB, row++, 0, 1, 2 ); // Investigator if ( US_Settings::us_inv_level() > 2 ) { QPushButton* pb_investigator = us_pushbutton( tr( "Select Investigator" ) ); connect( pb_investigator, SIGNAL( clicked() ), SLOT( selectInvestigator() ) ); main->addWidget( pb_investigator, row, 0 ); } else { QLabel* lb_investigator = us_label( tr( "Investigator:" ) ); main->addWidget( lb_investigator, row, 0 ); } le_investigator = us_lineedit( tr( "Not Selected" ) ); le_investigator->setReadOnly( true ); main->addWidget( le_investigator, row++, 1 ); disk_controls = new US_Disk_DB_Controls( select_db_disk ); connect( disk_controls, SIGNAL( changed ( bool ) ), SLOT ( source_changed( bool ) ) ); main->addLayout( disk_controls, row++, 0, 1, 2 ); main->addLayout( experiment, row, 0 ); main->addLayout( hardware, row, 1 ); row++; // += 10; // Experiment comments QLabel* lb_comment = us_label( tr( "Comments:" ) ); main->addWidget( lb_comment, row++, 0, 1, 2 ); te_comment = us_textedit(); main->addWidget( te_comment, row, 0, 4, 2 ); te_comment->setMaximumHeight( 80 ); te_comment->setReadOnly( false ); row += 4; main->addLayout( buttons, row++, 0, 1, 2 ); // Let's load everything we can if ( ! load() ) { cancel(); return; } reset(); }