added wxRendererNative to be used by the generic controls for rendering platfomr-specific parts
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22151 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -417,9 +417,6 @@ protected:
|
||||
|
||||
wxTimer *m_renameTimer;
|
||||
|
||||
wxBitmap *m_arrowRight,
|
||||
*m_arrowDown;
|
||||
|
||||
// incremental search data
|
||||
wxString m_findPrefix;
|
||||
wxTimer *m_findTimer;
|
||||
|
116
include/wx/renderer.h
Normal file
116
include/wx/renderer.h
Normal file
@@ -0,0 +1,116 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/renderer.h
|
||||
// Purpose: wxRendererNative class declaration
|
||||
// Author: Vadim Zeitlin
|
||||
// Modified by:
|
||||
// Created: 20.07.2003
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) 2003 Vadim Zeitlin <vadim@wxwindows.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/*
|
||||
Renderers are used in wxWindows for two similar but different things:
|
||||
(a) wxUniversal uses them to draw everything, i.e. all the control
|
||||
(b) all the native ports use them to draw generic controls only
|
||||
|
||||
wxUniversal needs more functionality than what is included in the base class
|
||||
as it needs to draw stuff like scrollbars which are never going to be
|
||||
generic. So we put the bare minimum needed by the native ports here and the
|
||||
full wxRenderer class is declared in wx/univ/renderer.h and is only used by
|
||||
wxUniveral (although note that native ports can load wxRenderer objects from
|
||||
theme DLLs and use them as wxRendererNative ones, of course).
|
||||
*/
|
||||
|
||||
#ifndef _WX_RENDERER_H_
|
||||
#define _WX_RENDERER_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// constants
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// control state flags used in wxRenderer and wxColourScheme
|
||||
enum
|
||||
{
|
||||
wxCONTROL_DISABLED = 0x00000001, // control is disabled
|
||||
wxCONTROL_FOCUSED = 0x00000002, // currently has keyboard focus
|
||||
wxCONTROL_PRESSED = 0x00000004, // (button) is pressed
|
||||
wxCONTROL_ISDEFAULT = 0x00000008, // only applies to the buttons
|
||||
wxCONTROL_ISSUBMENU = wxCONTROL_ISDEFAULT, // only for menu items
|
||||
wxCONTROL_EXPANDED = wxCONTROL_ISDEFAULT, // only for the tree items
|
||||
wxCONTROL_CURRENT = 0x00000010, // mouse is currently over the control
|
||||
wxCONTROL_SELECTED = 0x00000020, // selected item in e.g. listbox
|
||||
wxCONTROL_CHECKED = 0x00000040, // (check/radio button) is checked
|
||||
wxCONTROL_CHECKABLE = 0x00000080, // (menu) item can be checked
|
||||
|
||||
wxCONTROL_FLAGS_MASK = 0x000000ff,
|
||||
|
||||
// this is a pseudo flag not used directly by wxRenderer but rather by some
|
||||
// controls internally
|
||||
wxCONTROL_DIRTY = 0x80000000
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxRendererNative: abstracts drawing methods needed by the native controls
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxRendererNative
|
||||
{
|
||||
public:
|
||||
// drawing functions
|
||||
// -----------------
|
||||
|
||||
// draw the header control button (used by wxListCtrl)
|
||||
virtual void DrawHeaderButton(wxWindow *win,
|
||||
wxDC& dc,
|
||||
const wxRect& rect,
|
||||
int flags = 0) = 0;
|
||||
|
||||
// draw the expanded/collapsed icon for a tree control item
|
||||
virtual void DrawTreeItemButton(wxWindow *win,
|
||||
wxDC& dc,
|
||||
const wxRect& rect,
|
||||
int flags = 0) = 0;
|
||||
|
||||
|
||||
// pseudo constructors
|
||||
// -------------------
|
||||
|
||||
// return the currently used renderer
|
||||
static wxRendererNative& Get();
|
||||
|
||||
// return the generic implementation of the renderer
|
||||
static wxRendererNative& GetGeneric();
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDelegateRendererNative: allows reuse of renderers code
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxDelegateRendererNative : public wxRendererNative
|
||||
{
|
||||
public:
|
||||
wxDelegateRendererNative()
|
||||
: m_rendererNative(GetGeneric()) { }
|
||||
|
||||
wxDelegateRendererNative(wxRendererNative& rendererNative)
|
||||
: m_rendererNative(rendererNative) { }
|
||||
|
||||
|
||||
virtual void DrawHeaderButton(wxWindow *win,
|
||||
wxDC& dc,
|
||||
const wxRect& rect,
|
||||
int flags = 0)
|
||||
{ m_rendererNative.DrawHeaderButton(win, dc, rect, flags); }
|
||||
virtual void DrawTreeItemButton(wxWindow *win,
|
||||
wxDC& dc,
|
||||
const wxRect& rect,
|
||||
int flags = 0)
|
||||
{ m_rendererNative.DrawTreeItemButton(win, dc, rect, flags); }
|
||||
|
||||
protected:
|
||||
wxRendererNative& m_rendererNative;
|
||||
};
|
||||
|
||||
#endif // _WX_RENDERER_H_
|
||||
|
@@ -122,34 +122,33 @@ enum wxTreeItemIcon
|
||||
wxTreeItemIcon_Max
|
||||
};
|
||||
|
||||
/*
|
||||
* wxTreeCtrl flags
|
||||
*/
|
||||
// TODO: maybe renumber these?
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxTreeCtrl flags
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#define wxTR_NO_BUTTONS 0x0000 // for convenience
|
||||
#define wxTR_HAS_BUTTONS 0x0001 // generates a +/- button
|
||||
#define wxTR_TWIST_BUTTONS 0x0002 // generates a twister button
|
||||
#define wxTR_NO_LINES 0x0004 // don't generate level connectors
|
||||
#define wxTR_HAS_BUTTONS 0x0001 // draw collapsed/expanded btns
|
||||
#define wxTR_NO_LINES 0x0004 // don't draw lines at all
|
||||
#define wxTR_LINES_AT_ROOT 0x0008 // connect top-level nodes
|
||||
#define wxTR_MAC_BUTTONS wxTR_TWIST_BUTTONS // backward compatibility
|
||||
#define wxTR_AQUA_BUTTONS 0x0010 // used internally
|
||||
|
||||
#define wxTR_SINGLE 0x0000 // for convenience
|
||||
#define wxTR_MULTIPLE 0x0020 // can select multiple items
|
||||
#define wxTR_EXTENDED 0x0040 // TODO: allow extended selection
|
||||
#define wxTR_FULL_ROW_HIGHLIGHT 0x2000 // highlight full horizontal space
|
||||
#define wxTR_HAS_VARIABLE_ROW_HEIGHT 0x0080 // what it says
|
||||
|
||||
#define wxTR_EDIT_LABELS 0x0200 // can edit item labels
|
||||
#define wxTR_ROW_LINES 0x0400 // put border around items
|
||||
#define wxTR_HIDE_ROOT 0x0800 // don't display root node
|
||||
#define wxTR_HAS_VARIABLE_ROW_HEIGHT 0x0080 // what it says
|
||||
|
||||
// TODO: different default styles for wxGTK, wxMotif, whatever?
|
||||
#ifdef __WXMAC__
|
||||
#define wxTR_DEFAULT_STYLE (wxTR_TWIST_BUTTONS|wxTR_NO_LINES|wxTR_ROW_LINES)
|
||||
#else
|
||||
#define wxTR_DEFAULT_STYLE (wxTR_HAS_BUTTONS|wxTR_LINES_AT_ROOT)
|
||||
#endif
|
||||
#define wxTR_FULL_ROW_HIGHLIGHT 0x2000 // highlight full horz space
|
||||
|
||||
#define wxTR_DEFAULT_STYLE (wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT)
|
||||
|
||||
// deprecated, don't use
|
||||
#define wxTR_TWIST_BUTTONS 0
|
||||
#define wxTR_MAC_BUTTONS 0
|
||||
#define wxTR_AQUA_BUTTONS 0
|
||||
|
||||
|
||||
// values for the `flags' parameter of wxTreeCtrl::HitTest() which determine
|
||||
// where exactly the specified point is situated:
|
||||
|
@@ -18,7 +18,11 @@
|
||||
renderers and provide the functionality which is often similar or identical
|
||||
in all renderers (using inheritance here would be more restrictive as the
|
||||
given concrete renderer may need an arbitrary subset of the base class
|
||||
methods)
|
||||
methods).
|
||||
|
||||
Finally note that wxRenderer supersedes wxRendererNative in wxUniv build and
|
||||
includes the latters functionality (which it may delegate to the generic
|
||||
implementation of the latter or reimplement itself).
|
||||
*/
|
||||
|
||||
#ifdef __GNUG__
|
||||
@@ -28,6 +32,8 @@
|
||||
#ifndef _WX_UNIV_RENDERER_H_
|
||||
#define _WX_UNIV_RENDERER_H_
|
||||
|
||||
#include "wx/renderer.h"
|
||||
|
||||
class WXDLLEXPORT wxDC;
|
||||
class WXDLLEXPORT wxCheckListBox;
|
||||
class WXDLLEXPORT wxListBox;
|
||||
@@ -59,7 +65,7 @@ public:
|
||||
// wxRenderer: abstract renderers interface
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxRenderer
|
||||
class WXDLLEXPORT wxRenderer : public wxDelegateRendererNative
|
||||
{
|
||||
public:
|
||||
// drawing functions
|
||||
@@ -458,6 +464,7 @@ public:
|
||||
// virtual dtor for any base class
|
||||
virtual ~wxRenderer();
|
||||
|
||||
|
||||
protected:
|
||||
// draw a frame around rectFrame rectangle but not touching the rectLabel
|
||||
// one: this is used by DrawFrame()
|
||||
@@ -821,6 +828,17 @@ public:
|
||||
int flags) const
|
||||
{ return m_renderer->HitTestFrame(rect, pt, flags); }
|
||||
|
||||
virtual void DrawHeaderButton(wxWindow *win,
|
||||
wxDC& dc,
|
||||
const wxRect& rect,
|
||||
int flags = 0)
|
||||
{ m_renderer->DrawHeaderButton(win, dc, rect, flags); }
|
||||
virtual void DrawTreeItemButton(wxWindow *win,
|
||||
wxDC& dc,
|
||||
const wxRect& rect,
|
||||
int flags = 0)
|
||||
{ m_renderer->DrawTreeItemButton(win, dc, rect, flags); }
|
||||
|
||||
protected:
|
||||
wxRenderer *m_renderer;
|
||||
};
|
||||
|
@@ -27,30 +27,6 @@ class WXDLLEXPORT wxMenuBar;
|
||||
class WXDLLEXPORT wxRenderer;
|
||||
class WXDLLEXPORT wxScrollBar;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// constants
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// control state flags used in wxRenderer and wxColourScheme
|
||||
enum
|
||||
{
|
||||
wxCONTROL_DISABLED = 0x00000001, // control is disabled
|
||||
wxCONTROL_FOCUSED = 0x00000002, // currently has keyboard focus
|
||||
wxCONTROL_PRESSED = 0x00000004, // (button) is pressed
|
||||
wxCONTROL_ISDEFAULT = 0x00000008, // only applies to the buttons
|
||||
wxCONTROL_ISSUBMENU = wxCONTROL_ISDEFAULT, // only for menu items
|
||||
wxCONTROL_CURRENT = 0x00000010, // mouse is currently over the control
|
||||
wxCONTROL_SELECTED = 0x00000020, // selected item in e.g. listbox
|
||||
wxCONTROL_CHECKED = 0x00000040, // (check/radio button) is checked
|
||||
wxCONTROL_CHECKABLE = 0x00000080, // (menu) item can be checked
|
||||
|
||||
wxCONTROL_FLAGS_MASK = 0x000000ff,
|
||||
|
||||
// this is a pseudo flag not used directly by wxRenderer but rather by some
|
||||
// controls internally
|
||||
wxCONTROL_DIRTY = 0x80000000
|
||||
};
|
||||
|
||||
#ifdef __WXX11__
|
||||
#define wxUSE_TWO_WINDOWS 1
|
||||
#else
|
||||
|
Reference in New Issue
Block a user