Logo ROOT   master
Reference Guide
TGuiBldDragManager.h
Go to the documentation of this file.
1 // @(#)root/guibuilder:$Id$
2 // Author: Valeriy Onuchin 12/09/04
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2004, 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_TGuiBldDragManager
13 #define ROOT_TGuiBldDragManager
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TGuiBldDragManager //
19 // //
20 //////////////////////////////////////////////////////////////////////////
21 
22 #include "TGFrame.h"
23 
24 #include "TVirtualDragManager.h"
25 
26 class TTimer;
27 class TGuiBldDragManagerPimpl;
28 class TRootGuiBuilder;
29 class TQUndoManager;
30 class TGPopupMenu;
31 class TGuiBldEditor;
32 class TGColorDialog;
33 class TGFontDialog;
34 class TGTextButton;
35 class TGPictureButton;
36 class TGCanvas;
37 class TGComboBox;
38 class TGLabel;
39 class TGListBox;
40 class TGProgressBar;
41 class TGScrollBar;
42 class TGTextEntry;
43 class TGIcon;
44 
45 
55 };
56 
57 //////////////////////////////////////////////////////////////////////////
59 
60 friend class TGClient;
61 friend class TGFrame;
62 friend class TGMainFrame;
63 friend class TGGrabRect;
64 friend class TRootGuiBuilder;
66 friend class TGuiBldMenuDialog;
67 friend class TGuiBldGeometryFrame;
68 friend class TGuiBldEditor;
69 
70 private:
71  TGuiBldDragManagerPimpl *fPimpl; // private data
72 
73  TRootGuiBuilder *fBuilder; // pointer to gui builder
74  TGuiBldEditor *fEditor; // frame property editor
75  Bool_t fLassoDrawn; // kTRUE if lasso drawn
76  TString fPasteFileName; // paste_clippboard file name
77  TString fTmpBuildFile; // temporary file name
78  Bool_t fSelectionIsOn; // selection with Shift key pressed
79  TGPopupMenu *fFrameMenu; // context menu for frames
80  TGPopupMenu *fLassoMenu; // context menu for lasso drawn
81  Window_t fTargetId; // an id of window where drop
82  Bool_t fDropStatus; // kTRUE if drop was successfull
83  Bool_t fStop; // kTRUE if stopped
84  TGFrame *fSelected; // selected frame. In most cases selected is
85  // the same frame as grabbed frame.
86  TList *fListOfDialogs; // list of dialog methods
87 
88  static TGColorDialog *fgGlobalColorDialog; // color dialog
90 
91  static TGFontDialog *fgGlobalFontDialog; // font dialog
92  static TGFontDialog *GetGlobalFontDialog(); //
93 
94 
95  void Reset1();
96  void DrawGrabRectangles(TGWindow *win = 0);
97  void DrawGrabRect(Int_t i, Int_t x, Int_t y);
101  void CloseMenus();
102  Bool_t IsEditDisabled(TGWindow *f) const { return (f && (f->GetEditDisabled() & kEditDisable)); }
103  Bool_t IsGrabDisabled(TGWindow *f) const { return (f && (f->GetEditDisabled() & kEditDisableGrab)); }
104  Bool_t IsEventsDisabled(TGWindow *f) const { return (f && (f->GetEditDisabled() & kEditDisableEvents)); }
105  Bool_t IsFixedLayout(TGWindow *f) const { return (f && (f->GetEditDisabled() & kEditDisableLayout)); }
106  Bool_t IsFixedH(TGWindow *f) const { return (f && (f->GetEditDisabled() & kEditDisableHeight)); }
107  Bool_t IsFixedW(TGWindow *f) const { return (f && (f->GetEditDisabled() & kEditDisableWidth)); }
108  Bool_t IsFixedSize(TGWindow *f) const { return (f && (f->GetEditDisabled() & kEditDisableResize)); }
109  Bool_t CanChangeLayout(TGWindow *w) const;
111  Bool_t CanCompact(TGWindow *w) const;
112 
113  void ChangeSelected(TGFrame *f);
119  void RaiseMdiFrame(TGFrame *in);
121  void AddClassMenuMethods(TGPopupMenu *menu, TObject *object);
122  void AddDialogMethods(TGPopupMenu *menu, TObject *object);
123  void DeleteMenuDialog();
124  void CreateListOfDialogs();
125 
126 private:
128  void GrabFrame(TGFrame *frame);
129  void UngrabFrame();
131  void DeletePropertyEditor();
132 
134  void ToGrid(Int_t &x, Int_t &y);
135  void DoReplace(TGFrame *frame);
136  void DeleteFrame(TGFrame *frame);
137  void HandleDelete(Bool_t crop = kFALSE);
138  void HandleReturn(Bool_t on = kFALSE);
139  void HandleAlignment(Int_t to, Bool_t lineup = kFALSE);
140  void HandleCut();
141  void HandleCopy(Bool_t brk_layout = kTRUE);
142  void HandlePaste();
143  void HandleReplace();
144  void HandleGrid();
145  void CloneEditable();
146  void DropCanvas(TGCanvas *canvas);
147  void PutToCanvas(TGCompositeFrame *cont);
148  Bool_t Save(const char *file = "");
149  Bool_t SaveFrame(const char *file = 0);
151  void DoResize();
152  void DoMove();
153  void DrawLasso();
154  void PlaceFrame(TGFrame*, TGLayoutHints *);
155  void ReparentFrames(TGFrame *newfr,
156  TGCompositeFrame *oldfr);
158  void SetCursorType(Int_t cur);
159  void CheckTargetUnderGrab();
161  void Compact(Bool_t global = kTRUE);
163  Bool_t EndDrag();
164  Bool_t Drop();
165  Bool_t Cancel(Bool_t delSrc);
166  void Menu4Frame(TGFrame *, Int_t x, Int_t y);
167  void Menu4Lasso(Int_t x, Int_t y);
168  void CreatePropertyEditor();
169  void DoRedraw();
170  void SwitchEditable(TGFrame *frame);
171  void UnmapAllPopups();
172  void BreakLayout();
173  void SwitchLayout();
174 
175  Bool_t RecognizeGesture(Event_t *, TGFrame *frame = 0);
187  void HandleButon3Pressed(Event_t *, TGFrame *frame = 0);
190 
191  Bool_t IsMoveWaiting() const;
192  Bool_t IsLassoDrawn() const { return fLassoDrawn; }
193  void SetLassoDrawn(Bool_t on);
194  void HideGrabRectangles();
198 
199 public:
201  virtual ~TGuiBldDragManager();
202 
203  void HandleAction(Int_t act);
205 
206  TGFrame *GetTarget() const { return fTarget; }
207  TGFrame *GetSelected() const;
208  void Snap2Grid();
209  void SetGridStep(UInt_t step);
212  Int_t GetStrartDragX() const;
213  Int_t GetStrartDragY() const;
214  Int_t GetEndDragX() const;
215  Int_t GetEndDragY() const;
216 
217  Bool_t GetDropStatus() const { return fDropStatus; }
219 
220  Bool_t IsStopped() const { return fStop; }
221  void SetEditable(Bool_t on = kTRUE);
222  void SelectFrame(TGFrame *frame, Bool_t add = kFALSE);
223 
224  static void MapGlobalDialog(TGMainFrame *dialog, TGFrame *fr);
225 
227  void TimerEvent(Event_t *ev)
228  { Emit("TimerEvent(Event_t*)", (Long_t)ev); } // *SIGNAL*
229 
230  // hadndling dynamic context menus
231  void DoClassMenu(Int_t);
232  void DoDialogOK();
233  void DoDialogApply();
234  void DoDialogCancel();
235 
236  void ChangeProperties(TGLabel *); //*MENU* *DIALOG*icon=bld_fontselect.png*
237  void ChangeProperties(TGTextButton *); //*MENU* *DIALOG*icon=bld_fontselect.png*
238 
239  void ChangeTextFont(TGGroupFrame *); //*MENU* *DIALOG*icon=bld_fontselect.png*
240  void ChangeTextFont(TGTextEntry *); //*MENU* *DIALOG*icon=bld_fontselect.png*
241 
242  void ChangePicture(TGPictureButton *); //*MENU* *DIALOG*icon=bld_open.png*
243  void ChangeImage(TGIcon *); //*MENU* *DIALOG*icon=bld_open.png*
244 
245  void ChangeBarColor(TGProgressBar *); //*MENU* *DIALOG*icon=bld_colorselect.png*
246 
247  void ChangeTextColor(TGGroupFrame *); //*MENU* *DIALOG*icon=bld_colorselect.png*
248  void ChangeTextColor(TGLabel *); //*MENU* *DIALOG*icon=bld_colorselect.png*
249  void ChangeTextColor(TGTextButton *); //*MENU* *DIALOG*icon=bld_colorselect.png*
250  void ChangeTextColor(TGProgressBar *); //*MENU* *DIALOG*icon=bld_colorselect.png*
251  void ChangeTextColor(TGTextEntry *); //*MENU* *DIALOG*icon=bld_colorselect.png*
252 
253  void ChangeBackgroundColor(TGListBox *); //*MENU* *DIALOG*icon=bld_colorselect.png*
254  void ChangeBackgroundColor(TGCanvas *); //*MENU* *DIALOG*icon=bld_colorselect.png*
255  void ChangeBackgroundColor(TGComboBox *); //*MENU* *DIALOG*icon=bld_colorselect.png*
256  void ChangeBackgroundColor(TGFrame *); //*MENU* *DIALOG*icon=bld_colorselect.png*
257  void ChangeBackgroundColor(TGCompositeFrame *); //*MENU* *DIALOG*icon=bld_colorselect.png*
258 
259  ClassDef(TGuiBldDragManager,0) // drag and drop manager
260 };
261 
262 
263 #endif
void HandleCut()
Handle cut action.
void SelectFrame(TGFrame *frame, Bool_t add=kFALSE)
Grab/Select frame.
Bool_t IsEventsDisabled(TGWindow *f) const
Bool_t HandleMotion(Event_t *)
Handle motion event.
Int_t GetEndDragX() const
Return the current X coordinate of the dragged frame.
TGCompositeFrame * FindCompositeFrame(Window_t id)
Find the first composite parent of window.
Bool_t IsFixedW(TGWindow *f) const
void ChangeProperties(TGLabel *)
Edit properties via font selection dialog.
TGFrame * GetSelected() const
Return the current grabbed/selected frame.
void ChangeImage(TGIcon *)
Invoke file dialog to assign a new image.
TGCompositeFrame * FindLayoutFrame(TGFrame *f)
Helper to find a frame which can be layouted.
void CheckTargetUnderGrab()
Look for the drop target under grabbed/selected frame while moving.
void UngrabFrame()
Ungrab/Unselect selected/grabbed frame.
void DeleteFrame(TGFrame *frame)
Delete frame.
Bool_t IsStopped() const
Bool_t IsMoveWaiting() const
Waits for either the mouse move from the given initial ButtonPress location or for the mouse button t...
UInt_t GetGridStep()
Return the grid step.
void PutToCanvas(TGCompositeFrame *cont)
Create a new TGCanvas and place container into it.
TGFrame * FindMdiFrame(TGFrame *in)
Return a pointer to the parent mdi frame.
Bool_t Save(const char *file="")
Save an editted frame to the file.
static TGColorDialog * fgGlobalColorDialog
static TGColorDialog * GetGlobalColorDialog(Bool_t create=kTRUE)
Return pointer to global color dialog.
void UnmapAllPopups()
Unmap all popups.
Bool_t HandleButtonRelease(Event_t *)
Handle button release event.
static void MapGlobalDialog(TGMainFrame *dialog, TGFrame *fr)
Map dialog and place it relative to selected frame.
void DrawGrabRect(Int_t i, Int_t x, Int_t y)
Helper method to draw grab rectangle at position x,y.
Bool_t HandleTimerEvent(Event_t *ev, TTimer *t)
Handle timer events or events coming from the recorder.
Bool_t CanChangeLayoutOrder(TGWindow *w) const
kTRUE - if it's possible to change layout order in the parent's layout of window w ...
void ChangeSelected(TGFrame *f)
Inform outside wold that selected frame was changed.
Basic string class.
Definition: TString.h:131
friend class TGuiBldDragManagerRepeatTimer
void SetCursorType(Int_t cur)
Set cursor for selcted/grabbed frame.
Bool_t IsFixedLayout(TGWindow *f) const
void HandleGrid()
Switch on/of grid drawn.
TGFrame * InEditable(Window_t id)
Return a pointer to the parent window (which is being editted)
#define f(i)
Definition: RSha256.hxx:104
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
Bool_t Drop()
Drop grabbed frame.
Bool_t HandleConfigureNotify(Event_t *)
Resize events.
void CreatePropertyEditor()
Create widget property editor (it could be located outside of guibuilder)
TGWindow * GetResizableParent(TGWindow *p)
Find parent frame which can be resized.
void HandleLayoutOrder(Bool_t forward=kTRUE)
Change layout order.
void HandleReturn(Bool_t on=kFALSE)
Handling of return/enter key pressing.
Bool_t CheckTargetAtPoint(Int_t x, Int_t y)
Helper. Look for the drop target under grabbed/selected frame while moving.
void SetLassoDrawn(Bool_t on)
Set lasso drawn flag.
void AddDialogMethods(TGPopupMenu *menu, TObject *object)
Add DIALOG entries to the selected frame popup menu.
void AddClassMenuMethods(TGPopupMenu *menu, TObject *object)
Add entries with class //*MENU* methods.
void CloneEditable()
Create a frame which is the same as currently editted frame.
TRootGuiBuilder * fBuilder
void SetPropertyEditor(TGuiBldEditor *e)
Helper method.
Bool_t EndDrag()
End dragging.
Double_t x[n]
Definition: legend1.C:17
#define ClassDef(name, id)
Definition: Rtypes.h:326
void HandleDelete(Bool_t crop=kFALSE)
Handle delete or crop action.
Bool_t HandleButtonPress(Event_t *)
Handle button press event.
Bool_t GetDropStatus() const
Bool_t IsPointVisible(Int_t x, Int_t y)
Helper function for IsSelectedWindow method.
Definition: TGIcon.h:30
Bool_t CheckDragResize(Event_t *event)
Check resize type event.
Bool_t IsFixedSize(TGWindow *f) const
void Snap2Grid()
Draw grid on editable frame and restore background on previuosly editted one.
void ToGrid(Int_t &x, Int_t &y)
Return grid coordinates which are close to given.
void Reset1()
Reset some parameters.
void ChangeBarColor(TGProgressBar *)
Set progress bar color via TGColorDialog.
void DoDialogOK()
Process dialog OK button pressed.
void TimerEvent(Event_t *ev)
virtual ~TGuiBldDragManager()
Destructor.
A doubly linked list.
Definition: TList.h:44
Bool_t HandleClientMessage(Event_t *)
Handle client message.
void DropCanvas(TGCanvas *canvas)
Drop canvas container.
Bool_t HandleButton(Event_t *)
Handle button event occured in some ROOT frame.
void DrawLasso()
Draw lasso for allocation new object.
void HandleAction(Int_t act)
Main handler of actions.
Bool_t HandleDoubleClick(Event_t *)
Mouse double click handler (never should happen)
void CreateListOfDialogs()
Create a list of dialog methods.
TGPopupMenu * fLassoMenu
Bool_t HandleExpose(Event_t *)
Handle repaint event.
Bool_t HandleKey(Event_t *)
Handle key event.
void SwitchEditable(TGFrame *frame)
Switch editable.
Bool_t IsEditDisabled(TGWindow *f) const
void SwitchLayout()
Switch Horizontal/Vertical layout of selected/grabbed composite frame.
void Compact(Bool_t global=kTRUE)
Layout and Resize frame.
void HandlePaste()
Handle paste action.
TList * GetFramesInside(Int_t x0, Int_t y0, Int_t x, Int_t y)
Return the list of frames inside of some area.
Bool_t IsPasteFrameExist()
Return kTRUE if paste frame exist.
Bool_t CanCompact(TGWindow *w) const
kTRUE is frame could be compacted/"layouted"
unsigned int UInt_t
Definition: RtypesCore.h:42
void SetEditable(Bool_t on=kTRUE)
Grab server.
Bool_t IsFixedH(TGWindow *f) const
Handles synchronous and a-synchronous timer events.
Definition: TTimer.h:51
void RaiseMdiFrame(TGFrame *in)
Raise guibuilder's mdi frame.
void HandleAlignment(Int_t to, Bool_t lineup=kFALSE)
Align frames located inside lasso area.
static TGFontDialog * GetGlobalFontDialog()
Create global font dialog.
Bool_t SaveFrame(const char *file=0)
Save composite frame as macro.
EActionType
void DeleteMenuDialog()
Delete dialog and trash.
static TGFontDialog * fgGlobalFontDialog
void DoDialogApply()
Process dialog Apply button pressed.
void SetBuilder(TRootGuiBuilder *b)
TGuiBldDragManagerPimpl * fPimpl
const Bool_t kFALSE
Definition: RtypesCore.h:88
Bool_t IsGrabDisabled(TGWindow *f) const
void HandleReplace()
Handle replace.
long Long_t
Definition: RtypesCore.h:50
Bool_t HandleEvent(Event_t *)
Handle all events.
void ChangePicture(TGPictureButton *)
Invoke file dialog to assign a new picture.
void DeletePropertyEditor()
Delete widget property editor.
TGPopupMenu * fFrameMenu
Bool_t HandleDestroyNotify(Event_t *)
Handle destroy notify.
Double_t y[n]
Definition: legend1.C:17
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
Definition: TRolke.cxx:630
void forward(const LAYERDATA &prevLayerData, LAYERDATA &currLayerData)
apply the weights (and functions) in forward direction of the DNN
Definition: NeuralNet.icc:546
Bool_t RecognizeGesture(Event_t *, TGFrame *frame=0)
Recognize what was done when mouse button pressed.
Int_t GetEndDragY() const
Returns the current Y coordinate of the dragged frame.
TGFrame * GetEditableParent(TGFrame *f)
Return the parent frame which can be editted.
TGFrame * GetTarget() const
void PlaceFrame(TGFrame *, TGLayoutHints *)
Put created frame at position of the last mouse click.
void HighlightCompositeFrame(Window_t)
Raise composite frame when mouse is moving over it.
Bool_t StartDrag(TGFrame *src, Int_t x, Int_t y)
Start dragging.
Mother of all ROOT objects.
Definition: TObject.h:37
Handle_t Window_t
Definition: GuiTypes.h:28
Bool_t IsLassoDrawn() const
void SetGridStep(UInt_t step)
Set the grid step.
void DrawGrabRectangles(TGWindow *win=0)
Draw small grab rectangles around grabbed/selected/frame.
void DoRedraw()
Redraw the editted window.
void HandleButon3Pressed(Event_t *, TGFrame *frame=0)
Handle 3d mouse pressed (popup context menu)
Recorder of operations for undo and redo.
Definition: TQCommand.h:103
Definition: file.py:1
Bool_t IsSelectedVisible()
Return kTRUE if grabbed/selected frame is not overlapped by other windows.
void HandleCopy(Bool_t brk_layout=kTRUE)
Handle copy.
void DoClassMenu(Int_t)
Process a method chosen via frame context menu.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
Definition: TRolke.cxx:630
void ChangeBackgroundColor(TGListBox *)
Set background color for list box entries.
Bool_t HandleSelection(Event_t *)
not used yet.
void HideGrabRectangles()
Hide/Unmap grab rectangles.
Bool_t CanChangeLayout(TGWindow *w) const
kTRUE - if it's possible to switch disable/enable layout
friend class TGuiBldMenuDialog
void GrabFrame(TGFrame *frame)
grab frame (see SelectFrame)
void Emit(const char *signal, const T &arg)
Activate signal with single parameter.
Definition: TQObject.h:164
TGFrame * GetBtnEnableParent(TGFrame *fr)
Return a parent which can handle button evevents.
void ReparentFrames(TGFrame *newfr, TGCompositeFrame *oldfr)
Reparent frames.
void ChangeTextColor(TGGroupFrame *)
Change text color via color selection dialog.
void DoResize()
handle resize
const Bool_t kTRUE
Definition: RtypesCore.h:87
void HandleUpdateSelected(TGFrame *)
When selected frame was changed by guibuilder editor -> update its appearence.
void DoReplace(TGFrame *frame)
Replace frame (doesn't work yet properly)
Int_t GetStrartDragX() const
Return the X coordinate where drag started.
Bool_t HandleTimer(TTimer *)
The main event loop is originated here It repeadeatly queries pointer state and position on the scree...
Int_t GetStrartDragY() const
Return the Y coordinate where drag started.
Bool_t HandleSelectionRequest(Event_t *)
not used yet.
void Menu4Frame(TGFrame *, Int_t x, Int_t y)
Create and place context menu for selected frame.
void Menu4Lasso(Int_t x, Int_t y)
Create context menu for lasso actions.
void DoDialogCancel()
Process dialog Cancel button pressed.
void DoMove()
Handle move.
TGuiBldEditor * fEditor
void CloseMenus()
Helper to close all menus.
TGFrame * GetMovableParent(TGWindow *p)
Find parent frame which can be dragged.
void ChangeTextFont(TGGroupFrame *)
Change text font via font selection dialog.
Bool_t IgnoreEvent(Event_t *e)
Return kTRUE if event is rejected for processing by drag manager.
void BreakLayout()
Disable/Enable layout for selected/grabbed composite frame.
Bool_t Cancel(Bool_t delSrc)
Do cancel action.