]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/palmos/button.cpp
first stab at supporting custom renderers
[wxWidgets.git] / src / palmos / button.cpp
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: src/palmos/button.cpp
3// Purpose: wxButton
4// Author: William Osborne - minimal working wxPalmOS port
5// Modified by: Wlodzimierz ABX Skiba - native wxButton implementation
6// Created: 10/13/04
7// RCS-ID: $Id$
8// Copyright: (c) William Osborne, Wlodzimierz Skiba
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12// ============================================================================
13// declarations
14// ============================================================================
15
16// ----------------------------------------------------------------------------
17// headers
18// ----------------------------------------------------------------------------
19
20// For compilers that support precompilation, includes "wx.h".
21#include "wx/wxprec.h"
22
23#ifdef __BORLANDC__
24 #pragma hdrstop
25#endif
26
27#if wxUSE_BUTTON
28
29#include "wx/button.h"
30
31#ifndef WX_PRECOMP
32 #include "wx/app.h"
33 #include "wx/brush.h"
34 #include "wx/panel.h"
35 #include "wx/bmpbuttn.h"
36 #include "wx/settings.h"
37 #include "wx/dcscreen.h"
38 #include "wx/frame.h"
39 #include "wx/dialog.h"
40#endif
41
42#include "wx/stockitem.h"
43
44#include <Control.h>
45#include <Form.h>
46
47// ----------------------------------------------------------------------------
48// macros
49// ----------------------------------------------------------------------------
50
51// this macro tries to adjust the default button height to a reasonable value
52// using the char height as the base
53#define BUTTON_HEIGHT_FROM_CHAR_HEIGHT(cy) (11*EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy)/10)
54
55// ============================================================================
56// implementation
57// ============================================================================
58
59// ----------------------------------------------------------------------------
60// creation/destruction
61// ----------------------------------------------------------------------------
62
63bool wxButton::Create(wxWindow *parent,
64 wxWindowID id,
65 const wxString& label,
66 const wxPoint& pos,
67 const wxSize& size,
68 long style,
69 const wxValidator& validator,
70 const wxString& name)
71{
72 // Default coordinates based on the knowledgebase recipe "Buttons"
73 wxSize palmSize(size.x==wxDefaultCoord?36:size.x,
74 size.y==wxDefaultCoord?12:size.y);
75
76 // Default placement depends on dialog vs. frame type of parent
77 wxPoint palmPos(pos);
78 if((palmPos.x==wxDefaultCoord)||(palmPos.y==wxDefaultCoord))
79 {
80 wxSize parentSize(parent->GetClientSize());
81 wxWindow* parentTLW = parent;
82 while ( parentTLW && !parentTLW->IsTopLevel() )
83 {
84 parentTLW = parentTLW->GetParent();
85 }
86
87 if(wxDynamicCast(parentTLW, wxFrame)!=NULL)
88 {
89 if(palmPos.x==wxDefaultCoord)
90 palmPos.x = 0;
91 if(palmPos.y==wxDefaultCoord)
92 palmPos.y = parentSize.y-palmSize.y;
93 }
94 else if(wxDynamicCast(parentTLW, wxDialog)!=NULL)
95 {
96 if(palmPos.x==wxDefaultCoord)
97 palmPos.x = 4;
98 if(palmPos.y==wxDefaultCoord)
99 palmPos.y = parentSize.y-palmSize.y-5;
100 }
101 else
102 {
103 // something seriously broken
104 return false;
105 }
106 }
107
108 // take the stock label
109 wxString palmLabel = label;
110 if( palmLabel.empty() && wxIsStockID(id) )
111 palmLabel = wxGetStockLabel(id, wxSTOCK_NOFLAGS);
112
113 if(!wxControl::Create(parent, id, palmPos, palmSize, style, validator, name))
114 return false;
115
116 return wxControl::PalmCreateControl(buttonCtl, palmLabel, palmPos, palmSize);
117}
118
119wxButton::~wxButton()
120{
121}
122
123// ----------------------------------------------------------------------------
124// size management including autosizing
125// ----------------------------------------------------------------------------
126
127wxSize wxButton::DoGetBestSize() const
128{
129 return wxSize(36,12);
130}
131
132/* static */
133wxSize wxButtonBase::GetDefaultSize()
134{
135 return wxSize(36,12);
136}
137
138wxWindow *wxButton::SetDefault()
139{
140 FormType* form = (FormType* )GetParentForm();
141 if(form==NULL)
142 return NULL;
143#ifdef __WXPALMOS6__
144 FrmSetDefaultButtonID(form,GetId());
145#endif // __WXPALMOS6__
146
147 return wxButtonBase::SetDefault();
148}
149
150void wxButton::SetTmpDefault()
151{
152}
153
154void wxButton::UnsetTmpDefault()
155{
156}
157
158/* static */
159void
160wxButton::SetDefaultStyle(wxButton *btn, bool on)
161{
162}
163
164// ----------------------------------------------------------------------------
165// helpers
166// ----------------------------------------------------------------------------
167
168bool wxButton::SendClickEvent()
169{
170 wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, GetId());
171 event.SetEventObject(this);
172 return ProcessCommand(event);
173}
174
175void wxButton::Command(wxCommandEvent &event)
176{
177 ProcessCommand(event);
178}
179
180#endif // wxUSE_BUTTON