git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13629 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
159 lines
5.4 KiB
C++
159 lines
5.4 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: dlghndlr.h
|
|
// Purpose: Dialog handler
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 04/01/98
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows license
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _DLGHNDLR_H_
|
|
#define _DLGHNDLR_H_
|
|
|
|
#define wxDRAG_MODE_NONE 0
|
|
#define wxDRAG_MODE_START_LEFT 1
|
|
#define wxDRAG_MODE_CONTINUE_LEFT 2
|
|
#define wxDRAG_MODE_START_RIGHT 3
|
|
#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;
|
|
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
|
|
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()
|
|
};
|
|
|
|
// 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
|
|
|