UltraScan III
us_color.cpp
Go to the documentation of this file.
1 #include "us_color.h"
3 #include "us_gui_settings.h"
4 #include "us_plot.h"
5 
6 US_Color::US_Color( QWidget* w, Qt::WindowFlags flags )
7  : US_Widgets( true, w, flags )
8 {
9  setWindowTitle( "Color Configuration for UltraScan" );
10  setAttribute( Qt::WA_DeleteOnClose );
11 
12  QGridLayout* mainLayout = new QGridLayout( this );
13  mainLayout->setSpacing( 2 );
14  mainLayout->setColumnStretch( 0, 99 ); // Stretch the plot horizontally
15  mainLayout->setColumnStretch( 1, 0 ); // Minimum stretch of this column
16 
17  QGridLayout* leftColumn = new QGridLayout;
18  leftColumn->setSpacing( 2 );
19  leftColumn->setRowStretch( 1, 99 ); // Stretch the plot vertically
20 
21  int row = 0;
22 
23  // Frame banner
24  lbl_background = us_banner( tr( "Frame Background" ) );
25  leftColumn->addWidget( lbl_background, row++, 0, 1, 2 );
26 
27  // Plot example
28  us_plot = new US_Plot( plot, tr( "Sample Plot" ),
29  tr( "X-axis" ), ( "Y-axis" ) );
30 
31  grid = us_grid ( plot );
32  curve = us_curve ( plot, tr( "Sample Curve 1" ) );
33  pick = us_picker( plot );
34 
35  const int ArraySize = 21;
36  double x[ ArraySize ];
37  double y[ ArraySize ];
38 
39  for (int i = 0; i < ArraySize; i++)
40  {
41  x[ i ] = 1.0 + i * 0.2 / ( ArraySize - 1 ); // 1.0 to 1.2
42  y[ i ] = 1.0 + (double) i / ( ArraySize - 1 ); // 1.0 to 2.0
43  }
44 
45  curve->setData( x, y, ArraySize );
46 
47  leftColumn->addLayout( us_plot, row++, 0, 3, 2 );
48 
49  // Plot margin
50 
51  lbl_margin = us_banner( tr( "Current Plot Border Margin:") );
52  leftColumn->addWidget( lbl_margin, row, 0 );
53 
55  QString s;
56 
57  for ( int i = 1; i <= 15; i++ ) //set margin range from 2 to 30
58  {
59  s.sprintf( "%d pixels", i * 2 );
60  cmbb_margin->insertItem( i - 1, s );
61  }
62 
63  connect( cmbb_margin, SIGNAL( activated( int ) ), SLOT( selMargin( int ) ) );
64  leftColumn->addWidget( cmbb_margin, row++, 1 );
65 
66  // Labels
67  lbl_example = us_banner( tr( "Label and Button Examples:" ) );
68  leftColumn->addWidget( lbl_example, row++, 0, 1, 2 );
69 
70  QHBoxLayout* labelLine = new QHBoxLayout();
71  lbl_banner = us_banner( tr( "Banner Label" ) );
72  labelLine->addWidget( lbl_banner );
73 
74  le_edit = us_lineedit( tr( "Line Edit" ), 1, true );
75  le_edit->setAlignment( Qt::AlignCenter );
76  le_edit->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Fixed );
77  labelLine->addWidget( le_edit );
78 
79  lbl_text = us_label( tr( "Text Label" ) );
80  lbl_text->setAlignment( Qt::AlignCenter );
81  labelLine->addWidget( lbl_text );
82  leftColumn->addLayout( labelLine, row++, 0, 1, 2 );
83 
84  // Pushbuttons
85 
86  QHBoxLayout* pbLine = new QHBoxLayout();
87 
88  pb_normal = us_pushbutton( tr( "Pushbutton" ) );
89  pbLine->addWidget( pb_normal );
90 
91  pb_active = us_pushbutton( tr( "Inactive" ) );
92  pb_active->setToolTip( tr( "Click on another window for inactive colors" ) );
93  pbLine->addWidget( pb_active );
94 
95  pb_disabled = us_pushbutton( tr( "Disabled" ), false );
96  pbLine->addWidget( pb_disabled );
97 
98  leftColumn->addLayout( pbLine, row++, 0, 1, 2 );
99 
100  int width = 120;
101 
102  // Progress bar
103  QHBoxLayout* progressLine = new QHBoxLayout();
104 
105  lbl_progress = us_banner( tr("Progress Bar:" ) );
106  lbl_progress->setAlignment( Qt::AlignLeft | Qt::AlignVCenter );
107  lbl_progress->setMinimumWidth( width );
108  progressLine->addWidget( lbl_progress );
109 
110  progress = us_progressBar( 0, 100, 35 );
111  progress->setMinimumWidth( 2 * width );
112  progressLine->addWidget( progress );
113 
114  leftColumn->addLayout( progressLine, row++, 0, 1, 2 );
115 
116  // LCD Panel
117 
118  QHBoxLayout* lcdLine = new QHBoxLayout;
119  lbl_lcd = us_banner( tr( "LCD Panel:" ) );
120  lbl_lcd->setAlignment( Qt::AlignLeft | Qt::AlignVCenter );
121  lbl_lcd->setMinimumWidth( width );
122  lbl_lcd->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
123  lcdLine->addWidget( lbl_lcd );
124 
125  lcd = us_lcd( 3, 35 );
126  lcd->setMinimumWidth( 2 * width );
127  lcdLine->addWidget( lcd );
128 
129  leftColumn->addLayout( lcdLine, row++, 0, 1, 2 );
130 
131  // Counter
132  QHBoxLayout* counterLine = new QHBoxLayout();
133  lbl_counter = us_banner( tr( "Counter:" ) );
134  lbl_counter->setAlignment( Qt::AlignLeft | Qt::AlignVCenter );
135  lbl_counter->setMinimumWidth( width );
136  counterLine->addWidget( lbl_counter );
137 
138  cnt = us_counter( 2, 0.0, 100.0, 35 );
139  cnt->setIncSteps ( QwtCounter::Button1, 1 );
140  cnt->setIncSteps ( QwtCounter::Button2, 20 );
141  cnt->setMinimumWidth( 2 * width );
142  connect( cnt, SIGNAL( valueChanged( double ) ), SLOT( updateWidgets( double ) ) );
143  counterLine->addWidget( cnt );
144 
145  leftColumn->addLayout( counterLine, row++, 0, 1, 2 );
146 
147  // Right side
148  QGridLayout* rightColumn = new QGridLayout;
149  rightColumn->setSpacing( 2 );
150 
151  row = 0;
152 
153  // Style
154  lbl_style = us_label( tr( "Style:" ) );
155  rightColumn->addWidget( lbl_style, row, 0 );
156 
157  QStringList styles = QStyleFactory::keys();
158  styles.sort();
159 
161  cmbb_style->addItems( styles );
162  current.guiStyle = US_GuiSettings::guiStyle();
163 
164  cmbb_style->setCurrentIndex(
165  cmbb_style->findText( current.guiStyle, Qt::MatchFixedString ) );
166 
167  connect( cmbb_style, SIGNAL( activated ( const QString& ) ),
168  SLOT ( selectStyle( const QString& ) ) );
169 
170  rightColumn->addWidget( cmbb_style, row++, 1 );
171 
172  // Colors
173  lbl_assign = us_banner( tr( "Assign new Colors" ) );
174  rightColumn->addWidget( lbl_assign, row++, 0, 1, 2 );
175 
176  lbl_select = us_label( tr( "Selected Screen Element:" ) );
177  rightColumn->addWidget( lbl_select, row, 0 );
178 
179  le_choice = us_lineedit( "", -1, true );
180  rightColumn->addWidget( le_choice, row++, 1 );
181 
182  // Change color boxes
183 
184  QHBoxLayout* color1 = new QHBoxLayout;
185  lbl_color1 = us_label( "Color1" );
186  color_field1 = us_label( "" );
187  color_field1->setFixedSize( 22, 22 );
188  color1->addWidget( lbl_color1 );
189  color1->addWidget( color_field1 );
190 
191  pb_color1 = us_pushbutton( tr( "Change" ) );
192  connect( pb_color1, SIGNAL( clicked() ), SLOT( pick_color1() ) );
193 
194  rightColumn->addLayout( color1 , row , 0 );
195  rightColumn->addWidget( pb_color1, row++, 1 );
196 
197  QHBoxLayout* color2 = new QHBoxLayout;
198  lbl_color2 = us_label( "Color2" );
199  color_field2 = us_label( "" );
200  color_field2->setFixedSize( 22, 22 );
201  color2->addWidget( lbl_color2 );
202  color2->addWidget( color_field2 );
203 
204  pb_color2 = us_pushbutton( tr( "Change" ) );
205  connect( pb_color2, SIGNAL( clicked() ), SLOT( pick_color2() ) );
206 
207  rightColumn->addLayout( color2 , row , 0 );
208  rightColumn->addWidget( pb_color2, row++, 1 );
209 
210  QHBoxLayout* color3 = new QHBoxLayout;
211  lbl_color3 = us_label( "Color3" );
212  color_field3 = us_label( "" );
213  color_field3->setFixedSize( 22, 22 );
214  color3->addWidget( lbl_color3 );
215  color3->addWidget( color_field3 );
216 
217  pb_color3 = us_pushbutton( tr( "Change" ) );
218  connect( pb_color3, SIGNAL( clicked() ), SLOT( pick_color3() ) );
219 
220  rightColumn->addLayout( color3 , row , 0 );
221  rightColumn->addWidget( pb_color3, row++, 1 );
222 
223  QHBoxLayout* color4 = new QHBoxLayout;
224  lbl_color4 = us_label( "Color4" );
225  color_field4 = us_label( "" );
226  color_field4->setFixedSize( 22, 22 );
227  color4->addWidget( lbl_color4 );
228  color4->addWidget( color_field4 );
229 
230  pb_color4 = us_pushbutton( tr( "Change" ) );
231  connect( pb_color4, SIGNAL( clicked() ), SLOT( pick_color4() ) );
232 
233  rightColumn->addLayout( color4 , row , 0 );
234  rightColumn->addWidget( pb_color4, row++, 1 );
235 
236  QHBoxLayout* color5 = new QHBoxLayout;
237  lbl_color5 = us_label( "Color5" );
238  color_field5 = us_label( "" );
239  color_field5->setFixedSize( 22, 22 );
240  color5->addWidget( lbl_color5 );
241  color5->addWidget( color_field5 );
242 
243  pb_color5 = us_pushbutton( tr( "Change" ) );
244  connect( pb_color5, SIGNAL( clicked() ), SLOT( pick_color5() ) );
245 
246  rightColumn->addLayout( color5 , row , 0 );
247  rightColumn->addWidget( pb_color5, row++, 1 );
248 
249  QHBoxLayout* color6 = new QHBoxLayout;
250  lbl_color6 = us_label( "Color6" );
251  color_field6 = us_label( "" );
252  color_field6->setFixedSize( 22, 22 );
253  color6->addWidget( lbl_color6 );
254  color6->addWidget( color_field6 );
255 
256  pb_color6 = us_pushbutton( tr( "Change" ) );
257  connect( pb_color6, SIGNAL( clicked() ), SLOT( pick_color6() ) );
258 
259  rightColumn->addLayout( color6 , row , 0 );
260  rightColumn->addWidget( pb_color6, row++, 1 );
261 
262  // Scheme/Element selection
263 
264  lbl_choices = us_banner( tr( "Please Make a Selection:" ) );
265  rightColumn->addWidget( lbl_choices, row++, 0, 1, 2 );
266 
267  lbl_select_scheme = us_label( tr( "Select Color Scheme:" ) );
268  lbl_select_element = us_label( tr( "Select a Screen Element:" ) );
269  rightColumn->addWidget( lbl_select_scheme , row , 0 );
270  rightColumn->addWidget( lbl_select_element, row++, 1 );
271 
273  schemes->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Expanding );
274  schemes->setMaximumWidth( 160 );
275  schemes->setMinimumWidth( 160 );
276 
277  // Delay population of schemes until after delete pushbutton is created
278  //updateSchemeList();
279 
280  // For some reason, this needs to be after the first call to updateSchemeList();
281  //connect( schemes, SIGNAL( itemSelectionChanged() ),
282  // SLOT ( selected_scheme () ) );
283 
284  rightColumn->setRowStretch( row, 99 ); // High number is arbitrary
285  rightColumn->addWidget( schemes, row, 0 );
286 
288  elements->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Expanding );
289  elements->setMaximumWidth( 160 );
290  elements->setMinimumWidth( 160 );
291  elements->insertItem( FRAME , tr( "Frame and Banner" ) );
292  elements->insertItem( NORMAL_PB , tr( "Pushbutton, normal" ) );
293  elements->insertItem( DISABLED_PB , tr( "Pushbutton, disabled" ) );
294  elements->insertItem( PLOT_FRAME , tr( "Plot, frame" ) );
295  elements->insertItem( PLOT_CANVAS , tr( "Plot, canvas" ) );
296  elements->insertItem( LABELS , tr( "Labels" ) );
297  elements->insertItem( OTHER_WIDGETS, tr( "Other Widgets" ) );
298  elements->insertItem( LCD , tr( "LCD Panel" ) );
299  elements->insertItem( EDIT_BOXES , tr( "Edit Boxes" ) );
300 
301  connect( elements, SIGNAL( currentRowChanged( int ) ),
302  this, SLOT ( selectedElement ( int ) ) );
303 
304  rightColumn->addWidget( elements, row++, 1 );
305 
306  pb_save_as = us_pushbutton( tr( "Save Color Scheme as:" ) );
307  connect( pb_save_as, SIGNAL( clicked() ), SLOT( save_as() ) );
308  rightColumn->addWidget( pb_save_as, row, 0 );
309 
310  le_save_as = us_lineedit( tr( "MyColors" ), 0 );
311 
312  rightColumn->addWidget( le_save_as, row++, 1 );
313 
314  // Bottom row of buttons
315 
316  QHBoxLayout* buttonBar = new QHBoxLayout;
317 
318  pb_apply = us_pushbutton( tr( "Set as Current" ) );
319  buttonBar->addWidget( pb_apply );
320  connect( pb_apply, SIGNAL( clicked() ), SLOT( apply() ) );
321 
322  pb_reset = us_pushbutton( tr( "Reset" ) );
323  buttonBar->addWidget( pb_reset );
324  connect( pb_reset, SIGNAL( clicked() ), SLOT( reset() ) );
325 
326  pb_delete = us_pushbutton( tr( "Delete" ) );
327  buttonBar->addWidget( pb_delete );
328  connect( pb_delete, SIGNAL( clicked() ), SLOT( delete_scheme() ) );
329 
331  connect( schemes, SIGNAL( itemSelectionChanged() ),
332  SLOT ( selected_scheme () ) );
333 
334  pb_help = us_pushbutton( tr( "Help" ) );
335  buttonBar->addWidget( pb_help );
336  connect( pb_help, SIGNAL( clicked() ), SLOT( help() ) );
337 
338  pb_quit = us_pushbutton( tr( "Close" ) );
339  buttonBar->addWidget( pb_quit );
340  connect( pb_quit, SIGNAL( clicked() ), SLOT( close() ) );
341 
342  mainLayout->addLayout( leftColumn , 0, 0 );
343  mainLayout->addLayout( rightColumn, 0, 1 );
344  mainLayout->addLayout( buttonBar , 1, 0, 1, 2 );
345 
346  reset();
347 }
349 {
350  current.plotMargin = US_GuiSettings::plotMargin();
351  current.guiStyle = US_GuiSettings::guiStyle();
352 
353  current.plotCurve = US_GuiSettings::plotCurve();
355  current.plotMajorGrid = US_GuiSettings::plotMajGrid();
356  current.plotMinorGrid = US_GuiSettings::plotMinGrid();
357  current.plotPicker = US_GuiSettings::plotPicker();
358 
359  current.frameColor = US_GuiSettings::frameColor();
360  current.pushbColor = US_GuiSettings::pushbColor();
361  current.labelColor = US_GuiSettings::labelColor();
362  current.editColor = US_GuiSettings::editColor();
363  current.normalColor = US_GuiSettings::normalColor();
364  current.lcdColor = US_GuiSettings::lcdColor();
365  current.plotColor = US_GuiSettings::plotColor();
366 }
367 
369 {
370  QApplication::setStyle( current.guiStyle );
371 
372  cmbb_style->setCurrentIndex(
373  cmbb_style->findText( current.guiStyle, Qt::MatchFixedString ) );
374 
375  selectedElement( elements->currentRow() );
376  resetFrames();
377  resetButtons();
378  resetLabels();
379  resetWidgets();
380  resetEditBoxes();
381 
382  plot ->setPalette ( current.plotColor );
383  plot ->setCanvasBackground( current.plotBg );
384  grid ->setMajPen ( QPen( current.plotMajorGrid ) );
385  grid ->setMinPen ( QPen( current.plotMinorGrid ) );
386  curve->setPen ( QPen( current.plotCurve ) );
387  pick ->setRubberBandPen ( QPen( current.plotPicker ) );
388  pick ->setTrackerPen ( QPen( current.plotPicker ) );
389 
390  lcd ->setPalette ( current.lcdColor );
391 }
392 
393 void US_Color::selectedElement( int index )
394 {
395  QPalette p;
396  QColor c;
397 
398  le_choice->setText( elements->item( index )->text() );
399 
400  switch ( index )
401  {
402  case FRAME: // Frame and Banner
403  pb_color1->setEnabled( true );
404  pb_color2->setEnabled( true );
405  pb_color3->setEnabled( true );
406  pb_color4->setEnabled( true );
407  pb_color5->setEnabled( true );
408  pb_color6->setEnabled( false );
409 
410  p = current.frameColor;
411 
412  /* Right now, the only colors needed are Window (background),
413  * WindowText( text), and MidLight (border). This assumes
414  * a Frame style of StyledPanel. The colors needed may change
415  * for different operating systems. */
416 
417 
418  // Set 2 before 1 so we don't overwrite p's Window Color
419  lbl_color2->setText( tr( "Background:" ) );
420  c = p.color( QPalette::Active, QPalette::Window );
421  p.setColor( QPalette::Window, c );
422  color_field2->setPalette( p );
423 
424  lbl_color1->setText( tr( "Text:" ) );
425  c = p.color( QPalette::Active, QPalette::WindowText );
426  p.setColor( QPalette::Window, c );
427  color_field1->setPalette( p );
428 
429  lbl_color3->setText( tr( "Border:" ) );
430  c = p.color( QPalette::Active, QPalette::Light );
431  p.setColor( QPalette::Window, c );
432  color_field3->setPalette( p );
433 
434  lbl_color4->setText( tr( "Medium Shadow:" ) );
435  c = p.color( QPalette::Active, QPalette::Dark );
436  p.setColor( QPalette::Window, c );
437  color_field4->setPalette( p );
438 
439  lbl_color5->setText( tr( "Medium Highlight:" ) );
440  c = p.color( QPalette::Active, QPalette::Midlight );
441  p.setColor( QPalette::Window, c );
442  color_field5->setPalette( p );
443 
444  p.setColor( QPalette::Window, Qt::gray );
445  lbl_color6->setText( "" );
446  color_field6->setPalette( p );
447 
448  break;
449 
450  case NORMAL_PB: // Pushbutton - active and inactive
451 
452  pb_color1->setEnabled( true );
453  pb_color2->setEnabled( true );
454  pb_color3->setEnabled( true );
455  pb_color4->setEnabled( true );
456  pb_color5->setEnabled( false );
457  pb_color6->setEnabled( false );
458 
459  p = current.pushbColor;
460 
461  lbl_color1->setText( tr( "Active Text:" ) );
462  c = p.color( QPalette::Active, QPalette::ButtonText );
463  p.setColor( QPalette::Window, c );
464  color_field1->setPalette( p );
465 
466  lbl_color2->setText( tr( "Active Background:" ) );
467  c = p.color( QPalette::Active, QPalette::Button );
468  p.setColor( QPalette::Window, c );
469  color_field2->setPalette( p );
470 
471  lbl_color3->setText( tr( "Inactive Text" ) );
472  c = p.color( QPalette::Inactive, QPalette::ButtonText );
473  p.setColor( QPalette::Window, c );
474  color_field3->setPalette( p );
475 
476  lbl_color4->setText( tr( "Inactive Background:" ) );
477  c = p.color( QPalette::Inactive, QPalette::Button );
478  p.setColor( QPalette::Window, c );
479  color_field4->setPalette( p );
480 
481  lbl_color5->setText( "" );
482  color_field5->setPalette( p );
483 
484  lbl_color6->setText( "" );
485  color_field6->setPalette( p );
486 
487  break;
488 
489  case DISABLED_PB: // Pushbutton - disabled
490 
491  pb_color1->setEnabled( true );
492  pb_color2->setEnabled( true );
493  pb_color3->setEnabled( true );
494  pb_color4->setEnabled( true );
495  pb_color5->setEnabled( false );
496  pb_color6->setEnabled( false );
497 
498  p = current.pushbColor;
499 
500  lbl_color1->setText( tr( "Text:" ) );
501  c = p.color( QPalette::Disabled, QPalette::ButtonText );
502  p.setColor( QPalette::Window, c );
503  color_field1->setPalette( p );
504 
505  lbl_color2->setText( tr( "Background:" ) );
506  c = p.color( QPalette::Disabled, QPalette::Button );
507  p.setColor( QPalette::Window, c );
508  color_field2->setPalette( p );
509 
510  lbl_color3->setText( tr( "Drop Shadow:" ) );
511  c = p.color( QPalette::Disabled, QPalette::Light );
512  p.setColor( QPalette::Window, c );
513  color_field3->setPalette( p );
514 
515  p.setColor( QPalette::Window, Qt::gray );
516  lbl_color4->setText( "" );
517  color_field4->setPalette( p );
518 
519  lbl_color5->setText( "" );
520  color_field5->setPalette( p );
521 
522  lbl_color6->setText( "" );
523  color_field6->setPalette( p );
524  break;
525 
526  case PLOT_FRAME: // Plot, frame
527 
528  pb_color1->setEnabled( true );
529  pb_color2->setEnabled( true );
530  pb_color3->setEnabled( true );
531  pb_color4->setEnabled( true );
532  pb_color5->setEnabled( false );
533  pb_color6->setEnabled( false );
534 
535  p = current.plotColor;
536 
537  lbl_color2->setText( tr( "Background:" ) );
538  c = p.color( QPalette::Active, QPalette::Window );
539  p.setColor( QPalette::Window, c );
540  color_field2->setPalette( p );
541 
542  lbl_color1->setText( tr( "Tick Marks:" ) );
543  c = p.color( QPalette::Active, QPalette::WindowText );
544  p.setColor( QPalette::Window, c );
545  color_field1->setPalette( p );
546 
547  lbl_color3->setText( tr( "Text:" ) );
548  c = p.color( QPalette::Active, QPalette::Shadow );
549  p.setColor( QPalette::Window, c );
550  color_field3->setPalette( p );
551 
552  lbl_color4->setText( "Plot Tracker:" );
553  p.setColor( QPalette::Window, current.plotPicker );
554  color_field4->setPalette( p );
555 
556  p.setColor( QPalette::Window, Qt::gray );
557  lbl_color5->setText( "" );
558  color_field5->setPalette( p );
559 
560  lbl_color6->setText( "" );
561  color_field6->setPalette( p );
562 
563  break;
564 
565  case PLOT_CANVAS: // Plot, canvas
566 
567  pb_color1->setEnabled( true );
568  pb_color2->setEnabled( true );
569  pb_color3->setEnabled( true );
570  pb_color4->setEnabled( true );
571  pb_color5->setEnabled( false );
572  pb_color6->setEnabled( false );
573 
574  lbl_color1->setText( tr( "Plot Background:" ) );
575  p.setColor( QPalette::Window, current.plotBg );
576  color_field1->setPalette( p );
577 
578  lbl_color2->setText( tr( "Curve:" ) );
579  p.setColor( QPalette::Window, current.plotCurve );
580  color_field2->setPalette( p );
581 
582  lbl_color3->setText( tr( "Major Grid Lines:" ) );
583  p.setColor( QPalette::Window, current.plotMajorGrid );
584  color_field3->setPalette( p );
585 
586  lbl_color4->setText( tr( "Minor Grid Lines" ) );
587  p.setColor( QPalette::Window, current.plotMinorGrid );
588  color_field4->setPalette( p );
589 
590  p.setColor( QPalette::Window, Qt::gray );
591  lbl_color5->setText( "" );
592  color_field5->setPalette( p );
593 
594  lbl_color6->setText( "" );
595  color_field6->setPalette( p );
596 
597  break;
598 
599  case LABELS: // Labels
600 
601  pb_color1->setEnabled( true );
602  pb_color2->setEnabled( true );
603  pb_color3->setEnabled( false );
604  pb_color4->setEnabled( false );
605  pb_color5->setEnabled( false );
606  pb_color6->setEnabled( false );
607 
608  p = current.labelColor;
609 
610  // Set 2 before 1 so we don't overwrite p's Window Color
611  lbl_color2->setText( tr( "Background:" ) );
612  c = p.color( QPalette::Active, QPalette::Window );
613  p.setColor( QPalette::Window, c );
614  color_field2->setPalette( p );
615 
616  lbl_color1->setText( tr( "Text:" ) );
617  c = p.color( QPalette::Active, QPalette::WindowText );
618  p.setColor( QPalette::Window, c );
619  color_field1->setPalette( p );
620 
621  p.setColor( QPalette::Window, Qt::gray );
622  lbl_color3->setText( "" );
623  color_field3->setPalette( p );
624 
625  lbl_color4->setText( "" );
626  color_field4->setPalette( p );
627 
628  lbl_color5->setText( "" );
629  color_field5->setPalette( p );
630 
631  lbl_color6->setText( "" );
632  color_field6->setPalette( p );
633 
634  break;
635 
636  case OTHER_WIDGETS: // Other Widgets
637 
638  pb_color1->setEnabled( true );
639  pb_color2->setEnabled( true );
640  pb_color3->setEnabled( true );
641  pb_color4->setEnabled( true );
642  pb_color5->setEnabled( true );
643  pb_color6->setEnabled( true );
644 
645  p = current.normalColor;
646 
647  // Set 2 before 1 so we don't overwrite p's Window Color
648  lbl_color2->setText( tr( "Default Background:" ) );
649  c = p.color( QPalette::Active, QPalette::Base );
650  p.setColor( QPalette::Window, c );
651  color_field2->setPalette( p );
652 
653  lbl_color1->setText( tr( "Default Text:" ) );
654  c = p.color( QPalette::Active, QPalette::Text );
655  p.setColor( QPalette::Window, c );
656  color_field1->setPalette( p );
657 
658  lbl_color3->setText( tr( "Default Border:" ) );
659  c = p.color( QPalette::Active, QPalette::Light );
660  p.setColor( QPalette::Window, c );
661  color_field3->setPalette( p );
662 
663  lbl_color4->setText( tr( "Alternate Text:" ) );
664  c = p.color( QPalette::Active, QPalette::ButtonText );
665  p.setColor( QPalette::Window, c );
666  color_field4->setPalette( p );
667 
668  lbl_color5->setText( tr( "Alternate Background:" ) );
669  c = p.color( QPalette::Active, QPalette::Button );
670  p.setColor( QPalette::Window, c );
671  color_field5->setPalette( p );
672 
673  lbl_color6->setText( tr( "Highlight:" ) );
674  c = p.color( QPalette::Active, QPalette::Midlight );
675  p.setColor( QPalette::Window, c );
676  color_field6->setPalette( p );
677  break;
678 
679  case LCD: // LCD Panels
680 
681  pb_color1->setEnabled( true );
682  pb_color2->setEnabled( true );
683  pb_color3->setEnabled( true );
684  pb_color4->setEnabled( true );
685  pb_color5->setEnabled( false );
686  pb_color6->setEnabled( false );
687 
688  p = current.lcdColor;
689 
690  // Set 2 before 1 so we don't overwrite p's Window Color
691  lbl_color2->setText( tr( "Background:" ) );
692  c = p.color( QPalette::Active, QPalette::Window );
693  p.setColor( QPalette::Window, c );
694  color_field2->setPalette( p );
695 
696  lbl_color1->setText( tr( "Text:" ) );
697  c = p.color( QPalette::Active, QPalette::WindowText );
698  p.setColor( QPalette::Window, c );
699  color_field1->setPalette( p );
700 
701  lbl_color3->setText( tr( "Highlight1:" ) );
702  c = p.color( QPalette::Active, QPalette::Shadow );
703  p.setColor( QPalette::Window, c );
704  color_field3->setPalette( p );
705 
706  lbl_color4->setText( tr( "Highlight2" ) );
707  c = p.color( QPalette::Active, QPalette::Light );
708  p.setColor( QPalette::Window, c );
709  color_field4->setPalette( p );
710 
711  p.setColor( QPalette::Window, Qt::gray );
712  lbl_color5->setText( "" );
713  color_field5->setPalette( p );
714 
715  lbl_color6->setText( "" );
716  color_field6->setPalette( p );
717  break;
718 
719  case EDIT_BOXES:
720 
721  pb_color1->setEnabled( true );
722  pb_color2->setEnabled( true );
723  pb_color3->setEnabled( true );
724  pb_color4->setEnabled( false );
725  pb_color5->setEnabled( false );
726  pb_color6->setEnabled( false );
727 
728  p = current.editColor;
729 
730  // Set 2 before 1 so we don't overwrite p's Window Color
731  lbl_color2->setText( tr( "Background:" ) );
732  c = p.color( QPalette::Active, QPalette::Base );
733  p.setColor( QPalette::Window, c );
734  color_field2->setPalette( p );
735 
736  lbl_color1->setText( tr( "Text:" ) );
737  c = p.color( QPalette::Active, QPalette::Text );
738  p.setColor( QPalette::Window, c );
739  color_field1->setPalette( p );
740 
741  lbl_color3->setText( tr( "Highlight:" ) );
742  c = p.color( QPalette::Active, QPalette::Shadow );
743  p.setColor( QPalette::Window, c );
744  color_field3->setPalette( p );
745 
746  p.setColor( QPalette::Window, Qt::gray );
747  lbl_color4->setText( "" );
748  color_field4->setPalette( p );
749 
750  lbl_color5->setText( "" );
751  color_field5->setPalette( p );
752 
753  lbl_color6->setText( "" );
754  color_field6->setPalette( p );
755  break;
756  }
757 }
758 
760 {
761  QPalette p = current.frameColor;
762  setPalette( p );
763  lbl_background->setPalette( p );
764  lbl_margin ->setPalette( p );
765  lbl_example ->setPalette( p );
766  lbl_banner ->setPalette( p );
767  lbl_progress ->setPalette( p );
768  lbl_lcd ->setPalette( p );
769  lbl_counter ->setPalette( p );
770  lbl_assign ->setPalette( p );
771  lbl_choices ->setPalette( p );
772 }
773 
775 {
776  QPalette p = current.pushbColor;
777 
778  pb_color1 ->setPalette( p );
779  pb_color2 ->setPalette( p );
780  pb_color3 ->setPalette( p );
781  pb_color4 ->setPalette( p );
782  pb_color5 ->setPalette( p );
783  pb_color6 ->setPalette( p );
784 
785  pb_normal ->setPalette( p );
786  pb_active ->setPalette( p );
787  pb_disabled->setPalette( p );
788 
789  pb_save_as ->setPalette( p );
790  pb_apply ->setPalette( p );
791  pb_reset ->setPalette( p );
792  pb_delete ->setPalette( p );
793  pb_help ->setPalette( p );
794  pb_quit ->setPalette( p );
795 }
796 
798 {
799  QPalette p = current.labelColor;
800 
801  lbl_text ->setPalette( p );
802  lbl_select ->setPalette( p );
803  lbl_color1 ->setPalette( p );
804  lbl_color2 ->setPalette( p );
805  lbl_color3 ->setPalette( p );
806  lbl_color4 ->setPalette( p );
807  lbl_color5 ->setPalette( p );
808  lbl_color6 ->setPalette( p );
809  lbl_select_scheme ->setPalette( p );
810  lbl_select_element->setPalette( p );
811 }
812 
814 {
815  QPalette p = current.normalColor;
816 
817  cmbb_margin->setPalette( p );
818  cmbb_style ->setPalette( p );
819  progress ->setPalette( p );
820  cnt ->setPalette( p );
821 }
822 
824 {
825  QPalette p = current.editColor;
826  le_choice ->setPalette( p );
827  le_edit ->setPalette( p );
828  le_save_as->setPalette( p );
829  schemes ->setPalette( p );
830  elements ->setPalette( p );
831 }
832 
834 {
835  // Get the current color
836  QColor old = color_field1->palette().color( QPalette::Window );
837 
838  // Get the new color
839  QColor c = QColorDialog::getColor( old );
840 
841  if ( ! c.isValid() || c == old ) return;
842 
843  // Set the new color in selection window
844  QPalette p;
845 
846  p.setColor( QPalette::Window, c );
847  color_field1->setPalette( p );
848 
849  // Figure out what to do based on current element selected
850 
851  switch ( elements->currentRow() )
852  {
853  case FRAME:
854 
855  current.frameColor.setColor( QPalette::Active , QPalette::WindowText, c );
856  current.frameColor.setColor( QPalette::Inactive, QPalette::WindowText, c );
857  current.frameColor.setColor( QPalette::Disabled, QPalette::WindowText, c );
858  resetFrames();
859  break;
860 
861  case NORMAL_PB:
862  current.pushbColor.setColor( QPalette::Active , QPalette::ButtonText, c );
863  resetButtons();
864  break;
865 
866  case DISABLED_PB:
867  current.pushbColor.setColor( QPalette::Disabled, QPalette::ButtonText, c );
868  resetButtons();
869  break;
870 
871  case PLOT_FRAME:
872  current.plotColor.setColor( QPalette::Active , QPalette::WindowText, c );
873  current.plotColor.setColor( QPalette::Inactive, QPalette::WindowText, c );
874  current.plotColor.setColor( QPalette::Disabled, QPalette::WindowText, c );
875  plot->setPalette( current.plotColor );
876  plot->replot();
877  break;
878 
879  case PLOT_CANVAS:
880  current.plotBg = c;
881  plot->setCanvasBackground( c );
882  plot->replot();
883  break;
884 
885  case LABELS:
886  current.labelColor.setColor( QPalette::Active , QPalette::WindowText, c );
887  current.labelColor.setColor( QPalette::Inactive, QPalette::WindowText, c );
888  current.labelColor.setColor( QPalette::Disabled, QPalette::WindowText, c );
889  resetLabels();
890  break;
891 
892  case OTHER_WIDGETS:
893  current.normalColor.setColor( QPalette::Active , QPalette::Text, c );
894  current.normalColor.setColor( QPalette::Inactive, QPalette::Text, c );
895  current.normalColor.setColor( QPalette::Disabled, QPalette::Text, c );
896  resetWidgets();
897  break;
898 
899  case LCD:
900  current.lcdColor.setColor( QPalette::Active , QPalette::WindowText, c );
901  current.lcdColor.setColor( QPalette::Inactive, QPalette::WindowText, c );
902  current.lcdColor.setColor( QPalette::Disabled, QPalette::WindowText, c );
903  lcd->setPalette( current.lcdColor );
904  break;
905 
906  case EDIT_BOXES:
907  current.editColor.setColor( QPalette::Active , QPalette::Text, c );
908  current.editColor.setColor( QPalette::Inactive, QPalette::Text, c );
909  current.editColor.setColor( QPalette::Disabled, QPalette::Text, c );
910  resetEditBoxes();;
911  break;
912  }
913 }
914 
916 {
917  // Get the current color
918  QColor old = color_field2->palette().color( QPalette::Window );
919 
920  // Get the new color
921  QColor c = QColorDialog::getColor( old );
922 
923  if ( ! c.isValid() || c == old ) return;
924 
925  // Set the new color in selection window
926  QPalette p;
927 
928  p.setColor( QPalette::Window, c );
929  color_field2->setPalette( p );
930 
931  // Figure out what to do based on current element selected
932 
933  switch ( elements->currentRow() )
934  {
935  case FRAME:
936 
937  current.frameColor.setColor( QPalette::Active , QPalette::Window, c );
938  current.frameColor.setColor( QPalette::Inactive, QPalette::Window, c );
939  current.frameColor.setColor( QPalette::Disabled, QPalette::Window, c );
940  resetFrames();
941  break;
942 
943  case NORMAL_PB:
944  current.pushbColor.setColor( QPalette::Active , QPalette::Button, c );
945  resetButtons();
946  break;
947 
948  case DISABLED_PB:
949  current.pushbColor.setColor( QPalette::Disabled, QPalette::Button, c );
950  resetButtons();
951  break;
952 
953  case PLOT_FRAME:
954  current.plotColor.setColor( QPalette::Active , QPalette::Window, c );
955  current.plotColor.setColor( QPalette::Inactive, QPalette::Window, c );
956  current.plotColor.setColor( QPalette::Disabled, QPalette::Window, c );
957  plot->setPalette( current.plotColor );
958  plot->replot();
959  break;
960 
961  case PLOT_CANVAS:
962  current.plotCurve = c;
963  curve->setPen( QPen( c ) );
964  plot->replot();
965  break;
966 
967  case LABELS:
968  current.labelColor.setColor( QPalette::Active , QPalette::Window, c );
969  current.labelColor.setColor( QPalette::Inactive, QPalette::Window, c );
970  current.labelColor.setColor( QPalette::Disabled, QPalette::Window, c );
971  resetLabels();
972  break;
973 
974  case OTHER_WIDGETS:
975  current.normalColor.setColor( QPalette::Active , QPalette::Base, c );
976  current.normalColor.setColor( QPalette::Inactive, QPalette::Base, c );
977  current.normalColor.setColor( QPalette::Disabled, QPalette::Base, c );
978  resetWidgets();
979  break;
980 
981  case LCD:
982  current.lcdColor.setColor( QPalette::Active , QPalette::Window, c );
983  current.lcdColor.setColor( QPalette::Inactive, QPalette::Window, c );
984  current.lcdColor.setColor( QPalette::Disabled, QPalette::Window, c );
985  lcd->setPalette( current.lcdColor );
986  break;
987 
988  case EDIT_BOXES:
989  current.editColor.setColor( QPalette::Active , QPalette::Base, c );
990  current.editColor.setColor( QPalette::Inactive, QPalette::Base, c );
991  current.editColor.setColor( QPalette::Disabled, QPalette::Base, c );
992  resetEditBoxes();
993  break;
994  }
995 }
996 
998 {
999  // Get the current color
1000  QColor old = color_field3->palette().color( QPalette::Window );
1001 
1002  // Get the new color
1003  QColor c = QColorDialog::getColor( old );
1004 
1005  if ( ! c.isValid() || c == old ) return;
1006 
1007  // Set the new color in selection window
1008  QPalette p;
1009 
1010  p.setColor( QPalette::Window, c );
1011  color_field3->setPalette( p );
1012 
1013  // Figure out what to do based on current element selected
1014 
1015  switch ( elements->currentRow() )
1016  {
1017  case FRAME:
1018 
1019  current.frameColor.setColor( QPalette::Active , QPalette::Light, c );
1020  current.frameColor.setColor( QPalette::Inactive, QPalette::Light, c );
1021  current.frameColor.setColor( QPalette::Disabled, QPalette::Light, c );
1022  resetFrames();
1023  break;
1024 
1025  case NORMAL_PB:
1026  current.pushbColor.setColor( QPalette::Inactive, QPalette::ButtonText, c );
1027  resetButtons();
1028  break;
1029 
1030  case DISABLED_PB:
1031  current.pushbColor.setColor( QPalette::Disabled, QPalette::Light, c );
1032  resetButtons();
1033  break;
1034 
1035  case PLOT_FRAME:
1036  current.plotColor.setColor( QPalette::Active , QPalette::Text, c );
1037  current.plotColor.setColor( QPalette::Inactive, QPalette::Text, c );
1038  current.plotColor.setColor( QPalette::Disabled, QPalette::Text, c );
1039  plot->setPalette( current.plotColor );
1040  plot->replot();
1041  break;
1042 
1043  case PLOT_CANVAS:
1044  current.plotMajorGrid = c;
1045  grid->setMajPen( QPen( c ) );
1046  plot->replot();
1047  break;
1048 
1049  case OTHER_WIDGETS:
1050  current.normalColor.setColor( QPalette::Active , QPalette::Shadow, c );
1051  current.normalColor.setColor( QPalette::Inactive, QPalette::Shadow, c );
1052  current.normalColor.setColor( QPalette::Disabled, QPalette::Shadow, c );
1053  resetWidgets();
1054  break;
1055 
1056  case LCD:
1057  current.lcdColor.setColor( QPalette::Active , QPalette::Dark, c );
1058  current.lcdColor.setColor( QPalette::Inactive, QPalette::Dark, c );
1059  current.lcdColor.setColor( QPalette::Disabled, QPalette::Dark, c );
1060  lcd->setPalette( current.lcdColor );
1061  break;
1062 
1063  case EDIT_BOXES:
1064  current.editColor.setColor( QPalette::Active , QPalette::Shadow, c );
1065  current.editColor.setColor( QPalette::Inactive, QPalette::Shadow, c );
1066  current.editColor.setColor( QPalette::Disabled, QPalette::Shadow, c );
1067  resetEditBoxes();
1068  break;
1069  }
1070 }
1071 
1073 {
1074  // Get the current color
1075  QColor old = color_field4->palette().color( QPalette::Window );
1076 
1077  // Get the new color
1078  QColor c = QColorDialog::getColor( old );
1079 
1080  if ( ! c.isValid() || c == old ) return;
1081 
1082  // Set the new color in selection window
1083  QPalette p;
1084 
1085  p.setColor( QPalette::Window, c );
1086  color_field4->setPalette( p );
1087 
1088  // Figure out what to do based on current element selected
1089 
1090  switch ( elements->currentRow() )
1091  {
1092  case FRAME:
1093 
1094  current.frameColor.setColor( QPalette::Active , QPalette::Dark, c );
1095  current.frameColor.setColor( QPalette::Inactive, QPalette::Dark, c );
1096  current.frameColor.setColor( QPalette::Disabled, QPalette::Dark, c );
1097  resetFrames();
1098  break;
1099 
1100  case NORMAL_PB:
1101  current.pushbColor.setColor( QPalette::Inactive, QPalette::Button, c );
1102  resetButtons();
1103  break;
1104 
1105  case PLOT_FRAME:
1106  current.plotPicker = c;
1107  pick ->setRubberBandPen( QPen( c ) );
1108  pick ->setTrackerPen ( QPen( c ) );
1109  plot->replot();
1110  break;
1111 
1112  case PLOT_CANVAS:
1113  current.plotMajorGrid = c;
1114  grid->setMajPen( QPen( c ) );
1115  plot->replot();
1116  break;
1117 
1118  case OTHER_WIDGETS:
1119  current.normalColor.setColor( QPalette::Active , QPalette::ButtonText, c );
1120  current.normalColor.setColor( QPalette::Inactive, QPalette::ButtonText, c );
1121  current.normalColor.setColor( QPalette::Disabled, QPalette::ButtonText, c );
1122  resetWidgets();
1123  break;
1124 
1125  case LCD:
1126  current.lcdColor.setColor( QPalette::Active , QPalette::Light, c );
1127  current.lcdColor.setColor( QPalette::Inactive, QPalette::Light, c );
1128  current.lcdColor.setColor( QPalette::Disabled, QPalette::Light, c );
1129  lcd->setPalette( current.lcdColor );
1130  break;
1131  }
1132 }
1133 
1135 {
1136  // Get the current color
1137  QColor old = color_field5->palette().color( QPalette::Window );
1138 
1139  // Get the new color
1140  QColor c = QColorDialog::getColor( old );
1141 
1142  if ( ! c.isValid() || c == old ) return;
1143 
1144  // Set the new color in selection window
1145  QPalette p;
1146 
1147  p.setColor( QPalette::Window, c );
1148  color_field5->setPalette( p );
1149 
1150  // Figure out what to do based on current element selected
1151 
1152  switch ( elements->currentRow() )
1153  {
1154  case FRAME:
1155 
1156  current.frameColor.setColor( QPalette::Active , QPalette::Midlight, c );
1157  current.frameColor.setColor( QPalette::Inactive, QPalette::Midlight, c );
1158  current.frameColor.setColor( QPalette::Disabled, QPalette::Midlight, c );
1159  resetFrames();
1160  break;
1161 
1162  case OTHER_WIDGETS:
1163  current.normalColor.setColor( QPalette::Active , QPalette::Button, c );
1164  current.normalColor.setColor( QPalette::Inactive, QPalette::Button, c );
1165  current.normalColor.setColor( QPalette::Disabled, QPalette::Button, c );
1166  resetWidgets();
1167  break;
1168  }
1169 }
1170 
1172 {
1173  // Get the current color
1174  QColor old = color_field6->palette().color( QPalette::Window );
1175 
1176  // Get the new color
1177  QColor c = QColorDialog::getColor( old );
1178 
1179  if ( ! c.isValid() || c == old ) return;
1180 
1181  // Set the new color in selection window
1182  QPalette p;
1183 
1184  p.setColor( QPalette::Window, c );
1185  color_field6->setPalette( p );
1186 
1187  // Figure out what to do based on current element selected
1188 
1189  switch ( elements->currentRow() )
1190  {
1191  case OTHER_WIDGETS:
1192  current.normalColor.setColor( QPalette::Active , QPalette::Midlight, c );
1193  current.normalColor.setColor( QPalette::Inactive, QPalette::Midlight, c );
1194  current.normalColor.setColor( QPalette::Disabled, QPalette::Midlight, c );
1195  resetWidgets();
1196  break;
1197  }
1198 }
1199 
1200 void US_Color::help( void )
1201 {
1202  showhelp.show_help( "manual/uscol.html" );
1203 }
1204 
1206 {
1207  elements->setCurrentRow( 0 );
1208  schemes ->setCurrentRow( 0 );
1209 
1211  updateScreen();
1212 
1213  cnt->setValue( 35 );
1214  updateWidgets( 35 );
1215 
1216  int index = current.plotMargin / 2 - 1;
1217  cmbb_margin->setCurrentIndex( index );
1218  selMargin( index );
1219 
1220  pb_delete->setEnabled( false );
1221 }
1222 
1223 void US_Color::updateWidgets( double newval )
1224 {
1225  lcd->display( newval );
1226  progress->reset();
1227  progress->setValue( (int)newval );
1228 }
1229 
1230 void US_Color:: selMargin( int index )
1231 {
1232  current.plotMargin = ( index + 1 ) * 2;
1233  plot->setMargin( current.plotMargin );
1234 }
1235 
1236 void US_Color::apply( void )
1237 {
1239  US_GuiSettings::set_plotMargin ( current.plotMargin );
1240 
1241  US_GuiSettings::set_plotCurve ( current.plotCurve );
1243  US_GuiSettings::set_plotMajGrid ( current.plotMajorGrid );
1244  US_GuiSettings::set_plotMinGrid ( current.plotMinorGrid );
1245  US_GuiSettings::set_plotPicker ( current.plotPicker );
1246 
1247  US_GuiSettings::set_frameColor ( current.frameColor );
1248  US_GuiSettings::set_pushbColor ( current.pushbColor );
1249  US_GuiSettings::set_labelColor ( current.labelColor );
1250  US_GuiSettings::set_editColor ( current.editColor );
1251  US_GuiSettings::set_normalColor ( current.normalColor );
1253  US_GuiSettings::set_plotColor ( current.plotColor );
1254 }
1255 
1256 void US_Color::save_as( void )
1257 {
1258  // Remove blanks from name
1259  QString custom = le_save_as->text().replace( QRegExp( "[ \t/]" ), "" );
1260 
1261  if ( custom.size() == 0 )
1262  {
1263  QMessageBox::warning( this,
1264  tr( "Save scheme" ),
1265  tr( "A scheme name must be specified." ) );
1266 
1267  return;
1268  }
1269 
1270  le_save_as->setText( custom );
1271 
1272  // Get list of custom colors schemes
1273  QSettings settings( "UTHSCSA", "UltraScan" );
1274  QStringList schemeList = settings.value( "schemeList" ).toStringList();
1275 
1276  // Add new one if it's not there
1277  if ( ! schemeList.contains( custom ) )
1278  {
1279  schemeList << custom;
1280  settings.setValue( "schemeList", schemeList );
1281  }
1282 
1283  QString set = "schemes/" + custom + "/";
1284 
1285  // Save current as scheme
1286  settings.setValue( set + "plotMargin" , current.plotMargin );
1287  settings.setValue( set + "plotCurve" , current.plotCurve );
1288  settings.setValue( set + "plotBg" , current.plotBg );
1289  settings.setValue( set + "plotMajGrid" , current.plotMajorGrid );
1290  settings.setValue( set + "plotMinGrid" , current.plotMinorGrid );
1291  settings.setValue( set + "plotPicker" , current.plotPicker );
1292 
1293  settings.setValue( set + "frameColor" , current.frameColor );
1294  settings.setValue( set + "pushbColor" , current.pushbColor );
1295  settings.setValue( set + "labelColor" , current.labelColor );
1296  settings.setValue( set + "editColor" , current.editColor );
1297  settings.setValue( set + "normalColor" , current.normalColor );
1298  settings.setValue( set + "lcdColor" , current.lcdColor );
1299  settings.setValue( set + "plotColor" , current.plotColor );
1300  settings.sync();
1301 
1302  // Update scheme list
1303  updateSchemeList( custom );
1304 }
1305 
1306 void US_Color::updateSchemeList( const QString& active )
1307 {
1308  schemes->clear();
1309  schemes->addItem( tr( "Current Scheme" ) );
1310  schemes->addItem( tr( "UltraScan Default" ) );
1311  schemes->setCurrentRow( 0 );
1312  pb_delete->setEnabled( false );
1313 
1314  QSettings settings( "UTHSCSA", "UltraScan" );
1315  QStringList schemeList = settings.value( "schemeList" ).toStringList();
1316 
1317  for ( int i = 0; i < schemeList.size(); i++ )
1318  {
1319  schemes->addItem( schemeList[ i ] );
1320  if ( schemeList[ i ] == active )
1321  {
1322  schemes->setCurrentRow( i + 2 );
1323  pb_delete->setEnabled( true );
1324  }
1325  }
1326 }
1327 
1329 {
1330  int result = QMessageBox::warning( this,
1331  tr( "Attention:" ),
1332  tr( "Do you really want to delete the\n\"%1\" color scheme?" ).
1333  arg( schemes->currentItem()->text() ),
1334  QMessageBox::Yes, QMessageBox::No );
1335 
1336  // Note that the delete push button is disabled for schemes 0 and 1.
1337  if ( result == QMessageBox::Yes )
1338  {
1339  QString s = schemes->currentItem()->text();
1340 
1341  QSettings settings( "UTHSCSA", "UltraScan" );
1342  QStringList schemeList = settings.value( "schemeList" ).toStringList();
1343  schemeList.removeAll( s );
1344  settings.setValue( "schemeList", schemeList );
1345 
1346  QString custom = "schemes/" + s + "/";
1347 
1348  settings.remove( custom + "frameColor" );
1349  settings.remove( custom + "pushbColor" );
1350  settings.remove( custom + "labelColor" );
1351  settings.remove( custom + "editColor" );
1352  settings.remove( custom + "normalColor" );
1353  settings.remove( custom + "lcdColor" );
1354  settings.remove( custom + "plotColor" );
1355 
1356  settings.remove( custom + "plotMargin" );
1357 
1358  settings.remove( custom + "plotCurve" );
1359  settings.remove( custom + "plotBg" );
1360  settings.remove( custom + "plotMajGrid" );
1361  settings.remove( custom + "plotMinGrid" );
1362  settings.remove( custom + "plotPicker" );
1363 
1364  le_save_as->setText( "" );
1365  updateSchemeList();
1366  }
1367 }
1368 
1370 {
1371  switch ( schemes->currentRow() )
1372  {
1373  case 0: // Current scheme
1375  pb_delete->setEnabled( false );
1376  break;
1377 
1378  case 1: // UltraScan default
1386 
1387  current.plotMargin = 10;
1388 
1389  current.plotCurve = Qt::yellow;
1390  current.plotBg = Qt::darkBlue;
1391  current.plotMajorGrid = Qt::white;
1392  current.plotMinorGrid = Qt::lightGray;
1393  current.plotPicker = Qt::white;
1394  pb_delete->setEnabled( false );
1395  break;
1396 
1397  default:
1398  QString custom = "schemes/" + schemes->currentItem()->text() + "/";
1399 
1400  QSettings settings( "UTHSCSA", "UltraScan" );
1401  current.frameColor = settings.value( custom + "frameColor" ).value<QPalette>();
1402  current.pushbColor = settings.value( custom + "pushbColor" ).value<QPalette>();
1403  current.labelColor = settings.value( custom + "labelColor" ).value<QPalette>();
1404  current.editColor = settings.value( custom + "editColor" ).value<QPalette>();
1405  current.normalColor = settings.value( custom + "normalColor" ).value<QPalette>();
1406  current.lcdColor = settings.value( custom + "lcdColor" ).value<QPalette>();
1407  current.plotColor = settings.value( custom + "plotColor" ).value<QPalette>();
1408 
1409  current.plotMargin = settings.value( custom + "plotMargin" ).toInt();
1410 
1411  current.plotCurve = settings.value( custom + "plotCurve" ).value<QColor>();
1412  current.plotBg = settings.value( custom + "plotBg" ).value<QColor>();
1413  current.plotMajorGrid = settings.value( custom + "plotMajGrid" ).value<QColor>();
1414  current.plotMinorGrid = settings.value( custom + "plotMinGrid" ).value<QColor>();
1415  current.plotPicker = settings.value( custom + "plotPicker" ).value<QColor>();
1416 
1417  le_save_as->setText( schemes->currentItem()->text() );
1418  pb_delete->setEnabled( true );
1419  }
1420 
1421  updateScreen();
1422 }
1423 
1424 void US_Color::selectStyle( const QString& styleName )
1425 {
1426  current.guiStyle = styleName;
1427  QApplication::setStyle( QStyleFactory::create( styleName ) );
1428 }
1429