Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TGTable.h
Go to the documentation of this file.
1// Author: Roel Aaij 21/07/2007
2
3/*************************************************************************
4 * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
5 * All rights reserved. *
6 * *
7 * For the licensing terms see $ROOTSYS/LICENSE. *
8 * For the list of contributors see $ROOTSYS/README/CREDITS. *
9 *************************************************************************/
10
11#ifndef ROOT_TGTable
12#define ROOT_TGTable
13
14#include "TGCanvas.h"
15#include "TGWidget.h"
16#include "TGTableHeader.h"
17
18class TGWindow;
19class TGString;
20class TGToolTip;
21class TGPicture;
23class TGTableCell;
24class TGTableHeader;
25class TGToolTip;
26class TGTableFrame;
28class TGTextButton;
30class TGLabel;
31class TGTextEntry;
32class TTableRange;
33
34class TGTable : public TGCompositeFrame, public TGWidget {
35
36protected:
37 TObjArray *fRows; // Array of rows
38 TObjArray *fRowHeaders; // Array of row headers
39 TObjArray *fColumnHeaders; // Array of column headers
40 TGTableHeader *fTableHeader; // Top left element of the table
41 Bool_t fReadOnly; // Table readonly state
42 Pixel_t fSelectColor; // Select Color
43 Int_t fTMode; // Text justify mode
44 Bool_t fAllData; // Is the data bigger than the table
45 TTableRange *fCurrentRange; // Range of data currently loaded
46 TTableRange *fDataRange; // Full range of the data set
47 TTableRange *fGotoRange; // Range used by Goto frame
48 TGTableFrame *fTableFrame; // Container for the frames
49 TGCanvas *fCanvas; // Canvas that will contains the cells
50 UInt_t fCellWidth; // Default cell width
51 UInt_t fCellHeight; // Default cell width
52
53 // Frames used for layout
54 TGTableHeaderFrame *fCHdrFrame; // Frame that contains the row headers
55 TGTableHeaderFrame *fRHdrFrame; // Frame that contains the row headers
56 TGHorizontalFrame *fRangeFrame; // Frame that contains the top part
57 TGHorizontalFrame *fTopFrame; // Frame that contains the top part
59 TGHorizontalFrame *fBottomFrame; // Frame that contains the bottom part
60 TGHorizontalFrame *fButtonFrame; // Contains the buttons
61
62 // Buttons for interaction
63 TGTextButton *fNextButton; // Button to view next chunk
64 TGTextButton *fPrevButton; // Button to view previous chunk
65 TGTextButton *fUpdateButton; // Button to update current view
66 TGTextButton *fGotoButton; // Button to goto a new range
67
68 // Labels and textentries for range information and input
69 TGLabel *fFirstCellLabel; // Label for the range frame
70 TGLabel *fRangeLabel; // Label for the range frame
71 TGTextEntry *fFirstCellEntry; // TextEntry for the range frame
72 TGTextEntry *fRangeEntry; // TextEntry for the range frame
73
74 Pixel_t fOddRowBackground; // Background color for odd numbered rows
75 Pixel_t fEvenRowBackground; // Background color for even numbered rows
76 Pixel_t fHeaderBackground; // Background color for headers
77
78 // Those are neither used nor even initialized:
79 // static const TGGC *fgDefaultSelectGC; // Default select GC
80 // static const TGGC *fgDefaultBckgndGC; // Default cell background GC
81 // static const Int_t fgDefaultTMode; // Default text justify mode
82
83 // Data members to keep track of LayoutHints that can't be
84 // automatically cleaned
88 TList *fMainHintsList; // List for all hints used in the main table frame
89
90 // Add rows and/or colums to the edge of the table.
91
92 virtual void Init();
93
94 // Remove rows and/or colums from the edge of the table.
95protected:
96 TVirtualTableInterface *fInterface; // Interface to the data source
97
98 virtual void DoRedraw();
99
100 virtual void Expand(UInt_t nrows, UInt_t ncolumns);
101 virtual void ExpandColumns(UInt_t ncolumns);
102 virtual void ExpandRows(UInt_t nrows);
103
104 virtual UInt_t GetRHdrHeight() const;
105 virtual UInt_t GetCHdrWidth() const;
106
107 virtual void Shrink(UInt_t nrows, UInt_t ncolumns);
108 virtual void ShrinkColumns(UInt_t ncolumns);
109 virtual void ShrinkRows(UInt_t nrows);
110
111 virtual void UpdateHeaders(EHeaderType type);
112 virtual void SetInterface(TVirtualTableInterface *interface,
113 UInt_t nrows = 50, UInt_t ncolumns = 20);
114 virtual void ResizeTable(UInt_t nrows, UInt_t ncolumns);
115
116 virtual void UpdateRangeFrame();
117
118public:
119 TGTable(const TGWindow *p = 0, Int_t id = 0,
120 TVirtualTableInterface *interface = 0, UInt_t nrows = 50,
121 UInt_t ncolumns = 20);
122 virtual ~TGTable();
123
124 virtual TObjArray *GetRow(UInt_t row);
125 virtual TObjArray *GetColumn(UInt_t columns);
126
127// // Selection
128// virtual void Select(TGTableCell *celltl, TGTableCell *cellbr);
129// virtual void Select(UInt_t xcell1, UInt_t ycell1, UInt_t xcell2, UInt_t ycell2);
130// virtual void SelectAll();
131// virtual void SelectRow(TGTableCell *cell);
132// virtual void SelectRow(UInt_t row);
133// virtual void SelectRows(UInt_t row, UInt_t nrows);
134// virtual void SelectColumn(TGTableCell *cell);
135// virtual void SelectColumn(UInt_t column);
136// virtual void SelectColumns(UInt_t column, UInt_t ncolumns);
137
138// virtual void SetSelectGC(TGGC *gc);
139// virtual void SetTextJustify(Int_t tmode);
140
141 // Cells
142 virtual const TGTableCell* GetCell(UInt_t i, UInt_t j) const;
143 virtual TGTableCell* GetCell(UInt_t i, UInt_t j);
144
145 virtual const TGTableCell* FindCell(TGString label) const;
146 virtual TGTableCell* FindCell(TGString label);
147
148 virtual void Show();
149
150 // Because insertion and removal of columns in the middle of a data
151 // set is not yet supported in this design iteration, these methods
152 // have been commented out.
153
154// // Insert a range of columns or rows, if the label is empty, a
155// // default scheme will be used.
156// virtual void InsertRowBefore(UInt_t row, UInt_t nrows);
157// virtual void InsertRowBefore(TGString label, UInt_t nrows);
158// virtual void InsertRowAfter(UInt_t row, UInt_t nrows);
159// virtual void InsertRowAfter(TGString label, UInt_t nrows);
160// virtual void InsertRowAt(UInt_t row, UInt_t nrows = 1);
161// virtual void InsertRowAt(TGString label, UInt_t nrows);
162
163// virtual void InsertColumnBefore(UInt_t column, UInt_t ncolumns);
164// virtual void InsertColumnBefore(TGString label, UInt_t ncolumns);
165// virtual void InsertColumnAfter(UInt_t column, UInt_t ncolumns);
166// virtual void InsertColumnAfter(TGString label, UInt_t ncolumns);
167// virtual void InsertColumnAt(UInt_t column, UInt_t ncolumns = 1);
168// virtual void InsertColumnAt(TGString label, UInt_t ncolumns);
169
170// // Remove rows or columns.
171// virtual void RemoveRows(UInt_t row, UInt_t nrows = 1);
172// virtual void RemoveColumns(UInt_t column, UInt_t ncolumns = 1);
173
174 // Update view
175 virtual void UpdateView();
176
177 // Getters
178 virtual UInt_t GetNTableRows() const;
179 virtual UInt_t GetNDataRows() const;
180 virtual UInt_t GetNTableColumns() const;
181 virtual UInt_t GetNDataColumns() const;
182 virtual UInt_t GetNTableCells() const;
183 virtual UInt_t GetNDataCells() const;
184 virtual const TTableRange *GetCurrentRange() const;
185
187
188 virtual TGCanvas *GetCanvas() { return fCanvas; }
189 virtual const TGTableHeaderFrame *GetRHdrFrame() { return fRHdrFrame; }
190 virtual const TGTableHeaderFrame *GetCHdrFrame() { return fCHdrFrame; }
191 virtual const TGTableHeader *GetRowHeader(const UInt_t row) const;
192 virtual TGTableHeader *GetRowHeader(const UInt_t row);
193 virtual const TGTableHeader *GetColumnHeader(const UInt_t column) const;
194 virtual TGTableHeader *GetColumnHeader(const UInt_t column);
195 virtual TGTableHeader *GetTableHeader();
196
197// virtual const TGGC* GetSelectGC() const;
198// virtual const TGGC* GetCellBckgndGC(TGTableCell *cell) const;
199// virtual const TGGC* GetCellBckgndGC(UInt_t row, UInt_t column) const;
200
201 virtual Pixel_t GetRowBackground(UInt_t row) const;
202 virtual Pixel_t GetHeaderBackground() const ;
203
204 virtual void SetOddRowBackground(Pixel_t pixel);
205 virtual void SetEvenRowBackground(Pixel_t pixel);
206 virtual void SetHeaderBackground(Pixel_t pixel);
207 virtual void SetDefaultColors();
208
209 // Range manipulators
210 virtual void MoveTable(Int_t rows, Int_t columns);
211 virtual void GotoTableRange(Int_t xtl, Int_t ytl,
212 Int_t xbr, Int_t ybr);
213 // Operators
214 virtual TGTableCell* operator() (UInt_t row, UInt_t column);
215
216 // Internal slots
217 virtual void ScrollCHeaders(Int_t xpos);
218 virtual void ScrollRHeaders(Int_t ypos);
219 virtual void NextChunk();
220 virtual void PreviousChunk();
221 virtual void UserRangeChange();
222 virtual void Goto();
223 virtual void Update();
224
225 ClassDef(TGTable, 0) // A table used to visualize data from diffent sources.
226};
227
229public:
230 UInt_t fXtl; // Top left X coordinate
231 UInt_t fYtl; // Top left Y coordinate
232 UInt_t fXbr; // Bottom right X coordinate
233 UInt_t fYbr; // Bottom right Y coordinate
234
235 TTableRange();
236 virtual ~TTableRange() {}
237 virtual void Print();
238
240 ClassDef(TTableRange, 0) // Range used in TGTable.
241};
242
243#endif
244
ULong_t Pixel_t
Pixel value.
Definition GuiTypes.h:40
int Int_t
Definition RtypesCore.h:45
unsigned int UInt_t
Definition RtypesCore.h:46
bool Bool_t
Definition RtypesCore.h:63
#define ClassDef(name, id)
Definition Rtypes.h:325
EHeaderType
int type
Definition TGX11.cxx:121
TGHorizontalFrame * fButtonFrame
Definition TGTable.h:60
virtual void ScrollCHeaders(Int_t xpos)
Scroll the column headers horizontally.
Definition TGTable.cxx:1437
TGHorizontalFrame * fRangeFrame
Definition TGTable.h:56
virtual void Shrink(UInt_t nrows, UInt_t ncolumns)
Shrink the TGTable by nrows and ncolumns.
Definition TGTable.cxx:543
virtual UInt_t GetNDataColumns() const
Return the amount of columns in the data source.
Definition TGTable.cxx:1122
TTableRange * fCurrentRange
Definition TGTable.h:45
TGHorizontalFrame * fBottomFrame
Definition TGTable.h:59
virtual void UserRangeChange()
Slot used when the text in one of the range frame text entries changes.
Definition TGTable.cxx:1494
virtual const TGTableHeader * GetColumnHeader(const UInt_t column) const
Const version of GetColumnHeader();.
Definition TGTable.cxx:1170
TVirtualTableInterface * fInterface
Definition TGTable.h:96
TTableRange * fGotoRange
Definition TGTable.h:47
TGTableFrame * fTableFrame
Definition TGTable.h:48
virtual const TGTableHeaderFrame * GetRHdrFrame()
Definition TGTable.h:189
virtual TObjArray * GetRow(UInt_t row)
Get row.
Definition TGTable.cxx:799
virtual void Init()
Initialise the TGTable.
Definition TGTable.cxx:226
virtual void SetInterface(TVirtualTableInterface *interface, UInt_t nrows=50, UInt_t ncolumns=20)
Set the interface that the TGTable uses to interface.
Definition TGTable.cxx:676
virtual void Update()
Update the range of the available data and refresh the current view.
Definition TGTable.cxx:1537
virtual void SetEvenRowBackground(Pixel_t pixel)
Set the background color for all even numbered rows.
Definition TGTable.cxx:1257
TGHorizontalFrame * fTopFrame
Definition TGTable.h:57
Pixel_t fEvenRowBackground
Definition TGTable.h:75
virtual TGTableCell * operator()(UInt_t row, UInt_t column)
Operator for easy cell acces.
Definition TGTable.cxx:1429
virtual TGTableHeader * GetTableHeader()
Return a pointer to the table header.
Definition TGTable.cxx:1186
virtual const TGTableHeader * GetRowHeader(const UInt_t row) const
Const version of GetRowHeader();.
Definition TGTable.cxx:1154
virtual TObjArray * GetColumn(UInt_t columns)
Return a pointer to a TObjArray that contains pointers to all the cells in column.
Definition TGTable.cxx:811
virtual UInt_t GetNDataCells() const
Return the amount of cell in the data source.
Definition TGTable.cxx:1138
virtual const TGTableCell * FindCell(TGString label) const
Const version of FindCell().
Definition TGTable.cxx:907
TGHorizontalFrame * fTopExtraFrame
Definition TGTable.h:58
virtual void ShrinkRows(UInt_t nrows)
Shrink the rows of the TGTable by nrows.
Definition TGTable.cxx:605
virtual Pixel_t GetRowBackground(UInt_t row) const
Get the background collor for row.
Definition TGTable.cxx:1209
TList * fMainHintsList
Definition TGTable.h:88
virtual void SetOddRowBackground(Pixel_t pixel)
Set the background color for all odd numbered rows.
Definition TGTable.cxx:1229
virtual void Goto()
Slot used by the Goto button and whenever return is pressed in on of the text entries in the range fr...
Definition TGTable.cxx:1482
virtual UInt_t GetNTableRows() const
Return the amount of rows in the table.
Definition TGTable.cxx:1098
TObjArray * fRows
Definition TGTable.h:37
virtual Pixel_t GetHeaderBackground() const
Get the background color of headers.
Definition TGTable.cxx:1221
virtual UInt_t GetNDataRows() const
Return the amount of rows in the data source.
Definition TGTable.cxx:1106
TObjArray * fColumnHeaders
Definition TGTable.h:39
virtual void SetHeaderBackground(Pixel_t pixel)
Set the background color for the headers.
Definition TGTable.cxx:1284
virtual void UpdateRangeFrame()
Update the range shown in the range frame.
Definition TGTable.cxx:778
TGTextButton * fNextButton
Definition TGTable.h:63
virtual UInt_t GetNTableColumns() const
Return the amount of columns in the table.
Definition TGTable.cxx:1114
virtual UInt_t GetNTableCells() const
Return the amount of cells in the table.
Definition TGTable.cxx:1130
virtual void UpdateHeaders(EHeaderType type)
Update the labels of the headers of the given type.
Definition TGTable.cxx:653
TList * fCHdrHintsList
Definition TGTable.h:87
virtual const TGTableHeaderFrame * GetCHdrFrame()
Definition TGTable.h:190
virtual void ShrinkColumns(UInt_t ncolumns)
Shrink the columns of the TGTable by ncolumns.
Definition TGTable.cxx:552
UInt_t fCellHeight
Definition TGTable.h:51
virtual UInt_t GetCHdrWidth() const
Get the current width of the column header frame.
Definition TGTable.cxx:517
virtual ~TGTable()
TGTable destructor.
Definition TGTable.cxx:196
virtual TVirtualTableInterface * GetInterface()
Definition TGTable.h:186
virtual UInt_t GetRHdrHeight() const
Get the current height of the row header frame.
Definition TGTable.cxx:530
TList * fRHdrHintsList
Definition TGTable.h:86
virtual void ExpandRows(UInt_t nrows)
Expand the rows of a TGTable by nrows.
Definition TGTable.cxx:481
TTableRange * fDataRange
Definition TGTable.h:46
virtual void SetDefaultColors()
Set the background color for all rows and headers to their defaults.
Definition TGTable.cxx:1316
TList * fCellHintsList
Definition TGTable.h:85
TObjArray * fRowHeaders
Definition TGTable.h:38
TGTextButton * fPrevButton
Definition TGTable.h:64
virtual void PreviousChunk()
Move the table to the previous chunk of the data set with the same size.
Definition TGTable.cxx:1472
virtual const TTableRange * GetCurrentRange() const
Return the current range of the TGTable.
Definition TGTable.cxx:1146
virtual void NextChunk()
Move the table to the next chunk of the data set with the same size.
Definition TGTable.cxx:1463
TGTextEntry * fFirstCellEntry
Definition TGTable.h:71
TGCanvas * fCanvas
Definition TGTable.h:49
Bool_t fReadOnly
Definition TGTable.h:41
TGTableHeaderFrame * fRHdrFrame
Definition TGTable.h:55
virtual void GotoTableRange(Int_t xtl, Int_t ytl, Int_t xbr, Int_t ybr)
Move and resize the table to the specified range.
Definition TGTable.cxx:1341
Pixel_t fSelectColor
Definition TGTable.h:42
virtual void MoveTable(Int_t rows, Int_t columns)
Move and layout the table to the specified range.
Definition TGTable.cxx:1326
virtual void DoRedraw()
Redraw the TGTable.
Definition TGTable.cxx:424
virtual void Show()
Show the contents of the TGTable in stdout.
Definition TGTable.cxx:938
TGTextButton * fGotoButton
Definition TGTable.h:66
virtual const TGTableCell * GetCell(UInt_t i, UInt_t j) const
Const version of GetCell().
Definition TGTable.cxx:885
virtual void ScrollRHeaders(Int_t ypos)
Scroll the row headers vertically.
Definition TGTable.cxx:1450
TGLabel * fRangeLabel
Definition TGTable.h:70
virtual void ResizeTable(UInt_t nrows, UInt_t ncolumns)
Resize the table to newnrows and newncolumns and add all the frames to their parent frames.
Definition TGTable.cxx:715
virtual void UpdateView()
Update and layout the visible part of the TGTable.
Definition TGTable.cxx:1053
UInt_t fCellWidth
Definition TGTable.h:50
TGLabel * fFirstCellLabel
Definition TGTable.h:69
TGTextButton * fUpdateButton
Definition TGTable.h:65
virtual void ExpandColumns(UInt_t ncolumns)
Expand the columns of a TGTable by ncolumns.
Definition TGTable.cxx:442
TGTableHeader * fTableHeader
Definition TGTable.h:40
Pixel_t fOddRowBackground
Definition TGTable.h:74
TGTableHeaderFrame * fCHdrFrame
Definition TGTable.h:54
Pixel_t fHeaderBackground
Definition TGTable.h:76
Bool_t fAllData
Definition TGTable.h:44
TGTextEntry * fRangeEntry
Definition TGTable.h:72
Int_t fTMode
Definition TGTable.h:43
virtual void Expand(UInt_t nrows, UInt_t ncolumns)
Expand a TGTable by nrows and ncolumns.
Definition TGTable.cxx:433
virtual TGCanvas * GetCanvas()
Definition TGTable.h:188
A doubly linked list.
Definition TList.h:44
An array of TObjects.
Definition TObjArray.h:37
virtual void Print()
Print the values of a range.
Definition TGTable.cxx:1558
Bool_t operator==(TTableRange &other)
Operator to determine if 2 ranges are equal.
Definition TGTable.cxx:1567
TTableRange()
TTableRange constuctor.
Definition TGTable.cxx:1551
UInt_t fXtl
Definition TGTable.h:230
UInt_t fYbr
Definition TGTable.h:233
UInt_t fXbr
Definition TGTable.h:232
virtual ~TTableRange()
Definition TGTable.h:236
UInt_t fYtl
Definition TGTable.h:231