diff --git a/docs/changes.txt b/docs/changes.txt index 8bf2a61431..94befa571f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -113,6 +113,7 @@ wxPalmOS: - native wxProgressDialog implementation - native wxColourDialog implementation - native wxSystemSettings colours +- native wxButton implementation 2.5.3 diff --git a/include/wx/button.h b/include/wx/button.h index 0ccb8d2deb..8277c66ebc 100644 --- a/include/wx/button.h +++ b/include/wx/button.h @@ -94,6 +94,8 @@ protected: #include "wx/cocoa/button.h" #elif defined(__WXPM__) #include "wx/os2/button.h" +#elif defined(__WXPALMOS__) + #include "wx/palmos/button.h" #endif #endif // wxUSE_BUTTON diff --git a/include/wx/palmos/button.h b/include/wx/palmos/button.h index a34f5a45c2..62d8e5f037 100644 --- a/include/wx/palmos/button.h +++ b/include/wx/palmos/button.h @@ -2,10 +2,10 @@ // Name: wx/palmos/button.h // Purpose: wxButton class // Author: William Osborne - minimal working wxPalmOS port -// Modified by: +// Modified by: Wlodzimierz ABX Skiba - native wxButton implementation // Created: 10/13/04 // RCS-ID: $Id$ -// Copyright: (c) William Osborne +// Copyright: (c) William Osborne, Wlodzimierz Skiba // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -26,7 +26,7 @@ public: wxButton() { } wxButton(wxWindow *parent, wxWindowID id, - const wxString& label, + const wxString& label = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, @@ -51,7 +51,6 @@ public: // implementation from now on virtual void Command(wxCommandEvent& event); - virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); virtual bool MSWCommand(WXUINT param, WXWORD id); virtual void ApplyParentThemeBackground(const wxColour& bg) diff --git a/include/wx/palmos/control.h b/include/wx/palmos/control.h index 564f88e196..82fb415c0e 100644 --- a/include/wx/palmos/control.h +++ b/include/wx/palmos/control.h @@ -44,6 +44,11 @@ public: // Simulates an event virtual void Command(wxCommandEvent& event) { ProcessCommand(event); } + virtual bool Enable( bool enable = true ); + virtual bool IsEnabled() const; + + virtual bool Show( bool show = true ); + virtual bool IsShown() const; // implementation from now on // -------------------------- @@ -59,15 +64,6 @@ public: // Calls the callback and appropriate event handlers bool ProcessCommand(wxCommandEvent& event); - // MSW-specific -#ifdef __WIN95__ - virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result); -#endif // Win95 - - // For ownerdraw items - virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *WXUNUSED(item)) { return FALSE; }; - virtual bool MSWOnMeasure(WXMEASUREITEMSTRUCT *WXUNUSED(item)) { return FALSE; }; - const wxArrayLong& GetSubcontrols() const { return m_subControls; } void OnEraseBackground(wxEraseEvent& event); @@ -82,38 +78,17 @@ protected: // return default best size (doesn't really make any sense, override this) virtual wxSize DoGetBestSize() const; - // create the control of the given Windows class: this is typically called + // 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 // supposed to had been already set and so is used instead when this // function is called) - bool MSWCreateControl(const wxChar *classname, - const wxString& label, - const wxPoint& pos, - const wxSize& size); - - // NB: the method below is deprecated now, with MSWGetStyle() the method - // above should be used instead! Once all the controls are updated to - // implement MSWGetStyle() this version will disappear. - // - // create the control of the given class with the given style (combination - // of WS_XXX flags, i.e. Windows style, not wxWidgets one), returns - // FALSE if creation failed - // - // All parameters except classname and style are optional, if the - // size/position are not given, they should be set later with SetSize() - // and, label (the title of the window), of course, is left empty. The - // extended style is determined from the style and the app 3D settings - // automatically if it's not specified explicitly. - bool MSWCreateControl(const wxChar *classname, - WXDWORD style, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - const wxString& label = wxEmptyString, - WXDWORD exstyle = (WXDWORD)-1); - - // default style for the control include WS_TABSTOP if it AcceptsFocus() - virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const; + bool PalmCreateControl(ControlStyleType style, + wxWindow *parent, + wxWindowID id, + const wxString& label, + const wxPoint& pos, + const wxSize& size); // this is a helper for the derived class GetClassDefaultAttributes() // implementation: it returns the right colours for the classes which @@ -127,6 +102,9 @@ protected: // holds the ids (not HWNDs!) of the sub controls wxArrayLong m_subControls; + ControlType *m_control; + uint16_t m_objectIndex; + private: DECLARE_DYNAMIC_CLASS_NO_COPY(wxControl) DECLARE_EVENT_TABLE() diff --git a/include/wx/palmos/setup0.h b/include/wx/palmos/setup0.h index 0f1725364f..7864731485 100644 --- a/include/wx/palmos/setup0.h +++ b/include/wx/palmos/setup0.h @@ -509,13 +509,14 @@ // Default is 1 // // Recommended setting: 1 -#define wxUSE_BUTTON 0 // wxButton +#define wxUSE_BUTTON 1 // wxButton #define wxUSE_BMPBUTTON 0 // wxBitmapButton #define wxUSE_CALENDARCTRL 0 // wxCalendarCtrl #define wxUSE_CHECKBOX 0 // wxCheckBox #define wxUSE_CHECKLISTBOX 0 // wxCheckListBox (requires wxUSE_OWNER_DRAWN) #define wxUSE_CHOICE 0 // wxChoice #define wxUSE_COMBOBOX 0 // wxComboBox +#define wxUSE_DATEPICKCTRL 0 // wxDatePickerCtrl #define wxUSE_GAUGE 0 // wxGauge #define wxUSE_LISTBOX 0 // wxListBox #define wxUSE_LISTCTRL 0 // wxListCtrl @@ -534,15 +535,15 @@ #define wxUSE_TREECTRL 0 // wxTreeCtrl // Use a status bar class? Depending on the value of wxUSE_NATIVE_STATUSBAR -// below either wxStatusBar95 or a generic wxStatusBar will be used. +// below either wxStatusBarPalm or a generic wxStatusBar will be used. // // Default is 1 // // Recommended setting: 1 #define wxUSE_STATUSBAR 1 -// Two status bar implementations are available under Win32: the generic one -// or the wrapper around native control. For native look and feel the native +// Two status bar implementations are available under PalmOS: the generic one +// or the wrapper around native status bar. For native look and feel the native // version should be used. // // Default is 1. diff --git a/include/wx/palmos/toplevel.h b/include/wx/palmos/toplevel.h index 73a44916b4..9783f91ad6 100644 --- a/include/wx/palmos/toplevel.h +++ b/include/wx/palmos/toplevel.h @@ -2,10 +2,10 @@ // Name: wx/palmos/toplevel.h // Purpose: wxTopLevelWindow // Author: William Osborne - minimal working wxPalmOS port -// Modified by: +// Modified by: Wlodzimierz ABX Skiba - more than minimal functionality // Created: 10/13/04 // RCS-ID: $Id$ -// Copyright: (c) William Osborne +// Copyright: (c) William Osborne, Wlodzimierz Skiba // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -47,15 +47,6 @@ public: long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr); - bool Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name, - wxFrame* PFrame); - virtual ~wxTopLevelWindowPalm(); // implement base class pure virtuals @@ -94,18 +85,6 @@ protected: // common part of all ctors void Init(); - // create a new frame, return false if it couldn't be created - bool CreateFrame(const wxString& title, - const wxPoint& pos, - const wxSize& size); - - // create a new dialog using the given dialog template from resources, - // return false if it couldn't be created - bool CreateDialog(const void *dlgTemplate, - const wxString& title, - const wxPoint& pos, - const wxSize& size); - // common part of Iconize(), Maximize() and Restore() void DoShowWindow(int nShowCmd); diff --git a/include/wx/palmos/window.h b/include/wx/palmos/window.h index a00a06e6e7..b103474cdc 100644 --- a/include/wx/palmos/window.h +++ b/include/wx/palmos/window.h @@ -2,10 +2,10 @@ // Name: wx/palmos/window.h // Purpose: wxWindow class // Author: William Osborne - minimal working wxPalmOS port -// Modified by: +// Modified by: Wlodzimierz ABX Skiba - more than minimal functionality // Created: 10/13/04 // RCS-ID: $Id$ -// Copyright: (c) William Osborne +// Copyright: (c) William Osborne, Wlodzimierz Skiba // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// diff --git a/include/wx/window.h b/include/wx/window.h index bb2c943204..50fae004cd 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -453,7 +453,7 @@ public: bool Disable() { return Enable(false); } virtual bool IsShown() const { return m_isShown; } - bool IsEnabled() const { return m_isEnabled; } + virtual bool IsEnabled() const { return m_isEnabled; } // get/set window style (setting style won't update the window and so // is only useful for internal usage) diff --git a/src/palmos/button.cpp b/src/palmos/button.cpp index a27f123b1e..f9be99b62a 100644 --- a/src/palmos/button.cpp +++ b/src/palmos/button.cpp @@ -2,10 +2,10 @@ // Name: src/palmos/button.cpp // Purpose: wxButton // Author: William Osborne - minimal working wxPalmOS port -// Modified by: +// Modified by: Wlodzimierz ABX Skiba - native wxButton implementation // Created: 10/13/04 // RCS-ID: $Id$ -// Copyright: (c) William Osborne +// Copyright: (c) William Osborne, Wlodzimierz Skiba // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -40,8 +40,6 @@ #include "wx/dcscreen.h" #endif -#include "wx/palmos/private.h" - // ---------------------------------------------------------------------------- // macros // ---------------------------------------------------------------------------- @@ -128,8 +126,8 @@ bool wxButton::Create(wxWindow *parent, const wxValidator& validator, const wxString& name) { - // remember about stock IDs - return false; + wxControl::PalmCreateControl(buttonCtl, parent, id, label, pos, size); + return true; } wxButton::~wxButton() diff --git a/src/palmos/control.cpp b/src/palmos/control.cpp index 4e13f592a7..c4360886e7 100644 --- a/src/palmos/control.cpp +++ b/src/palmos/control.cpp @@ -60,7 +60,7 @@ END_EVENT_TABLE() wxControl::~wxControl() { - m_isBeingDeleted = TRUE; + m_isBeingDeleted = true; } // ---------------------------------------------------------------------------- @@ -76,34 +76,44 @@ bool wxControl::Create(wxWindow *parent, const wxString& name) { if ( !wxWindow::Create(parent, id, pos, size, style, name) ) - return FALSE; + return false; #if wxUSE_VALIDATORS SetValidator(validator); #endif - return TRUE; + return true; } -bool wxControl::MSWCreateControl(const wxChar *classname, - const wxString& label, - const wxPoint& pos, - const wxSize& size) +bool wxControl::PalmCreateControl(ControlStyleType style, + wxWindow *parent, + wxWindowID id, + const wxString& label, + const wxPoint& pos, + const wxSize& size) { - WXDWORD exstyle; - WXDWORD msStyle = MSWGetStyle(GetWindowStyle(), &exstyle); + FormType* form = FrmGetActiveForm (); + m_control = CtlNewControl ( + (void **)&form, + id, + style, + label.c_str(), + pos.x, + pos.y, + size.x, + size.y, + boldFont, + 0, + false + ); - return MSWCreateControl(classname, msStyle, pos, size, label, exstyle); -} + if(m_control==NULL) + return false; -bool wxControl::MSWCreateControl(const wxChar *classname, - WXDWORD style, - const wxPoint& pos, - const wxSize& size, - const wxString& label, - WXDWORD exstyle) -{ - return TRUE; + form = FrmGetActiveForm (); + m_objectIndex = FrmGetObjectIndex(form, id); + Show(); + return true; } // ---------------------------------------------------------------------------- @@ -118,16 +128,42 @@ wxBorder wxControl::GetDefaultBorder() const return wxBORDER_SUNKEN; } -WXDWORD wxControl::MSWGetStyle(long style, WXDWORD *exstyle) const -{ - return 0; -} - wxSize wxControl::DoGetBestSize() const { return wxSize(16, 16); } +bool wxControl::Enable(bool enable) +{ + if( m_control == NULL ) + return false; + if( IsEnabled() == enable) + return false; + CtlSetEnabled( m_control, enable); + return true; +} + +bool wxControl::IsEnabled() const +{ + if( m_control == NULL ) + return false; + return CtlEnabled(m_control); +} + +bool wxControl::IsShown() const +{ + return StatGetAttribute ( statAttrBarVisible , NULL ); +} + +bool wxControl::Show( bool show ) +{ + if(show) + FrmShowObject(FrmGetActiveForm(), m_objectIndex); + else + FrmHideObject(FrmGetActiveForm(), m_objectIndex); + return true; +} + /* static */ wxVisualAttributes wxControl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant)) { @@ -167,14 +203,6 @@ bool wxControl::ProcessCommand(wxCommandEvent& event) return GetEventHandler()->ProcessEvent(event); } -#ifdef __WIN95__ -bool wxControl::MSWOnNotify(int idCtrl, - WXLPARAM lParam, - WXLPARAM* result) -{ -} -#endif // Win95 - void wxControl::OnEraseBackground(wxEraseEvent& event) { } diff --git a/src/palmos/frame.cpp b/src/palmos/frame.cpp index 25c7b23fc0..b64d4da89b 100644 --- a/src/palmos/frame.cpp +++ b/src/palmos/frame.cpp @@ -2,10 +2,10 @@ // Name: src/palmos/frame.cpp // Purpose: wxFrame // Author: William Osborne - minimal working wxPalmOS port -// Modified by: +// Modified by: Wlodzimierz ABX Skiba - more than minimal functionality // Created: 10/13/04 // RCS-ID: $Id$ -// Copyright: (c) William Osborne +// Copyright: (c) William Osborne, Wlodzimierz Skiba // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -162,7 +162,7 @@ bool wxFrame::Create(wxWindow *parent, long style, const wxString& name) { - if ( !wxTopLevelWindow::Create(parent, id, title, pos, size, style, name, this) ) + if ( !wxTopLevelWindow::Create(parent, id, title, pos, size, style, name) ) return false; return true; @@ -255,7 +255,7 @@ void wxFrame::OnPaint(wxPaintEvent& event) #endif // wxUSE_STATUSBAR } -// Pass TRUE to show full screen, FALSE to restore. +// Pass true to show full screen, false to restore. bool wxFrame::ShowFullScreen(bool show, long style) { return false; diff --git a/src/palmos/joystick.cpp b/src/palmos/joystick.cpp index 432244d1b1..8295c07fa7 100644 --- a/src/palmos/joystick.cpp +++ b/src/palmos/joystick.cpp @@ -107,7 +107,7 @@ int wxJoystick::GetProductId() const wxString wxJoystick::GetProductName() const { - return wxString(""); + return wxEmptyString; } int wxJoystick::GetXMin() const diff --git a/src/palmos/statbrpalm.cpp b/src/palmos/statbrpalm.cpp index 0b77b5d424..ba68ff9a26 100644 --- a/src/palmos/statbrpalm.cpp +++ b/src/palmos/statbrpalm.cpp @@ -150,6 +150,7 @@ wxString wxStatusBarPalm::GetStatusText(int nField) const void wxStatusBarPalm::DrawStatusBar() { +#if 0 int i=0; int leftPos=0; wxArrayInt widthsAbs; @@ -172,6 +173,7 @@ void wxStatusBarPalm::DrawStatusBar() leftPos+=widthsAbs[i]+2; } WinDrawLine(0,160-FntCharHeight()-1,159,160-FntCharHeight()-1); +#endif } void wxStatusBarPalm::SetStatusBufferText(const wxString& text, int number) @@ -187,7 +189,7 @@ wxString wxStatusBarPalm::GetStatusBufferText(int number) { wxListString *st = GetStatusBufferStack(number); if(st==0) - return ""; + return wxEmptyString; wxListString::compatibility_iterator top = st->GetFirst(); return(*top->GetData()); diff --git a/src/palmos/toplevel.cpp b/src/palmos/toplevel.cpp index e049739b90..2d67f37da6 100644 --- a/src/palmos/toplevel.cpp +++ b/src/palmos/toplevel.cpp @@ -43,15 +43,6 @@ #include "wx/display.h" -#ifndef ICON_BIG - #define ICON_BIG 1 -#endif - -#ifndef ICON_SMALL - #define ICON_SMALL 0 -#endif - - // ---------------------------------------------------------------------------- // globals // ---------------------------------------------------------------------------- @@ -60,7 +51,7 @@ extern const wxChar *wxCanvasClassName; // Pointer to the currently active frame for the form event handler. -wxFrame* ActiveParentFrame; +wxTopLevelWindowPalm* ActiveParentFrame; // ============================================================================ // wxTopLevelWindowPalm implementation @@ -88,21 +79,6 @@ WXHWND wxTopLevelWindowPalm::PalmGetParent() const return NULL; } -bool wxTopLevelWindowPalm::CreateDialog(const void *dlgTemplate, - const wxString& title, - const wxPoint& pos, - const wxSize& size) -{ - return false; -} - -bool wxTopLevelWindowPalm::CreateFrame(const wxString& title, - const wxPoint& pos, - const wxSize& size) -{ - return false; -} - bool wxTopLevelWindowPalm::Create(wxWindow *parent, wxWindowID id, const wxString& title, @@ -111,6 +87,10 @@ bool wxTopLevelWindowPalm::Create(wxWindow *parent, long style, const wxString& name) { + // this is a check for limitation mentioned before FrameFormHandleEvent() code + if(wxTopLevelWindows.GetCount()>0) + return false; + ActiveParentFrame=NULL; wxTopLevelWindows.Append(this); @@ -120,54 +100,37 @@ bool wxTopLevelWindowPalm::Create(wxWindow *parent, m_windowId = id == wxID_ANY ? NewControlId() : id; - wxCoord x = ( ( pos.x == wxDefaultCoord ) ? 0 : pos.x ) ; - wxCoord y = ( ( pos.y == wxDefaultCoord ) ? 0 : pos.y ) ; - wxCoord w = ( ( size.x == wxDefaultCoord ) ? 160 : size.x ) ; - wxCoord h = ( ( size.y == wxDefaultCoord ) ? 160 : size.y ) ; + WinConstraintsType constraints; + memset(&constraints, 0, sizeof(WinConstraintsType)); + constraints.x_pos = ( pos.x == wxDefaultCoord ) ? winUndefConstraint : pos.x; + constraints.y_pos = ( pos.y == wxDefaultCoord ) ? winUndefConstraint : pos.y; + constraints.x_min = winUndefConstraint; + constraints.x_max = winMaxConstraint; + constraints.x_pref = ( size.x == wxDefaultCoord ) ? winUndefConstraint : size.x; + constraints.y_min = winUndefConstraint; + constraints.y_max = winMaxConstraint; + constraints.y_pref = ( size.y == wxDefaultCoord ) ? winUndefConstraint : size.y; - FrameForm = FrmNewForm( m_windowId, - title, - x, y, - w, h, - false, - 0, - NULL, - 0, - NULL, - 0); - if(FrameForm==0) - return false; + FrameForm = FrmNewFormWithConstraints( + m_windowId, + title.c_str(), + winFlagBackBuffer, + &constraints, + 0, + NULL, + 0, + NULL, + 0 + ); - FrmSetEventHandler(FrameForm,FrameFormHandleEvent); - - return true; -} - -bool wxTopLevelWindowPalm::Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name, - wxFrame* PFrame) -{ - wxTopLevelWindows.Append(this); - - if ( parent ) - parent->AddChild(this); - - m_windowId = id == -1 ? NewControlId() : id; - - FrameForm=FrmNewForm(m_windowId,title,0,0,160,160,false,0,NULL,0,NULL,0); - if(FrameForm==0) + if(FrameForm==NULL) return false; FrmSetEventHandler(FrameForm,FrameFormHandleEvent); FrmSetActiveForm(FrameForm); - ActiveParentFrame=PFrame; + ActiveParentFrame=this; return true; } @@ -280,21 +243,22 @@ void wxTopLevelWindowPalm::OnActivate(wxActivateEvent& event) */ static Boolean FrameFormHandleEvent(EventType* pEvent) { + wxFrame* frame = wxDynamicCast(ActiveParentFrame,wxFrame); Boolean fHandled = false; - FormType* pForm; - WinHandle hWindow; - int ItemID=0; + FormType* pForm; + WinHandle hWindow; + int ItemID=0; switch (pEvent->eType) { case ctlSelectEvent: break; #if wxUSE_MENUS_NATIVE case menuOpenEvent: - fHandled=ActiveParentFrame->HandleMenuOpen(); + fHandled = frame->HandleMenuOpen(); break; case menuEvent: - ItemID=pEvent->data.menu.itemID; - fHandled=ActiveParentFrame->HandleMenuSelect(ItemID); + ItemID = pEvent->data.menu.itemID; + fHandled = frame->HandleMenuSelect(ItemID); break; #endif default: diff --git a/src/palmos/window.cpp b/src/palmos/window.cpp index fe77c79547..39bff56d6a 100644 --- a/src/palmos/window.cpp +++ b/src/palmos/window.cpp @@ -334,7 +334,7 @@ void wxWindowPalm::SetTitle( const wxString& title) wxString wxWindowPalm::GetTitle() const { - return wxString(""); + return wxEmptyString; } void wxWindowPalm::DoCaptureMouse() @@ -1096,21 +1096,6 @@ extern wxWindow *wxGetWindowFromHWND(WXHWND hWnd) return NULL; } -#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__) - -void wxSetKeyboardHook(bool doIt) -{ -} - -#endif // !__WXMICROWIN__ - -#ifdef __WXDEBUG__ -const char *wxGetMessageName(int message) -{ - return ""; -} -#endif //__WXDEBUG__ - // Find the wxWindow at the current mouse position, returning the mouse // position. wxWindow* wxFindWindowAtPointer(wxPoint& pt)