wxWidgets 2.5 Change Log - For more verbose changes, see the manual
-------------------------------------------------------------------
+2.5.5
+-----
+
+wxPalmOS:
+
+- native wxRadioBox implementation
+
+
2.5.4
-----
\membersection{wxRadioBox::Enable}\label{wxradioboxenable}
-\func{void}{Enable}{\param{bool}{ enable = {\tt true}}}
+\func{virtual bool}{Enable}{\param{bool}{ enable = {\tt true}}}
Enables or disables the entire radiobox.
-\func{void}{Enable}{\param{int}{ n}, \param{bool}{ enable = {\tt true}}}
+\func{virtual bool}{Enable}{\param{int}{ n}, \param{bool}{ enable = {\tt true}}}
Enables or disables an individual button in the radiobox.
\end{twocollist}}
}
+\wxheading{See also}
+
+\helpref{wxWindow::Enable}{wxwindowenable}
+
\membersection{wxRadioBox::FindString}\label{wxradioboxfindstring}
// Created: 2003/03/18
// RCS-ID: $Id:
// Copyright: (c) 2003 David Elliott
-// Licence: wxWindows licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __WX_COCOA_RADIOBOX_H__
virtual wxString GetString(int n) const;
virtual void SetString(int n, const wxString& label);
// change the individual radio button state
- virtual void Enable(int n, bool enable = TRUE);
- virtual void Show(int n, bool show = TRUE);
+ virtual bool Enable(int n, bool enable = true);
+ virtual void Show(int n, bool show = true);
// layout parameters
virtual int GetColumnCount() const;
virtual int GetRowCount() const;
void SetString( int n, const wxString& label );
void Show( int item, bool show );
- void Enable( int item, bool enable );
+ virtual bool Enable( int item, bool enable = true );
virtual wxString GetStringSelection() const;
virtual bool SetStringSelection( const wxString& s );
void SetString( int n, const wxString& label );
void Show( int item, bool show );
- void Enable( int item, bool enable );
+ virtual bool Enable( int item, bool enable = true );
virtual wxString GetStringSelection() const;
virtual bool SetStringSelection( const wxString& s );
virtual wxString GetString(int item) const;
virtual void SetString(int item, const wxString& label) ;
- virtual void Enable(int item, bool enable);
+ virtual bool Enable(int item, bool enable = true);
virtual void Show(int item, bool show) ;
virtual int GetColumnCount() const ;
virtual int GetRowCount() const ;
- virtual bool Enable(bool enable = TRUE);
+ virtual bool Enable(bool enable = true);
virtual wxString GetLabel() const;
virtual void SetLabel(const wxString& label) ;
- virtual bool Show(bool show = TRUE);
+ virtual bool Show(bool show = true);
-// Other external functions
+// Other external functions
void Command(wxCommandEvent& event);
void SetFocus();
int m_noItems;
int m_noRowsOrCols;
-// Internal functions
+// Internal functions
virtual wxSize DoGetBestSize() const ;
virtual void DoSetSize(int x, int y,
int width, int height,
virtual wxString GetString(int item) const;
virtual void SetString(int item, const wxString& label) ;
- virtual void Enable(int item, bool enable);
+ virtual bool Enable(int item, bool enable = true);
virtual void Show(int item, bool show) ;
virtual int GetColumnCount() const ;
virtual int GetRowCount() const ;
-
- virtual bool Enable(bool enable = TRUE);
+ virtual bool Enable(bool enable = true);
virtual wxString GetLabel() const;
virtual void SetLabel(const wxString& label) ;
- virtual bool Show(bool show = TRUE);
+ virtual bool Show(bool show = true);
-// Other external functions
+// Other external functions
void Command(wxCommandEvent& event);
void SetFocus();
int m_noItems;
int m_noRowsOrCols;
-// Internal functions
+// Internal functions
virtual wxSize DoGetBestSize() const ;
virtual void DoSetSize(int x, int y,
int width, int height,
void SetString(int item, const wxString& label) ;
wxString GetString(int item) const;
virtual bool Enable(bool enable = true);
- void Enable(int item, bool enable);
+ virtual bool Enable(int item, bool enable = true);
void Show(int item, bool show) ;
virtual bool Show(bool show = true) ;
private:
void Init();
-
DECLARE_DYNAMIC_CLASS(wxRadioBox)
};
virtual int GetCount() const;
virtual wxString GetString(int n) const;
virtual void SetString(int n, const wxString& label);
- virtual void Enable(int n, bool enable = true);
+ virtual bool Enable(int n, bool enable = true);
virtual void Show(int n, bool show = true);
virtual int GetColumnCount() const { return GetNumHor(); }
virtual int GetRowCount() const { return GetNumVer(); }
void Command(wxCommandEvent& rEvent);
bool ContainsHWND(WXHWND hWnd) const;
- virtual bool Enable(bool bEnable = TRUE);
- void Enable( int nItem
- ,bool bEnable
- );
+ virtual bool Enable(bool bEnable = true);
+ virtual bool Enable(int nItem, bool bEnable = true);
int FindString(const wxString& sStr) const;
virtual WXHBRUSH OnCtlColor( WXHDC hDC
);
void SendNotificationEvent(void);
virtual void Show( int nItem
- ,bool bShow = TRUE
+ ,bool bShow = true
) ;
bool Show(bool bShow);
MRESULT WindowProc( WXUINT uMsg
#endif
class WXDLLEXPORT wxBitmap;
+class WXDLLEXPORT wxRadioButton;
// ----------------------------------------------------------------------------
// wxRadioBox
class WXDLLEXPORT wxRadioBox : public wxControl, public wxRadioBoxBase
{
public:
- wxRadioBox();
+ wxRadioBox():m_radios(wxKEY_INTEGER,32)
+ {
+ Init();
+ }
wxRadioBox(wxWindow *parent,
wxWindowID id,
long style = wxRA_SPECIFY_COLS,
const wxValidator& val = wxDefaultValidator,
const wxString& name = wxRadioBoxNameStr)
+ :m_radios(wxKEY_INTEGER,n+1)
{
+ Init();
(void)Create(parent, id, title, pos, size, n, choices, majorDim,
style, val, name);
}
+
wxRadioBox(wxWindow *parent,
wxWindowID id,
const wxString& title,
long style = wxRA_SPECIFY_COLS,
const wxValidator& val = wxDefaultValidator,
const wxString& name = wxRadioBoxNameStr)
+ :m_radios(wxKEY_INTEGER,choices.GetCount()+1)
{
+ Init();
(void)Create(parent, id, title, pos, size, choices, majorDim,
style, val, name);
}
virtual int GetCount() const;
virtual wxString GetString(int n) const;
virtual void SetString(int n, const wxString& label);
- virtual void Enable(int n, bool enable = true);
+ virtual bool Enable(int n, bool enable = true);
virtual void Show(int n, bool show = true);
virtual int GetColumnCount() const;
virtual int GetRowCount() const;
+ virtual void DoGetPosition( int *x, int *y ) const;
+ virtual void DoGetSize( int *width, int *height ) const;
+ virtual void DoMoveWindow(int x, int y, int width, int height);
+
+ virtual wxPoint GetClientAreaOrigin() const;
+
virtual bool Show(bool show = true);
void SetFocus();
virtual bool Enable(bool enable = true);
int m_noRowsOrCols;
int m_selectedButton;
- virtual void DoSetSize(int x, int y,
- int width, int height,
- int sizeFlags = wxSIZE_AUTO);
virtual wxSize DoGetBestSize() const;
private:
+
+ void Init();
+ wxRadioButton *GetRadioButton(int i);
+
+ wxPoint m_pos;
+ wxSize m_size;
+ wxHashTable m_radios;
+
DECLARE_DYNAMIC_CLASS(wxRadioBox)
DECLARE_NO_COPY_CLASS(wxRadioBox)
};
{
public:
// change the individual radio button state
- virtual void Enable(int n, bool enable = true) = 0;
+ virtual bool Enable(int n, bool enable = true) = 0;
virtual void Show(int n, bool show = true) = 0;
// layout parameters
virtual wxString GetString(int n) const;
virtual void SetString(int n, const wxString& label);
- virtual void Enable(int n, bool enable = true);
+ virtual bool Enable(int n, bool enable = true);
virtual void Show(int n, bool show = true);
// we also override the wxControl methods to avoid virtual function hiding
// Author: David Elliott
// Modified by:
// Created: 2003/02/15
-// RCS-ID: $Id:
+// RCS-ID: $Id:
// Copyright: (c) 2003 David Elliott
-// Licence: wxWidgets licence
+// Licence: wxWidgets licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/wxprec.h"
}
// change the individual radio button state
-void wxRadioBox::Enable(int n, bool enable)
+bool wxRadioBox::Enable(int n, bool enable)
{
+ // TODO
+ return false;
}
void wxRadioBox::Show(int n, bool show)
wxString wxRadioBox::GetString( int n ) const
{
- wxCHECK_MSG( m_widget != NULL, wxT(""), wxT("invalid radiobox") );
+ wxCHECK_MSG( m_widget != NULL, wxEmptyString, wxT("invalid radiobox") );
wxList::compatibility_iterator node = m_boxes.Item( n );
- wxCHECK_MSG( node, wxT(""), wxT("radiobox wrong index") );
+ wxCHECK_MSG( node, wxEmptyString, wxT("radiobox wrong index") );
GtkLabel *label = GTK_LABEL( BUTTON_CHILD(node->GetData()) );
return true;
}
-void wxRadioBox::Enable( int item, bool enable )
+bool wxRadioBox::Enable( int item, bool enable )
{
- wxCHECK_RET( m_widget != NULL, wxT("invalid radiobox") );
+ wxCHECK_MSG( m_widget != NULL, false, wxT("invalid radiobox") );
wxList::compatibility_iterator node = m_boxes.Item( item );
- wxCHECK_RET( node, wxT("radiobox wrong index") );
+ wxCHECK_MSG( node, false, wxT("radiobox wrong index") );
GtkButton *button = GTK_BUTTON( node->GetData() );
GtkLabel *label = GTK_LABEL( BUTTON_CHILD(button) );
gtk_widget_set_sensitive( GTK_WIDGET(button), enable );
gtk_widget_set_sensitive( GTK_WIDGET(label), enable );
+
+ return true;
}
void wxRadioBox::Show( int item, bool show )
wxString wxRadioBox::GetStringSelection() const
{
- wxCHECK_MSG( m_widget != NULL, wxT(""), wxT("invalid radiobox") );
+ wxCHECK_MSG( m_widget != NULL, wxEmptyString, wxT("invalid radiobox") );
wxList::compatibility_iterator node = m_boxes.GetFirst();
while (node)
}
wxFAIL_MSG( wxT("wxRadioBox none selected") );
- return wxT("");
+ return wxEmptyString;
}
bool wxRadioBox::SetStringSelection( const wxString &s )
wxString wxRadioBox::GetString( int n ) const
{
- wxCHECK_MSG( m_widget != NULL, wxT(""), wxT("invalid radiobox") );
+ wxCHECK_MSG( m_widget != NULL, wxEmptyString, wxT("invalid radiobox") );
wxList::compatibility_iterator node = m_boxes.Item( n );
- wxCHECK_MSG( node, wxT(""), wxT("radiobox wrong index") );
+ wxCHECK_MSG( node, wxEmptyString, wxT("radiobox wrong index") );
GtkLabel *label = GTK_LABEL( BUTTON_CHILD(node->GetData()) );
return true;
}
-void wxRadioBox::Enable( int item, bool enable )
+bool wxRadioBox::Enable( int item, bool enable )
{
- wxCHECK_RET( m_widget != NULL, wxT("invalid radiobox") );
+ wxCHECK_MSG( m_widget != NULL, false, wxT("invalid radiobox") );
wxList::compatibility_iterator node = m_boxes.Item( item );
- wxCHECK_RET( node, wxT("radiobox wrong index") );
+ wxCHECK_MSG( node, false, wxT("radiobox wrong index") );
GtkButton *button = GTK_BUTTON( node->GetData() );
GtkLabel *label = GTK_LABEL( BUTTON_CHILD(button) );
gtk_widget_set_sensitive( GTK_WIDGET(button), enable );
gtk_widget_set_sensitive( GTK_WIDGET(label), enable );
+
+ return true;
}
void wxRadioBox::Show( int item, bool show )
wxString wxRadioBox::GetStringSelection() const
{
- wxCHECK_MSG( m_widget != NULL, wxT(""), wxT("invalid radiobox") );
+ wxCHECK_MSG( m_widget != NULL, wxEmptyString, wxT("invalid radiobox") );
wxList::compatibility_iterator node = m_boxes.GetFirst();
while (node)
}
wxFAIL_MSG( wxT("wxRadioBox none selected") );
- return wxT("");
+ return wxEmptyString;
}
bool wxRadioBox::SetStringSelection( const wxString &s )
}
//-------------------------------------------------------------------------------------
-// ¥ wxRadioBox(wxWindow*, wxWindowID, const wxString&, const wxPoint&,
-// const wxSize&, int, const wxString[], int, long,
+// ¥ wxRadioBox(wxWindow*, wxWindowID, const wxString&, const wxPoint&,
+// const wxSize&, int, const wxString[], int, long,
// const wxValidator&, const wxString&)
//-------------------------------------------------------------------------------------
// Contructor, creating and showing a radiobox
wxRadioBox::~wxRadioBox()
{
- m_isBeingDeleted = TRUE;
+ m_isBeingDeleted = true;
wxRadioButton *next,*current;
-
+
current=m_radioButtonCycle->NextInCycle();
next=current->NextInCycle();
while (current!=m_radioButtonCycle) {
current=next;
next=current->NextInCycle();
}
- delete current;
+ delete current;
}
//-------------------------------------------------------------------------------------
int majorDim, long style,
const wxValidator& val, const wxString& name)
{
- m_macIsUserPane = FALSE ;
-
+ m_macIsUserPane = false ;
+
if ( !wxControl::Create(parent, id, pos, size, style, val, name) )
return false;
int i;
-
+
m_noItems = n;
m_noRowsOrCols = majorDim;
m_radioButtonCycle = NULL;
-
+
if (majorDim==0)
m_majorDim = n ;
else
m_majorDim = majorDim ;
-
-
+
+
m_label = label ;
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
bounds.right = bounds.left + 100 ;
if ( bounds.bottom <= bounds.top )
bounds.bottom = bounds.top + 100 ;
-
+
m_peer = new wxMacControl() ;
-
- verify_noerr(CreateGroupBoxControl(MAC_WXHWND(parent->MacGetTopLevelWindowRef()),&bounds, CFSTR("") ,
- true /*primary*/ , m_peer->GetControlRefAddr() ) ) ;
-
+
+ verify_noerr(CreateGroupBoxControl(MAC_WXHWND(parent->MacGetTopLevelWindowRef()),&bounds, CFSTR("") ,
+ true /*primary*/ , m_peer->GetControlRefAddr() ) ) ;
+
for (i = 0; i < n; i++)
{
wxRadioButton *radBtn = new wxRadioButton
m_radioButtonCycle = radBtn ;
// m_radioButtonCycle=radBtn->AddInCycle(m_radioButtonCycle);
}
-
+
SetSelection(0);
MacPostControlCreate(pos,size) ;
-
- return TRUE;
+
+ return true;
}
{
int i;
wxRadioButton *current;
-
+
if (!wxControl::Enable(enable))
return false;
-
+
current = m_radioButtonCycle;
for (i = 0; i < m_noItems; i++) {
current->Enable(enable);
//-------------------------------------------------------------------------------------
// Enables or disables an given button
-void wxRadioBox::Enable(int item, bool enable)
+bool wxRadioBox::Enable(int item, bool enable)
{
int i;
wxRadioButton *current;
-
+
if ((item < 0) || (item >= m_noItems))
- return;
-
+ return false;
+
i = 0;
current = m_radioButtonCycle;
while (i != item) {
i++;
current = current->NextInCycle();
}
- current->Enable(enable);
+ return current->Enable(enable);
}
//-------------------------------------------------------------------------------------
{
int i;
wxRadioButton *current;
-
+
if ((item < 0) || (item >= m_noItems))
return wxEmptyString;
-
+
i = 0;
current = m_radioButtonCycle;
while (i != item) {
{
int i;
wxRadioButton *current;
-
+
i=0;
current=m_radioButtonCycle;
while (!current->GetValue()) {
i++;
current=current->NextInCycle();
}
-
+
return i;
}
{
int i;
wxRadioButton *current;
-
+
if ((item < 0) || (item >= m_noItems))
return;
i=0;
//-------------------------------------------------------------------------------------
// ¥ SetSelection
//-------------------------------------------------------------------------------------
-// Sets a button by passing the desired position. This does not cause
+// Sets a button by passing the desired position. This does not cause
// wxEVT_COMMAND_RADIOBOX_SELECTED event to get emitted
void wxRadioBox::SetSelection(int item)
{
int i;
wxRadioButton *current;
-
+
if ((item < 0) || (item >= m_noItems))
return;
i=0;
current=current->NextInCycle();
}
current->SetValue(true);
-
+
}
//-------------------------------------------------------------------------------------
// ¥ Show(bool)
//-------------------------------------------------------------------------------------
-// Shows or hides the entire radiobox
+// Shows or hides the entire radiobox
bool wxRadioBox::Show(bool show)
{
int i;
wxRadioButton *current;
-
+
wxControl::Show(show);
-
+
current=m_radioButtonCycle;
for (i=0;i<m_noItems;i++) {
current->Show(show);
//-------------------------------------------------------------------------------------
// ¥ Show(int, bool)
//-------------------------------------------------------------------------------------
-// Shows or hides the given button
+// Shows or hides the given button
void wxRadioBox::Show(int item, bool show)
{
int i;
wxRadioButton *current;
-
+
if ((item < 0) || (item >= m_noItems))
return;
i=0;
{
int i;
wxRadioButton *current;
-
+
i=0;
current=m_radioButtonCycle;
while (!current->GetValue()) {
{
int i;
wxRadioButton *current;
-
+
// define the position
-
+
int x_current, y_current;
int x_offset,y_offset;
int widthOld, heightOld;
GetSize(&widthOld, &heightOld);
-
+
x_offset = x;
y_offset = y;
GetPosition(&x_current, &y_current);
x_offset = x_current;
if ((y == -1)&& !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
y_offset = y_current;
-
+
// define size
-
+
int charWidth,charHeight;
int maxWidth,maxHeight;
int eachWidth[128],eachHeight[128];
int totWidth,totHeight;
-
+
GetTextExtent(wxT("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), &charWidth, &charHeight);
charWidth/=52;
-
+
maxWidth=-1;
maxHeight=-1;
for (i = 0 ; i < m_noItems; i++)
if (maxWidth<eachWidth[i]) maxWidth = eachWidth[i];
if (maxHeight<eachHeight[i]) maxHeight = eachHeight[i];
}
-
+
totHeight = GetRowCount() * ( maxHeight ) ;
totWidth = GetColumnCount() * (maxWidth + charWidth) ;
wxSize sz = DoGetSizeFromClientSize( wxSize( totWidth , totHeight ) ) ;
-
+
// only change our width/height if asked for
if ( width == -1 )
{
else
width = widthOld;
}
-
+
if ( height == -1 )
{
if ( sizeFlags & wxSIZE_AUTO_HEIGHT )
else
height = heightOld;
}
-
+
wxControl::DoSetSize(x_offset,y_offset,width,height,wxSIZE_AUTO);
-
+
// arrange radiobuttons
-
+
int x_start,y_start;
-
-
+
+
x_start = 0;
y_start = 0 ;
x_offset = x_start;
y_offset = y_start;
-
- current=m_radioButtonCycle;
+
+ current=m_radioButtonCycle;
for ( i = 0 ; i < m_noItems; i++)
{
if (i&&((i%m_majorDim)==0)) // not to do for the zero button!
y_offset += maxHeight ; /*+ charHeight/2;*/
}
}
-
+
current->SetSize(x_offset,y_offset,eachWidth[i],eachHeight[i]);
current=current->NextInCycle();
-
+
if (m_windowStyle & wxRA_SPECIFY_ROWS)
y_offset += maxHeight ; /*+ charHeight/2;*/
else
int maxWidth, maxHeight;
int eachWidth, eachHeight;
int totWidth, totHeight;
-
+
wxFont font = /*GetParent()->*/GetFont();
GetTextExtent(wxT("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"),
&charWidth, &charHeight, NULL, NULL, &font);
charWidth /= 52;
-
+
maxWidth = -1;
maxHeight = -1;
-
+
for (int i = 0 ; i < m_noItems; i++)
{
GetTextExtent(GetString(i), &eachWidth, &eachHeight,NULL, NULL, &font);
if (maxWidth < eachWidth) maxWidth = eachWidth;
if (maxHeight < eachHeight) maxHeight = eachHeight;
}
-
+
totHeight = GetRowCount() * (maxHeight ) ;
totWidth = GetColumnCount() * (maxWidth + charWidth) ;
-
+
wxSize sz = DoGetSizeFromClientSize( wxSize( totWidth , totHeight ) ) ;
totWidth = sz.x ;
totHeight = sz.y ;
-
+
// handle radio box title as well
GetTextExtent(GetTitle(), &eachWidth, NULL);
eachWidth = (int)(eachWidth + RADIO_SIZE) + 3 * charWidth ;
- if (totWidth < eachWidth)
+ if (totWidth < eachWidth)
totWidth = eachWidth;
-
+
return wxSize(totWidth, totHeight);
}
//-------------------------------------------------------------------------------------
}
#endif
-
-
-
}
//-------------------------------------------------------------------------------------
-// ¥ wxRadioBox(wxWindow*, wxWindowID, const wxString&, const wxPoint&,
-// const wxSize&, int, const wxString[], int, long,
+// ¥ wxRadioBox(wxWindow*, wxWindowID, const wxString&, const wxPoint&,
+// const wxSize&, int, const wxString[], int, long,
// const wxValidator&, const wxString&)
//-------------------------------------------------------------------------------------
// Contructor, creating and showing a radiobox
wxRadioBox::~wxRadioBox()
{
- m_isBeingDeleted = TRUE;
+ m_isBeingDeleted = true;
wxRadioButton *next,*current;
-
+
current=m_radioButtonCycle->NextInCycle();
next=current->NextInCycle();
while (current!=m_radioButtonCycle) {
current=next;
next=current->NextInCycle();
}
- delete current;
+ delete current;
}
//-------------------------------------------------------------------------------------
return false;
int i;
-
+
m_noItems = n;
m_noRowsOrCols = majorDim;
m_radioButtonCycle = NULL;
-
+
if (majorDim==0)
m_majorDim = n ;
else
m_majorDim = majorDim ;
-
-
+
Rect bounds ;
Str255 title ;
-
+
MacPreControlCreate( parent , id , wxStripMenuCodes(label) , pos , size ,style, val , name , &bounds , title ) ;
-
- m_macControl = (WXWidget) ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
+
+ m_macControl = (WXWidget) ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
kControlGroupBoxTextTitleProc , (long) this ) ;
-
+
for (i = 0; i < n; i++)
{
wxRadioButton *radBtn = new wxRadioButton
m_radioButtonCycle = radBtn ;
// m_radioButtonCycle=radBtn->AddInCycle(m_radioButtonCycle);
}
-
+
SetSelection(0);
MacPostControlCreate() ;
-
- return TRUE;
+
+ return true;
}
{
int i;
wxRadioButton *current;
-
+
if (!wxControl::Enable(enable))
return false;
-
+
current = m_radioButtonCycle;
for (i = 0; i < m_noItems; i++) {
current->Enable(enable);
//-------------------------------------------------------------------------------------
// Enables or disables an given button
-void wxRadioBox::Enable(int item, bool enable)
+bool wxRadioBox::Enable(int item, bool enable)
{
int i;
wxRadioButton *current;
-
+
if ((item < 0) || (item >= m_noItems))
- return;
-
+ return false;
+
i = 0;
current = m_radioButtonCycle;
while (i != item) {
i++;
current = current->NextInCycle();
}
- current->Enable(enable);
+ return current->Enable(enable);
}
//-------------------------------------------------------------------------------------
{
int i;
wxRadioButton *current;
-
+
if ((item < 0) || (item >= m_noItems))
return wxEmptyString;
-
+
i = 0;
current = m_radioButtonCycle;
while (i != item) {
{
int i;
wxRadioButton *current;
-
+
i=0;
current=m_radioButtonCycle;
while (!current->GetValue()) {
i++;
current=current->NextInCycle();
}
-
+
return i;
}
{
int i;
wxRadioButton *current;
-
+
if ((item < 0) || (item >= m_noItems))
return;
i=0;
//-------------------------------------------------------------------------------------
// ¥ SetSelection
//-------------------------------------------------------------------------------------
-// Sets a button by passing the desired position. This does not cause
+// Sets a button by passing the desired position. This does not cause
// wxEVT_COMMAND_RADIOBOX_SELECTED event to get emitted
void wxRadioBox::SetSelection(int item)
{
int i;
wxRadioButton *current;
-
+
if ((item < 0) || (item >= m_noItems))
return;
i=0;
current=current->NextInCycle();
}
current->SetValue(true);
-
+
}
//-------------------------------------------------------------------------------------
// ¥ Show(bool)
//-------------------------------------------------------------------------------------
-// Shows or hides the entire radiobox
+// Shows or hides the entire radiobox
bool wxRadioBox::Show(bool show)
{
int i;
wxRadioButton *current;
-
+
wxControl::Show(show);
-
+
current=m_radioButtonCycle;
for (i=0;i<m_noItems;i++) {
current->Show(show);
//-------------------------------------------------------------------------------------
// ¥ Show(int, bool)
//-------------------------------------------------------------------------------------
-// Shows or hides the given button
+// Shows or hides the given button
void wxRadioBox::Show(int item, bool show)
{
int i;
wxRadioButton *current;
-
+
if ((item < 0) || (item >= m_noItems))
return;
i=0;
{
int i;
wxRadioButton *current;
-
+
i=0;
current=m_radioButtonCycle;
while (!current->GetValue()) {
{
int i;
wxRadioButton *current;
-
+
// define the position
-
+
int x_current, y_current;
int x_offset,y_offset;
int widthOld, heightOld;
GetSize(&widthOld, &heightOld);
-
+
x_offset = x;
y_offset = y;
GetPosition(&x_current, &y_current);
x_offset = x_current;
if ((y == -1)&& !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
y_offset = y_current;
-
+
// define size
-
+
int charWidth,charHeight;
int maxWidth,maxHeight;
int eachWidth[128],eachHeight[128];
int totWidth,totHeight;
-
+
SetFont(GetParent()->GetFont());
GetTextExtent(wxT("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), &charWidth, &charHeight);
charWidth/=52;
-
+
maxWidth=-1;
maxHeight=-1;
for (i = 0 ; i < m_noItems; i++)
if (maxWidth<eachWidth[i]) maxWidth = eachWidth[i];
if (maxHeight<eachHeight[i]) maxHeight = eachHeight[i];
}
-
+
totHeight = GetRowCount() * (maxHeight + charHeight/2) + charHeight ;
totWidth = GetColumnCount() * (maxWidth + charWidth) + charWidth;
-
+
// only change our width/height if asked for
if ( width == -1 )
{
else
width = widthOld;
}
-
+
if ( height == -1 )
{
if ( sizeFlags & wxSIZE_AUTO_HEIGHT )
else
height = heightOld;
}
-
+
wxControl::DoSetSize(x_offset,y_offset,width,height,wxSIZE_AUTO);
-
+
// arrange radiobuttons
-
+
int x_start,y_start;
-
-
+
+
x_start = charWidth;
y_start = 15 ;
if ( UMAGetSystemVersion() >= 0x1030 )
{
- //need to add a few more pixels for the top border on panther
- y_start = y_start + 5; //how many exactly should this be to meet the HIG?
+ //need to add a few more pixels for the top border on panther
+ y_start = y_start + 5; //how many exactly should this be to meet the HIG?
}
x_offset = x_start;
y_offset = y_start;
-
- current=m_radioButtonCycle;
+
+ current=m_radioButtonCycle;
for ( i = 0 ; i < m_noItems; i++)
{
if (i&&((i%m_majorDim)==0)) // not to do for the zero button!
y_offset += maxHeight ; /*+ charHeight/2;*/
}
}
-
+
current->SetSize(x_offset,y_offset,eachWidth[i],eachHeight[i]);
current=current->NextInCycle();
-
+
if (m_windowStyle & wxRA_SPECIFY_ROWS)
y_offset += maxHeight ; /*+ charHeight/2;*/
else
int maxWidth, maxHeight;
int eachWidth, eachHeight;
int totWidth, totHeight;
-
+
wxFont font = GetParent()->GetFont();
GetTextExtent(wxT("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"),
&charWidth, &charHeight, NULL, NULL, &font);
charWidth /= 52;
-
+
maxWidth = -1;
maxHeight = -1;
-
+
for (int i = 0 ; i < m_noItems; i++)
{
GetTextExtent(GetString(i), &eachWidth, &eachHeight);
if (maxWidth < eachWidth) maxWidth = eachWidth;
if (maxHeight < eachHeight) maxHeight = eachHeight;
}
-
+
totHeight = GetRowCount() * (maxHeight + charHeight/2) + charHeight ;
totWidth = GetColumnCount() * (maxWidth + charWidth) + charWidth;
-
+
if ( UMAGetSystemVersion() >= 0x1030 )
{
//need to add a few more pixels for the static boxborder on panther
// handle radio box title as well
GetTextExtent(GetTitle(), &eachWidth, NULL);
eachWidth = (int)(eachWidth + RADIO_SIZE) + 3 * charWidth ;
- if (totWidth < eachWidth)
+ if (totWidth < eachWidth)
totWidth = eachWidth;
-
+
return wxSize(totWidth, totHeight);
}
//-------------------------------------------------------------------------------------
return m_majorDim;
}
}
-
-
-
-
-
WXFontType fontType = m_font.GetFontType(XtDisplay(parentWidget));
- if (label1 != "")
+ if (!label1.empty())
{
wxXmString text(label1);
m_labelWidget = (WXWidget)
: xmLabelGadgetClass,
(Widget)m_mainWidget,
#else
- xmLabelWidgetClass,
+ xmLabelWidgetClass,
(Widget)m_mainWidget,
#endif
wxFont::GetFontTag(), fontType,
#else
XmNchildType, XmFRAME_TITLE_CHILD,
#endif
- XmNchildVerticalAlignment,
+ XmNchildVerticalAlignment,
XmALIGNMENT_CENTER,
NULL);
}
ChangeFont(false);
SetSelection (0);
-
+
XtRealizeWidget((Widget)m_mainWidget);
XtManageChild (radioBoxWidget);
XtManageChild ((Widget)m_mainWidget);
return;
Widget widget = (Widget) m_radioButtons[item];
- if (label != "")
+ if (!label.empty())
{
wxString label1(wxStripMenuCodes(label));
wxXmString text( label1 );
if (x > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
XtVaSetValues ((Widget) m_mainWidget, XmNx, xx, NULL);
if (y > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
- XtVaSetValues ((Widget) m_mainWidget, XmNy, yy, NULL);
+ XtVaSetValues ((Widget) m_mainWidget, XmNy, yy, NULL);
if (width > 0)
XtVaSetValues ((Widget) m_mainWidget, XmNwidth, width, NULL);
}
// Enable a specific button
-void wxRadioBox::Enable(int n, bool enable)
+bool wxRadioBox::Enable(int n, bool enable)
{
if ((n < 0) || (n >= m_noItems))
- return;
+ return false;
XtSetSensitive ((Widget) m_radioButtons[n], (Boolean) enable);
+ return true;
}
// Enable all controls
// It's main purpose isn't for allowing Show/Unshow dynamically,
// but rather to provide a way to design wxRadioBox such:
//
- // o Val1 o Val2 o Val3
- // o Val4 o Val6
- // o Val7 o Val8 o Val9
+ // o Val1 o Val2 o Val3
+ // o Val4 o Val6
+ // o Val7 o Val8 o Val9
//
// In my case, this is a 'direction' box, and the Show(5,False) is
// coupled with an Enable(5,False)
if (sel > -1)
return this->GetString (sel);
else
- return wxString("");
+ return wxEmptyString;
}
bool wxRadioBox::SetStringSelection (const wxString& s)
}
// Enable a specific button
-void wxRadioBox::Enable(int item, bool enable)
+bool wxRadioBox::Enable(int item, bool enable)
{
- wxCHECK_RET( item >= 0 && item < GetCount(),
+ wxCHECK_MSG( item >= 0 && item < GetCount(), false,
wxT("invalid item in wxRadioBox::Enable()") );
::EnableWindow((*m_radioButtons)[item], enable);
+ return true;
}
// Show a specific button
int width = GetNumHor() * (sizeBtn.x + cx1) + cx1;
// Add extra space under the label, if it exists.
- if (!wxControl::GetLabel().IsEmpty())
+ if (!wxControl::GetLabel().empty())
height += cy1/2;
// and also wide enough for its label
y_offset += cy1;
// Add extra space under the label, if it exists.
- if (!wxControl::GetLabel().IsEmpty())
+ if (!wxControl::GetLabel().empty())
y_offset += cy1/2;
int startX = x_offset;
wxRadioBox::~wxRadioBox()
{
- m_isBeingDeleted = TRUE;
+ m_isBeingDeleted = true;
if (m_ahRadioButtons)
{
for (i = 0; i < nCount; i++)
{
if (GetRadioButtons()[i] == hWnd)
- return TRUE;
+ return true;
}
- return FALSE;
+ return false;
} // end of wxRadioBox::ContainsHWND
bool wxRadioBox::Create(
,rVal
,rsName
))
- return FALSE;
+ return false;
if (!OS2CreateControl( "STATIC"
,SS_GROUPBOX
,rPos
,rSize
,rsTitle
))
- return FALSE;
+ return false;
wxAssociateWinWithHandle(m_hWnd, this);
);
if (!hWndBtn)
{
- return FALSE;
+ return false;
}
m_ahRadioButtons[i] = (WXHWND)hWndBtn;
SubclassRadioButton((WXHWND)hWndBtn);
,rSize.x
,rSize.y
);
- return TRUE;
+ return true;
} // end of wxRadioBox::Create
wxSize wxRadioBox::DoGetBestSize() const
}
} // end of wxRadioBox::DoSetSize
-void wxRadioBox::Enable(
- int nItem
-, bool bEnable
-)
+bool wxRadioBox::Enable(int nItem, bool bEnable)
{
- wxCHECK_RET( nItem >= 0 && nItem < m_nNoItems,
+ wxCHECK_MSG( nItem >= 0 && nItem < m_nNoItems, false,
wxT("invalid item in wxRadioBox::Enable()") );
::WinEnableWindow((HWND) m_ahRadioButtons[nItem], bEnable);
+ return true;
} // end of wxRadioBox::Enable
bool wxRadioBox::Enable(
)
{
if ( !wxControl::Enable(bEnable) )
- return FALSE;
+ return false;
for (int i = 0; i < m_nNoItems; i++)
::WinEnableWindow((HWND)m_ahRadioButtons[i], bEnable);
- return TRUE;
+ return true;
} // end of wxRadioBox::Enable
int wxRadioBox::FindString(
int nItem
) const
{
- wxCHECK_MSG(nItem >= 0 && nItem < m_nNoItems, wxT(""), wxT("invalid radiobox index") );
+ wxCHECK_MSG(nItem >= 0 && nItem < m_nNoItems, wxEmptyString, wxT("invalid radiobox index") );
return wxGetWindowText(m_ahRadioButtons[nItem]);
} // end of wxRadioBox::GetLabel
if (uCmd == BN_CLICKED)
{
if (wId == GetId())
- return TRUE;
+ return true;
for (int i = 0; i < m_nNoItems; i++)
//
// Just ignore it
//
- return FALSE;
+ return false;
}
if (nSelectedButton != m_nSelectedButton)
{
m_nSelectedButton = nSelectedButton;
SendNotificationEvent();
}
- return TRUE;
+ return true;
}
else
- return FALSE;
+ return false;
} // end of wxRadioBox::OS2Command
void wxRadioBox::SendNotificationEvent()
//
// Nothing to do
//
- return FALSE;
+ return false;
}
//
// Also set the font of our radio buttons
);
::WinInvalidateRect(hWndBtn, NULL, FALSE);
}
- return TRUE;
+ return true;
} // end of wxRadioBox::SetFont
void wxRadioBox::SetSelection(
if (nSel > -1)
{
SetSelection(nSel);
- return TRUE;
+ return true;
}
else
- return FALSE;
+ return false;
} // end of wxRadioBox::SetStringSelection
bool wxRadioBox::Show(
)
{
if (!wxControl::Show(bShow))
- return FALSE;
+ return false;
for (int i = 0; i < m_nNoItems; i++)
{
::WinShowWindow((HWND)m_ahRadioButtons[i], (BOOL)bShow);
}
- return TRUE;
+ return true;
} // end of wxRadioBox::Show
// Show a specific button
,QWL_USER
);
USHORT uVk = SHORT2FROMMP((MPARAM)lParam);
- bool bProcessed = TRUE;
+ bool bProcessed = true;
wxDirection eDir;
switch(uVk)
break;
default:
- bProcessed = FALSE;
+ bProcessed = false;
//
// Just to suppress the compiler warning
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;
bool wxControl::IsEnabled() const
{
ControlType *control = (ControlType *)GetObjectPtr();
- if( (IsPalmControl()) || (control == NULL))
+ if( !IsPalmControl() || (control == NULL))
return false;
return CtlEnabled(control);
}
// wxRadioBox
// ---------------------------------------------------------------------------
+void wxRadioBox::Init()
+{
+ m_pos = wxPoint(0,0);
+ m_size = wxSize(0,0);
+}
+
int wxRadioBox::GetCount() const
{
- return 0;
+ return m_radios.GetCount();
}
int wxRadioBox::GetColumnCount() const
return 0;
}
-// Radio box item
-wxRadioBox::wxRadioBox()
-{
-}
-
bool wxRadioBox::Create(wxWindow *parent,
wxWindowID id,
const wxString& title,
const wxString& name)
{
// initialize members
- m_majorDim = majorDim == 0 ? n : majorDim;
-
- if(!wxControl::Create(parent, id, pos, size, style, val, name))
+ m_majorDim = majorDim == 0 ? n : wxMin(majorDim, n);
+ if(m_majorDim==0 || n==0) return false;
+
+ // subtype of the native palmOS radio: checkbox or push button?
+ const bool use_checkbox = style & wxRA_USE_CHECKBOX;
+ const bool use_cols = style & wxRA_SPECIFY_COLS;
+
+ // get default size and position for the initial placement
+ m_size = size;
+ m_pos = pos;
+ int minor = n / m_majorDim;
+ if(n % m_majorDim > 0) minor++;
+ if(m_size.x==wxDefaultCoord)
+ m_size.x=36*(use_cols?m_majorDim:minor);
+ if(m_size.y==wxDefaultCoord)
+ m_size.y=12*(use_cols?minor:m_majorDim);
+ if(m_pos.x==wxDefaultCoord)
+ m_pos.x=0;
+ if(m_pos.y==wxDefaultCoord)
+ m_pos.y=0;
+
+ if(!wxControl::Create(parent, id, m_pos, m_size, style, val, name))
return false;
- for(int i=0; i<n; i++)
+ int i = 0;
+ for ( int j = 0; j < minor; j++ )
{
- wxRadioButton* rb = new wxRadioButton();
- rb->SetGroup( id );
- rb->Create(
- this,
- wxID_ANY,
- choices[i],
- pos,
- size,
- ( n == 0 ? wxRB_GROUP : 0 ) |
- ( style & wxRA_USE_CHECKBOX ) ? wxRB_USE_CHECKBOX : 0
- );
+ for ( int k = 0; k < m_majorDim; k++ )
+ {
+ if(i<n)
+ {
+ wxPoint start, end;
+ start.x = (use_cols ? (k*m_size.x)/m_majorDim : (j*m_size.x)/minor);
+ start.y = (use_cols ? (j*m_size.y)/minor : (k*m_size.y)/m_majorDim);
+ end.x = (use_cols ? ((k+1)*m_size.x)/m_majorDim : ((j+1)*m_size.x)/minor);
+ end.y = (use_cols ? ((j+1)*m_size.y)/minor : ((k+1)*m_size.y)/m_majorDim);
+ wxRadioButton* rb = new wxRadioButton();
+ rb->SetGroup( id );
+ rb->Create(
+ this,
+ wxID_ANY,
+ choices[i],
+ start,
+ wxSize(end.x-start.x-1,end.y-start.y-1),
+ ( n == 0 ? wxRB_GROUP : 0 ) |
+ use_checkbox ? wxRB_USE_CHECKBOX : 0
+ );
+ m_radios.Put(i,rb);
+ i++;
+ }
+ }
}
-
- SetSize(size);
}
bool wxRadioBox::Create(wxWindow *parent,
{
}
+wxRadioButton *wxRadioBox::GetRadioButton(int i)
+{
+ return (wxRadioButton *)m_radios.Get(i);
+}
+
+void wxRadioBox::DoGetPosition( int *x, int *y ) const
+{
+ *x = m_pos.x;
+ *y = m_pos.y;
+}
+
+void wxRadioBox::DoGetSize( int *width, int *height ) const
+{
+ *width = m_size.x;
+ *height = m_size.y;
+}
+
+void wxRadioBox::DoMoveWindow(int x, int y, int width, int height)
+{
+ m_size.x = width;
+ m_size.y = height;
+
+ const bool use_cols = HasFlag(wxRA_SPECIFY_COLS);
+
+ const int n = GetCount();
+ int minor = n / m_majorDim;
+ if(n % m_majorDim > 0) minor++;
+
+ int i = 0;
+ for ( int j = 0; j < minor; j++ )
+ {
+ for ( int k = 0; k < m_majorDim; k++ )
+ {
+ if(i<n)
+ {
+ wxPoint start, end;
+ start.x = (use_cols ? (k*m_size.x)/m_majorDim : (j*m_size.x)/minor);
+ start.y = (use_cols ? (j*m_size.y)/minor : (k*m_size.y)/m_majorDim);
+ end.x = (use_cols ? ((k+1)*m_size.x)/m_majorDim : ((j+1)*m_size.x)/minor);
+ end.y = (use_cols ? ((j+1)*m_size.y)/minor : ((k+1)*m_size.y)/m_majorDim);
+ wxRadioButton* rb = GetRadioButton(i);
+ if(rb)
+ rb->SetSize(end.x-start.x-1,end.y-start.y-1);
+ i++;
+ }
+ }
+ }
+}
+
+// get the origin of the client area in the client coordinates
+wxPoint wxRadioBox::GetClientAreaOrigin() const
+{
+ return GetParent()->GetClientAreaOrigin() + GetPosition();
+}
+
void wxRadioBox::SetString(int item, const wxString& label)
{
}
return wxSize(0,0);
}
-// Restored old code.
-void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
-{
-}
-
void wxRadioBox::SetFocus()
{
}
}
// Enable a specific button
-void wxRadioBox::Enable(int item, bool enable)
+bool wxRadioBox::Enable(int item, bool enable)
{
+ wxRadioButton *btn = GetRadioButton(item);
+ if(btn)
+ return btn->Enable(enable);
+ return false;
}
-// Enable all controls
+// Enable all subcontrols
bool wxRadioBox::Enable(bool enable)
{
- return false;
+ for(int i=0; i<GetCount(); i++)
+ Enable(i, enable);
+ return true;
}
// Show a specific button
m_buttons[n]->SetLabel(label);
}
-void wxRadioBox::Enable(int n, bool enable)
+bool wxRadioBox::Enable(int n, bool enable)
{
- wxCHECK_RET( IsValid(n), _T("invalid index in wxRadioBox::Enable") );
+ wxCHECK_MSG( IsValid(n), false, _T("invalid index in wxRadioBox::Enable") );
- m_buttons[n]->Enable(enable);
+ return m_buttons[n]->Enable(enable);
}
void wxRadioBox::Show(int n, bool show)