12 #ifndef ROOT_TGuiBldDragManager
13 #define ROOT_TGuiBldDragManager
27 class TGuiBldDragManagerPimpl;
28 class TRootGuiBuilder;
35 class TGPictureButton;
47 kNoneAct, kPropertyAct, kEditableAct, kReparentAct,
48 kDropAct, kCutAct, kCopyAct, kPasteAct, kCropAct,
49 kCompactAct, kCompactGlobalAct, kLayUpAct, kLayDownAct,
50 kCloneAct, kSaveAct, kSaveFrameAct, kGrabAct, kDeleteAct,
51 kLeftAct, kRightAct, kUpAct, kDownAct, kEndEditAct, kReplaceAct,
52 kGridAct, kBreakLayoutAct, kSwitchLayoutAct, kNewAct,
53 kOpenAct, kLayoutHAct, kLayoutVAct, kUndoAct, kRedoAct,
54 kSelectAct, kMethodMenuAct, kToggleMenuAct
58 class TGuiBldDragManager :
public TVirtualDragManager,
public TGFrame {
60 friend class TGClient;
62 friend class TGMainFrame;
63 friend class TGGrabRect;
64 friend class TRootGuiBuilder;
65 friend class TGuiBldDragManagerRepeatTimer;
66 friend class TGuiBldMenuDialog;
67 friend class TGuiBldGeometryFrame;
68 friend class TGuiBldEditor;
71 TGuiBldDragManagerPimpl *fPimpl;
73 TRootGuiBuilder *fBuilder;
74 TGuiBldEditor *fEditor;
76 TString fPasteFileName;
77 TString fTmpBuildFile;
78 Bool_t fSelectionIsOn;
79 TGPopupMenu *fFrameMenu;
80 TGPopupMenu *fLassoMenu;
86 TList *fListOfDialogs;
88 static TGColorDialog *fgGlobalColorDialog;
89 static TGColorDialog *GetGlobalColorDialog(Bool_t create = kTRUE);
91 static TGFontDialog *fgGlobalFontDialog;
92 static TGFontDialog *GetGlobalFontDialog();
96 void DrawGrabRectangles(TGWindow *win = 0);
97 void DrawGrabRect(Int_t i, Int_t x, Int_t y);
98 TGCompositeFrame *FindLayoutFrame(TGFrame *f);
99 Bool_t IsPointVisible(Int_t x, Int_t y);
100 Bool_t IsSelectedVisible();
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;
110 Bool_t CanChangeLayoutOrder(TGWindow *w)
const;
111 Bool_t CanCompact(TGWindow *w)
const;
113 void ChangeSelected(TGFrame *f);
114 TGFrame *GetEditableParent(TGFrame *f);
115 TGFrame *GetMovableParent(TGWindow *p);
116 TGFrame *GetBtnEnableParent(TGFrame *fr);
117 TGWindow *GetResizableParent(TGWindow *p);
118 TGFrame *FindMdiFrame(TGFrame *in);
119 void RaiseMdiFrame(TGFrame *in);
120 Bool_t CheckTargetAtPoint(Int_t x, Int_t y);
121 void AddClassMenuMethods(TGPopupMenu *menu, TObject *
object);
122 void AddDialogMethods(TGPopupMenu *menu, TObject *
object);
123 void DeleteMenuDialog();
124 void CreateListOfDialogs();
127 TGFrame *InEditable(Window_t
id);
128 void GrabFrame(TGFrame *frame);
130 void SetPropertyEditor(TGuiBldEditor *e);
131 void DeletePropertyEditor();
133 TList *GetFramesInside(Int_t x0, Int_t y0, Int_t x, Int_t y);
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);
141 void HandleCopy(Bool_t brk_layout = kTRUE);
143 void HandleReplace();
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);
150 void HandleLayoutOrder(Bool_t forward = kTRUE);
154 void PlaceFrame(TGFrame*, TGLayoutHints *);
155 void ReparentFrames(TGFrame *newfr,
156 TGCompositeFrame *oldfr);
157 TGCompositeFrame *FindCompositeFrame(Window_t
id);
158 void SetCursorType(Int_t cur);
159 void CheckTargetUnderGrab();
160 void HighlightCompositeFrame(Window_t);
161 void Compact(Bool_t global = kTRUE);
162 Bool_t StartDrag(TGFrame *src, Int_t x, Int_t y);
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();
170 void SwitchEditable(TGFrame *frame);
171 void UnmapAllPopups();
175 Bool_t RecognizeGesture(Event_t *, TGFrame *frame = 0);
176 Bool_t HandleButtonPress(Event_t *);
177 Bool_t HandleButtonRelease(Event_t *);
178 Bool_t HandleButton(Event_t *);
179 Bool_t HandleDoubleClick(Event_t*);
180 Bool_t HandleMotion(Event_t *);
181 Bool_t HandleClientMessage(Event_t *);
182 Bool_t HandleDestroyNotify(Event_t *);
183 Bool_t HandleSelection(Event_t *);
184 Bool_t HandleExpose(Event_t *);
185 Bool_t HandleConfigureNotify(Event_t *);
186 Bool_t HandleSelectionRequest(Event_t *);
187 void HandleButon3Pressed(Event_t *, TGFrame *frame = 0);
188 Bool_t HandleEvent(Event_t *);
189 Bool_t HandleTimer(TTimer *);
191 Bool_t IsMoveWaiting()
const;
192 Bool_t IsLassoDrawn()
const {
return fLassoDrawn; }
193 void SetLassoDrawn(Bool_t on);
194 void HideGrabRectangles();
195 Bool_t IgnoreEvent(Event_t *e);
196 Bool_t CheckDragResize(Event_t *event);
197 Bool_t IsPasteFrameExist();
200 TGuiBldDragManager();
201 virtual ~TGuiBldDragManager();
203 void HandleAction(Int_t act);
204 Bool_t HandleKey(Event_t *);
206 TGFrame *GetTarget()
const {
return fTarget; }
207 TGFrame *GetSelected()
const;
209 void SetGridStep(UInt_t step);
210 UInt_t GetGridStep();
211 void HandleUpdateSelected(TGFrame *);
212 Int_t GetStrartDragX()
const;
213 Int_t GetStrartDragY()
const;
214 Int_t GetEndDragX()
const;
215 Int_t GetEndDragY()
const;
217 Bool_t GetDropStatus()
const {
return fDropStatus; }
218 void SetBuilder(TRootGuiBuilder *b) { fBuilder = b; }
220 Bool_t IsStopped()
const {
return fStop; }
221 void SetEditable(Bool_t on = kTRUE);
222 void SelectFrame(TGFrame *frame, Bool_t add = kFALSE);
224 static void MapGlobalDialog(TGMainFrame *dialog, TGFrame *fr);
226 Bool_t HandleTimerEvent(Event_t *ev, TTimer *t);
227 void TimerEvent(Event_t *ev)
228 { Emit(
"TimerEvent(Event_t*)", (Long_t)ev); }
231 void DoClassMenu(Int_t);
233 void DoDialogApply();
234 void DoDialogCancel();
236 void ChangeProperties(TGLabel *);
237 void ChangeProperties(TGTextButton *);
239 void ChangeTextFont(TGGroupFrame *);
240 void ChangeTextFont(TGTextEntry *);
242 void ChangePicture(TGPictureButton *);
243 void ChangeImage(TGIcon *);
245 void ChangeBarColor(TGProgressBar *);
247 void ChangeTextColor(TGGroupFrame *);
248 void ChangeTextColor(TGLabel *);
249 void ChangeTextColor(TGTextButton *);
250 void ChangeTextColor(TGProgressBar *);
251 void ChangeTextColor(TGTextEntry *);
253 void ChangeBackgroundColor(TGListBox *);
254 void ChangeBackgroundColor(TGCanvas *);
255 void ChangeBackgroundColor(TGComboBox *);
256 void ChangeBackgroundColor(TGFrame *);
257 void ChangeBackgroundColor(TGCompositeFrame *);
259 ClassDef(TGuiBldDragManager,0)