#include "wx/scrolbar.h"
#include "wx/slider.h"
#include "wx/textctrl.h"
- #include "wx/listbox.h"
#include "wx/toolbar.h"
#include "wx/statusbr.h"
#endif
#include "wx/menu.h"
#include "wx/settings.h"
+ #include "wx/toplevel.h"
+ #include "wx/image.h"
#endif // WX_PRECOMP
#include "wx/notebook.h"
#include "wx/spinbutt.h"
#include "wx/artprov.h"
-#include "wx/toplevel.h"
-#include "wx/image.h"
#ifdef wxUSE_TOGGLEBTN
#include "wx/tglbtn.h"
#endif // wxUSE_TOGGLEBTN
int flags = 0,
wxAlignment align = wxALIGN_LEFT,
int indexAccel = -1);
+#if wxUSE_TOOLBAR
virtual void DrawToolBarButton(wxDC& dc,
const wxString& label,
const wxBitmap& bitmap,
const wxRect& rect,
int flags = 0,
- long style = 0);
+ long style = 0,
+ int tbarStyle = 0);
+#endif // wxUSE_TOOLBAR
virtual void DrawTextLine(wxDC& dc,
const wxString& text,
const wxRect& rect,
int flags = 0,
int indexAccel = -1);
+#if wxUSE_SLIDER
virtual void DrawSliderShaft(wxDC& dc,
const wxRect& rect,
int lenThumb,
int step = 1,
int flags = 0,
long style = 0);
+#endif // wxUSE_SLIDER
+#if wxUSE_MENUS
virtual void DrawMenuBarItem(wxDC& dc,
const wxRect& rect,
const wxString& label,
virtual void DrawMenuSeparator(wxDC& dc,
wxCoord y,
const wxMenuGeometryInfo& geomInfo);
+#endif // wxUSE_MENUS
+#if wxUSE_STATUSBAR
virtual void DrawStatusField(wxDC& dc,
const wxRect& rect,
const wxString& label,
int flags = 0, int style = 0);
+#endif // wxUSE_STATUSBAR
// titlebars
virtual void DrawFrameTitleBar(wxDC& dc,
virtual wxSize GetScrollbarArrowSize() const
{ return m_sizeScrollbarArrow; }
+
+#if wxUSE_SCROLLBAR
virtual wxRect GetScrollbarRect(const wxScrollBar *scrollbar,
wxScrollBar::Element elem,
int thumbPos = -1) const;
virtual wxCoord ScrollbarToPixel(const wxScrollBar *scrollbar,
int thumbPos = -1);
virtual int PixelToScrollbar(const wxScrollBar *scrollbar, wxCoord coord);
+#endif // wxUSE_SCROLLBAR
+
virtual wxCoord GetListboxItemHeight(wxCoord fontHeight)
{ return fontHeight + 2; }
virtual wxSize GetCheckBitmapSize() const
virtual wxSize GetToolBarMargin() const
{ return wxSize(4, 4); }
+#if wxUSE_TEXTCTRL
virtual wxRect GetTextTotalArea(const wxTextCtrl *text,
const wxRect& rect) const;
virtual wxRect GetTextClientArea(const wxTextCtrl *text,
const wxRect& rect,
wxCoord *extraSpaceBeyond) const;
+#endif // wxUSE_TEXTCTRL
virtual wxSize GetTabIndent() const { return wxSize(2, 2); }
virtual wxSize GetTabPadding() const { return wxSize(6, 5); }
+#if wxUSE_SLIDER
+
virtual wxCoord GetSliderDim() const { return SLIDER_THUMB_LENGTH + 2*BORDER_THICKNESS; }
virtual wxCoord GetSliderTickLen() const { return SLIDER_TICK_LENGTH; }
virtual wxRect GetSliderShaftRect(const wxRect& rect,
virtual wxSize GetSliderThumbSize(const wxRect& rect,
int lenThumb,
wxOrientation orient) const;
+#endif // wxUSE_SLIDER
+
virtual wxSize GetProgressBarStep() const { return wxSize(16, 32); }
+#if wxUSE_MENUS
virtual wxSize GetMenuBarItemSize(const wxSize& sizeText) const;
virtual wxMenuGeometryInfo *GetMenuGeometry(wxWindow *win,
const wxMenu& menu) const;
+#endif // wxUSE_MENUS
+#if wxUSE_STATUSBAR
virtual wxSize GetStatusBarBorders(wxCoord *borderBetweenFields) const;
+#endif // wxUSE_STATUSBAR
protected:
// helper of DrawLabel() and DrawCheckOrRadioButton()
wxWin32Renderer *m_renderer;
};
+#if wxUSE_SCROLLBAR
class wxWin32ScrollBarInputHandler : public wxStdScrollBarInputHandler
{
public:
// we remember the interval of the timer to be able to restart it
int m_interval;
};
+#endif // wxUSE_SCROLLBAR
+#if wxUSE_CHECKBOX
class wxWin32CheckboxInputHandler : public wxStdCheckboxInputHandler
{
public:
const wxKeyEvent& event,
bool pressed);
};
+#endif // wxUSE_CHECKBOX
+#if wxUSE_TEXTCTRL
class wxWin32TextCtrlInputHandler : public wxStdTextCtrlInputHandler
{
public:
const wxKeyEvent& event,
bool pressed);
};
+#endif // wxUSE_TEXTCTRL
class wxWin32StatusBarInputHandler : public wxStdInputHandler
{
virtual bool HandleActivation(wxInputConsumer *consumer, bool activated);
+#if wxUSE_MENUS
void PopupSystemMenu(wxTopLevelWindow *window, const wxPoint& pos) const;
+#endif // wxUSE_MENUS
private:
// was the mouse over the grip last time we checked?
wxInputHandler *wxWin32Theme::GetInputHandler(const wxString& control)
{
- wxInputHandler *handler;
+ wxInputHandler *handler = NULL;
int n = m_handlerNames.Index(control);
if ( n == wxNOT_FOUND )
{
// create a new handler
if ( control == wxINP_HANDLER_SCROLLBAR )
+ {
+#if wxUSE_SCROLLBAR
handler = new wxWin32ScrollBarInputHandler(m_renderer,
GetDefaultInputHandler());
+#endif // wxUSE_SCROLLBAR
+ }
#if wxUSE_BUTTON
else if ( control == wxINP_HANDLER_BUTTON )
handler = new wxStdButtonInputHandler(GetDefaultInputHandler());
#endif // wxUSE_TOOLBAR
else if ( control == wxINP_HANDLER_TOPLEVEL )
handler = new wxWin32FrameInputHandler(GetDefaultInputHandler());
- else
+
+ if(!handler)
handler = GetDefaultInputHandler();
n = m_handlerNames.Add(control);
if ( !win->ShouldInheritColours() )
{
+#if wxUSE_TEXTCTRL
wxTextCtrl *text = wxDynamicCast(win, wxTextCtrl);
+#endif // wxUSE_TEXTCTRL
#if wxUSE_LISTBOX
wxListBox* listBox = wxDynamicCast(win, wxListBox);
-#endif
+#endif // wxUSE_LISTBOX
+
+#if wxUSE_TEXTCTRL
if ( text
#if wxUSE_LISTBOX
|| listBox
}
}
}
+#endif // wxUSE_TEXTCTRL
if (!col.Ok())
col = Get(CONTROL); // Most controls should be this colour, not WINDOW
// and for the states for which we don't have any specific colours
if ( !col.Ok() || (flags & wxCONTROL_PRESSED) != 0 )
{
+#if wxUSE_SCROLLBAR
if ( wxDynamicCast(win, wxScrollBar) )
col = Get(flags & wxCONTROL_PRESSED ? SCROLLBAR_PRESSED
: SCROLLBAR);
else
+#endif // wxUSE_SCROLLBAR
col = Get(CONTROL);
}
}
0); // no focus rect offset for checkboxes
}
+#if wxUSE_TOOLBAR
void wxWin32Renderer::DrawToolBarButton(wxDC& dc,
const wxString& label,
const wxBitmap& bitmap,
const wxRect& rectOrig,
int flags,
- long style)
+ long style,
+ int tbarStyle)
{
if (style == wxTOOL_STYLE_BUTTON)
{
DrawBorder(dc, wxBORDER_RAISED, rect, flags);
}
- dc.DrawLabel(label, bitmap, rect, wxALIGN_CENTRE);
+ if(tbarStyle & wxTB_TEXT)
+ {
+ if(tbarStyle & wxTB_HORIZONTAL)
+ {
+ dc.DrawLabel(label, bitmap, rect, wxALIGN_CENTRE);
+ }
+ else
+ {
+ dc.DrawLabel(label, bitmap, rect, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL);
+ }
+ }
+ else
+ {
+ int xpoint = (rect.GetLeft() + rect.GetRight() + 1 - bitmap.GetWidth()) / 2;
+ int ypoint = (rect.GetTop() + rect.GetBottom() + 1 - bitmap.GetHeight()) / 2;
+ dc.DrawBitmap(bitmap, xpoint, ypoint);
+ }
}
else if (style == wxTOOL_STYLE_SEPARATOR)
{
}
// don't draw wxTOOL_STYLE_CONTROL
}
+#endif // wxUSE_TOOLBAR
// ----------------------------------------------------------------------------
// text control
dcMem.SetFont(dc.GetFont());
dcMem.SetTextForeground(dc.GetTextForeground());
dcMem.Clear();
- bitmapRotated = wxBitmap( wxImage( bitmap.ConvertToImage() ).Rotate90(dir==wxLEFT) );
+ bitmapRotated =
+#if wxUSE_IMAGE
+ wxBitmap( wxImage( bitmap.ConvertToImage() ).Rotate90(dir==wxLEFT) )
+#else
+ bitmap
+#endif // wxUSE_IMAGE
+ ;
DrawButtonLabel(dcMem, label, bitmapRotated, rectLabel,
flags, wxALIGN_CENTRE, indexAccel);
dcMem.SelectObject(wxNullBitmap);
bitmapMem = bitmapMem.GetSubBitmap(rectLabel);
+#if wxUSE_IMAGE
bitmapMem = wxBitmap(wxImage(bitmapMem.ConvertToImage()).Rotate90(dir==wxRIGHT));
+#endif // wxUSE_IMAGE
dc.DrawBitmap(bitmapMem, rectLabel.y, rectLabel.x, false);
}
else
#undef REVERSE_FOR_VERTICAL
}
+#if wxUSE_SLIDER
+
// ----------------------------------------------------------------------------
// slider
// ----------------------------------------------------------------------------
}
}
+#endif // wxUSE_SLIDER
+
+#if wxUSE_MENUS
+
// ----------------------------------------------------------------------------
// menu and menubar
// ----------------------------------------------------------------------------
return gi;
}
+#endif // wxUSE_MENUS
+
+#if wxUSE_STATUSBAR
+
// ----------------------------------------------------------------------------
// status bar
// ----------------------------------------------------------------------------
DrawLabel(dc, label, rectIn, flags, wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL);
}
+#endif // wxUSE_STATUSBAR
+
// ----------------------------------------------------------------------------
// combobox
// ----------------------------------------------------------------------------
DoDrawBackground(dc, wxSCHEME_COLOUR(m_scheme, CONTROL), rect);
}
+#if wxUSE_SCROLLBAR
+
wxRect wxWin32Renderer::GetScrollbarRect(const wxScrollBar *scrollbar,
wxScrollBar::Element elem,
int thumbPos) const
return StandardPixelToScrollbar(scrollbar, coord, m_sizeScrollbarArrow);
}
+#endif // wxUSE_SCROLLBAR
+
// ----------------------------------------------------------------------------
// top level windows
// ----------------------------------------------------------------------------
}
+#if wxUSE_TEXTCTRL
+
// ----------------------------------------------------------------------------
// text control geometry
// ----------------------------------------------------------------------------
return rectText;
}
+#endif // wxUSE_TEXTCTRL
+
// ----------------------------------------------------------------------------
// size adjustments
// ----------------------------------------------------------------------------
return false;
}
+#if wxUSE_SCROLLBAR
+
// ----------------------------------------------------------------------------
// wxWin32ScrollBarInputHandler
// ----------------------------------------------------------------------------
return wxStdScrollBarInputHandler::HandleMouseMove(control, event);
}
+#endif // wxUSE_SCROLLBAR
+
+#if wxUSE_CHECKBOX
+
// ----------------------------------------------------------------------------
// wxWin32CheckboxInputHandler
// ----------------------------------------------------------------------------
return false;
}
+#endif // wxUSE_CHECKBOX
+
+#if wxUSE_TEXTCTRL
+
// ----------------------------------------------------------------------------
// wxWin32TextCtrlInputHandler
// ----------------------------------------------------------------------------
return wxStdTextCtrlInputHandler::HandleKey(control, event, pressed);
}
+#endif // wxUSE_TEXTCTRL
+
+#if wxUSE_STATUSBAR
+
// ----------------------------------------------------------------------------
// wxWin32StatusBarInputHandler
// ----------------------------------------------------------------------------
return wxStdInputHandler::HandleMouseMove(consumer, event);
}
+#endif // wxUSE_STATUSBAR
+
// ----------------------------------------------------------------------------
// wxWin32FrameInputHandler
// ----------------------------------------------------------------------------
m_wnd->SetAcceleratorTable(wxNullAcceleratorTable);
#endif
+#if wxUSE_MENUS
m_inputHnd->PopupSystemMenu(m_wnd, pt);
+#endif // wxUSE_MENUS
#if wxUSE_ACCEL
m_wnd->SetAcceleratorTable(table);
(hit == wxHT_TOPLEVEL_TITLEBAR ||
hit == wxHT_TOPLEVEL_ICON)) )
{
+#if wxUSE_MENUS
PopupSystemMenu(tlw, event.GetPosition());
+#endif // wxUSE_MENUS
return true;
}
}
return wxStdFrameInputHandler::HandleMouse(consumer, event);
}
+#if wxUSE_MENUS
+
void wxWin32FrameInputHandler::PopupSystemMenu(wxTopLevelWindow *window,
const wxPoint& pos) const
{
delete menu;
}
+#endif // wxUSE_MENUS
+
bool wxWin32FrameInputHandler::HandleActivation(wxInputConsumer *consumer,
bool activated)
{