X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/457814b5aa2ee5c83abc65a6aee2a3ebcb1af34f..a2d541ca9c552d1a30ba75970968a7a220f4955a:/utils/dialoged/src/dlghndlr.h diff --git a/utils/dialoged/src/dlghndlr.h b/utils/dialoged/src/dlghndlr.h index aced1272c7..ce39f648fa 100644 --- a/utils/dialoged/src/dlghndlr.h +++ b/utils/dialoged/src/dlghndlr.h @@ -19,104 +19,139 @@ #define wxDRAG_MODE_CONTINUE_RIGHT 4 #define wxDRAG_TYPE_NONE 0 #define wxDRAG_TYPE_ITEM 100 +#define wxDRAG_TYPE_BOUNDING_BOX 200 #define wxKEY_SHIFT 1 #define wxKEY_CTRL 2 class wxResourceEditorDialogHandler: public wxEvtHandler { -DECLARE_CLASS(wxResourceEditorDialogHandler) - public: - wxResourceManager *resourceManager; - wxPanel *handlerDialog; - wxItemResource *handlerResource; - wxEvtHandler *handlerOldHandler; - - wxControl *dragItem; - int dragMode; - int dragType; - int dragTolerance; - bool checkTolerance; - int firstDragX; - int firstDragY; - int oldDragX; - int oldDragY; - - wxResourceEditorDialogHandler(wxPanel *dialog, wxItemResource *resource, wxEvtHandler *oldHandler, - wxResourceManager *manager); - ~wxResourceEditorDialogHandler(void) {} - - bool OnClose(void); - - void OnPaint(wxPaintEvent& event); - void OnMouseEvent(wxMouseEvent& event); - - virtual void OnItemEvent(wxControl *win, wxMouseEvent& event); - virtual void OnLeftClick(int x, int y, int keys); - virtual void OnRightClick(int x, int y, int keys); - virtual void OnItemLeftClick(wxControl *item, int x, int y, int keys); - virtual void OnItemRightClick(wxControl *item, int x, int y, int keys); - virtual void OnItemSelect(wxControl *item, bool select); - virtual void OnItemMove(wxControl *item, int x, int y) {}; - virtual void OnItemSize(wxControl *item, int w, int h) {}; - - void AddChildHandlers(void); - void PaintSelectionHandles(wxDC& dc); - void ProcessItemEvent(wxControl *item, wxMouseEvent& event, int selectionHandle); - -DECLARE_EVENT_TABLE() + DECLARE_CLASS(wxResourceEditorDialogHandler) +public: + wxResourceManager *resourceManager; + wxPanel *handlerDialog; + wxItemResource *handlerResource; + wxEvtHandler *handlerOldHandler; + + wxControl *dragItem; + int dragMode; + int dragType; + int dragTolerance; + bool checkTolerance; + int firstDragX; + int firstDragY; + int oldDragX; + int oldDragY; + bool m_mouseCaptured; + // long m_treeItem; + + wxResourceEditorDialogHandler(wxPanel *dialog, wxItemResource *resource, wxEvtHandler *oldHandler, + wxResourceManager *manager); + ~wxResourceEditorDialogHandler(void); + + void OnPaint(wxPaintEvent& event); + void OnMouseEvent(wxMouseEvent& event); + void OnSize(wxSizeEvent& event); + void OnObjectEdit(wxCommandEvent& event); + void OnObjectDelete(wxCommandEvent& event); + + virtual void OnItemEvent(wxControl *win, wxMouseEvent& event); + virtual void OnLeftClick(int x, int y, int keys); + virtual void OnRightClick(int x, int y, int keys); + virtual void OnItemLeftClick(wxControl *item, int x, int y, int keys); + virtual void OnItemRightClick(wxControl *item, int x, int y, int keys); + virtual void OnItemSelect(wxControl *item, bool select); + virtual void OnItemMove( + wxControl *WXUNUSED(item), int WXUNUSED(x), int WXUNUSED(y) ) {}; + virtual void OnItemSize( + wxControl *WXUNUSED(item), int WXUNUSED(w), int WXUNUSED(h) ) {}; + + void AddChildHandlers(void); + void PaintSelectionHandles(wxDC& dc); + void ProcessItemEvent(wxControl *item, wxMouseEvent& event, int selectionHandle); + + virtual void DrawBoundingBox(wxDC& dc, int x, int y, int w, int h); + virtual void OnDragBegin(int x, int y, int keys, wxDC& dc, int selectionHandle); + virtual void OnDragContinue(bool paintIt, int x, int y, int keys, wxDC& dc, int selectionHandle); + virtual void OnDragEnd(int x, int y, int keys, wxDC& dc, int selectionHandle); + + // Accessors + /* + inline long GetTreeItem() const { return m_treeItem; } + inline void SetTreeItem(long item) { m_treeItem = item; } + */ + + DECLARE_EVENT_TABLE() }; class wxResourceEditorControlHandler: public wxEvtHandler { -DECLARE_CLASS(wxResourceEditorControlHandler) - public: -// wxResourceManager *resourceManager; - wxControl *handlerControl; -// wxItemResource *handlerResource; - wxEvtHandler *handlerOldHandler; - - bool isSelected; - int handleSize; // selection handle size - int handleMargin; // Distance between item edge and handle edge - static int dragOffsetX; // Distance between pointer at start of drag and - static int dragOffsetY; // top-left of item - - wxResourceEditorControlHandler(wxControl *control, wxEvtHandler *oldHandler); - ~wxResourceEditorControlHandler(void) {} - - void OnMouseEvent(wxMouseEvent& event); - - // Manipulation and drawing of items in Edit Mode - - // Calculate position of the 8 handles - virtual void CalcSelectionHandles(int *hx, int *hy); - virtual void DrawSelectionHandles(wxDC& dc, bool erase = FALSE); - virtual void DrawBoundingBox(wxDC& dc, int x, int y, int w, int h); - virtual void SelectItem(bool select); - virtual inline bool IsSelected(void) { return isSelected; } - - // Returns TRUE or FALSE - virtual bool HitTest(int x, int y); - - // Returns 0 (no hit), 1 - 8 for which selection handle - // (clockwise from top middle) - virtual int SelectionHandleHitTest(int x, int y); - - // If selectionHandle is zero, not dragging the selection handle. - virtual void OnDragBegin(int x, int y, int keys, wxDC& dc, int selectionHandle); - virtual void OnDragContinue(bool paintIt, int x, int y, int keys, wxDC& dc, int selectionHandle); - virtual void OnDragEnd(int x, int y, int keys, wxDC& dc, int selectionHandle); - - // These functions call panel functions - // by default. - virtual void OldOnMove(int x, int y); - virtual void OldOnSize(int w, int h); - virtual void OnLeftClick(int x, int y, int keys); - virtual void OnRightClick(int x, int y, int keys); - virtual void OnSelect(bool select); + DECLARE_CLASS(wxResourceEditorControlHandler) +public: + // wxResourceManager *resourceManager; + wxControl *handlerControl; + // wxItemResource *handlerResource; + wxEvtHandler *handlerOldHandler; + + bool isSelected; + int handleSize; // selection handle size + int handleMargin; // Distance between item edge and handle edge + long m_treeItem; + static int dragOffsetX; // Distance between pointer at start of drag and + static int dragOffsetY; // top-left of item + + wxResourceEditorControlHandler(wxControl *control, wxEvtHandler *oldHandler); + ~wxResourceEditorControlHandler(void); + + void OnMouseEvent(wxMouseEvent& event); + + // Manipulation and drawing of items in Edit Mode + + // Calculate position of the 8 handles + virtual void CalcSelectionHandles(int *hx, int *hy); + virtual void DrawSelectionHandles(wxDC& dc, bool erase = FALSE); + virtual void DrawBoundingBox(wxDC& dc, int x, int y, int w, int h); + virtual void SelectItem(bool select); + virtual inline bool IsSelected(void) { return isSelected; } + + // Returns TRUE or FALSE + virtual bool HitTest(int x, int y); + + // Returns 0 (no hit), 1 - 8 for which selection handle + // (clockwise from top middle) + virtual int SelectionHandleHitTest(int x, int y); + + // If selectionHandle is zero, not dragging the selection handle. + virtual void OnDragBegin(int x, int y, int keys, wxDC& dc, int selectionHandle); + virtual void OnDragContinue(bool paintIt, int x, int y, int keys, wxDC& dc, int selectionHandle); + virtual void OnDragEnd(int x, int y, int keys, wxDC& dc, int selectionHandle); + + // These functions call panel functions + // by default. + virtual void OldOnMove(int x, int y); + virtual void OldOnSize(int w, int h); + virtual void OnLeftClick(int x, int y, int keys); + virtual void OnRightClick(int x, int y, int keys); + virtual void OnSelect(bool select); + + // Accessors + /* + inline long GetTreeItem() const { return m_treeItem; } + inline void SetTreeItem(long item) { m_treeItem = item; } + */ + + DECLARE_EVENT_TABLE() +}; -DECLARE_EVENT_TABLE() +// This dialog, for testing dialogs, has to intercept commands before +// they go up the hierarchy and accidentally set off arbitrary +// Dialog Editor functionality +class ResourceEditorDialogTester: public wxDialog +{ +public: + ResourceEditorDialogTester() {} + + bool ProcessEvent(wxEvent& event); }; #endif