12 #ifndef ROOT_TGListView
13 #define ROOT_TGListView
47 class TGSelectedPicture;
54 class TGLVEntry :
public TGFrame {
57 TGLVEntry(
const TGLVEntry&);
58 TGLVEntry& operator=(
const TGLVEntry&);
70 EListViewMode fViewMode;
71 const TGPicture *fBigPic;
72 const TGPicture *fSmallPic;
73 const TGPicture *fCurrent;
74 const TGPicture *fCheckMark;
75 TGSelectedPicture *fSelPic;
77 FontStruct_t fFontStruct;
80 static const TGFont *fgDefaultFont;
81 static TGGC *fgDefaultGC;
83 virtual void DoRedraw();
85 static FontStruct_t GetDefaultFontStruct();
86 static const TGGC &GetDefaultGC();
89 TGLVEntry(
const TGWindow *p = 0,
90 const TGPicture *bigpic = 0,
const TGPicture *smallpic = 0,
91 TGString *name = 0, TGString **subnames = 0,
92 EListViewMode ViewMode = kLVDetails,
93 UInt_t options = kChildFrame,
94 Pixel_t back = GetWhitePixel());
96 TGLVEntry(
const TGLVContainer *p,
97 const TString& name,
const TString& cname, TGString **subnames = 0,
98 UInt_t options = kChildFrame, Pixel_t back = GetWhitePixel());
100 virtual ~TGLVEntry();
102 virtual void SetViewMode(EListViewMode viewMode);
104 virtual void Activate(Bool_t a);
105 Bool_t IsActive()
const {
return fActive; }
106 TGString *GetItemName()
const {
return fItemName; }
107 virtual const char *GetTitle()
const {
return fItemName->GetString(); }
108 virtual void SetTitle(
const char *text) { *fItemName = text; }
109 void SetItemName(
const char *name) { *fItemName = name; }
110 const TGPicture *GetPicture()
const {
return fCurrent; }
111 EListViewMode GetViewMode()
const {
return fViewMode; }
112 void SetUserData(
void *userData) { fUserData = userData; }
113 void *GetUserData()
const {
return fUserData; }
114 virtual TGString **GetSubnames()
const {
return fSubnames; }
115 virtual TGString *GetSubname(Int_t idx)
const {
if (fSubnames)
return fSubnames[idx];
else return 0; }
116 virtual void SetSubnames(
const char* n1=
"",
const char* n2=
"",
const char* n3=
"",
117 const char* n4=
"",
const char* n5=
"",
const char* n6=
"",
118 const char* n7=
"",
const char* n8=
"",
const char* n9=
"",
119 const char* n10=
"",
const char* n11=
"",
const char* n12=
"");
120 virtual void SetPictures(
const TGPicture *bigpic = 0,
const TGPicture *smallpic = 0);
121 virtual void SetColumns(Int_t *cpos, Int_t *jmode) { fCpos = cpos; fJmode = jmode; }
122 virtual void SetCheckedEntry(Bool_t check = kTRUE) { fChecked = check; }
124 virtual TGDimension GetDefaultSize()
const;
125 virtual Int_t GetSubnameWidth(Int_t idx)
const {
return fCtw[idx]; }
127 virtual void DrawCopy(Handle_t
id, Int_t x, Int_t y);
129 ClassDef(TGLVEntry,0)
133 class TGListView :
public TGCanvas {
136 TGListView(
const TGListView&);
137 TGListView& operator=(
const TGListView&);
143 EListViewMode fViewMode;
144 TGDimension fMaxSize;
145 TGTextButton **fColHeader;
147 TGVFileSplitter **fSplitHeader;
149 FontStruct_t fFontStruct;
150 TGHeaderFrame *fHeader;
152 UInt_t fMinColumnSize;
154 static const TGFont *fgDefaultFont;
155 static TGGC *fgDefaultGC;
157 static FontStruct_t GetDefaultFontStruct();
158 static const TGGC &GetDefaultGC();
161 TGListView(
const TGWindow *p, UInt_t w, UInt_t h,
162 UInt_t options = kSunkenFrame | kDoubleBorder,
163 Pixel_t back = GetDefaultFrameBackground());
164 virtual ~TGListView();
166 virtual void ResizeColumns();
167 virtual void Layout();
168 virtual void LayoutHeader(TGFrame *head);
169 virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
170 virtual void ScrollHeader(Int_t pos);
171 virtual void SetContainer(TGFrame *f);
172 virtual void AdjustHeaders() { fJustChanged = kTRUE; LayoutHeader(0); }
173 virtual void SetHeaders(Int_t ncolumns);
174 virtual void SetHeader(
const char *s, Int_t hmode, Int_t cmode, Int_t idx);
175 virtual void SetDefaultHeaders();
176 virtual void SetViewMode(EListViewMode viewMode);
177 TGTextButton** GetHeaderButtons() {
return fColHeader; }
178 UInt_t GetNumColumns() {
return fNColumns; }
179 EListViewMode GetViewMode()
const {
return fViewMode; }
180 virtual const char *GetHeader(Int_t idx)
const;
181 virtual void SavePrimitive(std::ostream &out, Option_t *option =
"");
182 virtual void SetIncrements(Int_t hInc, Int_t vInc);
183 virtual void SetDefaultColumnWidth(TGVFileSplitter* splitter);
184 TGDimension GetMaxItemSize()
const {
return fMaxSize; }
186 virtual void SelectionChanged() { Emit(
"SelectionChanged()"); }
187 virtual void Clicked(TGLVEntry *entry, Int_t btn);
188 virtual void Clicked(TGLVEntry *entry, Int_t btn, Int_t x, Int_t y);
189 virtual void DoubleClicked(TGLVEntry *entry, Int_t btn);
190 virtual void DoubleClicked(TGLVEntry *entry, Int_t btn, Int_t x, Int_t y);
192 ClassDef(TGListView,0)
196 class TGLVContainer :
public TGContainer {
199 TGLVContainer(
const TGLVContainer&);
200 TGLVContainer& operator=(
const TGLVContainer&);
203 TGLayoutHints *fItemLayout;
204 EListViewMode fViewMode;
208 TGListView *fListView;
209 TGLVEntry *fLastActive;
211 virtual void ActivateItem(TGFrameElement* el);
212 virtual void DeActivateItem(TGFrameElement* el);
215 TGLVContainer(
const TGWindow *p, UInt_t w, UInt_t h,
216 UInt_t options = kSunkenFrame,
217 Pixel_t back = GetDefaultFrameBackground());
218 TGLVContainer(TGCanvas *p, UInt_t options = kSunkenFrame,
219 Pixel_t back = GetDefaultFrameBackground());
221 virtual ~TGLVContainer();
223 TGListView *GetListView()
const {
return fListView; }
225 virtual void AddItem(TGLVEntry *item)
226 { AddFrame(item, fItemLayout); item->SetColumns(fCpos, fJmode); fTotal++; }
227 virtual void SelectEntry(TGLVEntry *item)
228 { ActivateItem(item->GetFrameElement()); }
230 virtual void SetListView(TGListView *lv) { fListView = lv; }
231 virtual void RemoveItemWithData(
void *userData);
232 virtual void SetViewMode(EListViewMode viewMode);
233 EListViewMode GetViewMode()
const {
return fViewMode; }
234 virtual void SetColumns(Int_t *cpos, Int_t *jmode);
236 virtual TGDimension GetPageDimension()
const;
237 virtual TGDimension GetMaxItemSize()
const;
238 virtual Int_t GetMaxSubnameWidth(Int_t idx)
const;
239 virtual void SetColHeaders(
const char* n1=
"",
const char* n2=
"",
const char* n3=
"",
240 const char* n4=
"",
const char* n5=
"",
const char* n6=
"",
241 const char* n7=
"",
const char* n8=
"",
const char* n9=
"",
242 const char* n10=
"",
const char* n11=
"",
const char* n12=
"");
243 virtual void LineUp(Bool_t select = kFALSE);
244 virtual void LineDown(Bool_t select = kFALSE);
245 virtual void LineLeft(Bool_t select = kFALSE);
246 virtual void LineRight(Bool_t select = kFALSE);
248 virtual Bool_t HandleButton(Event_t* event);
249 TList *GetSelectedItems();
250 TList *GetSelectedEntries();
251 Bool_t GetMultipleSelection()
const {
return fMultiSelect; };
252 void SetMultipleSelection(Bool_t multi = kTRUE) { fMultiSelect = multi; };
253 void SetHeaders(Int_t ncolumns) { fListView->SetHeaders(ncolumns); }
254 void SetHeader(
const char *s, Int_t hmode, Int_t cmode, Int_t idx)
255 { fListView->SetHeader(s,hmode,cmode,idx); }
256 void SetDefaultHeaders() { fListView->SetDefaultHeaders(); }
257 const char *GetHeader(Int_t idx)
const {
return fListView->GetHeader(idx); }
258 virtual void SavePrimitive(std::ostream &out, Option_t *option =
"");
260 ClassDef(TGLVContainer,0)