Native PalmOS wxControl and wxButton implementation. wxTLW without fixed size. Unused MSW code cleaning.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31578 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Włodzimierz Skiba 2005-01-24 07:38:52 +00:00
parent 5125ea1f83
commit db101bd352
15 changed files with 139 additions and 202 deletions

View File

@ -113,6 +113,7 @@ wxPalmOS:
- native wxProgressDialog implementation
- native wxColourDialog implementation
- native wxSystemSettings colours
- native wxButton implementation
2.5.3

View File

@ -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

View File

@ -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)

View File

@ -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()

View File

@ -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.

View File

@ -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);

View File

@ -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
/////////////////////////////////////////////////////////////////////////////

View File

@ -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)

View File

@ -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()

View File

@ -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)
{
}

View File

@ -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;

View File

@ -107,7 +107,7 @@ int wxJoystick::GetProductId() const
wxString wxJoystick::GetProductName() const
{
return wxString("");
return wxEmptyString;
}
int wxJoystick::GetXMin() const

View File

@ -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());

View File

@ -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:

View File

@ -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)