TGListView+

A list view is a widget that can contain a number of itemsarranged in a grid or list. The items can be represented eitherby a string or by an icon.

The TGListView is user callable. The other classes are serviceclasses of the list view.

A list view can generate the following events:                       
kC_CONTAINER, kCT_SELCHANGED, total items, selected items.           
kC_CONTAINER, kCT_ITEMCLICK, which button, location (y<<16|x).       
kC_CONTAINER, kCT_ITEMDBLCLICK, which button, location (y<<16|x).

TGLVEntry 继承 TGFrameItem that goes into a TGListView container

TGListView 继承 TGCanvasList view widget (iconbox, small icons or tabular view)

TGLVContainer 继承 TGContainer

class

enum EListViewMode {
   kLVLargeIcons,
   kLVSmallIcons,
   kLVList,
   kLVDetails
};

TGLVEntry

   TGLVEntry(const TGWindow *p = 0,
             const TGPicture *bigpic = 0, const TGPicture *smallpic = 0,
             TGString *name = 0, TGString **subnames = 0,
             EListViewMode ViewMode = kLVDetails,
             UInt_t options = kChildFrame,
             Pixel_t back = GetWhitePixel());

   TGLVEntry(const TGLVContainer *p,
             const TString& name, const TString& cname, TGString **subnames = 0,
             UInt_t options = kChildFrame, Pixel_t back = GetWhitePixel());

   virtual ~TGLVEntry();

   virtual void SetViewMode(EListViewMode viewMode);

   virtual void        Activate(Bool_t a);
   Bool_t              IsActive() const { return fActive; }
   TGString           *GetItemName() const { return fItemName; }
   virtual const char *GetTitle() const { return fItemName->GetString(); }
   virtual void        SetTitle(const char *text) { *fItemName = text; }
   void                SetItemName(const char *name) { *fItemName = name; }
   const TGPicture    *GetPicture() const { return fCurrent; }
   EListViewMode       GetViewMode() const { return fViewMode; }
   void                SetUserData(void *userData) { fUserData = userData; }
   void               *GetUserData() const { return fUserData; }
   virtual TGString  **GetSubnames() const { return fSubnames; }
   virtual TGString   *GetSubname(Int_t idx) const { if (fSubnames) return fSubnames[idx]; else return 0; }
   virtual void        SetSubnames(const char* n1="",const char* n2="",const char* n3="",
                                   const char* n4="",const char* n5="",const char* n6="",
                                   const char* n7="",const char* n8="",const char* n9="",
                                   const char* n10="",const char* n11="",const char* n12="");
   virtual void        SetPictures(const TGPicture *bigpic = 0, const TGPicture *smallpic = 0);
   virtual void        SetColumns(Int_t *cpos, Int_t *jmode) { fCpos = cpos; fJmode = jmode; }
   virtual void        SetCheckedEntry(Bool_t check = kTRUE) { fChecked = check; }

   virtual TGDimension GetDefaultSize() const;
   virtual Int_t       GetSubnameWidth(Int_t idx) const { return fCtw[idx]; }

   virtual void DrawCopy(Handle_t id, Int_t x, Int_t y);

TGListView

   TGListView(const TGWindow *p, UInt_t w, UInt_t h,
              UInt_t options = kSunkenFrame | kDoubleBorder,
              Pixel_t back = GetDefaultFrameBackground());
   virtual ~TGListView();

   virtual void   ResizeColumns();
   virtual void   Layout();
   virtual void   LayoutHeader(TGFrame *head);
   virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
   virtual void   ScrollHeader(Int_t pos);
   virtual void   SetContainer(TGFrame *f);
   virtual void   AdjustHeaders() { fJustChanged = kTRUE; LayoutHeader(0); }
   virtual void   SetHeaders(Int_t ncolumns);
   virtual void   SetHeader(const char *s, Int_t hmode, Int_t cmode, Int_t idx);
   virtual void   SetDefaultHeaders();
   virtual void   SetViewMode(EListViewMode viewMode);
   TGTextButton** GetHeaderButtons() { return fColHeader; }
   UInt_t         GetNumColumns() { return fNColumns; }
   EListViewMode  GetViewMode() const { return fViewMode; }
   virtual const char *GetHeader(Int_t idx) const;
   virtual void   SavePrimitive(std::ostream &out, Option_t *option = "");
   virtual void   SetIncrements(Int_t hInc, Int_t vInc);
   virtual void   SetDefaultColumnWidth(TGVFileSplitter* splitter);
   TGDimension    GetMaxItemSize() const { return fMaxSize; }

   virtual void SelectionChanged() { Emit("SelectionChanged()"); }  //*SIGNAL*
   virtual void Clicked(TGLVEntry *entry, Int_t btn);  //*SIGNAL*
   virtual void Clicked(TGLVEntry *entry, Int_t btn, Int_t x, Int_t y);  //*SIGNAL*
   virtual void DoubleClicked(TGLVEntry *entry, Int_t btn);  //*SIGNAL*
   virtual void DoubleClicked(TGLVEntry *entry, Int_t btn, Int_t x, Int_t y);  //*SIGNAL*

TGLVContainer

   TGLVContainer(const TGWindow *p, UInt_t w, UInt_t h,
                 UInt_t options = kSunkenFrame,
                 Pixel_t back = GetDefaultFrameBackground());
   TGLVContainer(TGCanvas *p, UInt_t options = kSunkenFrame,
                 Pixel_t back = GetDefaultFrameBackground());

   virtual ~TGLVContainer();

   TGListView  *GetListView() const { return fListView; }

   virtual void AddItem(TGLVEntry *item)
                  { AddFrame(item, fItemLayout); item->SetColumns(fCpos, fJmode); fTotal++; }
   virtual void SelectEntry(TGLVEntry *item)
                  { ActivateItem(item->GetFrameElement()); }

   virtual void  SetListView(TGListView *lv) { fListView = lv; }
   virtual void  RemoveItemWithData(void *userData);
   virtual void  SetViewMode(EListViewMode viewMode);
   EListViewMode GetViewMode() const { return fViewMode; }
   virtual void  SetColumns(Int_t *cpos, Int_t *jmode);

   virtual TGDimension GetPageDimension() const;
   virtual TGDimension GetMaxItemSize() const;
   virtual Int_t GetMaxSubnameWidth(Int_t idx) const;
   virtual void  SetColHeaders(const char* n1="",const char* n2="",const char* n3="",
                               const char* n4="",const char* n5="",const char* n6="",
                               const char* n7="",const char* n8="",const char* n9="",
                               const char* n10="",const char* n11="",const char* n12="");
   virtual void LineUp(Bool_t select = kFALSE);
   virtual void LineDown(Bool_t select = kFALSE);
   virtual void LineLeft(Bool_t select = kFALSE);
   virtual void LineRight(Bool_t select = kFALSE);

   virtual Bool_t HandleButton(Event_t* event);
   TList *GetSelectedItems();
   TList *GetSelectedEntries();
   Bool_t GetMultipleSelection() const { return fMultiSelect; };
   void   SetMultipleSelection(Bool_t multi = kTRUE) { fMultiSelect = multi; };
   void   SetHeaders(Int_t ncolumns) { fListView->SetHeaders(ncolumns); }
   void   SetHeader(const char *s, Int_t hmode, Int_t cmode, Int_t idx)
                              { fListView->SetHeader(s,hmode,cmode,idx); }
   void   SetDefaultHeaders() { fListView->SetDefaultHeaders(); }
   const char *GetHeader(Int_t idx) const { return fListView->GetHeader(idx); }
   virtual void   SavePrimitive(std::ostream &out, Option_t *option = "");

code

example