CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
FWTableWidget Class Reference

#include <Fireworks/TableWidget/interface/FWTableWidget.h>

Inheritance diagram for FWTableWidget:

Public Member Functions

FWTabularWidgetbody ()
 
void buttonPressedInRowHeader (Int_t row, Int_t column, Event_t *event, Int_t relX, Int_t relY)
 
void buttonReleasedInBody (Int_t row, Int_t column, Event_t *event, Int_t, Int_t)
 
void buttonReleasedInHeader (Int_t row, Int_t column, Event_t *event, Int_t, Int_t)
 
void buttonReleasedInRowHeader (Int_t row, Int_t column, Event_t *event, Int_t relX, Int_t relY)
 
void cellClicked (Int_t iRow, Int_t iColumn, Int_t iButton, Int_t iKeyMod, Int_t iGlobalX, Int_t iGlobalY)
 
void childrenEvent (Event_t *)
 
 ClassDef (FWTableWidget, 0)
 
void Clicked ()
 
void columnClicked (Int_t iColumn, Int_t iButton, Int_t iKeyMod)
 
void dataChanged ()
 
bool descendingSort () const
 
void disableGrowInWidth ()
 
void forceLayout ()
 
 FWTableWidget (FWTableManagerBase *iManager, const TGWindow *p=0)
 
TGDimension GetDefaultSize () const
 
virtual void MoveResize (Int_t x, Int_t y, UInt_t w=0, UInt_t h=0)
 
virtual Bool_t ProcessMessage (Long_t msg, Long_t parm1, Long_t parm2)
 
virtual void Resize (UInt_t w, UInt_t h)
 
void rowClicked (Int_t iRow, Int_t iButton, Int_t iKeyMod, Int_t iGlobalX, Int_t iGlobalY)
 
void SetBackgroundColor (Pixel_t)
 
void SetHeaderBackgroundColor (Pixel_t)
 
void SetHeaderForegroundColor (Pixel_t)
 
void SetLineSeparatorColor (Pixel_t)
 
void sort (UInt_t iColumn, bool iDescendingSort)
 
int sortedColumn () const
 
virtual ~FWTableWidget ()
 

Protected Member Functions

virtual void DoRedraw ()
 

Private Member Functions

bool handleResize (UInt_t w, UInt_t h)
 

Private Attributes

FWTabularWidgetm_body
 
FWTableManagerBasem_bodyTable
 
bool m_descendingSort
 
bool m_forceLayout
 
FWTabularWidgetm_header
 
TGGC * m_headerBackground
 
TGGC * m_headerForeground
 
FWTableManagerBasem_headerTable
 
TGHScrollBar * m_hSlider
 
TGGC * m_lineSeparator
 
FWTabularWidgetm_rowHeader
 
FWTableManagerBasem_rowHeaderTable
 
bool m_showingHSlider
 
bool m_showingVSlider
 
int m_sortedColumn
 
TGVScrollBar * m_vSlider
 

Detailed Description

Description: ROOT widget for representing data in a tabular form where the data is accessed via a FWTableManagerBase

Usage: This widget creates a table made up of cells where the representation of the cells is controlled by the FWTableManagerBase instance passed to the FWTableWidget's constructor. If the data for the FWTableManagerBase changes, the view is automatically updated. See the documentation for FWTableManagerBase for further details.

Definition at line 36 of file FWTableWidget.h.

Constructor & Destructor Documentation

FWTableWidget::FWTableWidget ( FWTableManagerBase iManager,
const TGWindow *  p = 0 
)

Definition at line 43 of file FWTableWidget.cc.

References FWTableManagerBase::cellDataIsSortable(), kColOptions, kRowOptions, m_body, m_bodyTable, m_header, m_headerTable, m_hSlider, m_rowHeader, m_rowHeaderTable, m_vSlider, FWTabularWidget::setWidthOfTextInColumns(), and FWTabularWidget::widthOfTextInColumns().

43  :
44 TGCompositeFrame(p),
45  m_bodyTable(iManager),
46  m_headerTable(iManager->hasLabelHeaders()?new FWAdapterHeaderTableManager(iManager): static_cast<FWTableManagerBase*>(0)),
47  m_rowHeaderTable(iManager->hasRowHeaders()?new FWAdapterRowHeaderTableManager(iManager): static_cast<FWTableManagerBase*>(0)),
48  m_header(0),
49  m_rowHeader(0),
52  m_sortedColumn(-1),
58 {
59  SetLayoutManager( new TGTableLayout(this,3,3) );
60 
61  if(0!=m_headerTable) {
63  AddFrame(m_header, new TGTableLayoutHints(1,2,0,1,kLHintsTop|kLHintsLeft|kRowOptions));
64  if (m_bodyTable->cellDataIsSortable()) m_header->Connect("buttonReleased(Int_t,Int_t,Event_t*,Int_t,Int_t)","FWTableWidget",this,"buttonReleasedInHeader(Int_t,Int_t,Event_t*,Int_t,Int_t)");
65  }
66  m_body = new FWTabularWidget(iManager,this,GetWhiteGC()());
67  //m_body->SetBackgroundColor(kWidgetColor);
68  AddFrame(m_body, new TGTableLayoutHints(1,2,1,2,kLHintsTop|kLHintsLeft|kRowOptions|kColOptions));
69  m_body->Connect("buttonReleased(Int_t,Int_t,Event_t*,Int_t,Int_t)","FWTableWidget",this,"buttonReleasedInBody(Int_t,Int_t,Event_t*,Int_t,Int_t)");
70 
71  //set sizes
72  std::vector<unsigned int> columnWidths = m_body->widthOfTextInColumns();
73  if(0!=m_header) {
74  std::vector<unsigned int> headerWidths = m_header->widthOfTextInColumns();
75  for(std::vector<unsigned int>::iterator it = columnWidths.begin(), itEnd=columnWidths.end(), itHeader=headerWidths.begin();
76  it != itEnd;
77  ++it,++itHeader) {
78  if(*itHeader > *it) {
79  *it = *itHeader;
80  }
81  }
82  }
83  if(0!=m_header) {
84  m_header->setWidthOfTextInColumns(columnWidths);
85  }
86  m_body->setWidthOfTextInColumns(columnWidths);
87  if(m_rowHeaderTable) {
88  m_rowHeader = new FWTabularWidget(m_rowHeaderTable,this, GetWhiteGC()());
89  //m_rowHeader->SetBackgroundColor(kWidgetColor);
90 
91  AddFrame(m_rowHeader, new TGTableLayoutHints(0,1,1,2,kLHintsTop|kLHintsLeft|kColOptions));
92  m_rowHeader->Connect("buttonReleased(Int_t,Int_t,Event_t*,Int_t,Int_t)","FWTableWidget",this,"buttonReleasedInBody(Int_t,Int_t,Event_t*,Int_t,Int_t)");
93  m_rowHeader->Connect("buttonReleased(Int_t,Int_t,Event_t*,Int_t,Int_t)","FWTableWidget",this,"buttonReleasedInRowHeader(Int_t,Int_t,Event_t*,Int_t,Int_t)");
95  }
96 
97  m_hSlider = new TGHScrollBar(this);
98  AddFrame(m_hSlider, new TGTableLayoutHints(1,2,2,3,kRowOptions));
99  m_hSlider->Connect("ProcessedEvent(Event_t*)", "FWTableWidget", this, "childrenEvent(Event_t *)");
100  m_vSlider = new TGVScrollBar(this);
101  m_vSlider->SetSmallIncrement(12);
102  AddFrame(m_vSlider, new TGTableLayoutHints(2,3,1,2,kColOptions));
103  m_vSlider->Connect("ProcessedEvent(Event_t*)", "FWTableWidget", this, "childrenEvent(Event_t *)");
104  MapSubwindows();
105  Layout();
106  //HideFrame(m_hSlider);
107  //HideFrame(m_vSlider);
108  m_hSlider->Associate(this);
109  m_vSlider->Associate(this);
110 
111  m_hSlider->SetEditDisabled(kEditDisable | kEditDisableGrab | kEditDisableBtnEnable);
112  m_vSlider->SetEditDisabled(kEditDisable | kEditDisableGrab | kEditDisableBtnEnable);
113  m_bodyTable->Connect("dataChanged()","FWTableWidget",this,"dataChanged()");
114 }
virtual bool cellDataIsSortable() const
FWTableManagerBase * m_bodyTable
TGVScrollBar * m_vSlider
TGGC * m_headerBackground
virtual bool hasLabelHeaders() const
void setWidthOfTextInColumns(const std::vector< unsigned int > &)
FWTabularWidget * m_body
TGGC * m_headerForeground
TGGC * m_lineSeparator
const std::vector< unsigned int > & widthOfTextInColumns() const
static const UInt_t kRowOptions
FWTabularWidget * m_rowHeader
static const UInt_t kColOptions
FWTableManagerBase * m_headerTable
FWTabularWidget * m_header
FWTableManagerBase * m_rowHeaderTable
TGHScrollBar * m_hSlider
FWTableWidget::~FWTableWidget ( )
virtual

Definition at line 121 of file FWTableWidget.cc.

References m_headerBackground, m_headerForeground, and m_lineSeparator.

122 {
123  if(0!=m_headerBackground) {
124  gClient->GetResourcePool()->GetGCPool()->FreeGC(m_headerBackground->GetGC());
125  }
126  if(0!= m_headerForeground) {
127  gClient->GetResourcePool()->GetGCPool()->FreeGC(m_headerForeground->GetGC());
128  }
129 
130  if(0!= m_lineSeparator) {
131  gClient->GetResourcePool()->GetGCPool()->FreeGC(m_lineSeparator->GetGC());
132  }
133 
134 }
TGGC * m_headerBackground
TGGC * m_headerForeground
TGGC * m_lineSeparator

Member Function Documentation

FWTabularWidget* FWTableWidget::body ( )
inline

Definition at line 93 of file FWTableWidget.h.

References m_body.

Referenced by FWPathsPopup::FWPathsPopup(), FWGeometryTableViewBase::postConst(), and FWPathsPopup::postProcessEvent().

93 { return m_body; }
FWTabularWidget * m_body
void FWTableWidget::buttonPressedInRowHeader ( Int_t  row,
Int_t  column,
Event_t *  event,
Int_t  relX,
Int_t  relY 
)

Definition at line 487 of file FWTableWidget.cc.

References FWTableManagerBase::buttonReleasedInRowHeader(), and m_bodyTable.

488 {
489  Int_t btn = event->fCode;
490  if(btn != kButton1 && btn != kButton3) {return;}
491  m_bodyTable->buttonReleasedInRowHeader(row, event, relX, relY);
492 }
FWTableManagerBase * m_bodyTable
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
virtual void buttonReleasedInRowHeader(Int_t row, Event_t *event, Int_t relX, Int_t relY)
void FWTableWidget::buttonReleasedInBody ( Int_t  row,
Int_t  column,
Event_t *  event,
Int_t  iRelX,
Int_t  iRelY 
)

Definition at line 357 of file FWTableWidget.cc.

References cellClicked(), m_body, m_bodyTable, m_vSlider, AlCaHLTBitMon_ParallelJobs::p, rowClicked(), and FWTableManagerBase::unsortedRowNumber().

358 {
359  Int_t btn = event->fCode;
360  Int_t keyMod = event->fState;
361  if(btn == kButton5){
362  //should scroll down
363  if(m_vSlider) {
364  Int_t p = m_vSlider->GetPosition();
365  Int_t mx = m_vSlider->GetRange();
366  p+=m_vSlider->GetSmallIncrement();
367  if(p>mx){ p=mx;}
368  m_vSlider->SetPosition(p);
369  }
370  return;
371  }
372  if(btn == kButton4){
373  //should scroll up
374  if(m_vSlider) {
375  Int_t p = m_vSlider->GetPosition();
376  p -=m_vSlider->GetSmallIncrement();
377  if(0>p) {p=0;}
378  m_vSlider->SetPosition(p);
379  }
380  return;
381  }
382  if(btn != kButton1 && btn != kButton3) {return;}
383  if(row>=-1 and row < m_bodyTable->numberOfRows()) {
384  Int_t globalX,globalY;
385  Window_t childdum;
386  gVirtualX->TranslateCoordinates(m_body->GetId(),
387  gClient->GetDefaultRoot()->GetId(),
388  event->fX,event->fY,globalX,globalY,childdum);
389  cellClicked(m_bodyTable->unsortedRowNumber(row), column, btn, keyMod, globalX, globalY);
390  rowClicked(m_bodyTable->unsortedRowNumber(row), btn,keyMod,globalX,globalY);
391  }
392 }
FWTableManagerBase * m_bodyTable
TGVScrollBar * m_vSlider
FWTabularWidget * m_body
virtual int unsortedRowNumber(int iSortedRowNumber) const =0
when passed the index to the sorted order of the rows it returns the original row number from the und...
void cellClicked(Int_t iRow, Int_t iColumn, Int_t iButton, Int_t iKeyMod, Int_t iGlobalX, Int_t iGlobalY)
void rowClicked(Int_t iRow, Int_t iButton, Int_t iKeyMod, Int_t iGlobalX, Int_t iGlobalY)
void FWTableWidget::buttonReleasedInHeader ( Int_t  row,
Int_t  column,
Event_t *  event,
Int_t  ,
Int_t   
)

Definition at line 341 of file FWTableWidget.cc.

References columnClicked(), m_descendingSort, m_sortedColumn, and sort().

342 {
343  Int_t btn = event->fCode;
344  Int_t keyMod = event->fState;
345  //Int_t keyMod = event->fState;
346  if (btn == kButton1 || btn == kButton3) {
347  if(m_sortedColumn==column) {
348  sort(column, !m_descendingSort);
349  } else {
350  sort(column,true);
351  }
352  }
353  columnClicked(column, btn, keyMod);
354 }
void sort(UInt_t iColumn, bool iDescendingSort)
void columnClicked(Int_t iColumn, Int_t iButton, Int_t iKeyMod)
void FWTableWidget::buttonReleasedInRowHeader ( Int_t  row,
Int_t  column,
Event_t *  event,
Int_t  relX,
Int_t  relY 
)

Definition at line 494 of file FWTableWidget.cc.

References FWTableManagerBase::buttonReleasedInRowHeader(), and m_bodyTable.

495 {
496  Int_t btn = event->fCode;
497  if(btn != kButton1 && btn != kButton3) {return;}
498  m_bodyTable->buttonReleasedInRowHeader(row, event, relX, relY);
499 }
FWTableManagerBase * m_bodyTable
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
virtual void buttonReleasedInRowHeader(Int_t row, Event_t *event, Int_t relX, Int_t relY)
void FWTableWidget::cellClicked ( Int_t  iRow,
Int_t  iColumn,
Int_t  iButton,
Int_t  iKeyMod,
Int_t  iGlobalX,
Int_t  iGlobalY 
)

Definition at line 395 of file FWTableWidget.cc.

References harvestRelVal::args.

Referenced by buttonReleasedInBody().

396 {
397  keyMod = (keyMod&(kKeyShiftMask|kKeyControlMask));
398  //std::cout <<"rowClicked "<<row<<" "<<btn<<" "<<keyMod<<std::endl;
399  Long_t args[6];
400  args[0]=(Long_t)row;
401  args[1]=(Long_t)column;
402  args[2]=(Long_t)btn;
403  args[3]=(Long_t)keyMod;
404  args[4]=(Long_t)iGlobalX;
405  args[5]=(Long_t)iGlobalY;
406  Emit("cellClicked(Int_t,Int_t,Int_t,Int_t,Int_t,Int_t)",args);
407 }
dictionary args
void FWTableWidget::childrenEvent ( Event_t *  )

Definition at line 410 of file FWTableWidget.cc.

References Clicked().

411 {
412  Clicked();
413 }
FWTableWidget::ClassDef ( FWTableWidget  ,
 
)
void FWTableWidget::Clicked ( )

Definition at line 416 of file FWTableWidget.cc.

Referenced by childrenEvent().

417 {
418  Emit("Clicked()");
419 }
void FWTableWidget::columnClicked ( Int_t  iColumn,
Int_t  iButton,
Int_t  iKeyMod 
)

Definition at line 436 of file FWTableWidget.cc.

References harvestRelVal::args.

Referenced by buttonReleasedInHeader().

437 {
438  keyMod = (keyMod&(kKeyShiftMask|kKeyControlMask));
439  //std::cout <<"rowClicked "<<row<<" "<<btn<<" "<<keyMod<<std::endl;
440  Long_t args[3];
441  args[0]=(Long_t)column;
442  args[1]=(Long_t)btn;
443  args[2]=(Long_t)keyMod;
444  Emit("columnClicked(Int_t,Int_t,Int_t)",args);
445 }
dictionary args
void FWTableWidget::dataChanged ( void  )

Definition at line 448 of file FWTableWidget.cc.

References FWTabularWidget::dataChanged(), handleResize(), m_body, m_forceLayout, m_header, m_rowHeader, FWTabularWidget::setWidthOfTextInColumns(), and FWTabularWidget::widthOfTextInColumns().

Referenced by FWTableViewTableManager::implSort().

449 {
450  bool needs_layout = m_forceLayout; m_forceLayout = false;
451 
452  m_body->dataChanged();
453  if(m_rowHeader) {
456  }
457  //set sizes
458  std::vector<unsigned int> columnWidths = m_body->widthOfTextInColumns();
459  if(m_header) {
460  // reset header back to its internal max rather than the last width
461  m_header->dataChanged();
462  std::vector<unsigned int> headerWidths = m_header->widthOfTextInColumns();
463  for(std::vector<unsigned int>::iterator it = columnWidths.begin(), itEnd=columnWidths.end(), itHeader=headerWidths.begin();
464  it != itEnd;
465  ++it,++itHeader) {
466  if(*itHeader > *it) {
467  *it = *itHeader;
468  }
469  }
470  m_header->setWidthOfTextInColumns(columnWidths);
471  }
472  m_body->setWidthOfTextInColumns(columnWidths);
473 
474  //this updates sliders to match our new data
475  bool layoutDoneByhandleResize = handleResize(GetWidth(), GetHeight());
476  if (needs_layout && ! layoutDoneByhandleResize)
477  {
478  Layout();
479  }
480  gClient->NeedRedraw(m_body);
481  if (m_header) gClient->NeedRedraw(m_header);
482  if (m_rowHeader) gClient->NeedRedraw(m_rowHeader);
483 
484 }
bool handleResize(UInt_t w, UInt_t h)
void setWidthOfTextInColumns(const std::vector< unsigned int > &)
FWTabularWidget * m_body
const std::vector< unsigned int > & widthOfTextInColumns() const
FWTabularWidget * m_rowHeader
FWTabularWidget * m_header
bool FWTableWidget::descendingSort ( ) const
inline

Definition at line 91 of file FWTableWidget.h.

References m_descendingSort.

Referenced by FWTriggerTableView::addTo(), and FWTableView::addTo().

91 { return m_descendingSort; }
void FWTableWidget::disableGrowInWidth ( )
void FWTableWidget::DoRedraw ( )
protectedvirtual

Definition at line 530 of file FWTableWidget.cc.

531 {
532  // override virtual TGFrame::DoRedraw() to prevent call of gVirtualX->ClearArea();
533 }
void FWTableWidget::forceLayout ( )
inline
TGDimension FWTableWidget::GetDefaultSize ( ) const

Definition at line 505 of file FWTableWidget.cc.

References FWTabularWidget::GetDefaultSize(), m_body, m_header, m_hSlider, m_rowHeader, and m_vSlider.

506 {
507  TGDimension returnValue;
508  if(m_header){
509  returnValue.fHeight += m_header->GetDefaultHeight();
510  }
511  if(m_rowHeader) {
512  returnValue.fWidth += m_rowHeader->GetDefaultWidth();
513  }
514  returnValue = returnValue + m_body->GetDefaultSize();
515  returnValue.fHeight += m_hSlider->GetDefaultHeight();
516  returnValue.fWidth += m_vSlider->GetDefaultWidth();
517 
518  return returnValue;
519 }
TGVScrollBar * m_vSlider
FWTabularWidget * m_body
TGDimension GetDefaultSize() const
FWTabularWidget * m_rowHeader
FWTabularWidget * m_header
TGHScrollBar * m_hSlider
bool FWTableWidget::handleResize ( UInt_t  w,
UInt_t  h 
)
private

Definition at line 230 of file FWTableWidget.cc.

References def, FWTabularWidget::GetDefaultSize(), m_body, m_header, m_hSlider, m_rowHeader, m_showingHSlider, m_showingVSlider, and m_vSlider.

Referenced by dataChanged(), MoveResize(), and Resize().

231 {
232  //std::cout <<"Resize"<<std::endl;
233  bool redoLayout=false;
234 
235  TGDimension def = m_body->GetDefaultSize();
236  UInt_t fullWidth = def.fWidth;
237  if(m_rowHeader) {
238  fullWidth += m_rowHeader->GetDefaultSize().fWidth;
239  }
240 
241  UInt_t headerHeight = 0;
242  if(m_header) {
243  headerHeight = m_header->GetHeight();
244  }
245  UInt_t fullHeight = def.fHeight + headerHeight;
246 
247  UInt_t sBarWidth = (h < fullHeight) ? m_vSlider->GetWidth() : 0;
248  UInt_t sBarHeight = (w < fullWidth) ? m_hSlider->GetHeight() : 0;
249  if (sBarWidth == 0 && sBarHeight > 0 && h < fullHeight + sBarHeight)
250  sBarWidth = m_vSlider->GetWidth();
251  else if (sBarHeight == 0 && sBarWidth > 0 && h < fullWidth + sBarWidth)
252  sBarHeight = m_hSlider->GetHeight();
253  fullWidth += sBarWidth;
254  fullHeight += sBarHeight;
255 
256  if(w < fullWidth) {
257  if(!m_showingHSlider) {
258  ShowFrame(m_hSlider);
259  redoLayout=true;
260  m_showingHSlider=true;
261  }
262  m_hSlider->SetRange(fullWidth,w);
263  } else {
264  if(m_showingHSlider) {
265  HideFrame(m_hSlider);
266  m_hSlider->SetPosition(0);
267  m_showingHSlider = false;
268  redoLayout=true;
269  }
270  }
271 
272  if(h < fullHeight) {
273  if(!m_showingVSlider) {
274  ShowFrame(m_vSlider);
275  m_showingVSlider=true;
276  redoLayout=true;
277  }
278  m_vSlider->SetRange(fullHeight,h);
279  } else {
280  if(m_showingVSlider) {
281  HideFrame(m_vSlider);
282  m_vSlider->SetPosition(0);
283  m_showingVSlider = false;
284  redoLayout=true;
285  }
286  }
287  if(redoLayout) {
288  Layout();
289  }
290 
291  return redoLayout;
292 }
TGVScrollBar * m_vSlider
FWTabularWidget * m_body
TGDimension GetDefaultSize() const
unsigned int UInt_t
Definition: FUTypes.h:12
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
FWTabularWidget * m_rowHeader
T w() const
FWTabularWidget * m_header
JetCorrectorParameters::Definitions def
Definition: classes.h:12
TGHScrollBar * m_hSlider
void FWTableWidget::MoveResize ( Int_t  x,
Int_t  y,
UInt_t  w = 0,
UInt_t  h = 0 
)
virtual

Definition at line 295 of file FWTableWidget.cc.

References handleResize().

296 {
297  //std::cout <<"MoveResize"<<std::endl;
298  if(w != GetWidth() || h != GetHeight()) {
299  handleResize(w,h);
300  }
301  TGCompositeFrame::MoveResize(x,y,w,h);
302 }
bool handleResize(UInt_t w, UInt_t h)
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
T w() const
Definition: DDAxes.h:10
Bool_t FWTableWidget::ProcessMessage ( Long_t  msg,
Long_t  parm1,
Long_t  parm2 
)
virtual

Definition at line 305 of file FWTableWidget.cc.

References m_body, m_header, m_rowHeader, FWTabularWidget::setHorizontalOffset(), and FWTabularWidget::setVerticalOffset().

306 {
307  // Handle message generated by the canvas scrollbars.
308 
309  switch (GET_MSG(msg)) {
310  case kC_HSCROLL:
311  switch (GET_SUBMSG(msg)) {
312  case kSB_SLIDERTRACK:
313  case kSB_SLIDERPOS:
314  m_body->setHorizontalOffset(parm1);
315  if(m_header) {
317  }
318  break;
319  }
320  break;
321 
322  case kC_VSCROLL:
323  switch (GET_SUBMSG(msg)) {
324  case kSB_SLIDERTRACK:
325  case kSB_SLIDERPOS:
326  m_body->setVerticalOffset(parm1);
327  if(m_rowHeader) {
329  }
330  break;
331  }
332  break;
333 
334  default:
335  break;
336  }
337  return kTRUE;
338 }
FWTabularWidget * m_body
void setHorizontalOffset(UInt_t)
FWTabularWidget * m_rowHeader
FWTabularWidget * m_header
void setVerticalOffset(UInt_t)
void FWTableWidget::Resize ( UInt_t  w,
UInt_t  h 
)
virtual

Definition at line 223 of file FWTableWidget.cc.

References handleResize().

Referenced by FWCollectionSummaryWidget::toggleShowHide().

224 {
225  handleResize(w,h);
226  TGCompositeFrame::Resize(w,h);
227 }
bool handleResize(UInt_t w, UInt_t h)
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
T w() const
void FWTableWidget::rowClicked ( Int_t  iRow,
Int_t  iButton,
Int_t  iKeyMod,
Int_t  iGlobalX,
Int_t  iGlobalY 
)

This signal is emitted if the mouse button is 'clicked' while the cursor was over a row. Arguments: iRow: the unsorted row number (natural ordering) of the row clicked iButton: the ROOT button value for the click event (e.g. says which button used) iKeyMod: the ROOT key modifier value for the click event (e.g. says if a keyboard key was being held) iGlobalX: the X coordinate of the click in global coordinates iGlobalY: the Y coordinate of the click in global coordinates

Definition at line 422 of file FWTableWidget.cc.

References harvestRelVal::args.

Referenced by buttonReleasedInBody().

423 {
424  keyMod = (keyMod&(kKeyShiftMask|kKeyControlMask));
425  //std::cout <<"rowClicked "<<row<<" "<<btn<<" "<<keyMod<<std::endl;
426  Long_t args[5];
427  args[0]=(Long_t)row;
428  args[1]=(Long_t)btn;
429  args[2]=(Long_t)keyMod;
430  args[3]=(Long_t)iGlobalX;
431  args[4]=(Long_t)iGlobalY;
432  Emit("rowClicked(Int_t,Int_t,Int_t,Int_t,Int_t)",args);
433 }
dictionary args
void FWTableWidget::SetBackgroundColor ( Pixel_t  iColor)

Definition at line 166 of file FWTableWidget.cc.

References m_body, m_header, m_rowHeader, and m_rowHeaderTable.

Referenced by FWCollectionSummaryWidget::colorTable(), FWGUIEventDataAdder::createWindow(), FWPathsPopup::FWPathsPopup(), FWGeometryTableViewBase::postConst(), FWTableView::resetColors(), FWTriggerTableView::setBackgroundColor(), FWTableView::setBackgroundColor(), and FWGeometryTableViewBase::setBackgroundColor().

167 {
168  TGFrame::SetBackgroundColor(iColor);
169  if(m_rowHeaderTable) {
170  m_rowHeader->SetBackgroundColor(iColor);
171  fClient->NeedRedraw(m_rowHeader);
172  }
173  if(m_header) {
174  m_header->SetBackgroundColor(iColor);
175  fClient->NeedRedraw(m_header);
176  }
177  m_body->SetBackgroundColor(iColor);
178  fClient->NeedRedraw(m_body);
179  fClient->NeedRedraw(this);
180 }
FWTabularWidget * m_body
FWTabularWidget * m_rowHeader
FWTabularWidget * m_header
FWTableManagerBase * m_rowHeaderTable
void FWTableWidget::SetHeaderBackgroundColor ( Pixel_t  iColor)

Definition at line 183 of file FWTableWidget.cc.

References m_header, m_headerBackground, FWTabularWidget::setBackgroundAreaContext(), and lumiQTWidget::t.

Referenced by FWGUIEventDataAdder::createWindow(), FWPathsPopup::FWPathsPopup(), FWTableView::FWTableView(), FWTriggerTableView::FWTriggerTableView(), FWGeometryTableViewBase::postConst(), and FWCollectionSummaryWidget::toggleShowHide().

184 {
185  if(0==m_headerBackground) {
186  GCValues_t t = *(gClient->GetResourcePool()->GetFrameGC()->GetAttributes());
187  m_headerBackground = gClient->GetResourcePool()->GetGCPool()->GetGC(&t,kTRUE);
188  }
189  m_headerBackground->SetForeground(iColor);
190  if(0!=m_header) {
192  }
193 }
TGGC * m_headerBackground
void setBackgroundAreaContext(GContext_t iContext)
FWTabularWidget * m_header
void FWTableWidget::SetHeaderForegroundColor ( Pixel_t  iColor)

Definition at line 195 of file FWTableWidget.cc.

References m_header, m_headerForeground, FWTabularWidget::setLineContext(), and lumiQTWidget::t.

196 {
197  if(0==m_headerForeground) {
198  GCValues_t t = *(gClient->GetResourcePool()->GetFrameGC()->GetAttributes());
199  m_headerForeground = gClient->GetResourcePool()->GetGCPool()->GetGC(&t,kTRUE);
200  }
201  m_headerForeground->SetForeground(iColor);
202  if(0!=m_header) {
204  }
205 }
void setLineContext(GContext_t iContext)
TGGC * m_headerForeground
FWTabularWidget * m_header
void FWTableWidget::SetLineSeparatorColor ( Pixel_t  iColor)

Definition at line 208 of file FWTableWidget.cc.

References m_body, m_lineSeparator, m_rowHeader, FWTabularWidget::setLineContext(), and lumiQTWidget::t.

Referenced by FWCollectionSummaryWidget::colorTable(), FWGUIEventDataAdder::createWindow(), FWPathsPopup::FWPathsPopup(), FWGeometryTableViewBase::postConst(), FWTableView::resetColors(), FWTriggerTableView::setBackgroundColor(), and FWGeometryTableViewBase::setBackgroundColor().

209 {
210  if(0==m_lineSeparator) {
211  GCValues_t t = *(gClient->GetResourcePool()->GetFrameGC()->GetAttributes());
212  m_lineSeparator = gClient->GetResourcePool()->GetGCPool()->GetGC(&t,kTRUE);
213  }
214  m_lineSeparator->SetForeground(iColor);
216  if(m_rowHeader) {
218  }
219 }
void setLineContext(GContext_t iContext)
FWTabularWidget * m_body
TGGC * m_lineSeparator
FWTabularWidget * m_rowHeader
void FWTableWidget::sort ( UInt_t  iColumn,
bool  iDescendingSort 
)

Sorts the rows of data in the table based on values in column iColumn. If iDescendingSort is 'true' then the rows are sorted in descending order of the values.

Definition at line 152 of file FWTableWidget.cc.

References m_bodyTable, m_descendingSort, m_headerTable, m_sortedColumn, and FWTableManagerBase::sort().

Referenced by buttonReleasedInHeader(), FWTriggerTableView::setFrom(), and FWTableView::setFrom().

153 {
154  if(0!=m_headerTable) {
155  m_headerTable->sort(iColumn,iDescendingSort);
156  }
157  m_bodyTable->sort(iColumn,iDescendingSort);
158  m_sortedColumn =iColumn;
159  m_descendingSort=iDescendingSort;
160 
161  //fClient->NeedRedraw(m_header);
162  //fClient->NeedRedraw(m_body);
163 }
FWTableManagerBase * m_bodyTable
void sort(int iCol, bool iSortOrder)
Call to have table sorted on values in column iCol with the sort order being descending if iSortOrder...
FWTableManagerBase * m_headerTable
int FWTableWidget::sortedColumn ( ) const
inline

Definition at line 90 of file FWTableWidget.h.

References m_sortedColumn.

Referenced by FWTriggerTableView::addTo(), and FWTableView::addTo().

90 { return m_sortedColumn; }

Member Data Documentation

FWTabularWidget* FWTableWidget::m_body
private
FWTableManagerBase* FWTableWidget::m_bodyTable
private
bool FWTableWidget::m_descendingSort
private

Definition at line 119 of file FWTableWidget.h.

Referenced by buttonReleasedInHeader(), descendingSort(), and sort().

bool FWTableWidget::m_forceLayout
private

Definition at line 120 of file FWTableWidget.h.

Referenced by dataChanged(), and forceLayout().

FWTabularWidget* FWTableWidget::m_header
private
TGGC* FWTableWidget::m_headerBackground
private

Definition at line 122 of file FWTableWidget.h.

Referenced by SetHeaderBackgroundColor(), and ~FWTableWidget().

TGGC* FWTableWidget::m_headerForeground
private

Definition at line 123 of file FWTableWidget.h.

Referenced by SetHeaderForegroundColor(), and ~FWTableWidget().

FWTableManagerBase* FWTableWidget::m_headerTable
private

Definition at line 108 of file FWTableWidget.h.

Referenced by FWTableWidget(), and sort().

TGHScrollBar* FWTableWidget::m_hSlider
private

Definition at line 114 of file FWTableWidget.h.

Referenced by FWTableWidget(), GetDefaultSize(), and handleResize().

TGGC* FWTableWidget::m_lineSeparator
private

Definition at line 124 of file FWTableWidget.h.

Referenced by SetLineSeparatorColor(), and ~FWTableWidget().

FWTabularWidget* FWTableWidget::m_rowHeader
private
FWTableManagerBase* FWTableWidget::m_rowHeaderTable
private

Definition at line 109 of file FWTableWidget.h.

Referenced by FWTableWidget(), and SetBackgroundColor().

bool FWTableWidget::m_showingHSlider
private

Definition at line 116 of file FWTableWidget.h.

Referenced by handleResize().

bool FWTableWidget::m_showingVSlider
private

Definition at line 115 of file FWTableWidget.h.

Referenced by handleResize().

int FWTableWidget::m_sortedColumn
private

Definition at line 118 of file FWTableWidget.h.

Referenced by buttonReleasedInHeader(), sort(), and sortedColumn().

TGVScrollBar* FWTableWidget::m_vSlider
private

Definition at line 113 of file FWTableWidget.h.

Referenced by buttonReleasedInBody(), FWTableWidget(), GetDefaultSize(), and handleResize().