1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Dialog handler
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
15 #define wxDRAG_MODE_NONE 0
16 #define wxDRAG_MODE_START_LEFT 1
17 #define wxDRAG_MODE_CONTINUE_LEFT 2
18 #define wxDRAG_MODE_START_RIGHT 3
19 #define wxDRAG_MODE_CONTINUE_RIGHT 4
20 #define wxDRAG_TYPE_NONE 0
21 #define wxDRAG_TYPE_ITEM 100
26 class wxResourceEditorDialogHandler
: public wxEvtHandler
28 DECLARE_CLASS(wxResourceEditorDialogHandler
)
30 wxResourceManager
*resourceManager
;
31 wxPanel
*handlerDialog
;
32 wxItemResource
*handlerResource
;
33 wxEvtHandler
*handlerOldHandler
;
45 wxResourceEditorDialogHandler(wxPanel
*dialog
, wxItemResource
*resource
, wxEvtHandler
*oldHandler
,
46 wxResourceManager
*manager
);
47 ~wxResourceEditorDialogHandler(void) {}
51 void OnPaint(wxPaintEvent
& event
);
52 void OnMouseEvent(wxMouseEvent
& event
);
54 virtual void OnItemEvent(wxControl
*win
, wxMouseEvent
& event
);
55 virtual void OnLeftClick(int x
, int y
, int keys
);
56 virtual void OnRightClick(int x
, int y
, int keys
);
57 virtual void OnItemLeftClick(wxControl
*item
, int x
, int y
, int keys
);
58 virtual void OnItemRightClick(wxControl
*item
, int x
, int y
, int keys
);
59 virtual void OnItemSelect(wxControl
*item
, bool select
);
60 virtual void OnItemMove(wxControl
*item
, int x
, int y
) {};
61 virtual void OnItemSize(wxControl
*item
, int w
, int h
) {};
63 void AddChildHandlers(void);
64 void PaintSelectionHandles(wxDC
& dc
);
65 void ProcessItemEvent(wxControl
*item
, wxMouseEvent
& event
, int selectionHandle
);
70 class wxResourceEditorControlHandler
: public wxEvtHandler
72 DECLARE_CLASS(wxResourceEditorControlHandler
)
74 // wxResourceManager *resourceManager;
75 wxControl
*handlerControl
;
76 // wxItemResource *handlerResource;
77 wxEvtHandler
*handlerOldHandler
;
80 int handleSize
; // selection handle size
81 int handleMargin
; // Distance between item edge and handle edge
82 static int dragOffsetX
; // Distance between pointer at start of drag and
83 static int dragOffsetY
; // top-left of item
85 wxResourceEditorControlHandler(wxControl
*control
, wxEvtHandler
*oldHandler
);
86 ~wxResourceEditorControlHandler(void) {}
88 void OnMouseEvent(wxMouseEvent
& event
);
90 // Manipulation and drawing of items in Edit Mode
92 // Calculate position of the 8 handles
93 virtual void CalcSelectionHandles(int *hx
, int *hy
);
94 virtual void DrawSelectionHandles(wxDC
& dc
, bool erase
= FALSE
);
95 virtual void DrawBoundingBox(wxDC
& dc
, int x
, int y
, int w
, int h
);
96 virtual void SelectItem(bool select
);
97 virtual inline bool IsSelected(void) { return isSelected
; }
99 // Returns TRUE or FALSE
100 virtual bool HitTest(int x
, int y
);
102 // Returns 0 (no hit), 1 - 8 for which selection handle
103 // (clockwise from top middle)
104 virtual int SelectionHandleHitTest(int x
, int y
);
106 // If selectionHandle is zero, not dragging the selection handle.
107 virtual void OnDragBegin(int x
, int y
, int keys
, wxDC
& dc
, int selectionHandle
);
108 virtual void OnDragContinue(bool paintIt
, int x
, int y
, int keys
, wxDC
& dc
, int selectionHandle
);
109 virtual void OnDragEnd(int x
, int y
, int keys
, wxDC
& dc
, int selectionHandle
);
111 // These functions call panel functions
113 virtual void OldOnMove(int x
, int y
);
114 virtual void OldOnSize(int w
, int h
);
115 virtual void OnLeftClick(int x
, int y
, int keys
);
116 virtual void OnRightClick(int x
, int y
, int keys
);
117 virtual void OnSelect(bool select
);
119 DECLARE_EVENT_TABLE()