Files
wxWidgets/utils/dialoged/src/dlghndlr.h
2002-01-18 11:50:14 +00:00

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