CMS 3D CMS Logo

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

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

Inheritance diagram for FWTabularWidget:

Public Member Functions

void buttonPressed (Int_t row, Int_t column, Event_t *event, Int_t relX, Int_t relY)
 
void buttonReleased (Int_t row, Int_t column, Event_t *event, Int_t relX, Int_t relY)
 
 ClassDef (FWTabularWidget, 0)
 
void dataChanged ()
 
void disableGrowInWidth ()
 
void DoRedraw ()
 
 FWTabularWidget (FWTableManagerBase *iManager, const TGWindow *p=0, GContext_t context=getDefaultGC()())
 
TGDimension GetDefaultSize () const
 
virtual Bool_t HandleButton (Event_t *event)
 
UInt_t horizontalOffset () const
 
void needToRedraw ()
 
void setBackgroundAreaContext (GContext_t iContext)
 
void setHorizontalOffset (UInt_t)
 
void setLineContext (GContext_t iContext)
 
void setVerticalOffset (UInt_t)
 
void setWidthOfTextInColumns (const std::vector< unsigned int > &)
 
UInt_t verticalOffset () const
 
const std::vector< unsigned int > & widthOfTextInColumns () const
 
virtual ~FWTabularWidget ()
 

Static Public Member Functions

static const TGGC & getDefaultGC ()
 

Static Public Attributes

static const int kSeperatorWidth = 1
 
static const int kTextBuffer = 2
 

Private Member Functions

void translateToRowColumn (Int_t iX, Int_t iY, Int_t &oRow, Int_t &oCol, Int_t &oRelX, Int_t &oRelY) const
 

Private Attributes

GContext_t m_backgroundGC
 
bool m_growInWidth
 
unsigned int m_hOffset
 
GContext_t m_normGC
 
FWTableManagerBasem_table
 
int m_tableWidth
 
int m_textHeight
 
unsigned int m_vOffset
 
std::vector< unsigned int > m_widthOfTextInColumns
 
std::vector< unsigned int > m_widthOfTextInColumnsMax
 

Detailed Description

Description: Widget that draws part of a table [Implementation detail of FWTableWidget]

Usage: This class is used internally by FWTableWidget.

Definition at line 31 of file FWTabularWidget.h.

Constructor & Destructor Documentation

FWTabularWidget::FWTabularWidget ( FWTableManagerBase iManager,
const TGWindow *  p = 0,
GContext_t  context = getDefaultGC()() 
)

Definition at line 40 of file FWTabularWidget.cc.

References FWTableManagerBase::cellHeight(), WDecay::kNone, kSeperatorWidth, kTextBuffer, m_table, m_tableWidth, m_textHeight, m_widthOfTextInColumns, and FWTableManagerBase::maxWidthForColumns().

40  :
41 TGFrame(p),
42 m_table(iTable),
43 m_widthOfTextInColumns(m_table->numberOfColumns(),static_cast<unsigned int>(0)),
44 m_vOffset(0),
45 m_hOffset(0),
46 m_normGC(context),
47 m_backgroundGC(ULONG_MAX),
48 m_growInWidth(true)
49 {
50 
51  m_textHeight = iTable->cellHeight();
53 
55  for(std::vector<unsigned int>::const_iterator it = m_widthOfTextInColumns.begin(), itEnd = m_widthOfTextInColumns.end();
56  it!=itEnd;
57  ++it){
58  m_tableWidth +=*it;
59  }
60  Resize();
61 
62  gVirtualX->GrabButton(fId,kAnyButton, kAnyModifier, kButtonPressMask|kButtonReleaseMask,kNone,kNone);
63  m_table->Connect("visualPropertiesChanged()","FWTabularWidget",this,"needToRedraw()");
64 }
virtual int numberOfColumns() const =0
Number of columns in the table.
unsigned int m_vOffset
virtual std::vector< unsigned int > maxWidthForColumns() const
for each column in the table this returns the present maximum width for that column ...
GContext_t m_backgroundGC
GContext_t m_normGC
std::vector< unsigned int > m_widthOfTextInColumns
unsigned int m_hOffset
FWTableManagerBase * m_table
static const int kSeperatorWidth
static const int kTextBuffer
FWTabularWidget::~FWTabularWidget ( )
virtual

Definition at line 71 of file FWTabularWidget.cc.

References m_table.

72 {
73  m_table->Disconnect("visualPropertiesChanged()", this, "needToRedraw()");
74 }
FWTableManagerBase * m_table

Member Function Documentation

void FWTabularWidget::buttonPressed ( Int_t  row,
Int_t  column,
Event_t *  event,
Int_t  relX,
Int_t  relY 
)

Definition at line 222 of file FWTabularWidget.cc.

References harvestRelVal::args.

Referenced by python.Vispa.Gui.BoxContentDialog.BoxContentDialog::addButton(), and HandleButton().

223 {
224  //std::cout <<"buttonPressed "<<row<<" "<<column<<std::endl;
225  Long_t args[5];
226  args[0]=(Long_t)row;
227  args[1]=(Long_t)column;
228  args[2]=(Long_t)event;
229  args[3]=(Long_t)relX;
230  args[4]=(Long_t)relY;
231  Emit("buttonPressed(Int_t,Int_t,Event_t*,Int_t,Int_t)",args);
232 }
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
dictionary args
void FWTabularWidget::buttonReleased ( Int_t  row,
Int_t  column,
Event_t *  event,
Int_t  relX,
Int_t  relY 
)

Definition at line 234 of file FWTabularWidget.cc.

References harvestRelVal::args.

Referenced by HandleButton().

235 {
236  //std::cout <<"buttonReleased "<<row<<" "<<column<<std::endl;
237  Long_t args[6];
238  args[0]=(Long_t)row;
239  args[1]=(Long_t)column;
240  args[2]=(Long_t)event;
241  args[3]=(Long_t)relX;
242  args[4]=(Long_t)relY;
243  Emit("buttonReleased(Int_t,Int_t,Event_t*,Int_t,Int_t)",args);
244 }
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
dictionary args
FWTabularWidget::ClassDef ( FWTabularWidget  ,
 
)
void FWTabularWidget::dataChanged ( void  )

Definition at line 92 of file FWTabularWidget.cc.

References FWTableManagerBase::cellHeight(), m_table, m_textHeight, FWTableManagerBase::maxWidthForColumns(), and setWidthOfTextInColumns().

Referenced by FWTableWidget::dataChanged().

93 {
96 }
virtual std::vector< unsigned int > maxWidthForColumns() const
for each column in the table this returns the present maximum width for that column ...
void setWidthOfTextInColumns(const std::vector< unsigned int > &)
FWTableManagerBase * m_table
virtual unsigned int cellHeight() const
require all cells to be the same height
void FWTabularWidget::disableGrowInWidth ( )
inline

Definition at line 71 of file FWTabularWidget.h.

References m_growInWidth.

Referenced by FWTableWidget::disableGrowInWidth().

71 { m_growInWidth = false; }
void FWTabularWidget::DoRedraw ( )

Definition at line 247 of file FWTabularWidget.cc.

References FWTableManagerBase::cellRenderer(), FWTableCellRendererBase::draw(), kSeperatorWidth, kTextBuffer, m_backgroundGC, m_hOffset, m_normGC, m_table, m_tableWidth, m_textHeight, m_vOffset, m_widthOfTextInColumns, FWTableManagerBase::numberOfRows(), translateToRowColumn(), x, and detailsBasic3DVector::y.

Referenced by FWPathsPopup::postProcessEvent().

248 {
249  TGFrame::DoRedraw();
250 
251  //std::cout <<"DoRedraw "<<m_tableWidth<<std::endl;
252 
253  const int yOrigin = -m_vOffset;
254  const int xOrigin = -m_hOffset;
255  const int visibleWidth = m_tableWidth+xOrigin-kSeperatorWidth;
256  int y=yOrigin;
257  if(m_backgroundGC != ULONG_MAX) {
258  gVirtualX->FillRectangle(fId,m_backgroundGC,xOrigin,y,m_tableWidth,
259  GetHeight());
260  }
261  gVirtualX->DrawLine(fId, m_normGC, xOrigin, y, visibleWidth, y);
262  //Draw data
263  const int numRows=m_table->numberOfRows();
264 
265  //figure out which rows and columns are visible
266  Int_t startRow, startColumn,relX,relY;
267  translateToRowColumn(0,0,startRow,startColumn,relX,relY);
268  if(startRow<0) { startRow = 0;}
269  if(startColumn<0) { startColumn=0;}
270  Int_t endRow, endColumn;
271  translateToRowColumn(GetWidth(),GetHeight(),endRow,endColumn,relX,relY);
272  if(endRow >= numRows) {
273  endRow = numRows-1;
274  }
275  if(endColumn >= static_cast<Int_t>(m_widthOfTextInColumns.size())) {
276  endColumn = m_widthOfTextInColumns.size()-1;
277  }
278  //std::cout <<"start "<<startRow<<" "<<startColumn<<" end "<<endRow<<" "<<endColumn<<std::endl;
279 
280  //calculate offset for rows and columns
281  Int_t rowOffset = (kSeperatorWidth+2*kTextBuffer+m_textHeight)*startRow;
282  Int_t columnOffset=kSeperatorWidth+kTextBuffer+xOrigin;
283  for(std::vector<unsigned int>::iterator itTextWidth = m_widthOfTextInColumns.begin(), itEnd = m_widthOfTextInColumns.begin()+startColumn;
284  itTextWidth != itEnd; ++itTextWidth) {
285  columnOffset+=*itTextWidth+kTextBuffer+kSeperatorWidth+kTextBuffer;
286  }
287 
288 
289  y+=rowOffset;
290  for(int row = startRow; row <= endRow; ++row) {
291  std::vector<unsigned int>::iterator itTextWidth = m_widthOfTextInColumns.begin()+startColumn;
292  //int x=kSeperatorWidth+kTextBuffer+xOrigin;
293  int x = columnOffset;
295  for(int col = startColumn;
296  col <= endColumn;
297  ++col,++itTextWidth) {
298  m_table->cellRenderer(row,col)->draw(fId,x,y,*itTextWidth,m_textHeight);
299  //UInt_t textWidth = font->TextWidth(itData->c_str(),-1);
300  x+=*itTextWidth+kTextBuffer+kSeperatorWidth+kTextBuffer;
301  }
303  gVirtualX->DrawLine(fId, m_normGC, xOrigin, y, visibleWidth, y);
304  }
305 
306  //draw column separators
307  int x=xOrigin;
308  gVirtualX->DrawLine(fId,m_normGC,x,0,x,y);
309  x+=kSeperatorWidth;
310  for(std::vector<unsigned int>::iterator itTextWidth = m_widthOfTextInColumns.begin();
311  itTextWidth != m_widthOfTextInColumns.end();
312  ++itTextWidth) {
313  x+=2*kTextBuffer+*itTextWidth;
314  gVirtualX->DrawLine(fId,m_normGC,x,0,x,y);
315  x+=kSeperatorWidth;
316  }
317 }
void translateToRowColumn(Int_t iX, Int_t iY, Int_t &oRow, Int_t &oCol, Int_t &oRelX, Int_t &oRelY) const
unsigned int m_vOffset
virtual void draw(Drawable_t iID, int iX, int iY, unsigned int iWidth, unsigned int iHeight)=0
virtual int numberOfRows() const =0
Number of rows in the table.
virtual FWTableCellRendererBase * cellRenderer(int iSortedRowNumber, int iCol) const =0
GContext_t m_backgroundGC
GContext_t m_normGC
std::vector< unsigned int > m_widthOfTextInColumns
unsigned int m_hOffset
FWTableManagerBase * m_table
static const int kSeperatorWidth
static const int kTextBuffer
Definition: DDAxes.h:10
const TGGC & FWTabularWidget::getDefaultGC ( )
static

Definition at line 355 of file FWTabularWidget.cc.

356 {
357  static const TGGC* s_default = gClient->GetResourcePool()->GetFrameGC();
358  return *s_default;
359 }
TGDimension FWTabularWidget::GetDefaultSize ( ) const

Definition at line 334 of file FWTabularWidget.cc.

References h, kSeperatorWidth, kTextBuffer, m_table, m_tableWidth, m_textHeight, and FWTableManagerBase::numberOfRows().

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

335 {
336  // returns default size
337 
338  UInt_t w = fWidth;
339  if(! (GetOptions() & kFixedWidth) ) {
340  w=m_tableWidth;
341  }
342  UInt_t h = fHeight;
343  if(! (GetOptions() & kFixedHeight) ) {
344  unsigned int numRows = m_table->numberOfRows();
345 
347  }
348  return TGDimension(w, h);
349 }
virtual int numberOfRows() const =0
Number of rows in the table.
unsigned int UInt_t
Definition: FUTypes.h:12
FWTableManagerBase * m_table
static const int kSeperatorWidth
static const int kTextBuffer
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
Bool_t FWTabularWidget::HandleButton ( Event_t *  event)
virtual

Definition at line 152 of file FWTabularWidget.cc.

References FWTableCellRendererBase::buttonEvent(), buttonPressed(), buttonReleased(), FWTableManagerBase::cellRenderer(), m_table, and translateToRowColumn().

153 {
154  if (event->fType==kButtonPress) {
155  Int_t row,col,relX,relY;
156  translateToRowColumn(event->fX, event->fY, row, col,relX,relY);
157  //std::cout <<"Press: "<<relX<<" "<<relY<<" "<<row<<" "<<col<<" "<<m_table->numberOfRows()<<" "<<m_table->numberOfColumns()<<std::endl;
158  if (row >= 0 && row < m_table->numberOfRows() && col >= 0 && col < m_table->numberOfColumns()) {
159  FWTableCellRendererBase* renderer = m_table->cellRenderer(row,col);
160  if (renderer) {
161  renderer->buttonEvent(event,relX,relY);
162  }
163  buttonPressed(row,col,event,relX,relY);
164  }
165  return true;
166  }
167  if (event->fType==kButtonRelease) {
168  Int_t row,col,relX,relY;
169  translateToRowColumn(event->fX, event->fY, row, col,relX, relY);
170  //std::cout <<"Release: "<<relX<<" "<<relY<<" "<<row<<" "<<col<<" "<<m_table->numberOfRows()<<" "<<m_table->numberOfColumns()<<std::endl;
171  if (row >= 0 && row < m_table->numberOfRows() && col >= 0 && col < m_table->numberOfColumns()) {
172  FWTableCellRendererBase* renderer = m_table->cellRenderer(row,col);
173  if (renderer) {
174  renderer->buttonEvent(event,relX,relY);
175  }
176  buttonReleased(row,col,event,relX,relY);
177  }
178  return true;
179  }
180  return false;
181 }
void buttonReleased(Int_t row, Int_t column, Event_t *event, Int_t relX, Int_t relY)
void translateToRowColumn(Int_t iX, Int_t iY, Int_t &oRow, Int_t &oCol, Int_t &oRelX, Int_t &oRelY) const
void buttonPressed(Int_t row, Int_t column, Event_t *event, Int_t relX, Int_t relY)
virtual FWTableCellRendererBase * cellRenderer(int iSortedRowNumber, int iCol) const =0
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
FWTableManagerBase * m_table
virtual void buttonEvent(Event_t *iClickEvent, int iRelClickX, int iRelClickY)
UInt_t FWTabularWidget::horizontalOffset ( ) const
inline

Definition at line 46 of file FWTabularWidget.h.

References m_hOffset.

46 { return m_hOffset;}
unsigned int m_hOffset
void FWTabularWidget::needToRedraw ( )

Definition at line 99 of file FWTabularWidget.cc.

100 {
101  fClient->NeedRedraw(this);
102 }
void FWTabularWidget::setBackgroundAreaContext ( GContext_t  iContext)

Definition at line 325 of file FWTabularWidget.cc.

References m_backgroundGC.

Referenced by FWTableWidget::SetHeaderBackgroundColor().

326 {
327  m_backgroundGC = iContext;
328 }
GContext_t m_backgroundGC
void FWTabularWidget::setHorizontalOffset ( UInt_t  iH)

Definition at line 143 of file FWTabularWidget.cc.

References m_hOffset.

Referenced by FWTableWidget::ProcessMessage().

144 {
145  if(iH != m_hOffset){
146  m_hOffset = iH;
147  fClient->NeedRedraw(this);
148  }
149 }
unsigned int m_hOffset
void FWTabularWidget::setLineContext ( GContext_t  iContext)

Definition at line 320 of file FWTabularWidget.cc.

References m_normGC.

Referenced by FWTableWidget::SetHeaderForegroundColor(), and FWTableWidget::SetLineSeparatorColor().

321 {
322  m_normGC = iContext;
323 }
GContext_t m_normGC
void FWTabularWidget::setVerticalOffset ( UInt_t  iV)

Definition at line 135 of file FWTabularWidget.cc.

References m_vOffset.

Referenced by FWTableWidget::ProcessMessage().

136 {
137  if(iV != m_vOffset) {
138  m_vOffset = iV;
139  fClient->NeedRedraw(this);
140  }
141 }
unsigned int m_vOffset
void FWTabularWidget::setWidthOfTextInColumns ( const std::vector< unsigned int > &  iNew)

Definition at line 106 of file FWTabularWidget.cc.

References gen::k, kSeperatorWidth, kTextBuffer, m_growInWidth, m_table, m_tableWidth, m_widthOfTextInColumns, m_widthOfTextInColumnsMax, and FWTableManagerBase::numberOfColumns().

Referenced by dataChanged(), FWTableWidget::dataChanged(), and FWTableWidget::FWTableWidget().

107 {
108  assert(iNew.size() == static_cast<unsigned int>(m_table->numberOfColumns()));
109 
111  if (m_growInWidth)
112  {
113  // with of columns grow to prevent resizing/flickering on next event
114  m_widthOfTextInColumnsMax.resize(iNew.size());
115  std::vector<unsigned int>::iterator k = m_widthOfTextInColumnsMax.begin();
116  for(std::vector<unsigned int>::iterator it = m_widthOfTextInColumns.begin(); it != m_widthOfTextInColumns.end(); ++it, ++k)
117  {
118  if ( *it < *k )
119  *it = *k;
120  else
121  *k = *it;
122  }
123  }
124 
125  m_tableWidth=0;
126  for(std::vector<unsigned int>::const_iterator it = m_widthOfTextInColumns.begin(), itEnd = m_widthOfTextInColumns.end();
127  it!=itEnd;
128  ++it){
130  }
132 }
virtual int numberOfColumns() const =0
Number of columns in the table.
std::vector< unsigned int > m_widthOfTextInColumns
int k[5][pyjets_maxn]
FWTableManagerBase * m_table
std::vector< unsigned int > m_widthOfTextInColumnsMax
static const int kSeperatorWidth
static const int kTextBuffer
void FWTabularWidget::translateToRowColumn ( Int_t  iX,
Int_t  iY,
Int_t &  oRow,
Int_t &  oCol,
Int_t &  oRelX,
Int_t &  oRelY 
) const
private

Definition at line 184 of file FWTabularWidget.cc.

References kSeperatorWidth, kTextBuffer, m_hOffset, m_table, m_tableWidth, m_textHeight, m_vOffset, m_widthOfTextInColumns, and FWTableManagerBase::numberOfRows().

Referenced by DoRedraw(), and HandleButton().

185 {
186  if( iX < 0 ) {
187  oCol = -1;
188  oRelX = 0;
189  } else {
190  if(iX+static_cast<Int_t>(m_hOffset) > static_cast<Int_t>(m_tableWidth) ) {
191  oCol = m_widthOfTextInColumns.size();
192  oRelX = 0;
193  } else {
194  iX +=m_hOffset;
195  oCol = 0;
196  for(std::vector<unsigned int>::const_iterator it = m_widthOfTextInColumns.begin(), itEnd = m_widthOfTextInColumns.end();
197  it!=itEnd;
198  ++it,++oCol){
199  oRelX=iX-kTextBuffer;
200  iX-=2*kTextBuffer+kSeperatorWidth+*it;
201  if(iX <= 0) {
202  break;
203  }
204  }
205  }
206  }
207  if( iY < 0) {
208  oRow = -1;
209  oRelY=0;
210  } else {
211  oRow = (int)(float(iY+m_vOffset)/(m_textHeight+2*kTextBuffer+kSeperatorWidth));
213  Int_t numRows = m_table->numberOfRows();
214  if(oRow > numRows) {
215  oRow = numRows;
216  oRelY=0;
217  }
218  }
219 }
unsigned int m_vOffset
virtual int numberOfRows() const =0
Number of rows in the table.
std::vector< unsigned int > m_widthOfTextInColumns
unsigned int m_hOffset
FWTableManagerBase * m_table
static const int kSeperatorWidth
static const int kTextBuffer
UInt_t FWTabularWidget::verticalOffset ( ) const
inline

Definition at line 45 of file FWTabularWidget.h.

References m_vOffset.

45 {return m_vOffset;}
unsigned int m_vOffset
const std::vector<unsigned int>& FWTabularWidget::widthOfTextInColumns ( ) const
inline

Definition at line 44 of file FWTabularWidget.h.

References m_widthOfTextInColumns.

Referenced by FWTableWidget::dataChanged(), and FWTableWidget::FWTableWidget().

44 { return m_widthOfTextInColumns;}
std::vector< unsigned int > m_widthOfTextInColumns

Member Data Documentation

const int FWTabularWidget::kSeperatorWidth = 1
static
const int FWTabularWidget::kTextBuffer = 2
static
GContext_t FWTabularWidget::m_backgroundGC
private

Definition at line 92 of file FWTabularWidget.h.

Referenced by DoRedraw(), and setBackgroundAreaContext().

bool FWTabularWidget::m_growInWidth
private

Definition at line 94 of file FWTabularWidget.h.

Referenced by disableGrowInWidth(), and setWidthOfTextInColumns().

unsigned int FWTabularWidget::m_hOffset
private
GContext_t FWTabularWidget::m_normGC
private

Definition at line 91 of file FWTabularWidget.h.

Referenced by DoRedraw(), and setLineContext().

FWTableManagerBase* FWTabularWidget::m_table
private
int FWTabularWidget::m_tableWidth
private
int FWTabularWidget::m_textHeight
private
unsigned int FWTabularWidget::m_vOffset
private
std::vector<unsigned int> FWTabularWidget::m_widthOfTextInColumns
private
std::vector<unsigned int> FWTabularWidget::m_widthOfTextInColumnsMax
private

Definition at line 84 of file FWTabularWidget.h.

Referenced by setWidthOfTextInColumns().