CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Attributes | Private Member Functions | Friends
FWTableView Class Reference

#include <Fireworks/Core/interface/FWTableView.h>

Inheritance diagram for FWTableView:
FWViewBase FWConfigurableParameterizable FWParameterizable FWConfigurable

Public Member Functions

void addColumn ()
 
void addTo (FWConfiguration &) const override
 
void columnSelected (Int_t iCol, Int_t iButton, Int_t iKeyMod)
 
void dataChanged ()
 
void deleteColumn ()
 
 FWTableView (TEveWindowSlot *, FWTableViewManager *)
 
const FWEventItemitem () const
 
void modelSelected (Int_t iRow, Int_t iButton, Int_t iKeyMod, Int_t, Int_t)
 
void modifyColumn ()
 
void resetColors (const class FWColorManager &)
 
void saveImageTo (const std::string &iName) const override
 
void selectCollection (Int_t)
 
void setBackgroundColor (Color_t)
 
void setFrom (const FWConfiguration &) override
 
void toggleShowHide ()
 
void updateEvaluators ()
 
void updateItems ()
 
 ~FWTableView () override
 
- Public Member Functions inherited from FWViewBase
virtual FWViewContextMenuHandlerBasecontextMenuHandler () const
 
void destroy ()
 
 FWViewBase (FWViewType::EType, unsigned int iVersion=1)
 
virtual void populateController (ViewerParameterGUI &) const
 
void promptForSaveImageTo (TGFrame *) const
 
FWViewType::EType typeId () const
 
const std::string & typeName () const
 
- Public Member Functions inherited from FWConfigurableParameterizable
 FWConfigurableParameterizable (unsigned int iVersion=1)
 
unsigned int version () const
 
 ~FWConfigurableParameterizable () override
 
- Public Member Functions inherited from FWParameterizable
void add (FWParameterBase *)
 
const_iterator begin () const
 
const_iterator end () const
 
 FWParameterizable ()
 
virtual ~FWParameterizable ()
 
- Public Member Functions inherited from FWConfigurable
 FWConfigurable ()
 
virtual ~FWConfigurable ()
 

Protected Attributes

TGComboBox * m_collection
 
TGCompositeFrame * m_column_control
 
FWGUIValidatingTextEntrym_column_expr_field
 
TGTextEntry * m_column_name_field
 
TGTextEntry * m_column_prec_field
 
FWCustomIconsButtonm_columnUIButton
 
int m_currentColumn
 
TEveWindowFrame * m_eveWindow
 
int m_iColl
 
FWTableViewManagerm_manager
 
bool m_showColumnUI
 
FWTableViewTableManagerm_tableManager
 
FWTableWidgetm_tableWidget
 
bool m_useColumnsFromConfig
 
FWExpressionValidatorm_validator
 
TGCompositeFrame * m_vert
 
- Protected Attributes inherited from FWViewBase
FWViewType m_type
 

Private Member Functions

 FWTableView (const FWTableView &)=delete
 
const FWTableViewoperator= (const FWTableView &)=delete
 

Friends

class FWTableViewTableManager
 

Additional Inherited Members

- Public Types inherited from FWParameterizable
typedef std::vector< FWParameterBase * >::const_iterator const_iterator
 
- Public Attributes inherited from FWViewBase
sigc::signal< void, const FWViewBase * > beingDestroyed_
 
sigc::signal< void, Int_t, Int_t > openSelectedModelContextMenu_
 
- Protected Member Functions inherited from FWViewBase
 ~FWViewBase () override
 

Detailed Description

Description: <one line="" class="" summary>="">

Usage: <usage>

Definition at line 50 of file FWTableView.h.

Constructor & Destructor Documentation

FWTableView::FWTableView ( TEveWindowSlot *  iParent,
FWTableViewManager manager 
)

Definition at line 206 of file FWTableView.cc.

References arrow_right(), arrow_right_disabled(), FWColorManager::background(), FWViewManagerBase::colorManager(), FWTableWidget::disableGrowInWidth(), RecoTauValidation_cfi::header, diffTwoXMLs::label, m_collection, m_column_control, m_column_expr_field, m_column_name_field, m_column_prec_field, m_columnUIButton, m_eveWindow, m_manager, m_tableManager, m_tableWidget, m_validator, m_vert, resetColors(), FWTableWidget::SetHeaderBackgroundColor(), FWGUIValidatingTextEntry::setValidator(), and updateItems().

208  m_iColl(-1),
209  m_manager(manager),
211  m_tableWidget(nullptr),
212  m_showColumnUI(false),
214  m_currentColumn(-1),
216 
217 {
218  m_eveWindow = iParent->MakeFrame(nullptr);
219  TGCompositeFrame *frame = m_eveWindow->GetGUICompositeFrame();
220 // TGHorizontalFrame *buttons = new TGHorizontalFrame(frame);
221 // frame->AddFrame(buttons, new TGLayoutHints(kLHintsTop | kLHintsExpandX));
222 
223 // m_collection = new TGComboBox(buttons);
224  m_vert = new TGVerticalFrame(frame);
225  frame->AddFrame(m_vert, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
226  TGHorizontalFrame *header = new TGHorizontalFrame(m_vert);
227  m_vert->AddFrame(header, new TGLayoutHints(kLHintsTop | kLHintsExpandX));
228  const bool bgIsBlack = m_manager->colorManager().background() == kBlack;
230  arrow_right(bgIsBlack),
231  arrow_right_disabled(bgIsBlack),
232  arrow_right_disabled(bgIsBlack));
233  m_columnUIButton->Connect("Clicked()", "FWTableView", this, "toggleShowHide()");
234  header->AddFrame(m_columnUIButton, new TGLayoutHints(kLHintsCenterY | kLHintsLeft,6,10));
235 
236  TGCompositeFrame *labfr = new TGHorizontalFrame(header, 60, 25, kFixedSize);
237  TGLabel *label = new TGLabel(labfr, "Collection");
238  labfr->AddFrame(label, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 1,3,0,0));
239  header->AddFrame(labfr, new TGLayoutHints(kLHintsLeft));
240 
241  m_collection = new TGComboBox(header);
242  updateItems();
243  header->AddFrame(m_collection, new TGLayoutHints(kLHintsLeft | kLHintsExpandX | kLHintsExpandY));
244  m_collection->Connect("Selected(Int_t)", "FWTableView", this, "selectCollection(Int_t)");
245  m_collection->Select(2, true);
246  m_column_control = new TGVerticalFrame(m_vert);
247  m_vert->AddFrame(m_column_control, new TGLayoutHints(kLHintsExpandX));
248  TGLabel *column_control_label = new TGLabel(m_column_control, "Column editor");
249 // column_control_label->SetBackgroundColor(bgIsBlack ? kBlack : kWhite);
250 // column_control_label->SetForegroundColor(bgIsBlack ? kWhite : kBlack);
251 // column_control_label->SetTextColor(bgIsBlack ? kWhite : kBlack);
252  m_column_control->AddFrame(column_control_label, new TGLayoutHints(kLHintsExpandX));
253  TGHorizontalFrame *column_control_fields = new TGHorizontalFrame(m_column_control);
254  m_column_control->AddFrame(column_control_fields, new TGLayoutHints(kLHintsExpandX));
255  m_column_name_field = new TGTextEntry(column_control_fields);
256  m_column_name_field->SetMaxWidth(10);
257  m_column_expr_field = new FWGUIValidatingTextEntry(column_control_fields);
258 // m_column_expr_field->SetEnabled(kFALSE);
260  m_column_prec_field = new TGTextEntry(column_control_fields);
261  m_column_prec_field->SetMaxWidth(10);
262  TGLabel *name_label = new TGLabel(column_control_fields, "Title");
263  TGLabel *expr_label = new TGLabel(column_control_fields, "Expression");
264  TGLabel *prec_label = new TGLabel(column_control_fields, "Precision");
265  column_control_fields->AddFrame(name_label, new TGLayoutHints(kLHintsBottom, 1, 1, 2, 2));
266  column_control_fields->AddFrame(m_column_name_field, new TGLayoutHints(kLHintsExpandX));
267  column_control_fields->AddFrame(expr_label, new TGLayoutHints(kLHintsBottom, 1, 1, 2, 2));
268  column_control_fields->AddFrame(m_column_expr_field, new TGLayoutHints(kLHintsExpandX));
269  column_control_fields->AddFrame(prec_label, new TGLayoutHints( kLHintsBottom, 1, 1, 2, 2));
270  column_control_fields->AddFrame(m_column_prec_field, new TGLayoutHints(kLHintsExpandX));
271  TGTextButton *add_button = new TGTextButton(column_control_fields, "Add");
272  TGTextButton *del_button = new TGTextButton(column_control_fields, "Delete");
273  TGTextButton *mod_button = new TGTextButton(column_control_fields, "Modify");
274  add_button->Connect("Clicked()", "FWTableView", this, "addColumn()");
275  del_button->Connect("Clicked()", "FWTableView", this, "deleteColumn()");
276  mod_button->Connect("Clicked()", "FWTableView", this, "modifyColumn()");
277  column_control_fields->AddFrame(add_button, new TGLayoutHints);
278  column_control_fields->AddFrame(del_button, new TGLayoutHints);
279  column_control_fields->AddFrame(mod_button, new TGLayoutHints);
283  m_tableWidget->SetHeaderBackgroundColor(gVirtualX->GetPixel(kWhite));
284  m_tableWidget->Connect("rowClicked(Int_t,Int_t,Int_t,Int_t,Int_t)", "FWTableView",
285  this, "modelSelected(Int_t,Int_t,Int_t,Int_t,Int_t)");
286  m_tableWidget->Connect("columnClicked(Int_t,Int_t,Int_t)", "FWTableView",
287  this, "columnSelected(Int_t,Int_t,Int_t)");
288  m_vert->AddFrame(m_tableWidget, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
289  frame->MapSubwindows();
290  m_vert->HideFrame(m_column_control);
291  frame->Layout();
292  frame->MapWindow();
293 }
Color_t background() const
FWTableViewManager * m_manager
Definition: FWTableView.h:90
TGTextEntry * m_column_prec_field
Definition: FWTableView.h:98
FWExpressionValidator * m_validator
Definition: FWTableView.h:97
void SetHeaderBackgroundColor(Pixel_t)
FWTableViewTableManager * m_tableManager
Definition: FWTableView.h:91
FWColorManager & colorManager() const
TGTextEntry * m_column_name_field
Definition: FWTableView.h:95
TGCompositeFrame * m_column_control
Definition: FWTableView.h:88
static const TGPicture * arrow_right(bool iBackgroundIsBlack)
Definition: FWTableView.cc:151
void disableGrowInWidth()
void updateItems()
Definition: FWTableView.cc:547
bool m_showColumnUI
Definition: FWTableView.h:93
void setValidator(FWValidatorBase *)
FWTableWidget * m_tableWidget
Definition: FWTableView.h:92
void resetColors(const class FWColorManager &)
Definition: FWTableView.cc:315
static const TGPicture * arrow_right_disabled(bool iBackgroundIsBlack)
Definition: FWTableView.cc:162
friend class FWTableViewTableManager
Definition: FWTableView.h:51
TGCompositeFrame * m_vert
Definition: FWTableView.h:88
TEveWindowFrame * m_eveWindow
Definition: FWTableView.h:86
int m_currentColumn
Definition: FWTableView.h:99
bool m_useColumnsFromConfig
Definition: FWTableView.h:100
FWGUIValidatingTextEntry * m_column_expr_field
Definition: FWTableView.h:96
FWCustomIconsButton * m_columnUIButton
Definition: FWTableView.h:94
TGComboBox * m_collection
Definition: FWTableView.h:87
FWViewBase(FWViewType::EType, unsigned int iVersion=1)
Definition: FWViewBase.cc:33
FWTableView::~FWTableView ( )
override

Definition at line 295 of file FWTableView.cc.

References m_eveWindow, m_tableManager, m_validator, and m_vert.

296 {
297  // take out composite frame and delete it directly ( without the timeout)
298  TGCompositeFrame *frame = m_eveWindow->GetGUICompositeFrame();
299  frame->RemoveFrame(m_vert);
300  delete m_vert;
301 
302  m_eveWindow->DestroyWindowAndSlot();
303  delete m_tableManager;
304  delete m_validator;
305 }
FWExpressionValidator * m_validator
Definition: FWTableView.h:97
FWTableViewTableManager * m_tableManager
Definition: FWTableView.h:91
TGCompositeFrame * m_vert
Definition: FWTableView.h:88
TEveWindowFrame * m_eveWindow
Definition: FWTableView.h:86
FWTableView::FWTableView ( const FWTableView )
privatedelete

Member Function Documentation

void FWTableView::addColumn ( )

Definition at line 668 of file FWTableView.cc.

References FWTableViewManager::dataChanged(), MillePedeFileConverter_cfg::e, jets_cff::expr, FWTableWidget::forceLayout(), fwLog, createfilelist::int, fwlog::kInfo, m_column_expr_field, m_column_name_field, m_column_prec_field, m_currentColumn, m_manager, FWTableViewTableManager::m_tableFormats, m_tableManager, m_tableWidget, dataset::name, mps_setup::stdout, and AlCaHLTBitMon_QueryRunRegistry::string.

669 {
670  std::string name = m_column_name_field->GetText();
671  std::string expr = m_column_expr_field->GetText();
672  // convert the precision to a long int
673  char *endptr = nullptr;
674  int prec = (int) strtol(m_column_prec_field->GetText(), &endptr, 0);
675  if (name == "" || expr == "" ||
676  m_column_prec_field->GetText() == nullptr || *endptr != 0) {
677  fwLog(fwlog::kInfo) << "bad input\n";
678  fflush(stdout);
679  return;
680  }
681  fwLog(fwlog::kInfo) << "adding column "<< name << ": " << expr << ", precision " << prec << std::endl;
682  fflush(stdout);
683 // m_manager->tableFormats(*item->modelType())
685  m_tableManager->m_tableFormats->push_back(e);
687  // change needs to be propagated to all tables, because all
688  // tables displaying objects of this type are affected
689  // MT -- this is NOT true!!! FIX
692 }
FWTableViewManager * m_manager
Definition: FWTableView.h:90
TGTextEntry * m_column_prec_field
Definition: FWTableView.h:98
std::vector< FWTableViewManager::TableEntry > * m_tableFormats
FWTableViewTableManager * m_tableManager
Definition: FWTableView.h:91
void forceLayout()
Definition: FWTableWidget.h:83
TGTextEntry * m_column_name_field
Definition: FWTableView.h:95
FWTableWidget * m_tableWidget
Definition: FWTableView.h:92
#define fwLog(_level_)
Definition: fwLog.h:50
int m_currentColumn
Definition: FWTableView.h:99
FWGUIValidatingTextEntry * m_column_expr_field
Definition: FWTableView.h:96
void FWTableView::addTo ( FWConfiguration iTo) const
overridevirtual

Reimplemented from FWConfigurableParameterizable.

Definition at line 337 of file FWTableView.cc.

References FWConfiguration::addKeyValue(), FWConfigurableParameterizable::addTo(), FWTableViewManager::addToImpl(), universalConfigTemplate::collection, ecaldqm::collectionName, FWTableWidget::descendingSort(), FWTableViewManager::items(), kCollection, kDescendingSort, kSortColumn, kTableView, m_iColl, m_manager, m_tableWidget, FWTableViewManager::m_views, magneticFieldFilterJSON::main(), FWTableWidget::sortedColumn(), and AlCaHLTBitMon_QueryRunRegistry::string.

338 {
339  // are we the first FWTableView to go into the configuration? If
340  // we are, then we are responsible for writing out the list of
341  // types (which we do by letting FWTableViewManager::addToImpl
342  // write into our configuration)
343  if (this == m_manager->m_views.front().get())
344  m_manager->addToImpl(iTo);
345  // then there is the stuff we have to do anyway: remember what
346  // collection we display
349  if (m_manager->items()[m_iColl])
350  collectionName = m_manager->items()[m_iColl]->name();
351  else
352  collectionName = "NULL";
353 
354  FWConfiguration collection(collectionName);
355  main.addKeyValue(kCollection, collection);
357  main.addKeyValue(kSortColumn, sortColumn);
358  FWConfiguration descendingSort(m_tableWidget->descendingSort());
359  main.addKeyValue(kDescendingSort, descendingSort);
360 // FWConfiguration columns(1);
361 // for (std::vector<FWTableViewManager::TableEntry>::const_iterator
362 // i = m_tableManager->m_tableFormats->begin(),
363 // iEnd = m_tableManager->m_tableFormats->end();
364 // i != iEnd; ++i) {
365 // columns.addValue(i->name);
366 // columns.addValue(i->expression);
367 // char prec[100];
368 // snprintf(prec, 100, "%d", i->precision);
369 // columns.addValue(prec);
370 // }
371 // main.addKeyValue(kColumns, columns);
373  // take care of parameters
375 }
static const std::string kDescendingSort
Definition: FWTableView.cc:201
void addTo(FWConfiguration &) const override
void addToImpl(FWConfiguration &) const
FWTableViewManager * m_manager
Definition: FWTableView.h:90
const Items & items() const
std::string const collectionName[nCollections]
Definition: Collections.h:47
static const std::string kSortColumn
Definition: FWTableView.cc:200
bool descendingSort() const
Definition: FWTableWidget.h:90
static const std::string kCollection
Definition: FWTableView.cc:198
FWTableWidget * m_tableWidget
Definition: FWTableView.h:92
FWConfiguration & addKeyValue(const std::string &, const FWConfiguration &)
static const std::string kTableView
Definition: FWTableView.cc:197
int sortedColumn() const
Definition: FWTableWidget.h:89
Definition: main.py:1
void FWTableView::columnSelected ( Int_t  iCol,
Int_t  iButton,
Int_t  iKeyMod 
)

Definition at line 649 of file FWTableView.cc.

References mps_splice::entry, FWTableViewManager::TableEntry::expression, m_column_expr_field, m_column_name_field, m_column_prec_field, m_currentColumn, FWTableViewTableManager::m_tableFormats, m_tableManager, FWTableViewManager::TableEntry::name, and FWTableViewManager::TableEntry::precision.

650 {
651  if (iButton == 1 || iButton == 3)
652  m_currentColumn = iCol;
653  // update contents of the column editor
654  if (m_currentColumn >= 0 &&
658  m_column_name_field->SetText(entry.name.c_str());
659  m_column_expr_field->SetText(entry.expression.c_str());
660  m_column_prec_field->SetText(Form("%d", entry.precision));
661  } else {
662  m_column_name_field->SetText("");
663  m_column_expr_field->SetText("");
664  m_column_prec_field->SetText("");
665  }
666 }
TGTextEntry * m_column_prec_field
Definition: FWTableView.h:98
std::vector< FWTableViewManager::TableEntry > * m_tableFormats
FWTableViewTableManager * m_tableManager
Definition: FWTableView.h:91
TGTextEntry * m_column_name_field
Definition: FWTableView.h:95
int m_currentColumn
Definition: FWTableView.h:99
FWGUIValidatingTextEntry * m_column_expr_field
Definition: FWTableView.h:96
void FWTableView::dataChanged ( )

Definition at line 586 of file FWTableView.cc.

References FWTableViewTableManager::dataChanged(), m_tableManager, and updateEvaluators().

Referenced by FWTableViewManager::notifyViews(), and selectCollection().

587 {
588 // const FWEventItem *item = m_manager->items()[m_iColl];
591 // std::vector<FWExpressionEvaluator> &ev = m_evaluators;
592 // for (unsigned int i = 0; i < item->size(); ++i) {
593 // for (unsigned int j = 0; j < ev.size(); ++j) {
594 // printf("%s = %f\t", (*m_manager->tableFormats(item->modelType()->GetName())).second[j].name.c_str(),
595 // ev[j].evalExpression(item->modelData(i)));
596 // }
597 // printf("\n");
598 // }
599 // fflush(stdout);
600 }
void updateEvaluators()
Definition: FWTableView.cc:574
void dataChanged()
Called if mouse button pressed in Row Header, defaults is to do nothing.
FWTableViewTableManager * m_tableManager
Definition: FWTableView.h:91
void FWTableView::deleteColumn ( )

Definition at line 694 of file FWTableView.cc.

References FWTableViewManager::dataChanged(), FWTableWidget::forceLayout(), m_column_expr_field, m_column_name_field, m_column_prec_field, m_currentColumn, m_manager, FWTableViewTableManager::m_tableFormats, m_tableManager, and m_tableWidget.

695 {
696  if (m_currentColumn >= 0 &&
700  m_column_name_field->SetText("");
701  m_column_expr_field->SetText("");
702  m_column_prec_field->SetText("");
703  m_currentColumn = -1;
704  }
705  // change needs to be propagated to all tables, because all
706  // tables displaying objects of this type are affected
707  // MT -- this is NOT true!!! FIX
710 }
FWTableViewManager * m_manager
Definition: FWTableView.h:90
TGTextEntry * m_column_prec_field
Definition: FWTableView.h:98
std::vector< FWTableViewManager::TableEntry > * m_tableFormats
FWTableViewTableManager * m_tableManager
Definition: FWTableView.h:91
void forceLayout()
Definition: FWTableWidget.h:83
TGTextEntry * m_column_name_field
Definition: FWTableView.h:95
FWTableWidget * m_tableWidget
Definition: FWTableView.h:92
int m_currentColumn
Definition: FWTableView.h:99
FWGUIValidatingTextEntry * m_column_expr_field
Definition: FWTableView.h:96
const FWEventItem * FWTableView::item ( ) const
void FWTableView::modelSelected ( Int_t  iRow,
Int_t  iButton,
Int_t  iKeyMod,
Int_t  iGlobalX,
Int_t  iGlobalY 
)

Definition at line 635 of file FWTableView.cc.

References FWSelectionManager::clearSelection(), item(), FWViewBase::openSelectedModelContextMenu_, FWEventItem::select(), FWEventItem::selectionManager(), and FWEventItem::toggleSelect().

636 {
637  if(iKeyMod & kKeyControlMask) {
638  item()->toggleSelect(iRow);
639  } else {
640  FWChangeSentry sentry(*(item()->changeManager()));
642  item()->select(iRow);
643  }
644  if(iButton == kButton3) {
645  openSelectedModelContextMenu_(iGlobalX,iGlobalY);
646  }
647 }
const FWEventItem * item() const
Definition: FWTableView.cc:579
FWSelectionManager * selectionManager() const
Definition: FWEventItem.h:135
void toggleSelect(int iIndex) const
Definition: FWEventItem.cc:266
void select(int iIndex) const
Definition: FWEventItem.cc:252
sigc::signal< void, Int_t, Int_t > openSelectedModelContextMenu_
Definition: FWViewBase.h:58
void FWTableView::modifyColumn ( )

Definition at line 712 of file FWTableView.cc.

References FWTableViewManager::dataChanged(), MillePedeFileConverter_cfg::e, jets_cff::expr, FWTableWidget::forceLayout(), fwLog, createfilelist::int, fwlog::kInfo, m_column_expr_field, m_column_name_field, m_column_prec_field, m_currentColumn, m_manager, FWTableViewTableManager::m_tableFormats, m_tableManager, m_tableWidget, dataset::name, mps_setup::stdout, and AlCaHLTBitMon_QueryRunRegistry::string.

713 {
714  std::string name = m_column_name_field->GetText();
715  std::string expr = m_column_expr_field->GetText();
716  // convert the precision to a long int
717  char *endptr = nullptr;
718  int prec = (int) strtol(m_column_prec_field->GetText(), &endptr, 0);
719  if (name == "" || expr == "" ||
720  m_column_prec_field->GetText() == nullptr || *endptr != 0) {
721  fwLog(fwlog::kInfo) << "bad input\n";
722  fflush(stdout);
723  return;
724  }
725  fwLog(fwlog::kInfo) << "modify column "<< name << ": " << expr << ", precision " << prec << std::endl;
726  fflush(stdout);
727 // m_manager->tableFormats(*item->modelType())
730  // Change needs to be propagated to all tables, because all
731  // tables displaying objects of this type are affected
732  // MT -- this is NOT true!!! FIX
735 }
FWTableViewManager * m_manager
Definition: FWTableView.h:90
TGTextEntry * m_column_prec_field
Definition: FWTableView.h:98
std::vector< FWTableViewManager::TableEntry > * m_tableFormats
FWTableViewTableManager * m_tableManager
Definition: FWTableView.h:91
void forceLayout()
Definition: FWTableWidget.h:83
TGTextEntry * m_column_name_field
Definition: FWTableView.h:95
FWTableWidget * m_tableWidget
Definition: FWTableView.h:92
#define fwLog(_level_)
Definition: fwLog.h:50
int m_currentColumn
Definition: FWTableView.h:99
FWGUIValidatingTextEntry * m_column_expr_field
Definition: FWTableView.h:96
const FWTableView& FWTableView::operator= ( const FWTableView )
privatedelete
void FWTableView::resetColors ( const class FWColorManager )

Definition at line 315 of file FWTableView.cc.

References FWColorManager::background(), FWColorManager::foreground(), m_tableWidget, FWTableWidget::SetBackgroundColor(), and FWTableWidget::SetLineSeparatorColor().

Referenced by FWTableView().

316 {
317  m_tableWidget->SetBackgroundColor(gVirtualX->GetPixel(manager.background()));
318 // m_tableWidget->SetHeaderBackgroundColor(gVirtualX->GetPixel(manager.background()));
319 // switch (manager.foreground()) {
320 // case FWColorManager::kBlackIndex:
321 // m_tableWidget->SetHeaderForegroundColor(gVirtualX->GetPixel(kBlack));
322 // break;
323 // default:
324 // m_tableWidget->SetHeaderForegroundColor(0xffffff);
325 // break;
326 // }
327  m_tableWidget->SetLineSeparatorColor(gVirtualX->GetPixel(manager.foreground()));
328 // m_tableWidget->dataChanged();
329 }
void SetLineSeparatorColor(Pixel_t)
FWTableWidget * m_tableWidget
Definition: FWTableView.h:92
void SetBackgroundColor(Pixel_t) override
void FWTableView::saveImageTo ( const std::string &  iName) const
overridevirtual

Implements FWViewBase.

Definition at line 444 of file FWTableView.cc.

References EnergyCorrector::c, FWTableViewTableManager::cellRenderer(), gather_cfg::cout, FWTextTableCellRenderer::data(), data, cmsPerfStripChart::format, FWTableViewTableManager::m_tableFormats, m_tableManager, FWTableViewTableManager::numberOfColumns(), FWTableViewTableManager::numberOfRows(), alignCSCRings::r, confdb::splitter(), AlCaHLTBitMon_QueryRunRegistry::string, and FWTableViewTableManager::unsortedRowNumber().

445 {
446  TString format;
447  TString data;
448  FWTextTableCellRenderer* textRenderer;
449 
450  // calculate widths
451  int ndheader = TMath::Ceil(TMath::Log10(m_tableManager->numberOfRows()));
452 
453  std::vector<size_t> widths(m_tableManager->numberOfColumns());
454 
455  for (int c = 0; c < m_tableManager->numberOfColumns(); ++c )
456  widths[c] = m_tableManager->m_tableFormats->at(c).name.size();
457 
458  for (int c = 0; c < m_tableManager->numberOfColumns(); ++c )
459  {
460  for (int r = 0; r < m_tableManager->numberOfRows(); r++ )
461  {
462  textRenderer = (FWTextTableCellRenderer*) m_tableManager->cellRenderer(r, c); // setup cell renderer
463  size_t ss = textRenderer->data().size();
464  if (widths[c] < ss) widths[c] = ss;
465  }
466  }
467 
468  int rlen = 0;
469  for (size_t c = 0; c < (size_t)m_tableManager->numberOfColumns(); ++c )
470  rlen += widths[c];
471  rlen += (m_tableManager->numberOfColumns() -1 )*3 ;
472  rlen++;
473 
474 
475  // header
476  printf("\n");
477  TString headerFormat;
478  headerFormat.Form("%%%ds",ndheader +3);
479  data.Form(headerFormat, " ");
480  printf("%s", data.Data());
481 
482  int lastCol = m_tableManager->numberOfColumns() -1;
483 
484  for (int c = 0; c < m_tableManager->numberOfColumns(); ++c )
485  {
486  format.Form("%%%ds", (int)widths[c]);
487  data.Form(format, m_tableManager->m_tableFormats->at(c).name.c_str());
488 
489  if (c == lastCol)
490  printf("%s", data.Data());
491  else
492  printf("%s | ", data.Data());
493  }
494  printf("\n");
495 
496  std::string splitter(rlen, '-');
497  std::cout << splitter << std::endl;
498 
499  // body
500  headerFormat.Form("[%%%dd] ",ndheader );
501  for (int r = 0; r < m_tableManager->numberOfRows(); r++ )
502  {
503  for (int c = 0; c < m_tableManager->numberOfColumns(); ++c )
504  {
505  if (!c) {
506  data.Form(headerFormat, m_tableManager->unsortedRowNumber(r));
507  printf("%s", data.Data());
508  }
509  format.Form("%%%ds", (int)widths[c]);
510  textRenderer = (FWTextTableCellRenderer*) m_tableManager->cellRenderer(r, c); // setup cell renderer
511  data.Form(format, textRenderer->data().c_str());
512  if (c == lastCol)
513  printf("%s", data.Data());
514  else
515  printf("%s | ", data.Data());
516  }
517  printf("\n");
518  }
519 }
def splitter(iterator, n)
Definition: confdb.py:11
int numberOfColumns() const override
Number of columns in the table.
int unsortedRowNumber(int iSortedRowNumber) const override
std::vector< FWTableViewManager::TableEntry > * m_tableFormats
FWTableViewTableManager * m_tableManager
Definition: FWTableView.h:91
format
Some error handling for the usage.
const std::string & data()
int numberOfRows() const override
Number of rows in the table.
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
FWTableCellRendererBase * cellRenderer(int iSortedRowNumber, int iCol) const override
void FWTableView::selectCollection ( Int_t  i_coll)

Select the collection to be displayed by the table view and updates the evaluators required to retrieve the data from the event.

Definition at line 607 of file FWTableView.cc.

References dataChanged(), FWTableWidget::forceLayout(), fwLog, item(), FWTableViewManager::items(), fwlog::kInfo, m_iColl, m_manager, FWTableViewManager::m_tableFormats, FWTableViewTableManager::m_tableFormats, m_tableManager, m_tableWidget, m_useColumnsFromConfig, m_validator, FWEventItem::modelType(), edm::second(), FWExpressionValidator::setType(), and FWTableViewManager::tableFormats().

608 {
609 // printf("selected collection %d, ", i_coll);
610  const FWEventItem *item = m_manager->items()[i_coll];
611  assert(nullptr!=item);
612 // printf("%s\n", item->modelType()->GetName());
613  m_iColl = i_coll;
614 // m_validator = new FWExpressionValidator;
615 // m_column_expr_field->setValidator(m_validator);
616  if (m_validator != nullptr) {
617 // std::cout << "setting validator to " << item->modelType()->GetName() << std::endl;
618  m_validator->setType(edm::TypeWithDict(*(item->modelType()->GetTypeInfo())));
619  } else {
620 // std::cout << "can't set null validator\n";
621  }
622  if (not m_useColumnsFromConfig) {
623  if (m_manager->tableFormats(*item->modelType()) == m_manager->m_tableFormats.end()) {
624  fwLog(fwlog::kInfo) << "No table format for objects of this type " << item->modelType()->GetName() << std::endl;
625  m_tableManager->m_tableFormats->clear();
626  } else {
628  }
629  }
630 // columnSelected(-1, 1, 0);
632  dataChanged();
633 }
void setType(const edm::TypeWithDict &)
FWTableViewManager * m_manager
Definition: FWTableView.h:90
FWExpressionValidator * m_validator
Definition: FWTableView.h:97
std::vector< FWTableViewManager::TableEntry > * m_tableFormats
FWTableViewTableManager * m_tableManager
Definition: FWTableView.h:91
void forceLayout()
Definition: FWTableWidget.h:83
U second(std::pair< T, U > const &p)
TableSpecs::iterator tableFormats(const edm::TypeWithDict &key)
const Items & items() const
const FWEventItem * item() const
Definition: FWTableView.cc:579
FWTableWidget * m_tableWidget
Definition: FWTableView.h:92
#define fwLog(_level_)
Definition: fwLog.h:50
bool m_useColumnsFromConfig
Definition: FWTableView.h:100
const TClass * modelType() const
Definition: FWEventItem.cc:563
void dataChanged()
Definition: FWTableView.cc:586
void FWTableView::setBackgroundColor ( Color_t  iColor)

Definition at line 308 of file FWTableView.cc.

References m_tableWidget, and FWTableWidget::SetBackgroundColor().

Referenced by Vispa.Plugins.EdmBrowser.EventContentView.LabelItem::__init__().

309 {
310  m_tableWidget->SetBackgroundColor(gVirtualX->GetPixel(iColor));
311 // m_tableWidget->SetBackgroundColor(TColor::Number2Pixel(iColor));
312 // m_viewer->GetGLViewer()->SetClearColor(iColor);
313 }
FWTableWidget * m_tableWidget
Definition: FWTableView.h:92
void SetBackgroundColor(Pixel_t) override
void FWTableView::setFrom ( const FWConfiguration iFrom)
overridevirtual

Reimplemented from FWConfigurableParameterizable.

Definition at line 378 of file FWTableView.cc.

References MessageLogger_cfi::cerr, universalConfigTemplate::collection, ecaldqm::collectionName, FWTableViewManager::items(), kCollection, kDescendingSort, kSortColumn, kTableView, m_collection, m_manager, m_tableManager, m_tableWidget, FWTableViewManager::m_views, FWTableViewTableManager::numberOfColumns(), FWConfigurableParameterizable::setFrom(), FWTableViewManager::setFrom(), FWTableWidget::sort(), AlCaHLTBitMon_QueryRunRegistry::string, FWConfiguration::value(), FWConfiguration::valueForKey(), and FWConfiguration::version().

379 {
380  if (this == m_manager->m_views.front().get())
381  m_manager->setFrom(iFrom);
382  try {
383  const FWConfiguration *main = iFrom.valueForKey(kTableView);
384  assert(main != nullptr);
385  // use the columns from the config, not the default columns for
386  // the collection type
387 // m_useColumnsFromConfig = true;
388 // m_tableManager->m_tableFormats->clear();
389 // const FWConfiguration *columns = main->valueForKey(kColumns);
390 // for (FWConfiguration::StringValuesIt it = columns->stringValues()->begin(),
391 // itEnd = columns->stringValues()->end(); it != itEnd; ++it) {
392 // const std::string &name = *it++;
393 // const std::string &expr = *it++;
394 // int prec = atoi(it->c_str());
395 // FWTableViewManager::TableEntry e = { expr, name, prec };
396 // m_tableManager->m_tableFormats->push_back(e);
397 // }
399  const std::string &collectionName = collection->value();
400  // find item
401  for (std::vector<const FWEventItem *>::const_iterator
402  it = m_manager->items().begin(),
403  itEnd = m_manager->items().end();
404  it != itEnd; ++it) {
405  if (*it && (*it)->name() == collectionName) {
406  m_collection->Select(it - m_manager->items().begin(), true);
407  break;
408  }
409  }
410  const FWConfiguration *sortColumn = main->valueForKey(kSortColumn);
411  const FWConfiguration *descendingSort = main->valueForKey(kDescendingSort);
412  if (sortColumn != nullptr && descendingSort != nullptr) {
413  unsigned int sort = sortColumn->version();
414  bool descending = descendingSort->version();
415  if (sort < (( unsigned int) m_tableManager->numberOfColumns()))
416  m_tableWidget->sort(sort, descending);
417  }
418  } catch (...) {
419  // configuration doesn't contain info for the table. Be forgiving.
420  std::cerr << "This configuration file contains tables, but no column information. "
421  "(It is probably old.) Using defaults." << std::endl;
422  }
423 
424 // main.addKeyValue(kCollection, collection);
425 // FWConfiguration columns(1);
426 // for (std::vector<FWTableViewManager::TableEntry>::const_iterator
427 // i = m_tableManager->m_tableFormats->begin(),
428 // iEnd = m_tableManager->m_tableFormats->end();
429 // i != iEnd; ++i) {
430 // columns.addValue(i->name);
431 // columns.addValue(i->expression);
432 // columns.addValue(Form("%d", i->precision));
433 // }
434 // main.addKeyValue(kColumns, columns);
435 // iTo.addKeyValue(kTableView, main);
436 // // take care of parameters
437 // FWConfigurableParameterizable::addTo(iTo);
438 
439  // take care of parameters
441 }
static const std::string kDescendingSort
Definition: FWTableView.cc:201
FWTableViewManager * m_manager
Definition: FWTableView.h:90
void setFrom(const FWConfiguration &) override
int numberOfColumns() const override
Number of columns in the table.
unsigned int version() const
FWTableViewTableManager * m_tableManager
Definition: FWTableView.h:91
const Items & items() const
void sort(UInt_t iColumn, bool iDescendingSort)
std::string const collectionName[nCollections]
Definition: Collections.h:47
static const std::string kSortColumn
Definition: FWTableView.cc:200
static const std::string kCollection
Definition: FWTableView.cc:198
FWTableWidget * m_tableWidget
Definition: FWTableView.h:92
void setFrom(const FWConfiguration &) override
static const std::string kTableView
Definition: FWTableView.cc:197
const std::string & value(unsigned int iIndex=0) const
Definition: main.py:1
const FWConfiguration * valueForKey(const std::string &iKey) const
TGComboBox * m_collection
Definition: FWTableView.h:87
void FWTableView::toggleShowHide ( )

Definition at line 522 of file FWTableView.cc.

References arrow_down(), arrow_down_disabled(), arrow_right(), arrow_right_disabled(), FWColorManager::background(), FWViewManagerBase::colorManager(), mps_check::disabled, down, m_column_control, m_columnUIButton, m_manager, m_showColumnUI, m_vert, and FWCustomIconsButton::swapIcons().

523 {
525  const TGPicture* picture = nullptr;
526  const TGPicture* down = nullptr;
527  const TGPicture* disabled = nullptr;
528  const bool bgIsBlack = m_manager->colorManager().background() == kBlack;
529  if (m_showColumnUI) {
530  picture = arrow_down(bgIsBlack);
531  down = arrow_down_disabled(bgIsBlack);
532  disabled = arrow_down_disabled(bgIsBlack);
533  m_vert->ShowFrame(m_column_control);
534  } else {
535  picture = arrow_right(bgIsBlack);
536  down = arrow_right_disabled(bgIsBlack);
537  disabled = arrow_right_disabled(bgIsBlack);
538  m_vert->HideFrame(m_column_control);
539  }
540  m_vert->Layout();
541  m_columnUIButton->swapIcons(picture,down,disabled);
542 }
Color_t background() const
FWTableViewManager * m_manager
Definition: FWTableView.h:90
static const TGPicture * arrow_down(bool iBackgroundIsBlack)
Definition: FWTableView.cc:173
string disabled
Definition: mps_check.py:64
FWColorManager & colorManager() const
TGCompositeFrame * m_column_control
Definition: FWTableView.h:88
static const TGPicture * arrow_right(bool iBackgroundIsBlack)
Definition: FWTableView.cc:151
bool m_showColumnUI
Definition: FWTableView.h:93
static const TGPicture * arrow_right_disabled(bool iBackgroundIsBlack)
Definition: FWTableView.cc:162
TGCompositeFrame * m_vert
Definition: FWTableView.h:88
static const TGPicture * arrow_down_disabled(bool iBackgroundIsBlack)
Definition: FWTableView.cc:184
void swapIcons(const TGPicture *&iUpIcon, const TGPicture *&iDownIcon, const TGPicture *&iDisabledIcon)
FWCustomIconsButton * m_columnUIButton
Definition: FWTableView.h:94
void FWTableView::updateEvaluators ( )

Definition at line 574 of file FWTableView.cc.

References m_tableManager, and FWTableViewTableManager::updateEvaluators().

Referenced by dataChanged().

575 {
577 }
FWTableViewTableManager * m_tableManager
Definition: FWTableView.h:91
void FWTableView::updateItems ( void  )

Reconstructs the combo box using the information coming from FWEventItemsManager.

Definition at line 547 of file FWTableView.cc.

References MillePedeFileConverter_cfg::e, mps_fire::i, diffTreeTool::index, item(), FWTableViewManager::items(), m_collection, m_iColl, m_manager, Min(), and FWEventItem::name().

Referenced by FWTableView(), and FWTableViewManager::notifyViews().

548 {
549  int selected = m_collection->GetSelected();
550  m_collection->RemoveAll();
551  int index = 0;
552 
553  for (size_t i = 0, e = m_manager->items().size(); i != e; ++i)
554  {
555  const FWEventItem *item = m_manager->items()[i];
556  if (item)
557  m_collection->AddEntry(item->name().c_str(), i);
558 
559  if (m_iColl == index && nullptr == item)
560  {
561  //the collection we were showing is now gone
562  m_iColl = -1;
563  selected = -1;
564  }
565  }
566 
567  if (selected != -1 && selected < m_collection->GetNumberOfEntries())
568  m_collection->Select(selected, false);
569 
570  TGListBox *lb = m_collection->GetListBox();
571  lb->SetHeight(TMath::Min(lb->GetNumberOfEntries()*lb->GetItemVsize() + 2*lb->GetBorderWidth(), 200u));
572 }
FWTableViewManager * m_manager
Definition: FWTableView.h:90
const std::string & name() const
Definition: FWEventItem.cc:502
T Min(T a, T b)
Definition: MathUtil.h:39
const Items & items() const
const FWEventItem * item() const
Definition: FWTableView.cc:579
TGComboBox * m_collection
Definition: FWTableView.h:87

Friends And Related Function Documentation

friend class FWTableViewTableManager
friend

Definition at line 51 of file FWTableView.h.

Member Data Documentation

TGComboBox* FWTableView::m_collection
protected

Definition at line 87 of file FWTableView.h.

Referenced by FWTableView(), setFrom(), and updateItems().

TGCompositeFrame * FWTableView::m_column_control
protected

Definition at line 88 of file FWTableView.h.

Referenced by FWTableView(), and toggleShowHide().

FWGUIValidatingTextEntry* FWTableView::m_column_expr_field
protected

Definition at line 96 of file FWTableView.h.

Referenced by addColumn(), columnSelected(), deleteColumn(), FWTableView(), and modifyColumn().

TGTextEntry* FWTableView::m_column_name_field
protected

Definition at line 95 of file FWTableView.h.

Referenced by addColumn(), columnSelected(), deleteColumn(), FWTableView(), and modifyColumn().

TGTextEntry* FWTableView::m_column_prec_field
protected

Definition at line 98 of file FWTableView.h.

Referenced by addColumn(), columnSelected(), deleteColumn(), FWTableView(), and modifyColumn().

FWCustomIconsButton* FWTableView::m_columnUIButton
protected

Definition at line 94 of file FWTableView.h.

Referenced by FWTableView(), and toggleShowHide().

int FWTableView::m_currentColumn
protected

Definition at line 99 of file FWTableView.h.

Referenced by addColumn(), columnSelected(), deleteColumn(), and modifyColumn().

TEveWindowFrame* FWTableView::m_eveWindow
protected

Definition at line 86 of file FWTableView.h.

Referenced by FWTableView(), and ~FWTableView().

int FWTableView::m_iColl
protected
FWTableViewManager* FWTableView::m_manager
protected
bool FWTableView::m_showColumnUI
protected

Definition at line 93 of file FWTableView.h.

Referenced by toggleShowHide().

FWTableViewTableManager* FWTableView::m_tableManager
protected
FWTableWidget* FWTableView::m_tableWidget
protected
bool FWTableView::m_useColumnsFromConfig
protected

Definition at line 100 of file FWTableView.h.

Referenced by selectCollection().

FWExpressionValidator* FWTableView::m_validator
protected

Definition at line 97 of file FWTableView.h.

Referenced by FWTableView(), selectCollection(), and ~FWTableView().

TGCompositeFrame* FWTableView::m_vert
protected

Definition at line 88 of file FWTableView.h.

Referenced by FWTableView(), toggleShowHide(), and ~FWTableView().