Logo ROOT   6.16/01
Reference Guide
TGFSContainer.h
Go to the documentation of this file.
1// @(#)root/gui:$Id$
2// Author: Fons Rademakers 19/01/98
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TGFSContainer
13#define ROOT_TGFSContainer
14
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// TGFileIcon, TGFileEntry, TGFSContainer //
19// //
20// Utility classes used by the file selection dialog (TGFileDialog). //
21// //
22//////////////////////////////////////////////////////////////////////////
23
24#include "TGListView.h"
25#include "TGDNDManager.h"
26#include "TBufferFile.h"
27#include <stdlib.h>
28
29//----- file sort mode
37};
38
39
40class TRegexp;
41class TGPicture;
42class TGFileContainer;
43class TViewUpdateTimer;
44class TGFileIcon;
45class TGFileItem;
46class TTimer;
47class TString;
48struct FileStat_t;
49
50
51class TGFileItem : public TGLVEntry {
52
53protected:
54 const TGPicture *fBlpic; // big icon
55 const TGPicture *fSlpic; // small icon
56 const TGPicture *fLcurrent; // current icon
57 Int_t fType; // file type
58 Int_t fUid, fGid; // file uid and gid
59 Bool_t fIsLink; // true if symbolic link
60 Long_t fModTime; // modification time
61 Long64_t fSize; // file size
62 TBufferFile *fBuf; // buffer used for Drag and Drop
63 TDNDData fDNDData; // Drag and Drop data
64
65 void Init(const TGPicture *blpic, const TGPicture *slpic,
66 FileStat_t &stat, EListViewMode viewMode);
67 virtual void DoRedraw();
68
69public:
70 TGFileItem(const TGWindow *p = 0,
71 const TGPicture *bpic = 0, const TGPicture *blpic = 0,
72 const TGPicture *spic = 0, const TGPicture *slpic = 0,
73 TGString *name = 0, Int_t type = 0, Long64_t size = 1,
74 Int_t uid = 0, Int_t gid = 0, Long_t modtime = 0,
75 EListViewMode viewMode = kLVList, UInt_t options = kVerticalFrame,
76 Pixel_t back = GetWhitePixel());
77
78 TGFileItem(const TGWindow *p,
79 const TGPicture *bpic, const TGPicture *blpic,
80 const TGPicture *spic, const TGPicture *slpic,
81 TGString *name, FileStat_t &stat,
82 EListViewMode viewMode = kLVList, UInt_t options = kVerticalFrame,
83 Pixel_t back = GetWhitePixel());
84
85 virtual ~TGFileItem();
86
87 virtual void SetViewMode(EListViewMode viewMode);
88
89 Bool_t IsActive() const { return fActive; }
90 Bool_t IsSymLink() const { return fIsLink; }
91 Int_t GetType() const { return fType; }
92 Long64_t GetSize() const { return fSize; }
93 Long_t GetModTime() const { return fModTime; }
94 Int_t GetUid() const { return fUid; }
95 Int_t GetGid() const { return fGid; }
96
98 return &fDNDData;
99 }
100
102 if (!IsDNDTarget()) return kNone;
103 return gVirtualX->InternAtom("application/root", kFALSE);
104 }
105
107 return kTRUE;
108 }
109
110 virtual Atom_t HandleDNDPosition(int, int, Atom_t action, int, int) {
111 if (action == TGDNDManager::GetDNDActionCopy()) return action;
112 return kNone;
113 }
114
116 return ((TGFrame *)(const_cast<TGWindow*>(GetParent())))->HandleDNDFinished();
117 }
118
120 if (fDNDData.fDataLength > 0)
122 fDNDData.fData = calloc(sizeof(unsigned char), data->fDataLength);
123 if (fDNDData.fData)
124 memcpy(fDNDData.fData, data->fData, data->fDataLength);
125 fDNDData.fDataLength = data->fDataLength;
126 fDNDData.fDataType = data->fDataType;
127 }
128
132 fBuf->WriteObject(obj);
135 fDNDData.fDataType = gVirtualX->InternAtom("application/root", kFALSE);
136 }
137
138 ClassDef(TGFileItem,0) // Class representing file system object
139};
140
141
143
144friend class TGFSFrameElement;
145
146protected:
147 EFSSortMode fSortType; // sorting mode of contents
148 TRegexp *fFilter; // file filter
149 TViewUpdateTimer *fRefresh; // refresh timer
150 ULong_t fMtime; // directory modification time
151 TString fDirectory; // current directory
152 TList *fCleanups; // list of pictures to cleanup
153 const TGPicture *fFolder_t; // small folder icon
154 const TGPicture *fFolder_s; // big folder icon
155 const TGPicture *fApp_t; // small application icon
156 const TGPicture *fApp_s; // big application icon
157 const TGPicture *fDoc_t; // small document icon
158 const TGPicture *fDoc_s; // big document icon
159 const TGPicture *fSlink_t; // small symbolic link icon
160 const TGPicture *fSlink_s; // big symbolic link icon
161 Bool_t fCachePictures; // kTRUE use caching
162 Bool_t fDisplayStat; // kFALSE to interrupt display directory
163 // contents in case of many files inside
164
165 void CreateFileList();
166
167public:
168 TGFileContainer(const TGWindow *p = 0, UInt_t w = 1, UInt_t h = 1,
169 UInt_t options = kSunkenFrame,
173
174 virtual ~TGFileContainer();
175
176 virtual Bool_t HandleTimer(TTimer *t);
177 void StopRefreshTimer();
178 void StartRefreshTimer(ULong_t msec=1000);
179
180 virtual TGFileItem *AddFile(const char *name, const TGPicture *pic = 0, const TGPicture *lpic = 0);
181 virtual TGFileItem *AddRemoteFile(TObject *obj, const TGPicture *ipic = 0, const TGPicture *ilpic = 0);
182 virtual void AddFrame(TGFrame *f, TGLayoutHints *l = 0);
183 virtual void Sort(EFSSortMode sortType);
184 virtual void SetFilter(const char *filter);
185 virtual void ChangeDirectory(const char *path);
186 virtual void DisplayDirectory();
187 virtual void SetDisplayStat(Bool_t stat = kTRUE) { fDisplayStat = stat; }
189
190 const char *GetDirectory() const { return fDirectory.Data(); }
191
192 virtual void GetFilePictures(const TGPicture **pic, const TGPicture **lpic,
193 Int_t file_type, Bool_t is_link, const char *ext,
194 Bool_t small);
195
196 virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
197
198 ClassDef(TGFileContainer,0) // Container containing file system objects
199};
200
201#endif
Handle_t Atom_t
Definition: GuiTypes.h:36
const Handle_t kNone
Definition: GuiTypes.h:87
ULong_t Pixel_t
Definition: GuiTypes.h:39
#define f(i)
Definition: RSha256.hxx:104
#define h(i)
Definition: RSha256.hxx:106
int Int_t
Definition: RtypesCore.h:41
unsigned int UInt_t
Definition: RtypesCore.h:42
const Bool_t kFALSE
Definition: RtypesCore.h:88
unsigned long ULong_t
Definition: RtypesCore.h:51
long Long_t
Definition: RtypesCore.h:50
bool Bool_t
Definition: RtypesCore.h:59
long long Long64_t
Definition: RtypesCore.h:69
const Bool_t kTRUE
Definition: RtypesCore.h:87
const char Option_t
Definition: RtypesCore.h:62
#define ClassDef(name, id)
Definition: Rtypes.h:324
EFSSortMode
Definition: TGFSContainer.h:30
@ kSortByDate
Definition: TGFSContainer.h:34
@ kSortByOwner
Definition: TGFSContainer.h:35
@ kSortByName
Definition: TGFSContainer.h:31
@ kSortByGroup
Definition: TGFSContainer.h:36
@ kSortByType
Definition: TGFSContainer.h:32
@ kSortBySize
Definition: TGFSContainer.h:33
@ kSunkenFrame
Definition: TGFrame.h:61
@ kVerticalFrame
Definition: TGFrame.h:59
EListViewMode
Definition: TGListView.h:39
@ kLVList
Definition: TGListView.h:42
int type
Definition: TGX11.cxx:120
#define gVirtualX
Definition: TVirtualX.h:345
#define free
Definition: civetweb.c:1539
#define calloc
Definition: civetweb.c:1537
The concrete implementation of TBuffer for writing/reading to/from a ROOT file or socket.
Definition: TBufferFile.h:46
virtual void WriteObject(const TObject *obj, Bool_t cacheReuse=kTRUE)
Write object to I/O buffer.
Definition: TBufferIO.cxx:530
Int_t Length() const
Definition: TBuffer.h:96
char * Buffer() const
Definition: TBuffer.h:93
Atom_t fDataType
Definition: TGDNDManager.h:75
Int_t fDataLength
Definition: TGDNDManager.h:78
void * fData
Definition: TGDNDManager.h:77
static Atom_t GetDNDActionCopy()
const TGPicture * fSlink_s
TGFileContainer(const TGWindow *p=0, UInt_t w=1, UInt_t h=1, UInt_t options=kSunkenFrame, Pixel_t back=GetDefaultFrameBackground())
Create a list view container which will hold the contents of the current directory.
virtual TGFileItem * AddFile(const char *name, const TGPicture *pic=0, const TGPicture *lpic=0)
Add file in container.
void CreateFileList()
This function creates the file list from current dir.
const TGPicture * fFolder_s
TViewUpdateTimer * fRefresh
void StopRefreshTimer()
stop refresh timer
virtual Bool_t HandleTimer(TTimer *t)
Refresh container contents.
virtual void SetDisplayStat(Bool_t stat=kTRUE)
const TGPicture * fDoc_t
const TGPicture * fApp_t
const TGPicture * fApp_s
virtual void Sort(EFSSortMode sortType)
Sort file system list view container according to sortType.
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=0)
Add frame to the composite frame.
const TGPicture * fDoc_s
virtual void ChangeDirectory(const char *path)
Change current directory.
const TGPicture * fSlink_t
virtual void DisplayDirectory()
Display the contents of the current directory in the container.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a file container widget as a C++ statement(s) on output stream out.
void StartRefreshTimer(ULong_t msec=1000)
start refreshing
const TGPicture * fFolder_t
TRegexp * fFilter
friend class TGFSFrameElement
virtual ~TGFileContainer()
Delete list view file container.
virtual void SetFilter(const char *filter)
Set file selection filter.
virtual void GetFilePictures(const TGPicture **pic, const TGPicture **lpic, Int_t file_type, Bool_t is_link, const char *ext, Bool_t small)
Determine the file picture for the given file type.
Bool_t GetDisplayStat()
EFSSortMode fSortType
virtual TGFileItem * AddRemoteFile(TObject *obj, const TGPicture *ipic=0, const TGPicture *ilpic=0)
Add remote file in container.
const char * GetDirectory() const
Int_t GetUid() const
Definition: TGFSContainer.h:94
Long64_t fSize
Definition: TGFSContainer.h:61
const TGPicture * fLcurrent
Definition: TGFSContainer.h:56
Int_t GetGid() const
Definition: TGFSContainer.h:95
TBufferFile * fBuf
Definition: TGFSContainer.h:62
Bool_t IsActive() const
Definition: TGFSContainer.h:89
const TGPicture * fBlpic
Definition: TGFSContainer.h:54
void Init(const TGPicture *blpic, const TGPicture *slpic, FileStat_t &stat, EListViewMode viewMode)
Common initializer for file list view item.
virtual Atom_t HandleDNDPosition(int, int, Atom_t action, int, int)
Long_t fModTime
Definition: TGFSContainer.h:60
const TGPicture * fSlpic
Definition: TGFSContainer.h:55
Long64_t GetSize() const
Definition: TGFSContainer.h:92
void SetDNDObject(TObject *obj)
TDNDData fDNDData
Definition: TGFSContainer.h:63
Long_t GetModTime() const
Definition: TGFSContainer.h:93
Int_t GetType() const
Definition: TGFSContainer.h:91
virtual void DoRedraw()
Draw list view container item.
virtual Atom_t HandleDNDEnter(Atom_t *)
void SetDNDData(TDNDData *data)
virtual TDNDData * GetDNDdata(Atom_t)
Definition: TGFSContainer.h:97
TGFileItem(const TGWindow *p=0, const TGPicture *bpic=0, const TGPicture *blpic=0, const TGPicture *spic=0, const TGPicture *slpic=0, TGString *name=0, Int_t type=0, Long64_t size=1, Int_t uid=0, Int_t gid=0, Long_t modtime=0, EListViewMode viewMode=kLVList, UInt_t options=kVerticalFrame, Pixel_t back=GetWhitePixel())
Create a list view item.
virtual void SetViewMode(EListViewMode viewMode)
Set container item view mode.
virtual Bool_t HandleDNDFinished()
virtual Bool_t HandleDNDLeave()
Bool_t IsSymLink() const
Definition: TGFSContainer.h:90
Bool_t fIsLink
Definition: TGFSContainer.h:59
virtual ~TGFileItem()
Destructor.
static Pixel_t GetWhitePixel()
Get white pixel value.
Definition: TGFrame.cxx:691
Bool_t IsDNDTarget() const
Definition: TGFrame.h:320
static Pixel_t GetDefaultFrameBackground()
Get default frame background.
Definition: TGFrame.cxx:665
Bool_t fActive
Definition: TGListView.h:68
const TGWindow * GetParent() const
Definition: TGWindow.h:85
A doubly linked list.
Definition: TList.h:44
Mother of all ROOT objects.
Definition: TObject.h:37
Regular expression class.
Definition: TRegexp.h:31
Basic string class.
Definition: TString.h:131
const char * Data() const
Definition: TString.h:364
Handles synchronous and a-synchronous timer events.
Definition: TTimer.h:51
auto * l
Definition: textangle.C:4