UltraScan III
us_select_lambdas.cpp
Go to the documentation of this file.
1 
3 #include "us_select_lambdas.h"
4 #include "us_settings.h"
5 #include "us_gui_settings.h"
6 
7 
8 US_SelectLambdas::US_SelectLambdas( QVector< int > lambdas )
9  : US_WidgetsDialog( 0, 0 )
10 {
11  original = lambdas;
12  nbr_select = 0;
13  nbr_orig = original.size();
15  selected.clear();
16 
17  setWindowTitle( tr( "MWL Custom Lambda Selector" ) );
18  setPalette( US_GuiSettings::frameColor() );
19 
20  QVBoxLayout* main = new QVBoxLayout( this );
21  main->setSpacing ( 2 );
22  main->setContentsMargins( 2, 2, 2, 2 );
23  QVBoxLayout* left = new QVBoxLayout;
24  QVBoxLayout* right = new QVBoxLayout;
25  QHBoxLayout* lists = new QHBoxLayout;
26 
27  // Read-only lambda list count text
28  le_original = us_lineedit( tr( "%1 original lambdas" )
29  .arg( nbr_orig ), -1, true );
30  le_selected = us_lineedit( tr( "%1 selected lambdas" )
31  .arg( nbr_select ), -1, true );
32 
33  // Lambda list labels
34  QLabel* lb_original = us_label( tr( "Original Lambdas" ) );
35  QLabel* lb_selected = us_label( tr( "Selected Lambdas" ) );
36 
37  // Lambda list widgets
40  lw_original->setSelectionMode( QAbstractItemView::ExtendedSelection );
41  lw_selected->setSelectionMode( QAbstractItemView::ExtendedSelection );
42 
43  for ( int ii = 0; ii < nbr_orig; ii++ )
44  { // Add items to the original list
45  lw_original->addItem( QString::number( original[ ii ] ) );
46  }
47 
48  // Add (=>) and Remove (<=) buttons for lists
49  pb_add = us_pushbutton( tr( "Add ===>" ) );
50  pb_remove = us_pushbutton( tr( "<=== Remove" ) );
51 
52  connect( pb_add, SIGNAL( clicked() ), SLOT( add_selections() ) );
53  connect( pb_remove, SIGNAL( clicked() ), SLOT( rmv_selections() ) );
54 
55  // Button Row
56  QHBoxLayout* buttons = new QHBoxLayout;
57 
58  QPushButton* pb_reset = us_pushbutton( tr( "Reset" ) );
59  QPushButton* pb_help = us_pushbutton( tr( "Help" ) );
60  QPushButton* pb_cancel = us_pushbutton( tr( "Cancel" ) );
61  pb_accept = us_pushbutton( tr( "Accept" ) );
62 
63  connect( pb_reset, SIGNAL( clicked() ), SLOT( reset() ) );
64  connect( pb_help, SIGNAL( clicked() ), SLOT( help() ) );
65  connect( pb_cancel, SIGNAL( clicked() ), SLOT( cancel() ) );
66  connect( pb_accept, SIGNAL( clicked() ), SLOT( done() ) );
67 
68  pb_accept->setEnabled( false );
69  buttons->addWidget( pb_reset );
70  buttons->addWidget( pb_help );
71  buttons->addWidget( pb_cancel );
72  buttons->addWidget( pb_accept );
73 
74  left ->addWidget( lb_original );
75  left ->addWidget( lw_original );
76  left ->addWidget( pb_add );
77  right ->addWidget( lb_selected );
78  right ->addWidget( lw_selected );
79  right ->addWidget( pb_remove );
80  lists ->addLayout( left );
81  lists ->addLayout( right );
82  main ->addWidget( le_original );
83  main ->addWidget( le_selected );
84  main ->addLayout( lists );
85  main ->addLayout( buttons );
86 
87  resize( 140, 700 );
88 }
89 
91 {
92 DbgLv(0) << "AddSelections";
93  QList< QListWidgetItem* > selitems = lw_original->selectedItems();
94 
95  for ( int ii = 0; ii < selitems.count(); ii++ )
96  {
97  QListWidgetItem* l_item = selitems.at( ii );
98  int lambda = l_item->text().toInt();
99  lw_original->setCurrentItem( l_item, QItemSelectionModel::Deselect );
100 
101  if ( ! selected.contains( lambda ) )
102  selected << lambda;
103  }
104 
105  qSort( selected );
106  nbr_select = selected.size();
107  lw_selected->clear();
108 
109  for ( int ii = 0; ii < nbr_select; ii++ )
110  lw_selected->addItem( QString::number( selected[ ii ] ) );
111 
112  le_selected->setText( nbr_select == 1 ?
113  tr( "1 selected lambda" ) :
114  tr( "%1 selected lambdas" ).arg( nbr_select ) );
115  pb_accept->setEnabled( nbr_select > 0 );
116 }
117 
119 {
120 DbgLv(0) << "RemoveSelections";
121  QList< QListWidgetItem* > selitems = lw_selected->selectedItems();
122 
123  for ( int ii = 0; ii < selitems.count(); ii++ )
124  {
125  int lambda = selitems.at( ii )->text().toInt();
126  int selndx = selected.indexOf( lambda );
127 
128  if ( selndx >= 0 )
129  selected.remove( selndx );
130  }
131 
132  nbr_select = selected.size();
133  lw_selected->clear();
134 
135  for ( int ii = 0; ii < nbr_select; ii++ )
136  lw_selected->addItem( QString::number( selected[ ii ] ) );
137 
138  le_selected->setText( nbr_select == 1 ?
139  tr( "1 selected lambda" ) :
140  tr( "%1 selected lambdas" ).arg( nbr_select ) );
141  pb_accept->setEnabled( nbr_select > 0 );
142 }
143 
145 {
146  lw_selected->clear();
147  selected .clear();
148  nbr_select = 0;
149  le_selected->setText( tr( "0 selected lambdas" ) );
150  pb_accept->setEnabled( false );
151 }
152 
154 {
155  reject();
156  close();
157 }
158 
160 {
161  emit new_lambda_list( selected );
162 
163  accept();
164  close();
165 }
166