KaliVeda
Toolkit for HIC analysis
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 {
48  kTString
49  };
54 
55 public:
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  }
84  virtual ~KVLVColumnData()
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  };
102  const Char_t* GetDataString(TObject*);
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 
119 class KVLVContainer : public TGLVContainer {
120 
121  friend class KVLVFrameElement;
122  friend class KVLVEntry;
123 
126 
132 
134 protected:
135 
144 
146 
148 
149  virtual void FillList(const TCollection* = 0);
150  void DeleteColData();
151  void default_init();
152 
153  virtual void ActivateItemFromSelectAll(TGFrameElement* el);
154 public:
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 
188  {
191  };
193  {
195  return (TGLVEntry*)GetLastActive();
196  };
202  {
205  return fPickOrderedObjects;
206  }
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 
237  void SetObjClass(TClass* cN)
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
@ kCTIME
Definition: KVDatime.h:42
Utility class describing the data used to fill each column of the list view container.
Definition: KVLVContainer.h:32
TString fName
name used on button at top of column
Definition: KVLVContainer.h:34
virtual Bool_t IsBoolean() const
Definition: KVLVContainer.h:98
Int_t Compare_double(TObject *o1, TObject *o2)
TMethodCall fMethCall
method call object
Definition: KVLVContainer.h:36
const Char_t * GetDataString(TObject *)
Format string with column data for object.
Int_t fRetType
return type of data retrieval method
Definition: KVLVContainer.h:37
virtual void SetDataFormat(const Char_t *fmt)
Definition: KVLVContainer.h:92
KVDatime::EKVDateFormat fFmt
format for presenting date & time
Definition: KVLVContainer.h:40
Int_t Compare_date(TObject *o1, TObject *o2)
Int_t Compare(TObject *ob1, TObject *ob2)
TString fMethod
method used to retrieve data from objects
Definition: KVLVContainer.h:35
Int_t Compare_long(TObject *o1, TObject *o2)
TString fDataFormat
format for displaying numerical data
Definition: KVLVContainer.h:43
TString result
string used to store object data
Definition: KVLVContainer.h:38
KVLVColumnData(TClass *cl, const Char_t *name, const Char_t *method="")
Definition: KVLVContainer.h:56
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)
Definition: KVLVContainer.h:42
virtual void SetIsDateTime(KVDatime::EKVDateFormat fmt=KVDatime::kCTIME, Bool_t with_reference=kTRUE)
Bool_t fDate
kTRUE if column contains TDatime date & time info
Definition: KVLVContainer.h:39
void GetData(TObject *, Long_t &)
virtual ~KVLVColumnData()
Definition: KVLVContainer.h:84
Bool_t fIsKVDatime
kTRUE if date & time is in KVDatime object, TDatime if not
Definition: KVLVContainer.h:41
virtual void SetIsBoolean(Bool_t isit=kTRUE)
Definition: KVLVContainer.h:88
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)
KVList * GetPickOrderedSelectedObjects() const
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!...
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 ?
TCollection * GetUserItems()
TObject * GetLastSelectedObject() 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
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.
KVLVContainer(const TGWindow *p=0, UInt_t w=1, UInt_t h=1, UInt_t options=kSunkenFrame, Pixel_t back=GetDefaultFrameBackground())
TObject * GetLastInList()
Returns last object in currently displayed list.
TList * GetSelectedObjects()
virtual void SetDataColumns(Int_t ncols)
void AddContextMenuClassException(TClass *)
Int_t fSortType
current sorting mode of contents (ascending or descending)
virtual KVLVColumnData * GetDataColumn(Int_t index) const
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.
TGLVEntry * GetLastSelectedItem() const
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.
Definition: KVNumberList.h:85
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.