X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8be10866cedb04e1072e411a094524d0efe98525..29686ebc000a1d95ae56a58b9ff2a5a6f23eed84:/src/palmos/control.cpp diff --git a/src/palmos/control.cpp b/src/palmos/control.cpp index 0d68b27055..66dd535de7 100644 --- a/src/palmos/control.cpp +++ b/src/palmos/control.cpp @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "control.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -30,21 +26,30 @@ #if wxUSE_CONTROLS +#include "wx/control.h" + #ifndef WX_PRECOMP #include "wx/event.h" #include "wx/app.h" #include "wx/dcclient.h" #include "wx/log.h" #include "wx/settings.h" + #include "wx/button.h" + #include "wx/checkbox.h" + #include "wx/radiobut.h" + #include "wx/slider.h" + #include "wx/toplevel.h" #endif -#include "wx/control.h" -#include "wx/toplevel.h" -#include "wx/button.h" -#include "wx/checkbox.h" #include "wx/tglbtn.h" -#include "wx/radiobut.h" -#include "wx/slider.h" + +#include +#include +#ifdef __WXPALMOS6__ + #include +#else + #include +#endif // __WXPALMOS6__ // ---------------------------------------------------------------------------- // wxWin macros @@ -72,13 +77,14 @@ void wxControl::Init() wxControl::~wxControl() { + SendDestroyEvent(); + SetLabel(wxEmptyString); - m_isBeingDeleted = true; DestroyChildren(); uint16_t index; - FormType* form = GetObjectFormIndex(index); + FormType* form = (FormType*)GetObjectFormIndex(index); if(form!=NULL && index!=frmInvalidObjectId) { FrmRemoveObject((FormType **)&form,index); @@ -107,25 +113,40 @@ bool wxControl::Create(wxWindow *parent, return true; } -bool wxControl::PalmCreateControl(ControlStyleType style, +bool wxControl::PalmCreateControl(int style, const wxString& label, const wxPoint& pos, const wxSize& size, uint8_t groupID) { - FormType* form = GetParentForm(); + FormType* form = (FormType*)GetParentForm(); if(form==NULL) return false; + + wxCoord x = pos.x == wxDefaultCoord ? 0 : pos.x, + y = pos.y == wxDefaultCoord ? 0 : pos.y, + w = size.x == wxDefaultCoord ? 1 : size.x, + h = size.y == wxDefaultCoord ? 1 : size.y; + + wxWindow *win = this; + while(win->GetParent()) + { + win = win->GetParent(); + wxPoint pt(win->GetClientAreaOrigin()); + x += pt.x; + y += pt.y; + } + ControlType *control = CtlNewControl( (void **)&form, GetId(), - style, - wxEmptyString, - ( pos.x == wxDefaultCoord ) ? winUndefConstraint : pos.x, - ( pos.y == wxDefaultCoord ) ? winUndefConstraint : pos.y, - ( size.x == wxDefaultCoord ) ? winUndefConstraint : size.x, - ( size.y == wxDefaultCoord ) ? winUndefConstraint : size.y, + (ControlStyleType)style, + NULL, + x, + y, + w, + h, stdFont, groupID, true @@ -136,6 +157,7 @@ bool wxControl::PalmCreateControl(ControlStyleType style, m_palmControl = true; + SetInitialSize(size); SetLabel(label); Show(); return true; @@ -146,28 +168,35 @@ bool wxControl::PalmCreateField(const wxString& label, const wxSize& size, bool editable, bool underlined, - JustificationType justification) + int justification) { - FormType* form = GetParentForm(); + FormType* form = (FormType*)GetParentForm(); if(form==NULL) return false; m_label = label; + wxCoord x = pos.x == wxDefaultCoord ? 0 : pos.x, + y = pos.y == wxDefaultCoord ? 0 : pos.y, + w = size.x == wxDefaultCoord ? 1 : size.x, + h = size.y == wxDefaultCoord ? 1 : size.y; + + AdjustForParentClientOrigin(x, y); + FieldType *field = FldNewField( (void **)&form, GetId(), - ( pos.x == wxDefaultCoord ) ? winUndefConstraint : pos.x, - ( pos.y == wxDefaultCoord ) ? winUndefConstraint : pos.y, - ( size.x == wxDefaultCoord ) ? winUndefConstraint : size.x, - ( size.y == wxDefaultCoord ) ? winUndefConstraint : size.y, + x, + y, + w, + h, stdFont, 10, editable, underlined, false, false, - justification, + (JustificationType)justification, false, false, false @@ -178,8 +207,9 @@ bool wxControl::PalmCreateField(const wxString& label, m_palmField = true; - Show(); + SetInitialSize(size); SetLabel(label); + Show(); return true; } @@ -187,7 +217,7 @@ bool wxControl::PalmCreateField(const wxString& label, // various accessors // ---------------------------------------------------------------------------- -FormType* wxControl::GetParentForm() const +WXFORMPTR wxControl::GetParentForm() const { wxWindow* parentTLW = GetParent(); while ( parentTLW && !parentTLW->IsTopLevel() ) @@ -200,9 +230,9 @@ FormType* wxControl::GetParentForm() const return tlw->GetForm(); } -FormType* wxControl::GetObjectFormIndex(uint16_t& index) const +WXFORMPTR wxControl::GetObjectFormIndex(uint16_t& index) const { - FormType* form = GetParentForm(); + FormType* form = (FormType* )GetParentForm(); if(form!=NULL) index = FrmGetObjectIndex(form, GetId()); else @@ -213,7 +243,7 @@ FormType* wxControl::GetObjectFormIndex(uint16_t& index) const void* wxControl::GetObjectPtr() const { uint16_t index; - FormType* form = GetObjectFormIndex(index); + FormType* form = (FormType*)GetObjectFormIndex(index); if(form==NULL || index==frmInvalidObjectId)return NULL; return FrmGetObjectPtr(form,index); } @@ -228,7 +258,7 @@ wxBorder wxControl::GetDefaultBorder() const void wxControl::SetIntValue(int val) { - FormType* form = GetParentForm(); + FormType* form = (FormType*)GetParentForm(); if(form==NULL) return; uint16_t index = FrmGetObjectIndex(form, GetId()); @@ -244,7 +274,7 @@ void wxControl::SetBoolValue(bool val) bool wxControl::GetBoolValue() const { - FormType* form = GetParentForm(); + FormType* form = (FormType*)GetParentForm(); if(form==NULL) return false; uint16_t index = FrmGetObjectIndex(form, GetId()); @@ -258,41 +288,73 @@ wxSize wxControl::DoGetBestSize() const return wxSize(16, 16); } -void wxControl::DoGetBounds( RectangleType &rect ) const +void wxControl::DoGetBounds( WXRECTANGLEPTR rect ) const +{ + if(rect==NULL) + return; + FormType* form = (FormType*)GetParentForm(); + if(form==NULL) + return; + uint16_t index = FrmGetObjectIndex(form,GetId()); + if(index==frmInvalidObjectId) + return; + FrmGetObjectBounds(form,index,(RectangleType*)rect); +} + +void wxControl::DoSetBounds( WXRECTANGLEPTR rect ) { - FormType* form = GetParentForm(); + if(rect==NULL) + return; + FormType* form = (FormType*)GetParentForm(); if(form==NULL) return; uint16_t index = FrmGetObjectIndex(form,GetId()); if(index==frmInvalidObjectId) return; - FrmGetObjectBounds(form,index,&rect); + FrmSetObjectBounds(form,index,(RectangleType*)rect); } void wxControl::DoGetPosition( int *x, int *y ) const { + int ox = 0, oy = 0; + AdjustForParentClientOrigin(ox, oy); + RectangleType rect; - DoGetBounds(rect); + DoGetBounds(&rect); + if(x) - *x = rect.topLeft.x; + *x = rect.topLeft.x - ox; if(y) - *y = rect.topLeft.y; + *y = rect.topLeft.y - oy; } void wxControl::DoGetSize( int *width, int *height ) const { RectangleType rect; - DoGetBounds(rect); + DoGetBounds(&rect); + if(width) *width = rect.extent.x; if(height) *height = rect.extent.y; } +void wxControl::DoMoveWindow(int x, int y, int width, int height) +{ + wxRect area = GetRect(); + RectangleType rect; + rect.topLeft.x = x; + rect.topLeft.y = y; + rect.extent.x = width; + rect.extent.y = height; + DoSetBounds(&rect); + GetParent()->Refresh(true, &area); +} + bool wxControl::Enable(bool enable) { ControlType *control = (ControlType *)GetObjectPtr(); - if( (IsPalmControl()) || (control == NULL)) + if( !IsPalmControl() || (control == NULL)) return false; if( CtlEnabled(control) == enable) return false; @@ -303,7 +365,7 @@ bool wxControl::Enable(bool enable) bool wxControl::IsEnabled() const { ControlType *control = (ControlType *)GetObjectPtr(); - if( (IsPalmControl()) || (control == NULL)) + if( !IsPalmControl() || (control == NULL)) return false; return CtlEnabled(control); } @@ -315,7 +377,7 @@ bool wxControl::IsShown() const bool wxControl::Show( bool show ) { - FormType* form = GetParentForm(); + FormType* form = (FormType*)GetParentForm(); if(form==NULL) return false; uint16_t index = FrmGetObjectIndex(form,GetId()); @@ -334,7 +396,7 @@ void wxControl::SetFieldLabel(const wxString& label) if(field==NULL) return; - uint16_t newSize = label.Length() + 1; + uint16_t newSize = label.length() + 1; MemHandle strHandle = FldGetTextHandle(field); FldSetTextHandle(field, NULL ); if (strHandle) @@ -364,7 +426,7 @@ void wxControl::SetControlLabel(const wxString& label) ControlType* control = (ControlType*)GetObjectPtr(); if(control==NULL) return; - CtlSetLabel(control,wxEmptyString); + CtlSetLabel(control, ""); m_label = label; if(!m_label.empty()) CtlSetLabel(control,m_label.c_str()); @@ -395,7 +457,7 @@ wxString wxControl::GetControlLabel() return wxEmptyString; return CtlGetLabel(control); } - +#if 0 wxString wxControl::GetLabel() { if(IsPalmField()) @@ -407,7 +469,7 @@ wxString wxControl::GetLabel() return wxEmptyString; } - +#endif /* static */ wxVisualAttributes wxControl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant)) { @@ -444,24 +506,11 @@ wxControl::GetCompositeControlsDefaultAttributes(wxWindowVariant WXUNUSED(varian bool wxControl::ProcessCommand(wxCommandEvent& event) { - return GetEventHandler()->ProcessEvent(event); + return HandleWindowEvent(event); } void wxControl::OnEraseBackground(wxEraseEvent& event) { } -WXHBRUSH wxControl::OnCtlColor(WXHDC pDC, WXHWND WXUNUSED(pWnd), WXUINT WXUNUSED(nCtlColor), - WXUINT WXUNUSED(message), - WXWPARAM WXUNUSED(wParam), - WXLPARAM WXUNUSED(lParam) - ) -{ - return (WXHBRUSH)0; -} - -// --------------------------------------------------------------------------- -// global functions -// --------------------------------------------------------------------------- - #endif // wxUSE_CONTROLS