73#include "RConfigure.h"
83const Int_t kAcceleration[
kAutoScrollFudge+1] = {1,1,1,2,3,4,6,7,8,16,32};
191 if (-xpos < 0)
return;
192 else diff = xpos -
fX0;
198#if defined(R__HAS_COCOA)
203 UInt_t adiff = std::abs(diff);
243 if (-ypos < 0)
return;
244 else diff = ypos -
fY0;
250#if defined(R__HAS_COCOA)
255 UInt_t adiff = std::abs(diff);
366 fCanvas->GetViewPort()->SetContainer(
this);
438 Emit(
"CurrentChanged(Int_t,Int_t)",args);
473 Emit(
"KeyPressed(TGFrame*,UInt_t,UInt_t)", args);
514 Emit(
"Clicked(TGFrame*,Int_t)", args);
529 Emit(
"Clicked(TGFrame*,Int_t,Int_t,Int_t)", args);
542 Emit(
"DoubleClicked(TGFrame*,Int_t)", args);
557 Emit(
"DoubleClicked(TGFrame*,Int_t,Int_t,Int_t)", args);
604 Emit(
"UnSelectAll()");
632 Emit(
"InvertSelection()");
683 lnk = (lnk == 0) ?
fList->FirstLink() : lnk->
Next();
687 *current = (
void *) lnk;
849 gVirtualX->FillRectangle(pixmap, gcBg, 0, 0, w,
h);
933 page = dim.fHeight/4;
937 newpos = pos.fY - page;
938 if (newpos < 0) newpos = 0;
939 fCanvas->SetVsbPosition(newpos);
944 newpos =
fCanvas->GetVsbPosition() + page;
945 fCanvas->SetVsbPosition(newpos);
949 Int_t xx = pos.fX +
event->fX;
950 Int_t yy = pos.fY +
event->fY;
955 fXp = pos.fX +
event->fX;
956 fYp = pos.fY +
event->fY;
963 total = selected = 0;
977 select_frame =
kTRUE;
981 select_frame =
kTRUE;
1001 if ( selected == 0 ) {
1041 const char *iconname = 0;
1043 if (
f->InheritsFrom(
"TGLVEntry")) {
1054 if (((
name == 0) || (!
name[0])) && (cl != 0))
1061 pic =
fClient->GetMimeTypeList()->GetIcon(iconname,
kFALSE);
1066 pic =
fClient->GetPicture(
"folder_s.xpm");
1068 pic =
fClient->GetPicture(
"doc_s.xpm");
1102 Int_t xx = pos.fX +
event->fX;
1103 Int_t yy = pos.fY +
event->fY;
1115 select_frame =
kTRUE;
1119 select_frame =
kTRUE;
1140 int xf0, yf0, xff, yff,
total, selected;
1144 Int_t x = pos.fX +
event->fX;
1145 Int_t y = pos.fY +
event->fY;
1165 total = selected = 0;
1189 xf0 =
f->GetX() + (
f->GetWidth() >> 3);
1190 yf0 =
f->GetY() + (
f->GetHeight() >> 3);
1191 xff = xf0 +
f->GetWidth() - (
f->GetWidth() >> 2);
1192 yff = yf0 +
f->GetHeight() - (
f->GetHeight() >> 2);
1194 if (((xf0 >
fX0 && xf0 <
fXf) ||
1195 (xff >
fX0 && xff <
fXf)) &&
1196 ((yf0 >
fY0 && yf0 <
fYf) ||
1197 (yff >
fY0 && yff <
fYf))) {
1282 gVirtualX->LookupString(event, input,
sizeof(input), keysym);
1314 switch((
EKeySym)keysym & ~0x20) {
1352 if (
n && keysym >= 32 && keysym < 127 &&
1432 caseSensitive, subString);
1479 "FindFrameByName(char *)");
1496 int xf0, yf0, xff, yff,
total, selected;
1528 Int_t adx = std::abs(dx);
1529 Int_t ady = std::abs(dy);
1536 Int_t nx = pos.fX-dx;
1537 Int_t ny = pos.fY-dy;
1551 total = selected = 0;
1558 xf0 =
f->GetX() + (
f->GetWidth() >> 3);
1559 yf0 =
f->GetY() + (
f->GetHeight() >> 3);
1560 xff = xf0 +
f->GetWidth() - (
f->GetWidth() >> 2);
1561 yff = yf0 +
f->GetHeight() - (
f->GetHeight() >> 2);
1563 if (((xf0 >
fX0 && xf0 <
fXf) ||
1564 (xff >
fX0 && xff <
fXf)) &&
1565 ((yf0 >
fY0 && yf0 <
fYf) ||
1566 (yff >
fY0 && yff <
fYf))) {
1693 if (
name.IsNull())
return 0;
1720 idx = str.Index(
name, 0, cmp);
1726 if (str.Length() ==
name.Length())
return el;
1809 if (
f->GetY() < pos) {
1814 }
else if (
f->GetY() + (
Int_t)
f->GetHeight() > vh) {
1830 if (
f->GetX() < pos) {
1835 }
else if (
f->GetX() + (
Int_t)
f->GetWidth() > hw) {
1867 Int_t hw = pos.fX + dim.fWidth;
1905 Int_t hw = pos.fX + dim.fWidth - dx;
1908 if (
x >= hw && (hb && !hb->
IsMapped())) {
2119 fgLineGC->SetDashList(
"\x1\x1", 2);
2170 Error(
"MapSubwindows",
"no canvas container set yet");
2189 Error(
"AddFrame",
"no canvas container set yet");
2195 Error(
"AddFrame",
"canvas container must inherit from TGCompositeFrame");
2209 if (
gClient->GetStyle() > 1)
break;
2228 Bool_t need_vsb, need_hsb;
2231 need_vsb = need_hsb =
kFALSE;
2235 Error(
"Layout",
"no canvas container set yet");
2248 if (!fixedw) container->
SetWidth(cw);
2255 if ((
Int_t) ch < 0) {
2267 if ((
Int_t) cw < 0) {
2271 if (!fixedw) container->
SetWidth(cw);
2282 if ((
Int_t) ch < 0) {
2299 if (fixedw && fixedh) {
2301 }
else if (fixedw) {
2302 container->
Resize(curw, tch);
2303 }
else if (fixedh) {
2306 container->
Resize(tcw, tch);
2447 out <<
"\n // canvas widget\n";
2449 out <<
" TGCanvas *" <<
GetName() <<
" = new TGCanvas(" <<
fParent->GetName() <<
"," <<
GetWidth() <<
","
2452 if (option && strstr(option,
"keep_names"))
2453 out <<
" " <<
GetName() <<
"->SetName(\"" <<
GetName() <<
"\");\n";
2456 out <<
"\n // canvas viewport\n";
2457 out <<
" TGViewPort *" << vp->
GetName() <<
" = " <<
GetName() <<
"->GetViewPort();\n";
2462 out <<
" " << vp->
GetName() <<
"->AddFrame(" << cont->
GetName() <<
");\n";
2464 out <<
" " << cont->
GetName() <<
"->SetLayoutManager(";
2468 out <<
" " << cont->
GetName() <<
"->MapSubwindows();\n";
2470 out <<
" " <<
GetName() <<
"->SetContainer(" << cont->
GetName() <<
");\n";
2472 out <<
" " <<
GetName() <<
"->MapSubwindows();\n";
2489 out <<
"\n // canvas container\n";
2491 out <<
" TGContainer *" <<
GetName() <<
" = new TGContainer(";
2496 out << extra_args <<
");\n";
2498 if (option && strstr(option,
"keep_names"))
2499 out <<
" " <<
GetName() <<
"->SetName(\"" <<
GetName() <<
"\");\n";
const Mask_t kWABitGravity
const Mask_t kGCBackground
const Mask_t kGCForeground
const Mask_t kGCLineStyle
const Mask_t kGCSubwindowMode
const Mask_t kGCLineWidth
const Mask_t kButtonPressMask
const Mask_t kGCFillStyle
const Mask_t kWAWinGravity
const Mask_t kAnyModifier
Handle_t Pixmap_t
Pixmap handle.
const Mask_t kKeyPressMask
const Mask_t kPointerMotionMask
const Mask_t kKeyShiftMask
const Mask_t kKeyControlMask
const Mask_t kStructureNotifyMask
Handle_t GContext_t
Graphics context handle.
const Mask_t kButtonReleaseMask
const Mask_t kGCGraphicsExposures
ULong_t Pixel_t
Pixel value.
Handle_t Window_t
Window handle.
int Int_t
Signed integer 4 bytes (int).
long Longptr_t
Integer large enough to hold a pointer (platform-dependent).
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
bool Bool_t
Boolean (0=false, 1=true) (bool).
constexpr Ssiz_t kNPOS
The equivalent of std::string::npos for the ROOT class TString.
const char Option_t
Option string (const char).
const Int_t kKeyboardTime
const Int_t kAutoScrollFudge
const Int_t kAcceleration[kAutoScrollFudge+1]
externTGDNDManager * gDNDManager
static unsigned int total
TClass instances represent classes, structs and namespaces in the ROOT type system.
Bool_t InheritsFrom(const char *cl) const override
Return kTRUE if this class inherits from a class with name "classname".
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
A frame containing two scrollbars (a horizontal and a vertical) and a viewport.
~TGCanvas() override
Delete canvas.
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a canvas widget as a C++ statement(s) on output stream out.
void DrawBorder() override
Draw canvas border.
TGFrame * GetContainer() const
virtual void SetVsbPosition(Int_t newPos)
Set position of vertical scrollbar.
virtual void SetHsbPosition(Int_t newPos)
Set position of horizontal scrollbar.
virtual Int_t GetVsbPosition() const
Get position of vertical scrollbar.
TGViewPort * fVport
viewport through which we look at contents
@ kCanvasScrollHorizontal
Int_t fScrolling
flag which scrolling modes are allowed
TGHScrollBar * fHScrollbar
horizontal scrollbar
TGVScrollBar * fVScrollbar
vertical scrollbar
TGViewPort * GetViewPort() const
void MapSubwindows() override
Map all canvas sub windows.
virtual Int_t GetHsbPosition() const
Get position of horizontal scrollbar.
virtual void ClearViewPort()
Clear view port and redraw content.
void SetScrolling(Int_t scrolling)
Set scrolling policy.
Bool_t ProcessMessage(Longptr_t msg, Longptr_t parm1, Longptr_t parm2) override
Handle message generated by the canvas scrollbars.
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=nullptr)
Adding a frame to a canvas is actually adding the frame to the viewport container.
TGCanvas(const TGCanvas &)=delete
void Layout() override
Create layout for canvas.
The base class for composite widgets (menu bars, list boxes, etc.).
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=nullptr)
Add frame to the composite frame using the specified layout hints.
virtual TList * GetList() const
virtual TGLayoutManager * GetLayoutManager() const
TGCompositeFrame(const TGCompositeFrame &)=delete
void Layout() override
Layout the elements of the composite frame.
Bool_t fMapSubwindows
kTRUE - map subwindows
TList * fList
container of frame elements
virtual void RemoveFrame(TGFrame *f)
Remove frame from composite frame.
TGContainerKeyboardTimer(TGContainer *t)
Bool_t Notify() override
single shot timer
TGRectangle fExposedRegion
exposed area
virtual void ActivateItem(TGFrameElement *el)
Activate item.
Bool_t fKeyTimerActive
kTRUE - keyboard timer is active
virtual void RemoveItem(TGFrame *item)
Remove item from container.
Bool_t HandleKey(Event_t *event) override
The key press event handler converts a key press to some line editor action.
TGCanvas * fCanvas
pointer to canvas
TTimer * fScrollTimer
autoscroll timer
virtual void RepeatSearch()
Repeats search.
Bool_t HandleDoubleClick(Event_t *event) override
Handle double click mouse event.
Int_t fYf
other corner of rubber band box
virtual void UnSelectAll()
Unselect all items in the container.
virtual void PageDown(Bool_t select=kFALSE)
Move position one page down.
virtual void LineLeft(Bool_t select=kFALSE)
Move current position one column left.
Bool_t HandleButton(Event_t *event) override
Handle mouse button event in container.
virtual void ClearViewPort()
Clear view port and redraw full content.
const TGWindow * fMsgWindow
window handling container messages
virtual TGFrameElement * FindFrame(Int_t x, Int_t y, Bool_t exclude=kTRUE)
Find frame located int container at position x,y.
Int_t fYp
previous pointer position
virtual void AdjustPosition()
Move content to position of highlighted/activated frame.
~TGContainer() override
Delete canvas container.
virtual void OnMouseOver(TGFrame *)
Signal emitted when pointer is over entry.
virtual void Clicked(TGFrame *f, Int_t btn)
Emit Clicked() signal.
virtual void InvertSelection()
Invert the selection, all selected items become unselected and vice versa.
virtual void PageUp(Bool_t select=kFALSE)
Move position one page up.
virtual void LineDown(Bool_t select=kFALSE)
Move one line down.
virtual const TGFrame * GetNextSelected(void **current)
Return the next selected item.
Bool_t HandleExpose(Event_t *event) override
Handle expose events. Do not use double buffer.
virtual void Search(Bool_t close=kTRUE)
Invokes search dialog. Looks for item with the entered name.
virtual void LineUp(Bool_t select=kFALSE)
Make current position first line in window by scrolling up.
void Layout() override
Layout container entries.
Bool_t fLastDir
direction of last search
Int_t fY0
corner of rubber band box
virtual void Home(Bool_t select=kFALSE)
Move to upper-left corner of container.
virtual void KeyPressed(TGFrame *, UInt_t keysym, UInt_t mask)
Signal emitted when keyboard key pressed.
virtual void SetDragPixmap(const TGPicture *pic)
Set drag window pixmaps and hotpoint.
const TGPicture * GetObjPicture(TGFrame *f)
Retrieve icons associated with class "name".
virtual void SetVsbPosition(Int_t newPos)
Set position of vertical scrollbar.
TGCanvas * GetCanvas() const
virtual void ReturnPressed(TGFrame *)
Signal emitted when Return/Enter key pressed.
virtual void SearchPattern()
Search for entry which name begins with pattern.
virtual void SetPageDimension(const TGDimension &dim)
Set page dimension.
virtual void LineRight(Bool_t select=kFALSE)
Move current position one column right.
TGContainer(const TGContainer &)=delete
Int_t fSelected
number of selected items
void DoRedraw() override
Redraw content of container in the viewport region.
virtual void SpacePressed(TGFrame *)
Signal emitted when space key pressed.
virtual void SetHsbPosition(Int_t newPos)
set new hor. position
Bool_t fScrolling
kTRUE - when scrolling is ON
virtual TGDimension GetPageDimension() const
Returns page dimension.
TString fLastName
the name of object of last search
virtual void OnAutoScroll()
Autoscroll while close to & beyond The Wall.
static const TGGC & GetLineGC()
Get graphics context for line drawing.
Bool_t fDragging
true if in dragging mode
virtual void CurrentChanged(Int_t x, Int_t y)
Emit signal when current position changed.
virtual void DrawRegion(Int_t x, Int_t y, UInt_t w, UInt_t h)
Draw a region of container in viewport.
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a canvas container as a C++ statement(s) on output stream out.
friend class TGContainerScrollTimer
TGViewPort * fViewPort
container viewport
virtual TGVScrollBar * GetVScrollbar() const
returns pointer to vert. scroll bar
virtual TGFrame * FindFrameByName(const char *name)
Find frame by name.
friend class TGContainerKeyboardTimer
virtual void * FindItem(const TString &name, Bool_t direction=kTRUE, Bool_t caseSensitive=kTRUE, Bool_t subString=kFALSE)
Bool_t HandleMotion(Event_t *event) override
Handle mouse motion events.
Bool_t fOnMouseOver
kTRUE when mouse pointer is over entry
Bool_t fLastCase
case sensitivity of last search
const TGWindow * GetMessageWindow() const
void RemoveAll() override
Remove all items from the container.
virtual void DoubleClicked(TGFrame *f, Int_t btn)
Emit DoubleClicked() signal.
virtual TGPosition GetPagePosition() const
Returns page position.
virtual void End(Bool_t select=kFALSE)
Move to the bottom-right corner of container.
Bool_t fLastSubstring
substring search option of last search
virtual void SetPagePosition(const TGPosition &pos)
Set page position.
virtual TGHScrollBar * GetHScrollbar() const
returns pointer to hor. scroll bar
TGFrameElement * fLastActiveEl
last active item
virtual void SelectAll()
Select all items in the container.
TString fKeyInput
keyboard input (buffer)
TTimer * fKeyTimer
keyboard timer
virtual void DeActivateItem(TGFrameElement *el)
DeActivate item.
static Atom_t GetDNDActionCopy()
virtual void DrawCopy(Handle_t, Int_t, Int_t)
void AddInput(UInt_t emask)
Add events specified in the emask to the events the frame should handle.
virtual Bool_t IsLayoutBroken() const
static const TGGC & GetBlackGC()
Get black graphics context.
UInt_t fOptions
frame options
virtual Bool_t HandleConfigureNotify(Event_t *event)
This event is generated when the frame is resized.
void Resize(UInt_t w=0, UInt_t h=0) override
Resize the frame.
virtual Bool_t IsActive() const
TGFrame(const TGFrame &)=delete
UInt_t fHeight
frame height
virtual UInt_t GetDefaultWidth() const
virtual UInt_t GetDefaultHeight() const
virtual void DrawBorder()
Draw frame border.
Int_t fBorderWidth
frame border width
void SetBackgroundColor(Pixel_t back) override
Set background color (override from TGWindow base class).
virtual void Activate(Bool_t)
static const TGGC & GetHilightGC()
Get highlight color graphics context.
virtual UInt_t GetOptions() const
virtual void SendMessage(const TGWindow *w, Longptr_t msg, Longptr_t parm1, Longptr_t parm2)
Send message (i.e.
static const TGGC & GetShadowGC()
Get shadow color graphics context.
void MapSubwindows() override
map sub windows
TString SaveCtorArgs(std::ostream &out, UInt_t dflt_options=kChildFrame, Bool_t check_white_pixel=kFALSE)
Return options and custom color as constructor args Used in the SavePrimitive methods,...
Bool_t IsDNDSource() const
virtual void SetWidth(UInt_t w)
static const TGGC & GetWhiteGC()
Get white graphics context.
static Pixel_t fgWhitePixel
virtual void SetHeight(UInt_t h)
Pixel_t fBackground
frame background color
static Pixel_t fgBlackPixel
static const TGGC & GetBckgndGC()
Get background color graphics context.
void MapRaised() override
map raised
Encapsulate a graphics context used in the low level graphics.
This class describes layout hints used by the layout classes.
Int_t GetPadRight() const
Int_t GetPadBottom() const
virtual Bool_t IsModified() const
TGClient * fClient
Connection to display server.
Handle_t fId
X11/Win32 Window identifier.
The TGPicture class implements pictures and icons used in the different GUI elements and widgets.
Pixmap_t GetPicture() const
virtual TGSearchType * GetType() const
static TGSearchDialog *& SearchDialog()
Return global search dialog.
Bool_t HandleConfigureNotify(Event_t *event) override
Handle resize events.
TGViewPort(const TGViewPort &)=delete
void SetContainer(TGFrame *f)
Add container frame to the viewport.
virtual void SetHPos(Int_t xpos)
Moves content of container frame in horizontal direction.
virtual void SetVPos(Int_t ypos)
Moves content of container frame in vertical direction.
void SetPos(Int_t xpos, Int_t ypos)
Goto new position.
virtual Bool_t HandleExpose(Event_t *event)
const TGWindow * fParent
Parent window.
@ kEditDisableBtnEnable
window can handle mouse button events
@ kEditDisableGrab
window grab cannot be edited
@ kEditDisable
disable edit of this window
virtual void DestroyWindow()
destroy window
virtual void SetWindowName(const char *name=nullptr)
Set window name.
virtual Bool_t IsMapped()
Returns kTRUE if window is mapped on screen, kFALSE otherwise.
const char * GetName() const override
Return unique name, used in SavePrimitive methods.
UInt_t fEditDisabled
flags used for "guibuilding"
Utility class for browsing TMapFile objects.
Book space in a file, create I/O buffers, to fill them, (un)compress them.
TObject * Last() const override
Return the last object in the list. Returns 0 when list is empty.
const char * GetName() const override
Returns name of object.
Wrapper around a TObject so it can be stored in a TList.
TObject * GetObject() const
Mother of all ROOT objects.
virtual Bool_t IsFolder() const
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
virtual const char * GetName() const
Returns name of object.
virtual const char * GetIconName() const
Returns mime type name of object.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual const char * GetTitle() const
Returns title of object.
virtual TClass * IsA() const
void Emit(const char *signal, const T &arg)
Activate signal with single parameter.
Bool_t Connect(const char *signal, const char *receiver_class, void *receiver, const char *slot)
Non-static method is used to connect from the signal of this object to the receiver slot.
Bool_t Disconnect(const char *signal=nullptr, void *receiver=nullptr, const char *slot=nullptr)
Disconnects signal of this object from slot of receiver.
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
void Reset()
Reset the timer.
TTimer(const TTimer &)=delete
EGEventType fType
of event (see EGEventType)
Int_t fY
pointer x, y coordinates in event window
UInt_t fHeight
width and height of exposed area
Window_t fWindow
window reported event is relative to
UInt_t fState
key or button mask
Int_t fYRoot
coordinates relative to root
Time_t fTime
time event event occurred in ms
UInt_t fCode
key or button code
Longptr_t fUser[5]
5 longs can be used by client message events NOTE: only [0], [1] and [2] may be used.
Graphics context structure.
ULong_t fBackground
background pixel
Int_t fLineWidth
line width
Mask_t fMask
bit mask specifying which fields are valid
Int_t fLineStyle
kLineSolid, kLineOnOffDash, kLineDoubleDash
Bool_t fGraphicsExposures
boolean, should exposures be generated
ULong_t fForeground
foreground pixel
Int_t fFillStyle
kFillSolid, kFillTiled, kFillStippled, kFillOpaeueStippled
EGraphicsFunction fFunction
logical operation
Int_t fSubwindowMode
kClipByChildren, kIncludeInferiors
Attributes that can be used when creating or changing a window.
Mask_t fMask
bit mask specifying which fields are valid
Int_t fWinGravity
one of the window gravity values
Int_t fBitGravity
one of bit gravity values