#
-# This file was automatically generated by tmake at 14:12, 1999/10/09
+# This file was automatically generated by tmake at 09:29, 1999/10/11
# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE UNX.T!
#
settings.o \
slider.o \
spinbutt.o \
+ spinctrl.o \
statbmp.o \
statbox.o \
statline.o \
settings.d \
slider.d \
spinbutt.d \
+ spinctrl.d \
statbmp.d \
statbox.d \
statline.d \
settings.cpp R
slider.cpp R
spinbutt.cpp R
+spinctrl.cpp R
statbmp.cpp R
statbox.cpp R
statline.cpp R
class wxAcceleratorEntry: public wxObject
{
- public:
-
+public:
wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0)
{ m_flags = flags; m_keyCode = keyCode; m_command = cmd; }
/// Set to TRUE while we are in wxYield().
bool m_suppressIdleEvents;
+private:
DECLARE_DYNAMIC_CLASS(wxApp)
DECLARE_EVENT_TABLE()
};
class wxBitmapButton: public wxButton
{
- DECLARE_DYNAMIC_CLASS(wxBitmapButton)
-
public:
- wxBitmapButton();
- inline wxBitmapButton( wxWindow *parent, wxWindowID id, const wxBitmap& bitmap,
+ wxBitmapButton();
+ inline wxBitmapButton( wxWindow *parent, wxWindowID id, const wxBitmap& bitmap,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxButtonNameStr )
- {
- Create(parent, id, bitmap, pos, size, style, validator, name);
- }
- bool Create( wxWindow *parent, wxWindowID id, const wxBitmap& bitmap,
+ {
+ Create(parent, id, bitmap, pos, size, style, validator, name);
+ }
+ bool Create( wxWindow *parent, wxWindowID id, const wxBitmap& bitmap,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxButtonNameStr);
- virtual void SetDefault();
+ virtual void SetDefault();
- void SetLabel( const wxString &label );
- wxString GetLabel() const;
- virtual void SetLabel( const wxBitmap& bitmap ) { SetBitmapLabel(bitmap); }
+ void SetLabel( const wxString &label );
+ wxString GetLabel() const;
+ virtual void SetLabel( const wxBitmap& bitmap ) { SetBitmapLabel(bitmap); }
- wxBitmap& GetBitmapDisabled() const { return (wxBitmap&) m_disabled; }
- wxBitmap& GetBitmapFocus() const { return (wxBitmap&) m_focus; }
- wxBitmap& GetBitmapLabel() const { return (wxBitmap&) m_bitmap; }
- wxBitmap& GetBitmapSelected() const { return (wxBitmap&) m_selected; }
+ wxBitmap& GetBitmapDisabled() const { return (wxBitmap&) m_disabled; }
+ wxBitmap& GetBitmapFocus() const { return (wxBitmap&) m_focus; }
+ wxBitmap& GetBitmapLabel() const { return (wxBitmap&) m_bitmap; }
+ wxBitmap& GetBitmapSelected() const { return (wxBitmap&) m_selected; }
- void SetBitmapDisabled( const wxBitmap& bitmap );
- void SetBitmapFocus( const wxBitmap& bitmap );
- void SetBitmapLabel( const wxBitmap& bitmap );
- void SetBitmapSelected( const wxBitmap& bitmap );
+ void SetBitmapDisabled( const wxBitmap& bitmap );
+ void SetBitmapFocus( const wxBitmap& bitmap );
+ void SetBitmapLabel( const wxBitmap& bitmap );
+ void SetBitmapSelected( const wxBitmap& bitmap );
- virtual bool Enable(bool enable);
+ virtual bool Enable(bool enable);
// implementation
- void HasFocus();
- void NotFocus();
- void StartSelect();
- void EndSelect();
- void SetBitmap();
- void ApplyWidgetStyle();
+ void HasFocus();
+ void NotFocus();
+ void StartSelect();
+ void EndSelect();
+ void SetBitmap();
+ void ApplyWidgetStyle();
+
+ bool m_hasFocus;
+ bool m_isSelected;
+ wxBitmap m_bitmap;
+ wxBitmap m_disabled;
+ wxBitmap m_focus;
+ wxBitmap m_selected;
- bool m_hasFocus;
- bool m_isSelected;
- wxBitmap m_bitmap;
- wxBitmap m_disabled;
- wxBitmap m_focus;
- wxBitmap m_selected;
+private:
+ DECLARE_DYNAMIC_CLASS(wxBitmapButton)
};
#endif
class wxBrush: public wxGDIObject
{
- DECLARE_DYNAMIC_CLASS(wxBrush)
-
- public:
-
+public:
wxBrush();
wxBrush( const wxColour &colour, int style );
wxBrush( const wxBitmap &stippleBitmap );
void Unshare();
- // no data :-)
+private:
+ DECLARE_DYNAMIC_CLASS(wxBrush)
};
#endif // __GTKBRUSHH__
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-
#ifndef __GTKBUTTONH__
#define __GTKBUTTONH__
class wxButton: public wxControl
{
- DECLARE_DYNAMIC_CLASS(wxButton)
-
- public:
-
+public:
wxButton();
inline wxButton(wxWindow *parent, wxWindowID id, const wxString& label,
const wxPoint& pos = wxDefaultPosition,
// implementation
void ApplyWidgetStyle();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxButton)
};
#endif // __GTKBUTTONH__
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-
#ifndef __GTKCHECKBOXH__
#define __GTKCHECKBOXH__
class wxCheckBox: public wxControl
{
-DECLARE_DYNAMIC_CLASS(wxCheckBox)
-
public:
wxCheckBox();
wxCheckBox( wxWindow *parent, wxWindowID id, const wxString& label,
GtkWidget *m_widgetCheckbox;
GtkWidget *m_widgetLabel;
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxCheckBox)
};
#endif
class wxCheckListBox : public wxListBox
{
-DECLARE_DYNAMIC_CLASS(wxCheckListBox)
-
public:
wxCheckListBox();
wxCheckListBox(wxWindow *parent, wxWindowID id,
void Check( int index, bool check = TRUE );
int GetItemHeight() const;
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxCheckListBox)
};
#endif
class wxChoice : public wxControl
{
- DECLARE_DYNAMIC_CLASS(wxChoice)
-
public:
wxChoice();
wxChoice( wxWindow *parent, wxWindowID id,
void EnableEvents();
void AppendCommon( const wxString &item );
void ApplyWidgetStyle();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxChoice)
};
class wxClipboard : public wxObject
{
- DECLARE_DYNAMIC_CLASS(wxClipboard)
-
public:
wxClipboard();
~wxClipboard();
GdkAtom m_targetRequested;
bool m_usePrimary;
wxDataObject *m_receivedData;
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxClipboard)
};
//-----------------------------------------------------------------------------
class wxClipboardModule: public wxModule
{
- DECLARE_DYNAMIC_CLASS(wxClipboardModule)
-
public:
wxClipboardModule() {}
bool OnInit();
void OnExit();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxClipboardModule)
};
#endif
class wxComboBox : public wxControl
{
- DECLARE_DYNAMIC_CLASS(wxComboBox)
-
public:
-
- inline wxComboBox() {}
- inline wxComboBox(wxWindow *parent, wxWindowID id,
+ inline wxComboBox() {}
+ inline wxComboBox(wxWindow *parent, wxWindowID id,
const wxString& value = wxEmptyString,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxComboBoxNameStr)
- {
- Create(parent, id, value, pos, size, n, choices, style, validator, name);
- }
- ~wxComboBox();
- bool Create(wxWindow *parent, wxWindowID id,
+ {
+ Create(parent, id, value, pos, size, n, choices, style, validator, name);
+ }
+ ~wxComboBox();
+ bool Create(wxWindow *parent, wxWindowID id,
const wxString& value = wxEmptyString,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxComboBoxNameStr);
- void Append( const wxString &item );
- void Append( const wxString &item, void* clientData );
- void Append( const wxString &item, wxClientData* clientData );
+ void Append( const wxString &item );
+ void Append( const wxString &item, void* clientData );
+ void Append( const wxString &item, wxClientData* clientData );
- void SetClientData( int n, void* clientData );
- void* GetClientData( int n );
- void SetClientObject( int n, wxClientData* clientData );
- wxClientData* GetClientObject( int n );
+ void SetClientData( int n, void* clientData );
+ void* GetClientData( int n );
+ void SetClientObject( int n, wxClientData* clientData );
+ wxClientData* GetClientObject( int n );
- void SetClientObject( wxClientData *data ) { wxControl::SetClientObject( data ); }
- wxClientData *GetClientObject() const { return wxControl::GetClientObject(); }
- void SetClientData( void *data ) { wxControl::SetClientData( data ); }
- void *GetClientData() const { return wxControl::GetClientData(); }
+ void SetClientObject( wxClientData *data ) { wxControl::SetClientObject( data ); }
+ wxClientData *GetClientObject() const { return wxControl::GetClientObject(); }
+ void SetClientData( void *data ) { wxControl::SetClientData( data ); }
+ void *GetClientData() const { return wxControl::GetClientData(); }
- void Clear();
- void Delete( int n );
-
- int FindString( const wxString &item );
- int GetSelection() const;
- wxString GetString( int n ) const;
- wxString GetStringSelection() const;
- int Number() const;
- void SetSelection( int n );
- void SetStringSelection( const wxString &string );
-
- wxString GetValue() const;
- void SetValue(const wxString& value);
-
- void Copy();
- void Cut();
- void Paste();
- void SetInsertionPoint( long pos );
- void SetInsertionPointEnd();
- long GetInsertionPoint() const;
- long GetLastPosition() const;
- void Replace( long from, long to, const wxString& value );
- void Remove( long from, long to );
- void SetSelection( long from, long to );
- void SetEditable( bool editable );
+ void Clear();
+ void Delete( int n );
- void OnSize( wxSizeEvent &event );
- void OnChar( wxKeyEvent &event );
+ int FindString( const wxString &item );
+ int GetSelection() const;
+ wxString GetString( int n ) const;
+ wxString GetStringSelection() const;
+ int Number() const;
+ void SetSelection( int n );
+ void SetStringSelection( const wxString &string );
+
+ wxString GetValue() const;
+ void SetValue(const wxString& value);
+
+ void Copy();
+ void Cut();
+ void Paste();
+ void SetInsertionPoint( long pos );
+ void SetInsertionPointEnd();
+ long GetInsertionPoint() const;
+ long GetLastPosition() const;
+ void Replace( long from, long to, const wxString& value );
+ void Remove( long from, long to );
+ void SetSelection( long from, long to );
+ void SetEditable( bool editable );
-// implementation
+ // implementation
- bool m_alreadySent;
- wxList m_clientDataList;
- wxList m_clientObjectList;
-
- void DisableEvents();
- void EnableEvents();
- void AppendCommon( const wxString &item );
- GtkWidget* GetConnectWidget();
- bool IsOwnGtkWindow( GdkWindow *window );
- void ApplyWidgetStyle();
+ void OnSize( wxSizeEvent &event );
+ void OnChar( wxKeyEvent &event );
- DECLARE_EVENT_TABLE()
+ bool m_alreadySent;
+ wxList m_clientDataList;
+ wxList m_clientObjectList;
+
+ void DisableEvents();
+ void EnableEvents();
+ void AppendCommon( const wxString &item );
+ GtkWidget* GetConnectWidget();
+ bool IsOwnGtkWindow( GdkWindow *window );
+ void ApplyWidgetStyle();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxComboBox)
+ DECLARE_EVENT_TABLE()
};
#endif
class wxControl : public wxWindow
{
- DECLARE_DYNAMIC_CLASS(wxControl)
-
public:
wxControl();
wxControl( wxWindow *parent,
protected:
wxString m_label;
char m_chAccel; // enabled to avoid breaking binary compatibility later on
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxControl)
};
#endif // __GTKCONTROLH__
class wxRegionIterator: public wxObject
{
- DECLARE_DYNAMIC_CLASS(wxRegionIterator);
-
- public:
-
+public:
wxRegionIterator();
wxRegionIterator(const wxRegion& region);
long GetHeight() const { return GetH(); }
wxRect GetRect() const { return wxRect(GetX(), GetY(), GetWidth(), GetHeight()); }
- private:
-
- long m_current;
- wxRegion m_region;
+private:
+ long m_current;
+ wxRegion m_region;
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxRegionIterator);
};
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifndef __GTKSPINPUTTH__
+#ifndef __GTKSPINBUTTH__
#define __GTKSPINBUTTH__
#ifdef __GNUG__
class wxSpinButton : public wxSpinButtonBase
{
- DECLARE_DYNAMIC_CLASS(wxSpinButton)
-
public:
wxSpinButton() { }
wxSpinButton( wxWindow *parent, wxWindowID id = -1,
{
Create(parent, id, pos, size, style, name);
}
- ~wxSpinButton();
bool Create( wxWindow *parent, wxWindowID id = -1,
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
private:
DECLARE_EVENT_TABLE()
+ DECLARE_DYNAMIC_CLASS(wxSpinButton)
};
#endif
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: spinctrl.h
+// Purpose: wxSpinCtrl class
+// Author: Robert Roebling
+// Modified by:
+// RCS-ID: $Id$
+// Copyright: (c) Robert Roebling
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef __GTKSPINCTRLH__
+#define __GTKSPINCTRLH__
+
+#ifdef __GNUG__
+#pragma interface
+#endif
+
+//-----------------------------------------------------------------------------
+// wxSpinButton
+//-----------------------------------------------------------------------------
+
+class wxSpinCtrl : public wxControl
+{
+public:
+ wxSpinCtrl() {}
+ wxSpinCtrl(wxWindow *parent,
+ wxWindowID id = -1,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxSP_ARROW_KEYS,
+ int min = 0, int max = 100, int initial = 0,
+ const wxString& name = _T("wxSpinCtrl"))
+ {
+ Create(parent, id, pos, size, style, min, max, initial, name);
+ }
+
+ bool Create(wxWindow *parent,
+ wxWindowID id = -1,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxSP_ARROW_KEYS,
+ int min = 0, int max = 100, int initial = 0,
+ const wxString& name = _T("wxSpinCtrl"));
+
+ virtual int GetValue() const;
+ virtual void SetValue( int value );
+ virtual void SetRange( int minVal, int maxVal );
+ virtual int GetMin() const;
+ virtual int GetMax() const;
+
+ bool IsOwnGtkWindow( GdkWindow *window );
+ void ApplyWidgetStyle();
+
+ GtkAdjustment *m_adjust;
+ float m_oldPos;
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxSpinCtrl)
+};
+
+#endif
+ // __GTKSPINCTRLH__
class wxAcceleratorEntry: public wxObject
{
- public:
-
+public:
wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0)
{ m_flags = flags; m_keyCode = keyCode; m_command = cmd; }
/// Set to TRUE while we are in wxYield().
bool m_suppressIdleEvents;
+private:
DECLARE_DYNAMIC_CLASS(wxApp)
DECLARE_EVENT_TABLE()
};
class wxBitmapButton: public wxButton
{
- DECLARE_DYNAMIC_CLASS(wxBitmapButton)
-
public:
- wxBitmapButton();
- inline wxBitmapButton( wxWindow *parent, wxWindowID id, const wxBitmap& bitmap,
+ wxBitmapButton();
+ inline wxBitmapButton( wxWindow *parent, wxWindowID id, const wxBitmap& bitmap,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxButtonNameStr )
- {
- Create(parent, id, bitmap, pos, size, style, validator, name);
- }
- bool Create( wxWindow *parent, wxWindowID id, const wxBitmap& bitmap,
+ {
+ Create(parent, id, bitmap, pos, size, style, validator, name);
+ }
+ bool Create( wxWindow *parent, wxWindowID id, const wxBitmap& bitmap,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxButtonNameStr);
- virtual void SetDefault();
+ virtual void SetDefault();
- void SetLabel( const wxString &label );
- wxString GetLabel() const;
- virtual void SetLabel( const wxBitmap& bitmap ) { SetBitmapLabel(bitmap); }
+ void SetLabel( const wxString &label );
+ wxString GetLabel() const;
+ virtual void SetLabel( const wxBitmap& bitmap ) { SetBitmapLabel(bitmap); }
- wxBitmap& GetBitmapDisabled() const { return (wxBitmap&) m_disabled; }
- wxBitmap& GetBitmapFocus() const { return (wxBitmap&) m_focus; }
- wxBitmap& GetBitmapLabel() const { return (wxBitmap&) m_bitmap; }
- wxBitmap& GetBitmapSelected() const { return (wxBitmap&) m_selected; }
+ wxBitmap& GetBitmapDisabled() const { return (wxBitmap&) m_disabled; }
+ wxBitmap& GetBitmapFocus() const { return (wxBitmap&) m_focus; }
+ wxBitmap& GetBitmapLabel() const { return (wxBitmap&) m_bitmap; }
+ wxBitmap& GetBitmapSelected() const { return (wxBitmap&) m_selected; }
- void SetBitmapDisabled( const wxBitmap& bitmap );
- void SetBitmapFocus( const wxBitmap& bitmap );
- void SetBitmapLabel( const wxBitmap& bitmap );
- void SetBitmapSelected( const wxBitmap& bitmap );
+ void SetBitmapDisabled( const wxBitmap& bitmap );
+ void SetBitmapFocus( const wxBitmap& bitmap );
+ void SetBitmapLabel( const wxBitmap& bitmap );
+ void SetBitmapSelected( const wxBitmap& bitmap );
- virtual bool Enable(bool enable);
+ virtual bool Enable(bool enable);
// implementation
- void HasFocus();
- void NotFocus();
- void StartSelect();
- void EndSelect();
- void SetBitmap();
- void ApplyWidgetStyle();
+ void HasFocus();
+ void NotFocus();
+ void StartSelect();
+ void EndSelect();
+ void SetBitmap();
+ void ApplyWidgetStyle();
+
+ bool m_hasFocus;
+ bool m_isSelected;
+ wxBitmap m_bitmap;
+ wxBitmap m_disabled;
+ wxBitmap m_focus;
+ wxBitmap m_selected;
- bool m_hasFocus;
- bool m_isSelected;
- wxBitmap m_bitmap;
- wxBitmap m_disabled;
- wxBitmap m_focus;
- wxBitmap m_selected;
+private:
+ DECLARE_DYNAMIC_CLASS(wxBitmapButton)
};
#endif
class wxBrush: public wxGDIObject
{
- DECLARE_DYNAMIC_CLASS(wxBrush)
-
- public:
-
+public:
wxBrush();
wxBrush( const wxColour &colour, int style );
wxBrush( const wxBitmap &stippleBitmap );
void Unshare();
- // no data :-)
+private:
+ DECLARE_DYNAMIC_CLASS(wxBrush)
};
#endif // __GTKBRUSHH__
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-
#ifndef __GTKBUTTONH__
#define __GTKBUTTONH__
class wxButton: public wxControl
{
- DECLARE_DYNAMIC_CLASS(wxButton)
-
- public:
-
+public:
wxButton();
inline wxButton(wxWindow *parent, wxWindowID id, const wxString& label,
const wxPoint& pos = wxDefaultPosition,
// implementation
void ApplyWidgetStyle();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxButton)
};
#endif // __GTKBUTTONH__
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-
#ifndef __GTKCHECKBOXH__
#define __GTKCHECKBOXH__
class wxCheckBox: public wxControl
{
-DECLARE_DYNAMIC_CLASS(wxCheckBox)
-
public:
wxCheckBox();
wxCheckBox( wxWindow *parent, wxWindowID id, const wxString& label,
GtkWidget *m_widgetCheckbox;
GtkWidget *m_widgetLabel;
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxCheckBox)
};
#endif
class wxCheckListBox : public wxListBox
{
-DECLARE_DYNAMIC_CLASS(wxCheckListBox)
-
public:
wxCheckListBox();
wxCheckListBox(wxWindow *parent, wxWindowID id,
void Check( int index, bool check = TRUE );
int GetItemHeight() const;
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxCheckListBox)
};
#endif
class wxChoice : public wxControl
{
- DECLARE_DYNAMIC_CLASS(wxChoice)
-
public:
wxChoice();
wxChoice( wxWindow *parent, wxWindowID id,
void EnableEvents();
void AppendCommon( const wxString &item );
void ApplyWidgetStyle();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxChoice)
};
class wxClipboard : public wxObject
{
- DECLARE_DYNAMIC_CLASS(wxClipboard)
-
public:
wxClipboard();
~wxClipboard();
GdkAtom m_targetRequested;
bool m_usePrimary;
wxDataObject *m_receivedData;
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxClipboard)
};
//-----------------------------------------------------------------------------
class wxClipboardModule: public wxModule
{
- DECLARE_DYNAMIC_CLASS(wxClipboardModule)
-
public:
wxClipboardModule() {}
bool OnInit();
void OnExit();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxClipboardModule)
};
#endif
class wxComboBox : public wxControl
{
- DECLARE_DYNAMIC_CLASS(wxComboBox)
-
public:
-
- inline wxComboBox() {}
- inline wxComboBox(wxWindow *parent, wxWindowID id,
+ inline wxComboBox() {}
+ inline wxComboBox(wxWindow *parent, wxWindowID id,
const wxString& value = wxEmptyString,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxComboBoxNameStr)
- {
- Create(parent, id, value, pos, size, n, choices, style, validator, name);
- }
- ~wxComboBox();
- bool Create(wxWindow *parent, wxWindowID id,
+ {
+ Create(parent, id, value, pos, size, n, choices, style, validator, name);
+ }
+ ~wxComboBox();
+ bool Create(wxWindow *parent, wxWindowID id,
const wxString& value = wxEmptyString,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxComboBoxNameStr);
- void Append( const wxString &item );
- void Append( const wxString &item, void* clientData );
- void Append( const wxString &item, wxClientData* clientData );
+ void Append( const wxString &item );
+ void Append( const wxString &item, void* clientData );
+ void Append( const wxString &item, wxClientData* clientData );
- void SetClientData( int n, void* clientData );
- void* GetClientData( int n );
- void SetClientObject( int n, wxClientData* clientData );
- wxClientData* GetClientObject( int n );
+ void SetClientData( int n, void* clientData );
+ void* GetClientData( int n );
+ void SetClientObject( int n, wxClientData* clientData );
+ wxClientData* GetClientObject( int n );
- void SetClientObject( wxClientData *data ) { wxControl::SetClientObject( data ); }
- wxClientData *GetClientObject() const { return wxControl::GetClientObject(); }
- void SetClientData( void *data ) { wxControl::SetClientData( data ); }
- void *GetClientData() const { return wxControl::GetClientData(); }
+ void SetClientObject( wxClientData *data ) { wxControl::SetClientObject( data ); }
+ wxClientData *GetClientObject() const { return wxControl::GetClientObject(); }
+ void SetClientData( void *data ) { wxControl::SetClientData( data ); }
+ void *GetClientData() const { return wxControl::GetClientData(); }
- void Clear();
- void Delete( int n );
-
- int FindString( const wxString &item );
- int GetSelection() const;
- wxString GetString( int n ) const;
- wxString GetStringSelection() const;
- int Number() const;
- void SetSelection( int n );
- void SetStringSelection( const wxString &string );
-
- wxString GetValue() const;
- void SetValue(const wxString& value);
-
- void Copy();
- void Cut();
- void Paste();
- void SetInsertionPoint( long pos );
- void SetInsertionPointEnd();
- long GetInsertionPoint() const;
- long GetLastPosition() const;
- void Replace( long from, long to, const wxString& value );
- void Remove( long from, long to );
- void SetSelection( long from, long to );
- void SetEditable( bool editable );
+ void Clear();
+ void Delete( int n );
- void OnSize( wxSizeEvent &event );
- void OnChar( wxKeyEvent &event );
+ int FindString( const wxString &item );
+ int GetSelection() const;
+ wxString GetString( int n ) const;
+ wxString GetStringSelection() const;
+ int Number() const;
+ void SetSelection( int n );
+ void SetStringSelection( const wxString &string );
+
+ wxString GetValue() const;
+ void SetValue(const wxString& value);
+
+ void Copy();
+ void Cut();
+ void Paste();
+ void SetInsertionPoint( long pos );
+ void SetInsertionPointEnd();
+ long GetInsertionPoint() const;
+ long GetLastPosition() const;
+ void Replace( long from, long to, const wxString& value );
+ void Remove( long from, long to );
+ void SetSelection( long from, long to );
+ void SetEditable( bool editable );
-// implementation
+ // implementation
- bool m_alreadySent;
- wxList m_clientDataList;
- wxList m_clientObjectList;
-
- void DisableEvents();
- void EnableEvents();
- void AppendCommon( const wxString &item );
- GtkWidget* GetConnectWidget();
- bool IsOwnGtkWindow( GdkWindow *window );
- void ApplyWidgetStyle();
+ void OnSize( wxSizeEvent &event );
+ void OnChar( wxKeyEvent &event );
- DECLARE_EVENT_TABLE()
+ bool m_alreadySent;
+ wxList m_clientDataList;
+ wxList m_clientObjectList;
+
+ void DisableEvents();
+ void EnableEvents();
+ void AppendCommon( const wxString &item );
+ GtkWidget* GetConnectWidget();
+ bool IsOwnGtkWindow( GdkWindow *window );
+ void ApplyWidgetStyle();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxComboBox)
+ DECLARE_EVENT_TABLE()
};
#endif
class wxControl : public wxWindow
{
- DECLARE_DYNAMIC_CLASS(wxControl)
-
public:
wxControl();
wxControl( wxWindow *parent,
protected:
wxString m_label;
char m_chAccel; // enabled to avoid breaking binary compatibility later on
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxControl)
};
#endif // __GTKCONTROLH__
class wxRegionIterator: public wxObject
{
- DECLARE_DYNAMIC_CLASS(wxRegionIterator);
-
- public:
-
+public:
wxRegionIterator();
wxRegionIterator(const wxRegion& region);
long GetHeight() const { return GetH(); }
wxRect GetRect() const { return wxRect(GetX(), GetY(), GetWidth(), GetHeight()); }
- private:
-
- long m_current;
- wxRegion m_region;
+private:
+ long m_current;
+ wxRegion m_region;
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxRegionIterator);
};
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifndef __GTKSPINPUTTH__
+#ifndef __GTKSPINBUTTH__
#define __GTKSPINBUTTH__
#ifdef __GNUG__
class wxSpinButton : public wxSpinButtonBase
{
- DECLARE_DYNAMIC_CLASS(wxSpinButton)
-
public:
wxSpinButton() { }
wxSpinButton( wxWindow *parent, wxWindowID id = -1,
{
Create(parent, id, pos, size, style, name);
}
- ~wxSpinButton();
bool Create( wxWindow *parent, wxWindowID id = -1,
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
private:
DECLARE_EVENT_TABLE()
+ DECLARE_DYNAMIC_CLASS(wxSpinButton)
};
#endif
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: spinctrl.h
+// Purpose: wxSpinCtrl class
+// Author: Robert Roebling
+// Modified by:
+// RCS-ID: $Id$
+// Copyright: (c) Robert Roebling
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef __GTKSPINCTRLH__
+#define __GTKSPINCTRLH__
+
+#ifdef __GNUG__
+#pragma interface
+#endif
+
+//-----------------------------------------------------------------------------
+// wxSpinButton
+//-----------------------------------------------------------------------------
+
+class wxSpinCtrl : public wxControl
+{
+public:
+ wxSpinCtrl() {}
+ wxSpinCtrl(wxWindow *parent,
+ wxWindowID id = -1,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxSP_ARROW_KEYS,
+ int min = 0, int max = 100, int initial = 0,
+ const wxString& name = _T("wxSpinCtrl"))
+ {
+ Create(parent, id, pos, size, style, min, max, initial, name);
+ }
+
+ bool Create(wxWindow *parent,
+ wxWindowID id = -1,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxSP_ARROW_KEYS,
+ int min = 0, int max = 100, int initial = 0,
+ const wxString& name = _T("wxSpinCtrl"));
+
+ virtual int GetValue() const;
+ virtual void SetValue( int value );
+ virtual void SetRange( int minVal, int maxVal );
+ virtual int GetMin() const;
+ virtual int GetMax() const;
+
+ bool IsOwnGtkWindow( GdkWindow *window );
+ void ApplyWidgetStyle();
+
+ GtkAdjustment *m_adjust;
+ float m_oldPos;
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxSpinCtrl)
+};
+
+#endif
+ // __GTKSPINCTRLH__
#if defined(__WXMSW__) && defined(__WIN32__)
#include "wx/msw/spinctrl.h"
+#elif defined(__WXGTK__)
+ #include "wx/gtk/spinctrl.h"
#else // Win16 || !Win
#include "wx/generic/spinctrl.h"
#endif // platform
int maxW = -1, int maxH = -1,
int incW = -1, int incH = -1 );
+ int GetMinWidth() const { return m_minWidth; }
+ int GetMinHeight() const { return m_minHeight; }
+ int GetMaxWidth() const { return m_maxWidth; }
+ int GetMaxHeight() const { return m_maxHeight; }
+
// window state
// ------------
s << initialSpinValue;
m_spintext = new wxTextCtrl( panel, -1, s, wxPoint(20,160), wxSize(80,-1) );
#if wxUSE_SPINBUTTON
- m_spinbutton = new wxSpinButton( panel, ID_SPIN, wxPoint(103,159), wxSize(80, -1) );
+ m_spinbutton = new wxSpinButton( panel, ID_SPIN, wxPoint(103,160), wxSize(80, -1) );
m_spinbutton->SetRange(-10,30);
m_spinbutton->SetValue(initialSpinValue);
m_btnProgress = new wxButton( panel, ID_BTNPROGRESS, "Show progress dialog",
- wxPoint(408, 159) );
+ wxPoint(300, 160) );
#endif // wxUSE_SPINBUTTON
#if wxUSE_SPINCTRL
- m_spinctrl = new wxSpinCtrl( panel, -1, wxPoint(200, 159), wxSize(80, 20) );
+ m_spinctrl = new wxSpinCtrl( panel, -1, wxPoint(200, 160), wxSize(80, -1) );
m_spinctrl->SetRange(10,30);
m_spinctrl->SetValue(15);
#endif // wxUSE_SPINCTRL
extern wxList wxPendingDelete;
-/*
-//-----------------------------------------------------------------------------
-// instruct X to set the WM hint for positioning
-//-----------------------------------------------------------------------------
-
-extern "C" {
-
-static void gdk_window_set_position_hint( GdkWindow *window, gint x, gint y )
-{
- GdkWindowPrivate *priv;
- XSizeHints size_hints;
-
- g_return_if_fail (window != NULL);
-
- priv = (GdkWindowPrivate*) window;
- if (priv->destroyed) return;
-
- size_hints.flags = PPosition;
- size_hints.x = x;
- size_hints.y = y;
-
- XSetWMNormalHints (priv->xdisplay, priv->xwindow, &size_hints);
-}
-
-}
-*/
-
//-----------------------------------------------------------------------------
// "delete_event"
//-----------------------------------------------------------------------------
position in "realize" and "map" */
gtk_widget_set_uposition( widget, win->m_x, win->m_y );
-/*
- gdk_window_set_position_hint( widget->window, win->m_x, win->m_y );
-*/
+ /* set size hints */
+ gint flag = GDK_HINT_POS;
+ if ((win->GetMinWidth() != -1) || (win->GetMinHeight() != -1)) flag |= GDK_HINT_MIN_SIZE;
+ if ((win->GetMaxWidth() != -1) || (win->GetMaxHeight() != -1)) flag |= GDK_HINT_MAX_SIZE;
+ if (flag)
+ {
+ gdk_window_set_hints( win->m_widget->window,
+ win->m_x, win->m_y,
+ win->GetMinWidth(), win->GetMinHeight(),
+ win->GetMaxWidth(), win->GetMaxHeight(),
+ flag );
+ }
/* reset the icon */
if (win->m_icon != wxNullIcon)
else
gtk_window_set_policy(GTK_WINDOW(win->m_widget), 1, 1, 1);
+ /* set size hints */
+ gint flag = GDK_HINT_POS;
+ if ((win->GetMinWidth() != -1) || (win->GetMinHeight() != -1)) flag |= GDK_HINT_MIN_SIZE;
+ if ((win->GetMaxWidth() != -1) || (win->GetMaxHeight() != -1)) flag |= GDK_HINT_MAX_SIZE;
+ if (flag)
+ {
+ gdk_window_set_hints( win->m_widget->window,
+ win->m_x, win->m_y,
+ win->GetMinWidth(), win->GetMinHeight(),
+ win->GetMaxWidth(), win->GetMaxHeight(),
+ flag );
+ }
+
/* reset the icon */
if (win->m_icon != wxNullIcon)
{
extern bool g_blockEventsOnDrag;
-static const float sensitivity = 0.2;
+static const float sensitivity = 0.02;
//-----------------------------------------------------------------------------
// "value_changed"
wxSize new_size = size;
new_size.x = 15;
if (new_size.y == -1)
- new_size.y = 30;
+ new_size.y = 26;
if (!PreCreation( parent, pos, new_size ) ||
!CreateBase( parent, id, pos, new_size, style, wxDefaultValidator, name ))
return TRUE;
}
-wxSpinButton::~wxSpinButton()
-{
-}
-
int wxSpinButton::GetMin() const
{
wxCHECK_MSG( (m_widget != NULL), 0, wxT("invalid spin button") );
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: spinbutt.cpp
+// Purpose: wxSpinCtrl
+// Author: Robert
+// Modified by:
+// RCS-ID: $Id$
+// Copyright: (c) Robert Roebling
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef __GNUG__
+#pragma implementation "spinctrl.h"
+#endif
+
+#include "wx/spinctrl.h"
+
+#ifdef wxUSE_SPINBTN
+
+#include "wx/utils.h"
+#include "wx/spinbutt.h"
+#include <math.h>
+
+#include "gdk/gdk.h"
+#include "gtk/gtk.h"
+
+//-----------------------------------------------------------------------------
+// idle system
+//-----------------------------------------------------------------------------
+
+extern void wxapp_install_idle_handler();
+extern bool g_isIdle;
+
+//-----------------------------------------------------------------------------
+// data
+//-----------------------------------------------------------------------------
+
+extern bool g_blockEventsOnDrag;
+
+static const float sensitivity = 0.02;
+
+//-----------------------------------------------------------------------------
+// "value_changed"
+//-----------------------------------------------------------------------------
+
+static void gtk_spinctrl_callback( GtkWidget *WXUNUSED(widget), wxSpinCtrl *win )
+{
+ if (g_isIdle) wxapp_install_idle_handler();
+
+ if (!win->m_hasVMT) return;
+ if (g_blockEventsOnDrag) return;
+
+ float diff = win->m_adjust->value - win->m_oldPos;
+ if (fabs(diff) < sensitivity) return;
+ win->m_oldPos = win->m_adjust->value;
+
+ wxEventType command = wxEVT_NULL;
+
+ float line_step = win->m_adjust->step_increment;
+
+ if (fabs(diff-line_step) < sensitivity) command = wxEVT_SCROLL_LINEDOWN;
+ else if (fabs(diff+line_step) < sensitivity) command = wxEVT_SCROLL_LINEUP;
+ else command = wxEVT_SCROLL_THUMBTRACK;
+
+ int value = (int)ceil(win->m_adjust->value);
+
+ wxSpinEvent event( command, win->GetId());
+ event.SetPosition( value );
+ event.SetEventObject( win );
+ win->GetEventHandler()->ProcessEvent( event );
+
+ /* always send a thumbtrack event */
+ if (command != wxEVT_SCROLL_THUMBTRACK)
+ {
+ command = wxEVT_SCROLL_THUMBTRACK;
+ wxSpinEvent event2( command, win->GetId());
+ event2.SetPosition( value );
+ event2.SetEventObject( win );
+ win->GetEventHandler()->ProcessEvent( event2 );
+ }
+}
+
+//-----------------------------------------------------------------------------
+// wxSpinCtrl
+//-----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxSpinCtrl,wxControl)
+
+bool wxSpinCtrl::Create(wxWindow *parent, wxWindowID id,
+ const wxPoint& pos, const wxSize& size,
+ long style,
+ int min, int max, int initial,
+ const wxString& name)
+{
+ m_needParent = TRUE;
+
+ wxSize new_size = size;
+ if (new_size.y == -1)
+ new_size.y = 26;
+
+ if (!PreCreation( parent, pos, new_size ) ||
+ !CreateBase( parent, id, pos, new_size, style, wxDefaultValidator, name ))
+ {
+ wxFAIL_MSG( wxT("wxSpinCtrl creation failed") );
+ return FALSE;
+ }
+
+ m_oldPos = initial;
+
+ m_adjust = (GtkAdjustment*) gtk_adjustment_new( initial, min, max, 1.0, 5.0, 0.0);
+
+ m_widget = gtk_spin_button_new( m_adjust, 1, 0 );
+
+ gtk_spin_button_set_wrap( GTK_SPIN_BUTTON(m_widget), (m_windowStyle & wxSP_WRAP) );
+
+ gtk_signal_connect( GTK_OBJECT (m_adjust),
+ "value_changed",
+ (GtkSignalFunc) gtk_spinctrl_callback,
+ (gpointer) this );
+
+ m_parent->DoAddChild( this );
+
+ PostCreation();
+
+ SetBackgroundColour( parent->GetBackgroundColour() );
+
+ Show( TRUE );
+
+ return TRUE;
+}
+
+int wxSpinCtrl::GetMin() const
+{
+ wxCHECK_MSG( (m_widget != NULL), 0, wxT("invalid spin button") );
+
+ return (int)ceil(m_adjust->lower);
+}
+
+int wxSpinCtrl::GetMax() const
+{
+ wxCHECK_MSG( (m_widget != NULL), 0, wxT("invalid spin button") );
+
+ return (int)ceil(m_adjust->upper);
+}
+
+int wxSpinCtrl::GetValue() const
+{
+ wxCHECK_MSG( (m_widget != NULL), 0, wxT("invalid spin button") );
+
+ return (int)ceil(m_adjust->value);
+}
+
+void wxSpinCtrl::SetValue( int value )
+{
+ wxCHECK_RET( (m_widget != NULL), wxT("invalid spin button") );
+
+ float fpos = (float)value;
+ m_oldPos = fpos;
+ if (fabs(fpos-m_adjust->value) < sensitivity) return;
+
+ m_adjust->value = fpos;
+
+ gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" );
+}
+
+void wxSpinCtrl::SetRange(int minVal, int maxVal)
+{
+ wxCHECK_RET( (m_widget != NULL), wxT("invalid spin button") );
+
+ float fmin = (float)minVal;
+ float fmax = (float)maxVal;
+
+ if ((fabs(fmin-m_adjust->lower) < sensitivity) &&
+ (fabs(fmax-m_adjust->upper) < sensitivity))
+ {
+ return;
+ }
+
+ m_adjust->lower = fmin;
+ m_adjust->upper = fmax;
+
+ gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" );
+
+ // these two calls are required due to some bug in GTK
+ Refresh();
+ SetFocus();
+}
+
+bool wxSpinCtrl::IsOwnGtkWindow( GdkWindow *window )
+{
+ return GTK_SPIN_BUTTON(m_widget)->panel == window;
+}
+
+void wxSpinCtrl::ApplyWidgetStyle()
+{
+ SetWidgetStyle();
+ gtk_widget_set_style( m_widget, m_widgetStyle );
+}
+
+#endif
extern wxList wxPendingDelete;
-/*
-//-----------------------------------------------------------------------------
-// instruct X to set the WM hint for positioning
-//-----------------------------------------------------------------------------
-
-extern "C" {
-
-static void gdk_window_set_position_hint( GdkWindow *window, gint x, gint y )
-{
- GdkWindowPrivate *priv;
- XSizeHints size_hints;
-
- g_return_if_fail (window != NULL);
-
- priv = (GdkWindowPrivate*) window;
- if (priv->destroyed) return;
-
- size_hints.flags = PPosition;
- size_hints.x = x;
- size_hints.y = y;
-
- XSetWMNormalHints (priv->xdisplay, priv->xwindow, &size_hints);
-}
-
-}
-*/
-
//-----------------------------------------------------------------------------
// "delete_event"
//-----------------------------------------------------------------------------
position in "realize" and "map" */
gtk_widget_set_uposition( widget, win->m_x, win->m_y );
-/*
- gdk_window_set_position_hint( widget->window, win->m_x, win->m_y );
-*/
+ /* set size hints */
+ gint flag = GDK_HINT_POS;
+ if ((win->GetMinWidth() != -1) || (win->GetMinHeight() != -1)) flag |= GDK_HINT_MIN_SIZE;
+ if ((win->GetMaxWidth() != -1) || (win->GetMaxHeight() != -1)) flag |= GDK_HINT_MAX_SIZE;
+ if (flag)
+ {
+ gdk_window_set_hints( win->m_widget->window,
+ win->m_x, win->m_y,
+ win->GetMinWidth(), win->GetMinHeight(),
+ win->GetMaxWidth(), win->GetMaxHeight(),
+ flag );
+ }
/* reset the icon */
if (win->m_icon != wxNullIcon)
else
gtk_window_set_policy(GTK_WINDOW(win->m_widget), 1, 1, 1);
+ /* set size hints */
+ gint flag = GDK_HINT_POS;
+ if ((win->GetMinWidth() != -1) || (win->GetMinHeight() != -1)) flag |= GDK_HINT_MIN_SIZE;
+ if ((win->GetMaxWidth() != -1) || (win->GetMaxHeight() != -1)) flag |= GDK_HINT_MAX_SIZE;
+ if (flag)
+ {
+ gdk_window_set_hints( win->m_widget->window,
+ win->m_x, win->m_y,
+ win->GetMinWidth(), win->GetMinHeight(),
+ win->GetMaxWidth(), win->GetMaxHeight(),
+ flag );
+ }
+
/* reset the icon */
if (win->m_icon != wxNullIcon)
{
extern bool g_blockEventsOnDrag;
-static const float sensitivity = 0.2;
+static const float sensitivity = 0.02;
//-----------------------------------------------------------------------------
// "value_changed"
wxSize new_size = size;
new_size.x = 15;
if (new_size.y == -1)
- new_size.y = 30;
+ new_size.y = 26;
if (!PreCreation( parent, pos, new_size ) ||
!CreateBase( parent, id, pos, new_size, style, wxDefaultValidator, name ))
return TRUE;
}
-wxSpinButton::~wxSpinButton()
-{
-}
-
int wxSpinButton::GetMin() const
{
wxCHECK_MSG( (m_widget != NULL), 0, wxT("invalid spin button") );
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: spinbutt.cpp
+// Purpose: wxSpinCtrl
+// Author: Robert
+// Modified by:
+// RCS-ID: $Id$
+// Copyright: (c) Robert Roebling
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef __GNUG__
+#pragma implementation "spinctrl.h"
+#endif
+
+#include "wx/spinctrl.h"
+
+#ifdef wxUSE_SPINBTN
+
+#include "wx/utils.h"
+#include "wx/spinbutt.h"
+#include <math.h>
+
+#include "gdk/gdk.h"
+#include "gtk/gtk.h"
+
+//-----------------------------------------------------------------------------
+// idle system
+//-----------------------------------------------------------------------------
+
+extern void wxapp_install_idle_handler();
+extern bool g_isIdle;
+
+//-----------------------------------------------------------------------------
+// data
+//-----------------------------------------------------------------------------
+
+extern bool g_blockEventsOnDrag;
+
+static const float sensitivity = 0.02;
+
+//-----------------------------------------------------------------------------
+// "value_changed"
+//-----------------------------------------------------------------------------
+
+static void gtk_spinctrl_callback( GtkWidget *WXUNUSED(widget), wxSpinCtrl *win )
+{
+ if (g_isIdle) wxapp_install_idle_handler();
+
+ if (!win->m_hasVMT) return;
+ if (g_blockEventsOnDrag) return;
+
+ float diff = win->m_adjust->value - win->m_oldPos;
+ if (fabs(diff) < sensitivity) return;
+ win->m_oldPos = win->m_adjust->value;
+
+ wxEventType command = wxEVT_NULL;
+
+ float line_step = win->m_adjust->step_increment;
+
+ if (fabs(diff-line_step) < sensitivity) command = wxEVT_SCROLL_LINEDOWN;
+ else if (fabs(diff+line_step) < sensitivity) command = wxEVT_SCROLL_LINEUP;
+ else command = wxEVT_SCROLL_THUMBTRACK;
+
+ int value = (int)ceil(win->m_adjust->value);
+
+ wxSpinEvent event( command, win->GetId());
+ event.SetPosition( value );
+ event.SetEventObject( win );
+ win->GetEventHandler()->ProcessEvent( event );
+
+ /* always send a thumbtrack event */
+ if (command != wxEVT_SCROLL_THUMBTRACK)
+ {
+ command = wxEVT_SCROLL_THUMBTRACK;
+ wxSpinEvent event2( command, win->GetId());
+ event2.SetPosition( value );
+ event2.SetEventObject( win );
+ win->GetEventHandler()->ProcessEvent( event2 );
+ }
+}
+
+//-----------------------------------------------------------------------------
+// wxSpinCtrl
+//-----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxSpinCtrl,wxControl)
+
+bool wxSpinCtrl::Create(wxWindow *parent, wxWindowID id,
+ const wxPoint& pos, const wxSize& size,
+ long style,
+ int min, int max, int initial,
+ const wxString& name)
+{
+ m_needParent = TRUE;
+
+ wxSize new_size = size;
+ if (new_size.y == -1)
+ new_size.y = 26;
+
+ if (!PreCreation( parent, pos, new_size ) ||
+ !CreateBase( parent, id, pos, new_size, style, wxDefaultValidator, name ))
+ {
+ wxFAIL_MSG( wxT("wxSpinCtrl creation failed") );
+ return FALSE;
+ }
+
+ m_oldPos = initial;
+
+ m_adjust = (GtkAdjustment*) gtk_adjustment_new( initial, min, max, 1.0, 5.0, 0.0);
+
+ m_widget = gtk_spin_button_new( m_adjust, 1, 0 );
+
+ gtk_spin_button_set_wrap( GTK_SPIN_BUTTON(m_widget), (m_windowStyle & wxSP_WRAP) );
+
+ gtk_signal_connect( GTK_OBJECT (m_adjust),
+ "value_changed",
+ (GtkSignalFunc) gtk_spinctrl_callback,
+ (gpointer) this );
+
+ m_parent->DoAddChild( this );
+
+ PostCreation();
+
+ SetBackgroundColour( parent->GetBackgroundColour() );
+
+ Show( TRUE );
+
+ return TRUE;
+}
+
+int wxSpinCtrl::GetMin() const
+{
+ wxCHECK_MSG( (m_widget != NULL), 0, wxT("invalid spin button") );
+
+ return (int)ceil(m_adjust->lower);
+}
+
+int wxSpinCtrl::GetMax() const
+{
+ wxCHECK_MSG( (m_widget != NULL), 0, wxT("invalid spin button") );
+
+ return (int)ceil(m_adjust->upper);
+}
+
+int wxSpinCtrl::GetValue() const
+{
+ wxCHECK_MSG( (m_widget != NULL), 0, wxT("invalid spin button") );
+
+ return (int)ceil(m_adjust->value);
+}
+
+void wxSpinCtrl::SetValue( int value )
+{
+ wxCHECK_RET( (m_widget != NULL), wxT("invalid spin button") );
+
+ float fpos = (float)value;
+ m_oldPos = fpos;
+ if (fabs(fpos-m_adjust->value) < sensitivity) return;
+
+ m_adjust->value = fpos;
+
+ gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" );
+}
+
+void wxSpinCtrl::SetRange(int minVal, int maxVal)
+{
+ wxCHECK_RET( (m_widget != NULL), wxT("invalid spin button") );
+
+ float fmin = (float)minVal;
+ float fmax = (float)maxVal;
+
+ if ((fabs(fmin-m_adjust->lower) < sensitivity) &&
+ (fabs(fmax-m_adjust->upper) < sensitivity))
+ {
+ return;
+ }
+
+ m_adjust->lower = fmin;
+ m_adjust->upper = fmax;
+
+ gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" );
+
+ // these two calls are required due to some bug in GTK
+ Refresh();
+ SetFocus();
+}
+
+bool wxSpinCtrl::IsOwnGtkWindow( GdkWindow *window )
+{
+ return GTK_SPIN_BUTTON(m_widget)->panel == window;
+}
+
+void wxSpinCtrl::ApplyWidgetStyle()
+{
+ SetWidgetStyle();
+ gtk_widget_set_style( m_widget, m_widgetStyle );
+}
+
+#endif