UltraScan III
us_model_adpars.cpp
Go to the documentation of this file.
1 
3 #include "us_model_adpars.h"
4 #include "us_settings.h"
5 #include "us_gui_settings.h"
6 
7 // Main constructor with addition-parameters count and reference to params list
9  int a_napars,
10  QList< double >& a_udpars )
11  : US_WidgetsDialog( 0, 0 ),
12  napars ( a_napars ),
13  aud_pars ( a_udpars )
14 {
15  setAttribute ( Qt::WA_DeleteOnClose );
16  setWindowTitle( tr( "Model Additional Parameters" ) );
17  setPalette ( US_GuiSettings::frameColor() );
18  setMinimumSize( 200, 100 );
19 
20  // Main layout
21  QGridLayout* main = new QGridLayout( this );
22  main->setContentsMargins( 2, 2, 2, 2 );
23  main->setSpacing ( 2 );
24 
25  // Main banner
26  QLabel* lb_mbanner = us_banner(
27  tr( "Please provide additional information:" ) );
28  int wwid = 0;
29  int whgt = 0;
30  int row = 0;
31 
32  if ( napars == 1 )
33  { // Single parameter: stoichiometry
34  lb_mbanner->setText(
35  tr( "Please provide the Stoichiometry\n"
36  "for the Monomer - N-mer Equilibrium:" ) );
37  QLabel* lb_stoich1 = us_label( tr( "N-Mer:" ) );
39  main->addWidget( lb_mbanner, row, 0, 2, 6 );
40  row += 2;
41  main->addWidget( lb_stoich1, row, 0, 1, 4 );
42  main->addWidget( le_stoich1, row++, 4, 1, 2 );
43  lb_mbanner->adjustSize();
44  QSize wsize = lb_mbanner->frameSize();
45  wwid = wsize.width() / 3 + 8;
46  whgt = wsize.height() / 2;
47 
48  le_stoich1->setText( "2" );
49  }
50 
51  else if ( napars == 2 )
52  { // Dual parameters: stoichiometries
53  lb_mbanner->setText(
54  tr( "Please provide the Stoichiometry\n"
55  "for the Monomer - N-mer - M-mer Equilibrium:" ) );
56  QLabel* lb_stoich1 = us_label( tr( "N-Mer:" ) );
58  QLabel* lb_stoich2 = us_label( tr( "M-Mer:" ) );
60  main->addWidget( lb_mbanner, row, 0, 2, 6 );
61  row += 2;
62  main->addWidget( lb_stoich1, row, 0, 1, 4 );
63  main->addWidget( le_stoich1, row++, 4, 1, 2 );
64  main->addWidget( lb_stoich2, row, 0, 1, 4 );
65  main->addWidget( le_stoich2, row++, 4, 1, 2 );
66  lb_mbanner->adjustSize();
67  QSize wsize = lb_mbanner->frameSize();
68  wwid = wsize.width() / 3 + 8;
69  whgt = wsize.height() / 2;
70 
71  le_stoich1->setText( "2" );
72  le_stoich2->setText( "3" );
73  }
74 
75  else if ( napars == 4 )
76  { // 4 parameters; MW parameters and common vbar
77  QLabel* lb_nmwslot = us_label( tr( "Number of MW Slots:" ) );
79  QLabel* lb_llimmwr = us_label( tr( "Lower Limit of MW Range:" ) );
81  QLabel* lb_ulimmwr = us_label( tr( "Upper Limit of MW Range:" ) );
83  QLayout* lo_cmnvbar = us_checkbox( tr( "Use common vbar value" ),
84  ck_cmnvbar, true );
86  main->addWidget( lb_mbanner, row++, 0, 1, 6 );
87  main->addWidget( lb_nmwslot, row, 0, 1, 4 );
88  main->addWidget( le_nmwslot, row++, 4, 1, 2 );
89  main->addWidget( lb_llimmwr, row, 0, 1, 4 );
90  main->addWidget( le_llimmwr, row++, 4, 1, 2 );
91  main->addWidget( lb_ulimmwr, row, 0, 1, 4 );
92  main->addWidget( le_ulimmwr, row++, 4, 1, 2 );
93  main->addLayout( lo_cmnvbar, row, 0, 1, 4 );
94  main->addWidget( le_cmnvbar, row++, 4, 1, 2 );
95  ck_cmnvbar->adjustSize();
96  QSize wsize = ck_cmnvbar->frameSize();
97  wwid = wsize.width() / 2 + 8;
98  whgt = wsize.height();
99 
100  le_nmwslot->setText( "100" );
101  le_llimmwr->setText( "1.000e+04" );
102  le_ulimmwr->setText( "5.000e+05" );
103  ck_cmnvbar->setChecked( true );
104  le_cmnvbar->setText( "0.7200" );
105  }
106 
107  // Button Row
108  QHBoxLayout* buttons = new QHBoxLayout;
109 
110  QPushButton* pb_help = us_pushbutton( tr( "Help" ) );
111  connect( pb_help, SIGNAL( clicked() ), SLOT( help() ) );
112  buttons->addWidget( pb_help );
113 
114  QPushButton* pb_cancel = us_pushbutton( tr( "Cancel" ) );
115  connect( pb_cancel, SIGNAL( clicked() ), SLOT( cancelled() ) );
116  buttons->addWidget( pb_cancel );
117 
118  QPushButton* pb_accept = us_pushbutton( tr( "OK" ) );
119  connect( pb_accept, SIGNAL( clicked() ), SLOT( selected() ) );
120  buttons->addWidget( pb_accept );
121 
122  main->addLayout( buttons, row++, 0, 1, 6 );
123 
124  // Resize to fit elements added
125  adjustSize();
126  QSize wsize = QSize( wwid * 3 + 4, whgt * row + 32 );
127  resize( wsize );
128 }
129 
130 // Cancel button: no parameters returned
132 {
133  napars = -1;
134  aud_pars.clear();
135 
136  reject();
137  close();
138 }
139 
140 // Select Model button: set up to return data information
142 {
143  aud_pars.clear();
144 
145  if ( napars == 1 || napars == 2 )
146  { // Get stoichiometr(y/ies) if 1 or 2 parameters
147  aud_pars << le_stoich1->text().toDouble();
148 
149  if ( napars == 2 )
150  aud_pars << le_stoich2->text().toDouble();
151  }
152 
153  else if ( napars == 4 )
154  { // Get MW/vbar parameters if 4 parameters
155  aud_pars << le_nmwslot->text().toDouble();
156  aud_pars << le_llimmwr->text().toDouble();
157  aud_pars << le_ulimmwr->text().toDouble();
158 
159  if ( ck_cmnvbar->isChecked() )
160  {
161  aud_pars << le_cmnvbar->text().toDouble();
162  }
163 
164  else
165  {
166  aud_pars << 0.0;
167  }
168  }
169 
170  accept(); // Signal that selection was accepted
171  close();
172 }
173