]> git.saurik.com Git - wxWidgets.git/commitdiff
Use stock labels. Native wxRadioButton. Getting position and size for the controls...
authorWłodzimierz Skiba <abx@abx.art.pl>
Fri, 28 Jan 2005 10:58:13 +0000 (10:58 +0000)
committerWłodzimierz Skiba <abx@abx.art.pl>
Fri, 28 Jan 2005 10:58:13 +0000 (10:58 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31616 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

15 files changed:
build/palmos/makefile
docs/changes.txt
include/wx/palmos/control.h
include/wx/palmos/radiobut.h
include/wx/palmos/setup0.h
include/wx/palmos/toplevel.h
include/wx/radiobut.h
src/common/stockitem.cpp
src/palmos/button.cpp
src/palmos/control.cpp
src/palmos/dialog.cpp
src/palmos/radiobox.cpp
src/palmos/radiobut.cpp
src/palmos/textctrl.cpp
src/palmos/toplevel.cpp

index a7d4ff8a31631febe7e2816ba8c5e8f902dd96f4..15b219256388c19c1d6b63e83546fdad804abd00 100644 (file)
@@ -151,6 +151,7 @@ SOURCES =  ../../samples/minimal/minimal.cpp \
 ../../src/common/sizer.cpp \
 ../../src/common/socket.cpp \
 ../../src/common/statbar.cpp \
+../../src/common/stockitem.cpp \
 ../../src/common/strconv.cpp \
 ../../src/common/stream.cpp \
 ../../src/common/string.cpp \
index 161058e3000ed4d1c2543bf073dd37a9e9abfa09..f10bfdee64916b302e7677101be3ff57067b9bd4 100644 (file)
@@ -118,6 +118,7 @@ wxPalmOS:
 - native wxCheckBox implementation
 - native wxSlider implementation
 - native wxToggleButton implementation
+- native wxRadioButton implementation
 
 
 2.5.3
index c3dc2f6ffb44030b89bb5b0c27b872d07bef3a51..99db04e3e0079820b97e5e42c429a66249cb7154 100644 (file)
@@ -89,6 +89,10 @@ protected:
     // return default best size (doesn't really make any sense, override this)
     virtual wxSize DoGetBestSize() const;
 
+    // getting and setting sizes
+    virtual void DoGetPosition( int *x, int *y ) const;
+    virtual void DoGetSize( int *width, int *height ) const;
+
     // create the control of the given ControlStyleType: this is typically called
     // from Create() method of the derived class passing its label, pos and
     // size parameter (style parameter is not needed because m_windowStyle is
@@ -117,7 +121,9 @@ protected:
 
 private:
 
-    // Label stores label in case of wxButton, wxCheckBox, wxToggleButton etc.
+    virtual void DoGetBounds( RectangleType &rect ) const;
+
+    // m_label stores label in case of wxButton, wxCheckBox, wxToggleButton etc.
     // We must ensure that it persists for as long as it is being displayed
     // (that is, for as long as the control is displayed or until we call
     // CtlSetLabel() with a new string), and we must free the string after
index 954295f422d28d4f8f9a12df248c8aa1fabce68a..90ffc63c18b57922acfaf41ffc3fa7893161fc23 100644 (file)
@@ -2,10 +2,10 @@
 // Name:        wx/palmos/radiobut.h
 // Purpose:     wxRadioButton class
 // Author:      William Osborne - minimal working wxPalmOS port
-// Modified by:
+// Modified by: Wlodzimierz ABX Skiba - native wxRadioButton implementation
 // Created:     10/13/04
 // RCS-ID:      $Id$
-// Copyright:   (c) William Osborne
+// Copyright:   (c) William Osborne, Wlodzimierz Skiba
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -50,7 +50,6 @@ public:
     virtual bool GetValue() const;
 
     // implementation only from now on
-    virtual bool MSWCommand(WXUINT param, WXWORD id);
     virtual void Command(wxCommandEvent& event);
     virtual void ApplyParentThemeBackground(const wxColour& bg)
         { SetBackgroundColour(bg); }
@@ -63,10 +62,6 @@ private:
     // common part of all ctors
     void Init();
 
-    // we need to store the state internally as the result of GetValue()
-    // sometimes gets out of sync in WM_COMMAND handler
-    bool m_isChecked;
-
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxRadioButton)
 };
 
index c268fc861caabdcf077a0307591235482a4b764f..eafc44cfbbf6c4e4b1e6c8884a9324b99f5db7f4 100644 (file)
 #define wxUSE_LISTBOX      0    // wxListBox
 #define wxUSE_LISTCTRL     0    // wxListCtrl
 #define wxUSE_RADIOBOX     0    // wxRadioBox
-#define wxUSE_RADIOBTN     0    // wxRadioButton
+#define wxUSE_RADIOBTN     1    // wxRadioButton
 #define wxUSE_SCROLLBAR    0    // wxScrollBar
 #define wxUSE_SLIDER       1    // wxSlider
 #define wxUSE_SPINBTN      0    // wxSpinButton
index f53a646cff2b78ef5a2714cf8a68acf2129ef538..143863c62a56bbf1ecf06a26c7207810189d53cd 100644 (file)
@@ -82,12 +82,15 @@ public:
     wxWindow *GetLastFocus() const { return m_winLastFocused; }
 
     // interface to native frame structure
-    FormType *GetForm();
+    FormType *GetForm() const;
 
 protected:
     // common part of all ctors
     void Init();
 
+    // getting and setting sizes
+    virtual void DoGetSize( int *width, int *height ) const;
+
     // common part of Iconize(), Maximize() and Restore()
     void DoShowWindow(int nShowCmd);
 
index 5b086935e58c6e946fbdfa4fe1aa71dccfcb78b2..4485b1cc3fb0cf5b31df2d18ae6060017da2524f 100644 (file)
@@ -47,6 +47,8 @@ extern WXDLLEXPORT_DATA(const wxChar*) wxRadioButtonNameStr;
     #include "wx/cocoa/radiobut.h"
 #elif defined(__WXPM__)
     #include "wx/os2/radiobut.h"
+#elif defined(__WXPALMOS__)
+    #include "wx/palmos/radiobut.h"
 #endif
 
 #endif // wxUSE_RADIOBTN
index 1a75aed568a90361eed77f6d516ea5b54702571a..5f4bc508ba557bc1b19a0bd5911fac109f8bf327 100644 (file)
@@ -30,7 +30,7 @@
 
 #include "wx/stockitem.h"
 #include "wx/intl.h"
-
+#include "wx/utils.h" // for wxStripMenuCodes()
 
 bool wxIsStockID(wxWindowID id)
 {
@@ -95,7 +95,7 @@ bool wxIsStockID(wxWindowID id)
 
 wxString wxGetStockLabel(wxWindowID id)
 {
-#ifdef __SMARTPHONE__
+#if defined(__SMARTPHONE__) || defined(__WXPALMOS__)
     #define STOCKITEM(stockid, label) \
         case stockid:                 \
             return wxStripMenuCodes(label);
index a53ae3f19a8cdf02298bad711147cac26ee59686..17baee2123d1ec94136e05dc0943faae2af8a0e4 100644 (file)
@@ -38,6 +38,9 @@
     #include "wx/bmpbuttn.h"
     #include "wx/settings.h"
     #include "wx/dcscreen.h"
+    #include "wx/frame.h"
+    #include "wx/dialog.h"
+    #include "wx/stockitem.h"
 #endif
 
 // ----------------------------------------------------------------------------
@@ -126,7 +129,48 @@ bool wxButton::Create(wxWindow *parent,
                       const wxValidator& validator,
                       const wxString& name)
 {
-    wxControl::PalmCreateControl(buttonCtl, parent, id, label, pos, size);
+    // Default coordinates based on the knowledgebase recipe "Buttons"
+    wxSize palmSize(size.x==wxDefaultCoord?36:size.x,
+                    size.y==wxDefaultCoord?12:size.y);
+
+    // Default placement depends on dialog vs. frame type of parent
+    wxPoint palmPos(pos);
+    if((palmPos.x==wxDefaultCoord)||(palmPos.y==wxDefaultCoord))
+    {
+        wxSize parentSize(parent->GetSize());
+        wxWindow* parentTLW = parent;
+        while ( parentTLW && !parentTLW->IsTopLevel() )
+        {
+            parentTLW = parentTLW->GetParent();
+        }
+
+        if(wxDynamicCast(parentTLW, wxFrame)!=NULL)
+        {
+            if(palmPos.x==wxDefaultCoord)
+                palmPos.x = 1;
+            if(palmPos.y==wxDefaultCoord)
+                palmPos.y = parentSize.y-palmSize.y;
+        }
+        else if(wxDynamicCast(parentTLW, wxDialog)!=NULL)
+        {
+            if(palmPos.x==wxDefaultCoord)
+                palmPos.x = 5;
+            if(palmPos.y==wxDefaultCoord)
+                palmPos.y = parentSize.y-palmSize.y-5;
+        }
+        else
+        {
+            // something seriously broken
+            return false;
+        }
+    }
+
+    // take the stock label
+    wxString palmLabel = label;
+    if( palmLabel.empty() && wxIsStockID(id) )
+        palmLabel = wxGetStockLabel(id);
+
+    wxControl::PalmCreateControl(buttonCtl, parent, id, palmLabel, palmPos, palmSize);
     return true;
 }
 
@@ -140,13 +184,13 @@ wxButton::~wxButton()
 
 wxSize wxButton::DoGetBestSize() const
 {
-    return wxSize(0,0);
+    return wxSize(36,12);
 }
 
 /* static */
 wxSize wxButtonBase::GetDefaultSize()
 {
-    return wxSize(0,0);
+    return wxSize(36,12);
 }
 
 void wxButton::SetDefault()
@@ -180,7 +224,7 @@ bool wxButton::SendClickEvent()
     return false;
 }
 
-void wxButton::Command(wxCommandEvent & event)
+void wxButton::Command(wxCommandEvent &event)
 {
 }
 
index 25fcb3225ecfe43f8c5e1b91f08aef4660498f2e..b5a89e89322ee148e63af6ca0108f616b3c7aae9 100644 (file)
@@ -43,6 +43,7 @@
 #include "wx/button.h"
 #include "wx/checkbox.h"
 #include "wx/tglbtn.h"
+#include "wx/radiobut.h"
 
 // ----------------------------------------------------------------------------
 // wxWin macros
@@ -113,7 +114,7 @@ bool wxControl::PalmCreateControl(ControlStyleType style,
                     ( pos.y == wxDefaultCoord ) ? winUndefConstraint : pos.y,
                     ( size.x == wxDefaultCoord ) ? winUndefConstraint : size.x,
                     ( size.y == wxDefaultCoord ) ? winUndefConstraint : size.y,
-                    boldFont,
+                    stdFont,
                     0,
                     false
                 );
@@ -182,6 +183,37 @@ wxSize wxControl::DoGetBestSize() const
     return wxSize(16, 16);
 }
 
+void wxControl::DoGetBounds( RectangleType &rect ) const
+{
+    FormType* form = GetParentForm();
+    if(form==NULL)
+        return;
+    uint16_t index = FrmGetObjectIndex(form,GetId());
+    if(index==frmInvalidObjectId)
+        return;
+    FrmGetObjectBounds(form,index,&rect);
+}
+
+void wxControl::DoGetPosition( int *x, int *y ) const
+{
+    RectangleType rect;
+    DoGetBounds(rect);
+    if(x)
+        *x = rect.topLeft.x;
+    if(y)
+        *y = rect.topLeft.y;
+}
+
+void wxControl::DoGetSize( int *width, int *height ) const
+{
+    RectangleType rect;
+    DoGetBounds(rect);
+    if(width)
+        *width = rect.extent.x;
+    if(height)
+        *height = rect.extent.y;
+}
+
 bool wxControl::Enable(bool enable)
 {
     if( m_control == NULL )
@@ -224,6 +256,7 @@ void wxControl::SetLabel(const wxString& label)
     // setting in wrong control causes crash
     if ( ( wxDynamicCast(this,wxButton) != NULL ) ||
          ( wxDynamicCast(this,wxCheckBox) != NULL ) ||
+         ( wxDynamicCast(this,wxRadioButton) != NULL ) ||
          ( wxDynamicCast(this,wxToggleButton) != NULL ) )
     {
         m_label = label;
@@ -238,6 +271,7 @@ wxString wxControl::GetLabel()
     // setting in wrong control causes crash
     if ( wxDynamicCast(this,wxButton) ||
          wxDynamicCast(this,wxCheckBox) ||
+         wxDynamicCast(this,wxRadioButton) ||
          wxDynamicCast(this,wxToggleButton) )
     {
         return m_label;
@@ -290,15 +324,9 @@ void wxControl::OnEraseBackground(wxEraseEvent& event)
 }
 
 WXHBRUSH wxControl::OnCtlColor(WXHDC pDC, WXHWND WXUNUSED(pWnd), WXUINT WXUNUSED(nCtlColor),
-#if wxUSE_CTL3D
-                               WXUINT message,
-                               WXWPARAM wParam,
-                               WXLPARAM lParam
-#else
                                WXUINT WXUNUSED(message),
                                WXWPARAM WXUNUSED(wParam),
                                WXLPARAM WXUNUSED(lParam)
-#endif
     )
 {
     return (WXHBRUSH)0;
index 1b415a94658eccac905e5b496bae56214f725522..c014f4ac354da812491b68128c6305cb9b2ce20c 100644 (file)
@@ -247,19 +247,3 @@ WXLRESULT wxDialog::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lPar
 {
     return false;
 }
-
-#if wxUSE_CTL3D
-
-// Define for each class of dialog and control
-WXHBRUSH wxDialog::OnCtlColor(WXHDC WXUNUSED(pDC),
-                              WXHWND WXUNUSED(pWnd),
-                              WXUINT WXUNUSED(nCtlColor),
-                              WXUINT message,
-                              WXWPARAM wParam,
-                              WXLPARAM lParam)
-{
-    return (WXHBRUSH)Ctl3dCtlColorEx(message, wParam, lParam);
-}
-
-#endif // wxUSE_CTL3D
-
index 606509e64920bb37bc5d7dd027cab7e464eecada..152fbc7a31374e1881dcfb419412c6287d2be27a 100644 (file)
@@ -304,15 +304,9 @@ WXLRESULT wxRadioBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPara
 }
 
 WXHBRUSH wxRadioBox::OnCtlColor(WXHDC pDC, WXHWND WXUNUSED(pWnd), WXUINT WXUNUSED(nCtlColor),
-#if wxUSE_CTL3D
-                               WXUINT message,
-                               WXWPARAM wParam,
-                               WXLPARAM lParam
-#else
                                WXUINT WXUNUSED(message),
                                WXWPARAM WXUNUSED(wParam),
                                WXLPARAM WXUNUSED(lParam)
-#endif
     )
 {
     return (WXHBRUSH)0;
index 20135cce58b2501cbf6558fe89e40380376017ea..d7c45e609bc9f6f926df5e379c2a19660e621f56 100644 (file)
@@ -2,10 +2,10 @@
 // Name:        src/palmos/radiobut.cpp
 // Purpose:     wxRadioButton
 // Author:      William Osborne - minimal working wxPalmOS port
-// Modified by:
+// Modified by: Wlodzimierz ABX Skiba - native wxRadioButton implementation
 // Created:     10/13/04
 // RCS-ID:      $Id$
-// Copyright:   (c) William Osborne
+// Copyright:   (c) William Osborne, Wlodzimierz Skiba
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -36,8 +36,6 @@
     #include "wx/dcscreen.h"
 #endif
 
-#include "wx/palmos/private.h"
-
 // ============================================================================
 // wxRadioButton implementation
 // ============================================================================
@@ -115,7 +113,8 @@ bool wxRadioButton::Create(wxWindow *parent,
                            const wxValidator& validator,
                            const wxString& name)
 {
-    return false;
+    wxControl::PalmCreateControl(pushButtonCtl, parent, id, label, pos, size);
+    return true;
 }
 
 // ----------------------------------------------------------------------------
@@ -124,11 +123,12 @@ bool wxRadioButton::Create(wxWindow *parent,
 
 void wxRadioButton::SetValue(bool value)
 {
+    SetBoolValue(value);
 }
 
 bool wxRadioButton::GetValue() const
 {
-    return false;
+    return GetBoolValue();
 }
 
 // ----------------------------------------------------------------------------
@@ -139,11 +139,6 @@ void wxRadioButton::Command (wxCommandEvent& event)
 {
 }
 
-bool wxRadioButton::MSWCommand(WXUINT param, WXWORD WXUNUSED(id))
-{
-    return false;
-}
-
 // ----------------------------------------------------------------------------
 // wxRadioButton geometry
 // ----------------------------------------------------------------------------
index c7d62851d34b7a32aade0f52234bdbcafc15d05f..8e4bf4b8c6cce399d30f1d196cdd0d276ce6f632 100644 (file)
@@ -568,15 +568,9 @@ bool wxTextCtrl::MSWCommand(WXUINT param, WXWORD WXUNUSED(id))
 }
 
 WXHBRUSH wxTextCtrl::OnCtlColor(WXHDC pDC, WXHWND WXUNUSED(pWnd), WXUINT WXUNUSED(nCtlColor),
-#if wxUSE_CTL3D
-                               WXUINT message,
-                               WXWPARAM wParam,
-                               WXLPARAM lParam
-#else
                                WXUINT WXUNUSED(message),
                                WXWPARAM WXUNUSED(wParam),
                                WXLPARAM WXUNUSED(lParam)
-#endif
     )
 {
     return (WXHBRUSH) 0;
index 3f09270a6d3ac1573082b56158d359d4eb0f58dd..2a31a6b83eda6071013cc785be96ac2bdd25152e 100644 (file)
@@ -186,6 +186,16 @@ void wxTopLevelWindowPalm::Restore()
 {
 }
 
+void wxTopLevelWindowPalm::DoGetSize( int *width, int *height ) const
+{
+    RectangleType rect;
+    FrmGetFormBounds( GetForm() , &rect );
+    if(width)
+        *width = rect.extent.x;
+    if(height)
+        *height = rect.extent.y;
+}
+
 // ----------------------------------------------------------------------------
 // wxTopLevelWindowPalm fullscreen
 // ----------------------------------------------------------------------------
@@ -212,9 +222,9 @@ bool wxTopLevelWindowPalm::EnableCloseButton(bool enable)
     return false;
 }
 
-FormType *wxTopLevelWindowPalm::GetForm()
+FormType *wxTopLevelWindowPalm::GetForm() const
 {
-    return FrmGetActiveForm ();
+    return FrmGetActiveForm();
 }
 
 #ifndef __WXWINCE__