mirror of
https://github.com/Heretek-AI/GDevelop.git
synced 2026-07-23 02:25:52 -04:00
9203fab207
git-svn-id: svn://localhost@6 8062f311-0dae-4547-b526-b8ab9ac864a5
537 lines
17 KiB
C++
537 lines
17 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: thumbnailctrl.h
|
|
// Purpose: Displays a scrolling window of thumbnails
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 03/08/04 17:22:46
|
|
// RCS-ID:
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWidgets Licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_THUMBNAILCTRL_H_
|
|
#define _WX_THUMBNAILCTRL_H_
|
|
|
|
#if defined(__GNUG__) && !defined(__APPLE__)
|
|
#pragma interface "thumbnailctrl.cpp"
|
|
#endif
|
|
|
|
#include <wx/dynarray.h>
|
|
#include <wx/settings.h>
|
|
#include <wx/arrimpl.cpp>
|
|
#include <wx/image.h>
|
|
#include <wx/filename.h>
|
|
#include <wx/dcbuffer.h>
|
|
#include <wx/scrolwin.h>
|
|
|
|
/*!
|
|
* Includes
|
|
*/
|
|
|
|
/*!
|
|
* Styles and flags
|
|
*/
|
|
|
|
/* Styles
|
|
*/
|
|
|
|
#define wxTH_MULTIPLE_SELECT 0x0010
|
|
#define wxTH_SINGLE_SELECT 0x0000
|
|
#define wxTH_TEXT_LABEL 0x0020
|
|
#define wxTH_IMAGE_LABEL 0x0040
|
|
#define wxTH_EXTENSION_LABEL 0x0080
|
|
|
|
/* Flags
|
|
*/
|
|
|
|
#define wxTHUMBNAIL_SHIFT_DOWN 0x01
|
|
#define wxTHUMBNAIL_CTRL_DOWN 0x02
|
|
#define wxTHUMBNAIL_ALT_DOWN 0x04
|
|
|
|
#define wxTHUMBNAIL_SORT_NAME_UP 1
|
|
#define wxTHUMBNAIL_SORT_NAME_DOWN 2
|
|
#define wxTHUMBNAIL_SORT_TIMESTAMP_UP 3
|
|
#define wxTHUMBNAIL_SORT_TIMESTAMP_DOWN 4
|
|
#define wxTHUMBNAIL_SORT_NUMERICALLY_UP 5
|
|
#define wxTHUMBNAIL_SORT_NUMERICALLY_DOWN 6
|
|
#define wxTHUMBNAIL_SORT_TYPE_UP 7
|
|
#define wxTHUMBNAIL_SORT_TYPE_DOWN 8
|
|
|
|
/* Defaults
|
|
*/
|
|
|
|
#define wxTHUMBNAIL_DEFAULT_OVERALL_SIZE wxSize(-1, -1)
|
|
#define wxTHUMBNAIL_DEFAULT_IMAGE_SIZE wxSize(80, 80)
|
|
#define wxTHUMBNAIL_DEFAULT_SPACING 3
|
|
#define wxTHUMBNAIL_DEFAULT_MARGIN 3
|
|
#define wxTHUMBNAIL_DEFAULT_UNFOCUSSED_BACKGROUND wxColour(175, 175, 175)
|
|
#define wxTHUMBNAIL_DEFAULT_FOCUSSED_BACKGROUND wxColour(140, 140, 140)
|
|
// #define wxTHUMBNAIL_DEFAULT_UNSELECTED_BACKGROUND wxColour(205, 205, 205)
|
|
#define wxTHUMBNAIL_DEFAULT_UNSELECTED_BACKGROUND wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE)
|
|
#define wxTHUMBNAIL_DEFAULT_TYPE_COLOUR wxColour(0, 0, 200)
|
|
#define wxTHUMBNAIL_DEFAULT_TAG_COLOUR wxColour(0, 0, 255)
|
|
#define wxTHUMBNAIL_DEFAULT_FOCUS_RECT_COLOUR wxColour(100, 80, 80)
|
|
|
|
/*!
|
|
* Forward declarations
|
|
*/
|
|
|
|
class wxThumbnailCtrl;
|
|
|
|
/*!
|
|
* wxThumbnailItem class declaration
|
|
*/
|
|
|
|
// Drawing styles/states
|
|
#define wxTHUMBNAIL_SELECTED 0x01
|
|
#define wxTHUMBNAIL_TAGGED 0x02
|
|
// The control is focussed
|
|
#define wxTHUMBNAIL_FOCUSSED 0x04
|
|
// The item itself has the focus
|
|
#define wxTHUMBNAIL_IS_FOCUS 0x08
|
|
|
|
class wxThumbnailItem: public wxObject
|
|
{
|
|
DECLARE_CLASS(wxThumbnailItem)
|
|
public:
|
|
// Constructors
|
|
|
|
wxThumbnailItem(const wxString& filename = wxEmptyString)
|
|
{ m_filename = filename; m_state = 0; }
|
|
|
|
// Accessors
|
|
|
|
/// Filename
|
|
void SetFilename(const wxString& filename) { m_filename = filename; }
|
|
const wxString& GetFilename() const { return m_filename; }
|
|
|
|
/// State storage while sorting
|
|
void SetState(int state) { m_state = state; }
|
|
int GetState() const { return m_state; }
|
|
|
|
// Overrideables
|
|
|
|
/// Draw the item
|
|
virtual bool Draw(wxDC& dc, wxThumbnailCtrl* ctrl, const wxRect& rect, int style) ;
|
|
|
|
/// Draw the background
|
|
virtual bool DrawBackground(wxDC& dc, wxThumbnailCtrl* ctrl, const wxRect& rect, const wxRect& imageRect, int style, int index) ;
|
|
|
|
/// Load the thumbnail
|
|
virtual bool Load(wxThumbnailCtrl* WXUNUSED(ctrl), bool WXUNUSED(forceLoad)) { return false; }
|
|
|
|
protected:
|
|
wxString m_filename;
|
|
int m_state; // state storage while sorting
|
|
};
|
|
|
|
/*!
|
|
* wxImageThumbnailItem class declaration
|
|
*/
|
|
|
|
class wxImageThumbnailItem: public wxThumbnailItem
|
|
{
|
|
DECLARE_CLASS(wxImageThumbnailItem)
|
|
public:
|
|
// Constructors
|
|
|
|
wxImageThumbnailItem(const wxString& filename = wxEmptyString):
|
|
wxThumbnailItem(filename) {}
|
|
|
|
// Overrideables
|
|
|
|
/// Draw the item
|
|
virtual bool Draw(wxDC& dc, wxThumbnailCtrl* ctrl, const wxRect& rect, int style) ;
|
|
|
|
/// Load the thumbnail
|
|
virtual bool Load(wxThumbnailCtrl* ctrl, bool forceLoad) ;
|
|
|
|
wxBitmap& GetCachedBitmap() { return m_cachedBitmap; }
|
|
|
|
protected:
|
|
wxBitmap m_cachedBitmap;
|
|
};
|
|
|
|
|
|
|
|
WX_DECLARE_OBJARRAY(wxThumbnailItem, wxThumbnailItemArray);
|
|
|
|
/*!
|
|
* wxThumbnailCtrl class declaration
|
|
*/
|
|
|
|
class wxThumbnailCtrl: public wxScrolledWindow
|
|
{
|
|
DECLARE_CLASS( wxThumbnailCtrl )
|
|
DECLARE_EVENT_TABLE()
|
|
|
|
public:
|
|
// Constructors
|
|
|
|
wxThumbnailCtrl( );
|
|
wxThumbnailCtrl( wxWindow* parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
|
long style = wxTH_TEXT_LABEL|wxTH_IMAGE_LABEL|wxTH_EXTENSION_LABEL );
|
|
|
|
// Operations
|
|
|
|
/// Creation
|
|
bool Create( wxWindow* parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
|
long style = wxTH_TEXT_LABEL|wxTH_IMAGE_LABEL|wxTH_EXTENSION_LABEL );
|
|
|
|
/// Member initialisation
|
|
void Init();
|
|
|
|
/// Call Freeze to prevent refresh
|
|
void Freeze();
|
|
|
|
/// Call Thaw to refresh
|
|
void Thaw();
|
|
|
|
/// Scrolls the item into view if necessary
|
|
void EnsureVisible(int n);
|
|
|
|
/// Forces a reload of this item's thumbnail image
|
|
void Reload(int n);
|
|
|
|
/// Finds an item that matches a given filename
|
|
int FindItemForFilename(const wxString& filename);
|
|
|
|
/// Sorts items in the specified way
|
|
void Sort(int sortMode);
|
|
|
|
/// Draws the item. Normally you override function in wxThumbnailItem.
|
|
virtual bool DrawItem(int n, wxDC& dc, const wxRect& rect, int style) ;
|
|
|
|
/// Draws the background for the item, including bevel
|
|
virtual bool DrawItemBackground(int n, wxDC& dc, const wxRect& rect, const wxRect& imageRect, int style) ;
|
|
|
|
// Adding items
|
|
|
|
/// Append a single item
|
|
virtual int Append(wxThumbnailItem* item);
|
|
|
|
/// Insert a single item
|
|
virtual int Insert(wxThumbnailItem* item, int pos = 0);
|
|
|
|
// Deleting items
|
|
|
|
/// Clear all items
|
|
virtual void Clear() ;
|
|
|
|
/// Delete this item
|
|
virtual void Delete(int n) ;
|
|
|
|
// Accessing items
|
|
|
|
/// Get the number of items in the control
|
|
virtual int GetCount() const { return m_items.GetCount(); }
|
|
|
|
/// Is the control empty?
|
|
bool IsEmpty() const { return GetCount() == 0; }
|
|
|
|
/// Get the nth item
|
|
wxThumbnailItem* GetItem(int n);
|
|
|
|
/// Get the overall rect of the given item
|
|
/// If transform is true, rect is relative to the scroll viewport
|
|
/// (i.e. may be negative)
|
|
bool GetItemRect(int item, wxRect& rect, bool transform = true);
|
|
|
|
/// Get the image rect of the given item
|
|
bool GetItemRectImage(int item, wxRect& rect, bool transform = true);
|
|
|
|
/// Return the row and column given the client
|
|
/// size and a left-to-right, top-to-bottom layout
|
|
/// assumption
|
|
bool GetRowCol(int item, const wxSize& clientSize, int& row, int& col);
|
|
|
|
/// Get the focus item, or -1 if there is none
|
|
int GetFocusItem() const { return m_focusItem; }
|
|
|
|
/// Set the focus item
|
|
void SetFocusItem(int item) ;
|
|
|
|
// Selection
|
|
|
|
/// Select or deselect an item
|
|
void Select(int n, bool select = true) ;
|
|
|
|
/// Select or deselect a range
|
|
void SelectRange(int from, int to, bool select = true) ;
|
|
|
|
/// Tag or untag an item
|
|
void Tag(int n, bool tag = true) ;
|
|
|
|
/// Select all
|
|
void SelectAll() ;
|
|
|
|
/// Select none
|
|
void SelectNone() ;
|
|
|
|
/// Get the index of the single selection, if not multi-select.
|
|
/// Returns -1 if there is no selection.
|
|
int GetSelection() const ;
|
|
|
|
/// Get indexes of all selections, if multi-select
|
|
const wxArrayInt& GetSelections() const { return m_selections; }
|
|
|
|
/// Get indexes of all tags
|
|
const wxArrayInt& GetTags() const { return m_tags; }
|
|
|
|
/// Returns true if the item is selected
|
|
bool IsSelected(int n) const ;
|
|
|
|
/// Returns true if the item is tagged
|
|
bool IsTagged(int n) const ;
|
|
|
|
/// Clears all selections
|
|
void ClearSelections();
|
|
|
|
/// Clears all tags
|
|
void ClearTags();
|
|
|
|
// Visual properties
|
|
|
|
/// The overall size of the thumbnail, including decorations.
|
|
/// DON'T USE THIS from the application, since it will
|
|
/// normally be calculated by SetThumbnailImageSize.
|
|
void SetThumbnailOverallSize(const wxSize& sz) { m_thumbnailOverallSize = sz; }
|
|
const wxSize& GetThumbnailOverallSize() const { return m_thumbnailOverallSize; }
|
|
|
|
/// The size of the image part
|
|
void SetThumbnailImageSize(const wxSize& sz);
|
|
const wxSize& GetThumbnailImageSize() const { return m_thumbnailImageSize; }
|
|
|
|
/// The inter-item spacing
|
|
void SetSpacing(int spacing) { m_spacing = spacing; }
|
|
int GetSpacing() const { return m_spacing; }
|
|
|
|
/// The margin between elements within the thumbnail
|
|
void SetThumbnailMargin(int margin) { m_thumbnailMargin = margin; }
|
|
int GetThumbnailMargin() const { return m_thumbnailMargin; }
|
|
|
|
/// The height required for text in the thumbnail
|
|
void SetThumbnailTextHeight(int h) { m_thumbnailTextHeight = h; }
|
|
int GetThumbnailTextHeight() const { return m_thumbnailTextHeight; }
|
|
|
|
/// The focussed and unfocussed background colour for a
|
|
/// selected thumbnail
|
|
void SetSelectedThumbnailBackgroundColour(const wxColour& focussedColour, const wxColour& unfocussedColour)
|
|
{
|
|
m_focussedThumbnailBackgroundColour = focussedColour; m_unfocussedThumbnailBackgroundColour = unfocussedColour;
|
|
}
|
|
const wxColour& GetSelectedThumbnailFocussedBackgroundColour() const { return m_focussedThumbnailBackgroundColour; }
|
|
const wxColour& GetSelectedThumbnailUnfocussedBackgroundColour() const { return m_unfocussedThumbnailBackgroundColour; }
|
|
|
|
/// The unselected background colour for a thumbnail
|
|
void SetUnselectedThumbnailBackgroundColour(const wxColour& colour) { m_unselectedThumbnailBackgroundColour = colour; }
|
|
const wxColour& GetUnselectedThumbnailBackgroundColour() const { return m_unselectedThumbnailBackgroundColour; }
|
|
|
|
/// The colour for the type text (top left of thumbnail)
|
|
void SetTypeColour(const wxColour& colour) { m_typeColour = colour; }
|
|
const wxColour& GetTypeColour() const { return m_typeColour; }
|
|
|
|
/// The colour for the tag outline
|
|
void SetTagColour(const wxColour& colour) { m_tagColour = colour; }
|
|
const wxColour& GetTagColour() const { return m_tagColour; }
|
|
|
|
/// The focus rectangle pen colour
|
|
void SetFocusRectColour(const wxColour& colour) { m_focusRectColour = colour; }
|
|
const wxColour& GetFocusRectColour() const { return m_focusRectColour; }
|
|
|
|
// Command handlers
|
|
|
|
void OnSelectAll(wxCommandEvent& event);
|
|
void OnUpdateSelectAll(wxUpdateUIEvent& event);
|
|
|
|
// Event handlers
|
|
|
|
/// Painting
|
|
void OnPaint(wxPaintEvent& event);
|
|
void OnEraseBackground(wxEraseEvent& event);
|
|
|
|
/// Left-click
|
|
void OnLeftClick(wxMouseEvent& event);
|
|
|
|
/// Left-double-click
|
|
void OnLeftDClick(wxMouseEvent& event);
|
|
|
|
/// Middle-click
|
|
void OnMiddleClick(wxMouseEvent& event);
|
|
|
|
/// Right-click
|
|
void OnRightClick(wxMouseEvent& event);
|
|
|
|
/// Key press
|
|
void OnChar(wxKeyEvent& event);
|
|
|
|
/// Sizing
|
|
void OnSize(wxSizeEvent& event);
|
|
|
|
/// Setting/losing focus
|
|
void OnSetFocus(wxFocusEvent& event);
|
|
void OnKillFocus(wxFocusEvent& event);
|
|
|
|
// Implementation
|
|
|
|
/// Set up scrollbars, e.g. after a resize
|
|
void SetupScrollbars();
|
|
|
|
/// Calculate the outer thumbnail size based
|
|
/// on font used for text and inner size
|
|
void CalculateOverallThumbnailSize();
|
|
|
|
/// Do (de)selection
|
|
void DoSelection(int n, int flags);
|
|
|
|
/// Find the item under the given point
|
|
bool HitTest(const wxPoint& pt, int& n);
|
|
|
|
/// Keyboard navigation
|
|
virtual bool Navigate(int keyCode, int flags);
|
|
|
|
/// Scroll to see the image
|
|
void ScrollIntoView(int n, int keyCode);
|
|
|
|
/// Paint the background
|
|
void PaintBackground(wxDC& dc);
|
|
|
|
/// Recreate buffer bitmap if necessary
|
|
bool RecreateBuffer(const wxSize& size = wxDefaultSize);
|
|
|
|
/// Get tag bitmap
|
|
const wxBitmap& GetTagBitmap() const { return m_tagBitmap; }
|
|
|
|
/// Get/set sort mode
|
|
void SetSortMode(int sortMode) { m_sortMode = sortMode; }
|
|
int GetSortMode() const { return m_sortMode ; }
|
|
|
|
static wxThumbnailCtrl* GetThumbnailCtrl() { return sm_currentThumbnailCtrl; }
|
|
|
|
// Overrides
|
|
wxSize DoGetBestSize() const ;
|
|
|
|
// Data members
|
|
private:
|
|
|
|
/// The items
|
|
wxThumbnailItemArray m_items;
|
|
|
|
/// The selections
|
|
wxArrayInt m_selections;
|
|
|
|
/// The tags
|
|
wxArrayInt m_tags;
|
|
|
|
/// Outer size of the thumbnail item
|
|
wxSize m_thumbnailOverallSize;
|
|
|
|
/// Image size of the thumbnail item
|
|
wxSize m_thumbnailImageSize;
|
|
|
|
/// The inter-item spacing
|
|
int m_spacing;
|
|
|
|
/// The margin between the image/text and the edge of the thumbnail
|
|
int m_thumbnailMargin;
|
|
|
|
/// The height of thumbnail text in the current font
|
|
int m_thumbnailTextHeight;
|
|
|
|
/// Allows nested Freeze/Thaw
|
|
int m_freezeCount;
|
|
|
|
/// First selection in a range
|
|
int m_firstSelection;
|
|
|
|
/// Last selection
|
|
int m_lastSelection;
|
|
|
|
/// Focus item
|
|
int m_focusItem;
|
|
|
|
/// Tag marker bitmap
|
|
wxBitmap m_tagBitmap;
|
|
|
|
/// Sort mode
|
|
int m_sortMode;
|
|
|
|
/// Current control, used in sorting
|
|
static wxThumbnailCtrl* sm_currentThumbnailCtrl;
|
|
|
|
/// Focussed/unfocussed selected thumbnail background colours
|
|
wxColour m_focussedThumbnailBackgroundColour;
|
|
wxColour m_unfocussedThumbnailBackgroundColour;
|
|
wxColour m_unselectedThumbnailBackgroundColour;
|
|
wxColour m_focusRectColour;
|
|
|
|
/// Type text colour
|
|
wxColour m_typeColour;
|
|
|
|
/// Tag colour
|
|
wxColour m_tagColour;
|
|
|
|
/// Buffer bitmap
|
|
wxBitmap m_bufferBitmap;
|
|
};
|
|
|
|
/*!
|
|
* wxThumbnailEvent - the event class for wxThumbnailCtrl notifications
|
|
*/
|
|
|
|
class wxThumbnailEvent : public wxNotifyEvent
|
|
{
|
|
public:
|
|
wxThumbnailEvent(wxEventType commandType = wxEVT_NULL, int winid = 0)
|
|
: wxNotifyEvent(commandType, winid),
|
|
m_itemIndex(-1), m_flags(0)
|
|
{ }
|
|
|
|
wxThumbnailEvent(const wxThumbnailEvent& event)
|
|
: wxNotifyEvent(event),
|
|
m_itemIndex(event.m_itemIndex), m_flags(event.m_flags)
|
|
{ }
|
|
|
|
int GetIndex() const { return m_itemIndex; }
|
|
void SetIndex(int n) { m_itemIndex = n; }
|
|
|
|
int GetFlags() const { return m_flags; }
|
|
void SetFlags(int flags) { m_flags = flags; }
|
|
|
|
virtual wxEvent *Clone() const { return new wxThumbnailEvent(*this); }
|
|
|
|
protected:
|
|
int m_itemIndex;
|
|
int m_flags;
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxThumbnailEvent)
|
|
};
|
|
|
|
/*!
|
|
* wxThumbnailCtrl event macros
|
|
*/
|
|
|
|
BEGIN_DECLARE_EVENT_TYPES()
|
|
DECLARE_EVENT_TYPE(wxEVT_COMMAND_THUMBNAIL_ITEM_SELECTED, 2600)
|
|
DECLARE_EVENT_TYPE(wxEVT_COMMAND_THUMBNAIL_ITEM_DESELECTED, 2601)
|
|
DECLARE_EVENT_TYPE(wxEVT_COMMAND_THUMBNAIL_LEFT_CLICK, 2602)
|
|
DECLARE_EVENT_TYPE(wxEVT_COMMAND_THUMBNAIL_RIGHT_CLICK, 2603)
|
|
DECLARE_EVENT_TYPE(wxEVT_COMMAND_THUMBNAIL_MIDDLE_CLICK, 2604)
|
|
DECLARE_EVENT_TYPE(wxEVT_COMMAND_THUMBNAIL_LEFT_DCLICK, 2605)
|
|
DECLARE_EVENT_TYPE(wxEVT_COMMAND_THUMBNAIL_RETURN, 2606)
|
|
END_DECLARE_EVENT_TYPES()
|
|
|
|
typedef void (wxEvtHandler::*wxThumbnailEventFunction)(wxThumbnailEvent&);
|
|
|
|
#define EVT_THUMBNAIL_ITEM_SELECTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_THUMBNAIL_ITEM_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxThumbnailEventFunction, & fn ), NULL ),
|
|
#define EVT_THUMBNAIL_ITEM_DESELECTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_THUMBNAIL_ITEM_DESELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxThumbnailEventFunction, & fn ), NULL ),
|
|
#define EVT_THUMBNAIL_LEFT_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_THUMBNAIL_LEFT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxThumbnailEventFunction, & fn ), NULL ),
|
|
#define EVT_THUMBNAIL_RIGHT_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_THUMBNAIL_RIGHT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxThumbnailEventFunction, & fn ), NULL ),
|
|
#define EVT_THUMBNAIL_MIDDLE_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_THUMBNAIL_MIDDLE_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxThumbnailEventFunction, & fn ), NULL ),
|
|
#define EVT_THUMBNAIL_LEFT_DCLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_THUMBNAIL_LEFT_DCLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxThumbnailEventFunction, & fn ), NULL ),
|
|
#define EVT_THUMBNAIL_RETURN(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_THUMBNAIL_RETURN, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxThumbnailEventFunction, & fn ), NULL ),
|
|
|
|
#endif
|
|
// _WX_THUMBNAILCTRL_H_
|