Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

PickTable.cxx

Go to the documentation of this file.
00001 
00012 #include "PickTable.h"
00013 
00014 #include "controllers/DisplayController.h"
00015 #include "datareps/DataRep.h"
00016 #include "datasrcs/DataSourceController.h"
00017 #include "datasrcs/NTuple.h"
00018 #include "datasrcs/NTupleSorter.h"
00019 #include "graphics/Color.h"
00020 #include "graphics/SymbolType.h"
00021 #include "plotters/PlotterBase.h"
00022 
00023 #if QT_VERSION < 0x040000
00024 #include <qheader.h>
00025 #include <qlistview.h>
00026 #else
00027 #include <q3header.h>
00028 #include <q3listview.h>
00029 #endif
00030 
00031 #include <qpushbutton.h>
00032 #include <qlabel.h>
00033 
00034 using namespace hippodraw;
00035 
00036 using std::string;
00037 using std::vector;
00038 
00039 
00040 PickTable::
00041 PickTable ( PlotterBase * plotter )
00042 {
00043   m_target = plotter;
00044 
00045   NTuple * ntuple = plotter -> createPickTuple ();
00046   m_sorter = new NTupleSorter ( ntuple );
00047 
00048   const string & name = ntuple -> getName ();
00049   m_title->setText ( name.c_str() );
00050 
00051   const DataRep * rep = plotter->getDataRep ( 0 );
00052   const string & type = rep -> name ();
00053 
00054   string text = "Plot type : ";
00055   text += type.c_str();
00056   m_type->setText ( text.c_str() );
00057 
00058 
00059 #if QT_VERSION < 0x040000
00060   const vector < string > & labels = ntuple -> getLabels ();
00061   m_pick_table->setColumnText ( 1, labels[1].c_str() );
00062   m_pick_table->setColumnText ( 2, labels[2].c_str() );
00063   unsigned int size = ntuple -> columns ();
00064   if ( size == 3 ) {
00065     m_pick_table -> removeColumn ( 3 );
00066   }
00067   else {
00068     m_pick_table -> setColumnText ( 3, labels[3].c_str() );
00069     if ( size == 5 ) {
00070       const QString & str ( labels[4].c_str() );
00071       m_pick_table -> addColumn ( str );
00072     }
00073   }
00074 
00075 #else
00076 //   const vector < string > & labels = ntuple -> getLabels ();
00077 //   m_pick_table->setColumnText ( 1, labels[1].c_str() );
00078 //   m_pick_table->setColumnText ( 2, labels[2].c_str() );
00079 //   unsigned int size = ntuple -> columns ();
00080 //   if ( size == 3 ) {
00081 //     m_pick_table -> removeColumn ( 3 );
00082 //   }
00083 //   else {
00084 //     m_pick_table -> setColumnText ( 3, labels[3].c_str() );
00085 //     if ( size == 5 ) {
00086 //       const QString & str ( labels[4].c_str() );
00087 //       m_pick_table -> addColumn ( str );
00088 //     }
00089 //   }
00090 
00091 #endif
00092   DataSourceController::instance()->registerNTuple ( ntuple );
00093 
00094 #if QT_VERSION < 0x040000
00095   QHeader * header = m_pick_table->header();
00096   connect ( header, SIGNAL ( clicked (int) ), 
00097             this, SLOT( listSorted ( int ) ) );
00098   m_pick_table->setSorting ( -1 );
00099   m_pick_table->setShowSortIndicator ( true );
00100   m_delete -> setEnabled ( false );
00101 #else
00102 //   Q3Header * header = m_pick_table->header();
00103 //   connect ( header, SIGNAL ( clicked (int) ), 
00104 //          this, SLOT( listSorted ( int ) ) );
00105 //   m_pick_table->setSorting ( -1 );
00106 //   m_pick_table->setShowSortIndicator ( true );
00107 //   m_delete -> setEnabled ( false );
00108 #endif
00109 
00110 }
00111 
00112 void
00113 PickTable::
00114 listSorted ( int i )
00115 {
00116   m_sorter -> setSorting ( i );
00117   m_sorter -> sort ( );
00118 
00119 #if QT_VERSION < 0x040000
00120   QListViewItem * item = m_pick_table ->selectedItem ();
00121   QString text = item -> text ( 0 );
00122   unsigned int selected = text.toUInt ();
00123   refreshItems ( selected );
00124 #else
00125 //   Q3ListViewItem * item = m_pick_table ->selectedItem ();
00126 //   QString text = item -> text ( 0 );
00127 //   unsigned int selected = text.toUInt ();
00128 //   refreshItems ( selected );
00129 #endif
00130 
00131 }
00132 
00133 void PickTable::clear()
00134 {
00135   m_pick_table->clear();
00136   m_sorter->clear();
00137 }
00138 
00139 void
00140 PickTable::
00141 addItem ( std::vector < double > & v )
00142 {
00143   unsigned int row = m_sorter -> rows ();
00144   v[0] = row;
00145   m_sorter -> addRow ( v );
00146 
00147   refreshItems ( row );
00148 }
00149 
00150 void
00151 PickTable::
00152 refreshItems ( unsigned int select )
00153 {
00154   m_pick_table -> clear();
00155 
00156   unsigned int row = m_sorter->rows ();
00157   bool yes = row > 0;
00158   m_delete -> setEnabled ( yes );
00159 
00160 #if QT_VERSION < 0x040000
00161   while ( row-- != 0 ) {
00162     const vector < double > & vec = m_sorter->getRow ( row );
00163     unsigned int current = static_cast < unsigned int > ( vec[0] );
00164     QListViewItem * item = new QListViewItem ( m_pick_table );
00165     unsigned int size = vec.size();
00166 
00167     for ( unsigned int i = 0; i < size; i++ ) {
00168       item -> setText ( i, QString ( "%1" ).arg ( vec[i] ) );
00169     }
00170 
00171     m_pick_table -> insertItem ( item );
00172 
00173     if ( select == current ) {
00174       m_pick_table -> setSelected ( item, true );
00175       m_pick_table -> ensureItemVisible ( item );
00176     }
00177   }
00178 #else
00179 //   while ( row-- != 0 ) {
00180 //     const vector < double > & vec = m_sorter->getRow ( row );
00181 //     unsigned int current = static_cast < unsigned int > ( vec[0] );
00182 //     Q3ListViewItem * item = new Q3ListViewItem ( m_pick_table );
00183 //     unsigned int size = vec.size();
00184 
00185 //     for ( unsigned int i = 0; i < size; i++ ) {
00186 //       item -> setText ( i, QString ( "%1" ).arg ( vec[i] ) );
00187 //     }
00188 
00189 //     m_pick_table -> insertItem ( item );
00190 
00191 //     if ( select == current ) {
00192 //       m_pick_table -> setSelected ( item, true );
00193 //       m_pick_table -> ensureItemVisible ( item );
00194 //     }
00195 //   }
00196 #endif
00197 }
00198 
00199 unsigned int
00200 PickTable::
00201 #if QT_VERSION < 0x040000
00202 indexOf ( QListViewItem * target )
00203 #else
00204 indexOf ( Q3ListViewItem * target )
00205 #endif
00206 {
00207   unsigned int index = 0;
00208 #if QT_VERSION < 0x040000
00209   QListViewItem * item = m_pick_table -> firstChild ();
00210   while ( item != target ) {
00211     index++;
00212     item = item->nextSibling();
00213     if ( item == 0 ) break;
00214   }
00215 
00216 #else
00217 //   Q3ListViewItem * item = m_pick_table -> firstChild ();
00218 //   while ( item != target ) {
00219 //     index++;
00220 //     item = item->nextSibling();
00221 //     if ( item == 0 ) break;
00222 //   }
00223 
00224 #endif
00225 
00226   return index;
00227 }
00228 
00229 void PickTable::deleteSelectedItem ()
00230 {
00231 #if QT_VERSION < 0x040000
00232   QListViewItem * item = m_pick_table->selectedItem ();
00233   if ( item != 0 ) {
00234     unsigned int index = indexOf ( item );
00235 
00236     m_sorter->eraseRow ( index );
00237 
00238     unsigned int row = index == 0 ? 0 : index - 1;
00239     refreshItems ( row );
00240   }
00241 #else
00242 //   Q3ListViewItem * item = m_pick_table->selectedItem ();
00243 #endif
00244 }
00245 
00246 void
00247 PickTable::
00248 addDataRepButton ()
00249 {
00250   const string plotTypeStr ( "Scatter Plot" );  
00251   NTuple * ntuple = m_sorter -> getNTuple ();
00252   const vector < string > & labels = ntuple -> getLabels ();
00253   vector < string > bindings;
00254   bindings.push_back ( labels[1] );
00255   bindings.push_back ( labels[2] );
00256   if ( labels.size() == 4 ) {
00257     if ( labels[3] == "Density" ) {
00258       bindings[1] = "Density";
00259     }
00260   }
00261 
00262   DisplayController * controller = DisplayController::instance();
00263   DataRep * rep 
00264     = controller -> addDataRep ( m_target, plotTypeStr, 
00265                                  ntuple, bindings );
00266   rep -> setRepColor ( Color::red );
00267   rep -> setRepStyle ( Symbol::CIRCLE );
00268   rep -> setRepSize ( 6.0 );
00269 }
00270 
00271 void
00272 PickTable::
00273 on_m_pick_table_selectionChanged ()
00274 {
00275   QListViewItem * item = m_pick_table -> selectedItem ();
00276   bool yes = item != 0;
00277 
00278   m_delete -> setEnabled ( yes );
00279 }

Generated for HippoDraw-1.14.8.5 by doxygen 1.4.3