KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches
KVLVContainer.h
1/*
2$Id: KVLVContainer.h,v 1.7 2009/04/28 09:11:29 franklan Exp $
3$Revision: 1.7 $
4$Date: 2009/04/28 09:11:29 $
5*/
6
9
10#ifndef __KVLVCONTAINER_H
11#define __KVLVCONTAINER_H
12
13#include "TGListView.h"
14#include "TFunction.h"
15#include "TString.h"
16#include "TMethodCall.h"
17#include "TClass.h"
18#include "TTimer.h"
19#include "Riostream.h"
20#include "KVDatime.h"
21#include "TContextMenu.h"
22#include "KVList.h"
23#include "KVNumberList.h"
24
33
44
45 enum {
49 };
54
55public:
56 KVLVColumnData(TClass* cl, const Char_t* name, const Char_t* method = "")
58 {
59 if (fMethod == "") fMethod.Form("Get%s", name);
60 fMethCall.Init(cl, fMethod.Data(), "");
61 if (!fMethCall.IsValid()) {
62 std::cout << "Error in <KVLVColumnData::KVLVColumnData> : method " << fMethod.Data()
63 << " is not valid for class " << cl->GetName() << std::endl;
64 }
66 fDataFormat = "";
67 switch (fRetType) {
69 fDataFormat = "%ld";
70 break;
71
73 fDataFormat = "%lf";
74 break;
75
76 default:
77 break;
78 }
80 if (rtn == "bool" || rtn == "Bool_t") fIsBoolean = kTRUE;
81 else fIsBoolean = kFALSE;
82 if (rtn == "TString" || rtn == "KVString") fRetType = kTString;
83 }
85 {
86 }
87 virtual void SetIsDateTime(KVDatime::EKVDateFormat fmt = KVDatime::kCTIME, Bool_t with_reference = kTRUE);
88 virtual void SetIsBoolean(Bool_t isit = kTRUE)
89 {
90 fIsBoolean = isit;
91 };
92 virtual void SetDataFormat(const Char_t* fmt)
93 {
95 fDataFormat = fmt;
96 }
97
98 virtual Bool_t IsBoolean() const
99 {
100 return fIsBoolean;
101 };
103 void GetData(TObject*, Long_t&);
104 void GetData(TObject*, Double_t&);
105 void GetData(TObject*, TString&);
106 void GetData(TObject*, KVDatime&);
107 Int_t Compare(TObject* ob1, TObject* ob2);
108
109 ClassDef(KVLVColumnData, 0) //column data handler
110};
111
120
121 friend class KVLVFrameElement;
122 friend class KVLVEntry;
123
126
132
134protected:
135
144
146
148
149 virtual void FillList(const TCollection* = 0);
150 void DeleteColData();
151 void default_init();
152
154public:
155
156 KVLVContainer(const TGWindow* p = 0, UInt_t w = 1, UInt_t h = 1,
157 UInt_t options = kSunkenFrame,
159 KVLVContainer(TGCanvas* p, UInt_t options = kSunkenFrame,
161 virtual ~KVLVContainer();
162
163 void AddFrame(TGFrame* f, TGLayoutHints* l = 0);
164 void Sort(int column); // *MENU*
165 virtual void Display(const TCollection* = 0);
166 virtual void Refresh();
167 virtual void SetDataColumns(Int_t ncols);
168 virtual void SetDataColumn(Int_t index, TClass* cl, const Char_t* name, const Char_t* method = "");
169 virtual KVLVColumnData* GetDataColumn(Int_t index) const
170 {
171 return (fColData ? (index < fNcols ? fColData[index] : 0) : 0);
172 };
173 TGLVEntry* FindItemWithData(void* userData);
174 void ActivateItemWithData(void* userData, Bool_t activate = kTRUE);
175 TGLVEntry* FindItemWithColumnData(const Char_t* colname, const Char_t* data);
176 TGLVEntry* FindItemWithColumnData(const Char_t* colname, Long_t data);
177 TGLVEntry* FindItemWithColumnData(const Char_t* colname, Double_t data);
178 void ActivateItemWithColumnData(const Char_t* colname, const Char_t* data, Bool_t activate = kTRUE);
179 void ActivateItemWithColumnData(const Char_t* colname, Long_t data, Bool_t activate = kTRUE);
180 void ActivateItemWithColumnData(const Char_t* colname, Double_t data, Bool_t activate = kTRUE);
181 void ActivateItemsWithColumnData(const Char_t* colname, KVNumberList data, Bool_t activate = kTRUE);
182
185 void SetDoubleClickAction(const char* receiver_class, void* receiver, const char* slot);
186
193 {
195 return (TGLVEntry*)GetLastActive();
196 };
208 {
210 return fUserItems;
211 };
213 {
214 return fSort;
215 };
216 void AllowContextMenu(Bool_t on = kTRUE)
217 {
220 };
222 void AllowBrowse(Bool_t on = kTRUE)
223 {
226 };
227 void AllowDoubleClick(Bool_t on = kTRUE)
228 {
231 };
232 virtual void RemoveAll();
233
234 void DoubleClickAction(TObject*); /* SIGNAL */
236
238 {
239 fObjClass = cN;
240 }
241 void AddDataColumn(const char* columnName); // *MENU*
243 virtual void SelectAll(); /* SIGNAL */
244
246 {
248 }
249
250 ClassDef(KVLVContainer, 0) //List view container class
251};
252
253#endif
int Int_t
unsigned int UInt_t
long Long_t
ULong_t Pixel_t
bool Bool_t
char Char_t
constexpr Bool_t kFALSE
double Double_t
constexpr Bool_t kTRUE
#define ClassDef(name, id)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void on
char name[80]
Extension of TDatime to handle various useful date formats.
Definition KVDatime.h:33
EKVDateFormat
Definition KVDatime.h:41
Utility class describing the data used to fill each column of the list view container.
TString fName
name used on button at top of column
virtual Bool_t IsBoolean() const
Int_t Compare_double(TObject *o1, TObject *o2)
TMethodCall fMethCall
method call object
const Char_t * GetDataString(TObject *)
Format string with column data for object.
Int_t fRetType
return type of data retrieval method
virtual void SetDataFormat(const Char_t *fmt)
KVDatime::EKVDateFormat fFmt
format for presenting date & time
Int_t Compare_date(TObject *o1, TObject *o2)
Int_t Compare(TObject *ob1, TObject *ob2)
TString fMethod
method used to retrieve data from objects
Int_t Compare_long(TObject *o1, TObject *o2)
TString fDataFormat
format for displaying numerical data
TString result
string used to store object data
KVLVColumnData(TClass *cl, const Char_t *name, const Char_t *method="")
Int_t Compare_string(TObject *o1, TObject *o2)
Bool_t fIsBoolean
kTRUE if column data is a boolean (i.e. 1 or 0, kTRUE or kFALSE)
virtual void SetIsDateTime(KVDatime::EKVDateFormat fmt=KVDatime::kCTIME, Bool_t with_reference=kTRUE)
Bool_t fDate
kTRUE if column contains TDatime date & time info
void GetData(TObject *, Long_t &)
virtual ~KVLVColumnData()
Bool_t fIsKVDatime
kTRUE if date & time is in KVDatime object, TDatime if not
virtual void SetIsBoolean(Bool_t isit=kTRUE)
Extension of TGLVContainer for KVListView widget.
virtual void RemoveAll()
void ActivateItemWithData(void *userData, Bool_t activate=kTRUE)
void AllowDoubleClick(Bool_t on=kTRUE)
KVLVColumnData * fSortData
name of column (i.e. type of data) currently used to sort objects
virtual void FillList(const TCollection *=0)
void AddDataColumn(const char *columnName)
virtual void Display(const TCollection *=0)
void DoubleClickAction(TObject *)
TObject * GetFirstInList()
Returns first object in currently displayed list.
void ActivateItemsWithColumnData(const Char_t *colname, KVNumberList data, Bool_t activate=kTRUE)
TContextMenu * fContextMenu
used to display popup context menu for items
virtual ~KVLVContainer()
Destructor.
virtual void Refresh()
void OpenContextMenu(TGFrame *, Int_t, Int_t, Int_t)
Bool_t fUserDoubleClickAction
user-defined double-click action instead of Browse() method
void ActivateItemWithColumnData(const Char_t *colname, const Char_t *data, Bool_t activate=kTRUE)
Bool_t fAllowContextMenu
can objects' context menu be opened with right-click ?
Int_t fNcols
number of data columns
void AllowBrowse(Bool_t on=kTRUE)
void DoDoubleClick(TGFrame *, Int_t, Int_t, Int_t)
Bool_t fUseObjLabelAsRealClass
if kTRUE, object's classname read from KVBase::GetLabel() (objects must be KVBase-derived!...
virtual KVLVColumnData * GetDataColumn(Int_t index) const
Bool_t fControlClick
set to kTRUE when user ctrl-clicks an item
TGLVEntry * FindItemWithColumnData(const Char_t *colname, const Char_t *data)
Bool_t fAllowDoubleClick
do something when object double-clicked ?
TGLVEntry * GetLastSelectedItem() const
void SetUseObjLabelAsRealClass(Bool_t on=kTRUE)
TList * GetSelectedItems()
Bool_t fKeepUserItems
internal use only, do not clear list of user items in RemoveAll()
KVLVColumnData ** fColData
description of column data
KVList * GetPickOrderedSelectedObjects() const
virtual void SelectAll()
void SetNewColumnName(const char* columnName);
KVList * fUserItems
list of currently displayed items, used by Refresh()
void AddFrame(TGFrame *f, TGLayoutHints *l=0)
Add an item to the list.
TObject * GetLastInList()
Returns last object in currently displayed list.
TList * GetSelectedObjects()
virtual void SetDataColumns(Int_t ncols)
TObject * GetLastSelectedObject() const
void AddContextMenuClassException(TClass *)
Int_t fSortType
current sorting mode of contents (ascending or descending)
void AllowContextMenu(Bool_t on=kTRUE)
virtual void SetDataColumn(Int_t index, TClass *cl, const Char_t *name, const Char_t *method="")
void SetObjClass(TClass *cN)
void Sort(int column)
Sort objects in container according to contents of given column.
virtual void ActivateItemFromSelectAll(TGFrameElement *el)
Activate item.
TList * fContextMenuClassExceptions
list of classes for which we override value of fAllowContextMenu
void SetDoubleClickAction(const char *receiver_class, void *receiver, const char *slot)
Bool_t HandleButton(Event_t *event)
Override TGContainer method in order to set fControlClick flag.
TGLVEntry * FindItemWithData(void *userData)
Find item with fUserData == userData in container.
TCollection * GetUserItems()
Bool_t IsBeingSorted() const
Int_t * fSortDir
direction of sorting for each column
KVList * fPickOrderedObjects
list of currently selected objects, in order of selection
TClass * fObjClass
Bool_t fIsResized
used to resize columns exactly once
One item/line in a KVListView window.
Definition KVLVEntry.h:65
Extension of TGFrameElement used by KVLVContainer.
Extended TList class which owns its objects by default.
Definition KVList.h:28
Strings used to represent a set of ranges of values.
const char * GetReturnTypeName() const
virtual TGFrame * GetLastActive() const
static Pixel_t GetDefaultFrameBackground()
void * GetUserData() const
EReturnType ReturnType()
static const EReturnType kLong
TFunction * GetMethod()
static const EReturnType kNone
Bool_t IsValid() const
void Init(const char *function, const char *params)
static const EReturnType kDouble
const char * Data() const
void Form(const char *fmt,...)
Column in an SQLite database.