WX_MAJOR_VERSION_NUMBER=2
WX_MINOR_VERSION_NUMBER=1
-WX_RELEASE_NUMBER=10
+WX_RELEASE_NUMBER=11
WX_INTERFACE_AGE=0
WX_BINARY_AGE=0
-25th October '99: My birthday, wxWindows 2.1.10 released
+1st November '99: wxWindows 2.1.11 released
There is still a unresolved problem with bitmap to image
conversion on big-endian architectures (such as Solaris),
I have reawakened the iODBC code from wxGTK 2.0 so you
can now use wxODBC from wxMSW and wxGTK.
-Several printing things fixed.
+Several printing things fixed. More work needs to be done
+here..
HTML widget and the wxWindows' help system based upon
it have been reorganized and improved for easier use
A number of problems with compressed and socket streams have
been solved.
+Changed behavour of wxTextStream to make use of deliminators
+and default to space as the standard C++ stream do.
+
+Changes to tab traversal code to better reflect MSW code.
+
+Corrected problems with wxGenericValidator and certain controls.
+
+Made default button action work in more cases.
+
28th August '99: Ninth wxGTK 2.1 snapshot released
As the old makefile system didn't work, I trashed it and wrote
- Welcome to wxWindows/Gtk 2.1 snapshot 9,
+ Welcome to wxWindows/Gtk 2.1.11
you have downloaded version 2.1 of the GTK+ 1.2 port of
-the wxWindows GUI library. This is a developers release
-and is it not suited for production development. Beware
-that major changes can happen before a final release.
+the wxWindows GUI library. Although this is not yet the
+final stable release wxGTK 2.2, the current version has
+been tested carefully on many systems and has been found
+to work better than any other previous version.
+
+Nonetheless, beware that major changes can happen before
+a final release.
+
+wxWindows no longer supports GTK 1.0 (as did some early
+snapshots) so that you will need GTK 1.2 when using it.
Beginning with snapshot 9, wxWindows uses a completely
new make file system on Unix which no longer uses the
http://wesley.informatik.uni-freiburg.de/~wxxt
-and about the wxWindows project as a whole (and the
-Windows and Motif ports in particular) can be found
-at Julian Smart's homepage at:
+and about the wxWindows project as a whole (and the MSW
+and Motif ports in particular) can be found at Julian's
+homepage at:
http://web.ukonline.co.uk/julian.smart/wxwin
Information on how to install can be found in the file
INSTALL.txt, but if you cannot wait, this should work on
-many systems (when using GTK 1.0 or when not using Linux
-read the INSTALL.txt):
+many systems:
-./configure
+./configure --with-gtk
make
su <type root password>
make install
-------------------- High priority ---------------------
-Finalise DnD API.
-
Fix bug that thread sample reports about non-finished threads.
-Added wxExpandedImageList to wxTreeControl.
-
More testing of Unicode support.
-Make wxSockets work on all platform.
-
Add ID based i18n system as a replacement for the
unelegant gettext system.
Improve, update translations. Install *.mo files somewehere.
-Sleep, eat, walk, study, shave, read, play piano and wash less.
-
-------------------- Medium priority ---------------------
Show accelerator control labels and actually implement them
--without-libjpeg Disables JPEG image format code.
-{ --without-odbc Disables ODBC code. Not yet. }
+ --without-odbc Disables ODBC code.
--disable-resources Disables the use of *.wxr type
resources.
/* Bump-up with each new version */
#define wxMAJOR_VERSION 2
#define wxMINOR_VERSION 1
-#define wxRELEASE_NUMBER 10
-#define wxVERSION_STRING "wxWindows 2.1.10"
+#define wxRELEASE_NUMBER 11
+#define wxVERSION_STRING "wxWindows 2.1.11"
#define wxVERSION_NUMBER (wxMAJOR_VERSION * 1000) + (wxMINOR_VERSION * 100) + wxRELEASE_NUMBER
#define wxBETA_NUMBER 0
#define wxVERSION_FLOAT wxMAJOR_VERSION + (wxMINOR_VERSION/10.0) + (wxRELEASE_NUMBER/100.0) + (wxBETA_NUMBER/10000.0)
#include "wx/textctrl.h"
#include "wx/button.h"
#include "wx/listbox.h"
+ #include "wx/slider.h"
#endif
#ifndef __WIN16__
bool wxGenericValidator::Copy(const wxGenericValidator& val)
{
- wxValidator::Copy(val);
+ wxValidator::Copy(val);
- m_pBool = val.m_pBool;
- m_pInt = val.m_pInt;
- m_pString = val.m_pString;
- m_pArrayInt = val.m_pArrayInt;
+ m_pBool = val.m_pBool;
+ m_pInt = val.m_pInt;
+ m_pString = val.m_pString;
+ m_pArrayInt = val.m_pArrayInt;
- return TRUE;
+ return TRUE;
}
wxGenericValidator::~wxGenericValidator()
// Called to transfer data to the window
bool wxGenericValidator::TransferToWindow(void)
{
- if ( !m_validatorWindow )
- return FALSE;
+ if ( !m_validatorWindow )
+ return FALSE;
- // bool controls
+ // bool controls
#if wxUSE_CHECKBOX
- if (m_validatorWindow->IsKindOf(CLASSINFO(wxCheckBox)) )
- {
- wxCheckBox* pControl = (wxCheckBox*) m_validatorWindow;
- if (m_pBool)
+ if (m_validatorWindow->IsKindOf(CLASSINFO(wxCheckBox)) )
{
- pControl->SetValue(*m_pBool) ;
- return TRUE;
- }
- } else
+ wxCheckBox* pControl = (wxCheckBox*) m_validatorWindow;
+ if (m_pBool)
+ {
+ pControl->SetValue(*m_pBool);
+ return TRUE;
+ }
+ } else
#endif
#if wxUSE_RADIOBTN
- if (m_validatorWindow->IsKindOf(CLASSINFO(wxRadioButton)) )
- {
- wxRadioButton* pControl = (wxRadioButton*) m_validatorWindow;
- if (m_pBool)
+ if (m_validatorWindow->IsKindOf(CLASSINFO(wxRadioButton)) )
{
- pControl->SetValue(*m_pBool) ;
- return TRUE;
- }
- } else
+ wxRadioButton* pControl = (wxRadioButton*) m_validatorWindow;
+ if (m_pBool)
+ {
+ pControl->SetValue(*m_pBool) ;
+ return TRUE;
+ }
+ } else
#endif
- // int controls
+
+ // int controls
#if wxUSE_GAUGE
- if (m_validatorWindow->IsKindOf(CLASSINFO(wxGauge)) )
- {
- wxGauge* pControl = (wxGauge*) m_validatorWindow;
- if (m_pInt)
+ if (m_validatorWindow->IsKindOf(CLASSINFO(wxGauge)) )
{
- pControl->SetValue(*m_pInt) ;
- return TRUE;
- }
- }
- else
+ wxGauge* pControl = (wxGauge*) m_validatorWindow;
+ if (m_pInt)
+ {
+ pControl->SetValue(*m_pInt);
+ return TRUE;
+ }
+ } else
#endif
#if wxUSE_RADIOBOX
- if (m_validatorWindow->IsKindOf(CLASSINFO(wxRadioBox)) )
- {
- wxRadioBox* pControl = (wxRadioBox*) m_validatorWindow;
- if (m_pInt)
+ if (m_validatorWindow->IsKindOf(CLASSINFO(wxRadioBox)) )
{
- pControl->SetSelection(*m_pInt) ;
- return TRUE;
- }
- }
- else
+ wxRadioBox* pControl = (wxRadioBox*) m_validatorWindow;
+ if (m_pInt)
+ {
+ pControl->SetSelection(*m_pInt) ;
+ return TRUE;
+ }
+ } else
#endif
#if wxUSE_SCROLLBAR
- if (m_validatorWindow->IsKindOf(CLASSINFO(wxScrollBar)) )
- {
- wxScrollBar* pControl = (wxScrollBar*) m_validatorWindow;
- if (m_pInt)
+ if (m_validatorWindow->IsKindOf(CLASSINFO(wxScrollBar)) )
{
- pControl->SetThumbPosition(*m_pInt) ;
- return TRUE;
- }
- } else
+ wxScrollBar* pControl = (wxScrollBar*) m_validatorWindow;
+ if (m_pInt)
+ {
+ pControl->SetThumbPosition(*m_pInt) ;
+ return TRUE;
+ }
+ } else
#endif
#if wxUSE_SPINBTN
#ifndef __WIN16__
- if (m_validatorWindow->IsKindOf(CLASSINFO(wxSpinButton)) )
- {
- wxSpinButton* pControl = (wxSpinButton*) m_validatorWindow;
- if (m_pInt)
+ if (m_validatorWindow->IsKindOf(CLASSINFO(wxSpinButton)) )
{
- pControl->SetValue(*m_pInt) ;
- return TRUE;
- }
- } else
+ wxSpinButton* pControl = (wxSpinButton*) m_validatorWindow;
+ if (m_pInt)
+ {
+ pControl->SetValue(*m_pInt) ;
+ return TRUE;
+ }
+ } else
#endif
#endif
+#if wxUSE_SLIDER
+ if (m_validatorWindow->IsKindOf(CLASSINFO(wxSlider)) )
+ {
+ wxSlider* pControl = (wxSlider*) m_validatorWindow;
+ if (m_pInt)
+ {
+ pControl->SetValue(*m_pInt) ;
+ return TRUE;
+ }
+ } else
+#endif
+
// string controls
- if (m_validatorWindow->IsKindOf(CLASSINFO(wxButton)) )
- {
- wxButton* pControl = (wxButton*) m_validatorWindow;
- if (m_pString)
+#if 1
+ if (m_validatorWindow->IsKindOf(CLASSINFO(wxButton)) )
{
- pControl->SetLabel(*m_pString) ;
- return TRUE;
- }
- } else
-#if wxUSE_COMBOBOX
- if (m_validatorWindow->IsKindOf(CLASSINFO(wxComboBox)) )
- {
- wxComboBox* pControl = (wxComboBox*) m_validatorWindow;
+ wxButton* pControl = (wxButton*) m_validatorWindow;
if (m_pString)
+ {
+ pControl->SetLabel(*m_pString) ;
+ return TRUE;
+ }
+ } else
+#endif
+#if wxUSE_COMBOBOX
+ if (m_validatorWindow->IsKindOf(CLASSINFO(wxComboBox)) )
{
- pControl->SetValue(*m_pString) ;
- return TRUE;
- }
- } else
+ wxComboBox* pControl = (wxComboBox*) m_validatorWindow;
+ if (m_pString)
+ {
+ pControl->SetValue(*m_pString) ;
+ return TRUE;
+ }
+ } else
#endif
#if wxUSE_CHOICE
- if (m_validatorWindow->IsKindOf(CLASSINFO(wxChoice)) )
- {
- wxChoice* pControl = (wxChoice*) m_validatorWindow;
- if (m_pInt)
+ if (m_validatorWindow->IsKindOf(CLASSINFO(wxChoice)) )
{
- pControl->SetSelection(*m_pInt) ;
- return TRUE;
- }
- } else
+ wxChoice* pControl = (wxChoice*) m_validatorWindow;
+ if (m_pInt)
+ {
+ pControl->SetSelection(*m_pInt) ;
+ return TRUE;
+ }
+ } else
#endif
- if (m_validatorWindow->IsKindOf(CLASSINFO(wxStaticText)) )
- {
- wxStaticText* pControl = (wxStaticText*) m_validatorWindow;
- if (m_pString)
+ if (m_validatorWindow->IsKindOf(CLASSINFO(wxStaticText)) )
{
- pControl->SetLabel(*m_pString) ;
- return TRUE;
- }
- }
- else if (m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)) )
- {
- wxTextCtrl* pControl = (wxTextCtrl*) m_validatorWindow;
+ wxStaticText* pControl = (wxStaticText*) m_validatorWindow;
if (m_pString)
+ {
+ pControl->SetLabel(*m_pString) ;
+ return TRUE;
+ }
+ } else
+ if (m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)) )
{
- pControl->SetValue(*m_pString) ;
- return TRUE;
- }
- } else
+ wxTextCtrl* pControl = (wxTextCtrl*) m_validatorWindow;
+ if (m_pString)
+ {
+ pControl->SetValue(*m_pString) ;
+ return TRUE;
+ }
+ } else
#if wxUSE_CHECKLISTBOX
#ifndef __WIN16__
// array controls
#endif
#endif
#if wxUSE_LISTBOX
- if (m_validatorWindow->IsKindOf(CLASSINFO(wxListBox)) )
- {
- wxListBox* pControl = (wxListBox*) m_validatorWindow;
- if (m_pArrayInt)
+ if (m_validatorWindow->IsKindOf(CLASSINFO(wxListBox)) )
{
- // clear all selections
- int i;
- for (i = 0 ; i < pControl->Number(); ++i)
- pControl->Deselect(i);
- // select each item in our array
- unsigned u;
- for (u = 0; u < m_pArrayInt->Count(); ++u)
- pControl->SetSelection(m_pArrayInt->Item(u));
- return TRUE;
- }
- } else
+ wxListBox* pControl = (wxListBox*) m_validatorWindow;
+ if (m_pArrayInt)
+ {
+ // clear all selections
+ int i;
+ for (i = 0 ; i < pControl->Number(); ++i)
+ pControl->Deselect(i);
+ // select each item in our array
+ unsigned u;
+ for (u = 0; u < m_pArrayInt->Count(); ++u)
+ pControl->SetSelection(m_pArrayInt->Item(u));
+ return TRUE;
+ }
+ } else
#endif
// unrecognized control, or bad pointer
return FALSE;
}
-// Called to transfer data to the window
+// Called to transfer data from the window
bool wxGenericValidator::TransferFromWindow(void)
{
if ( !m_validatorWindow )
}
} else
#endif
+#endif
+#if wxUSE_SLIDER
+ if (m_validatorWindow->IsKindOf(CLASSINFO(wxSlider)) )
+ {
+ wxSlider* pControl = (wxSlider*) m_validatorWindow;
+ if (m_pInt)
+ {
+ pControl->SetValue(*m_pInt) ;
+ return TRUE;
+ }
+ } else
#endif
// string controls
if (m_validatorWindow->IsKindOf(CLASSINFO(wxButton)) )
return TRUE;
}
} else
-#if wxUSE_LISTBOX
+#if wxUSE_CHECKLISTBOX
#ifndef __WIN16__
// array controls
// NOTE: wxCheckListBox isa wxListBox, so wxCheckListBox
// "switch_page"
//-----------------------------------------------------------------------------
-static void gtk_mdi_page_change_callback(GtkNotebook *WXUNUSED(widget),
- GtkNotebookPage *WXUNUSED(page),
- gint WXUNUSED(page),
- wxMDIParentFrame *parent )
+static void
+gtk_mdi_page_change_callback( GtkNotebook *widget,
+ GtkNotebookPage *page,
+ gint WXUNUSED(page_num),
+ wxMDIParentFrame *parent )
{
if (g_isIdle)
wxapp_install_idle_handler();
+ // send deactivate event to old child
+
wxMDIChildFrame *child = parent->GetActiveChild();
+ if (child)
+ {
+ wxActivateEvent event1( wxEVT_ACTIVATE, FALSE, child->GetId() );
+ event1.SetEventObject( child);
+ child->GetEventHandler()->ProcessEvent( event1 );
+ }
+
+ // send activate event to new child
- if (!child) return;
+ wxMDIClientWindow *client_window = parent->GetClientWindow();
+ if (!client_window)
+ return;
+
+ child = (wxMDIChildFrame*) NULL;
- wxActivateEvent event( wxEVT_ACTIVATE, TRUE, child->GetId() );
- event.SetEventObject( child);
- child->GetEventHandler()->ProcessEvent( event );
+ wxNode *node = client_window->GetChildren().First();
+ while (node)
+ {
+ wxMDIChildFrame *child_frame = (wxMDIChildFrame *)node->Data();
+ if (child_frame->m_page == page)
+ {
+ child = child_frame;
+ break;
+ }
+ node = node->Next();
+ }
+
+ if (!child)
+ return;
+
+ wxActivateEvent event2( wxEVT_ACTIVATE, TRUE, child->GetId() );
+ event2.SetEventObject( child);
+ child->GetEventHandler()->ProcessEvent( event2 );
}
//-----------------------------------------------------------------------------
// "switch_page"
//-----------------------------------------------------------------------------
-static void gtk_mdi_page_change_callback(GtkNotebook *WXUNUSED(widget),
- GtkNotebookPage *WXUNUSED(page),
- gint WXUNUSED(page),
- wxMDIParentFrame *parent )
+static void
+gtk_mdi_page_change_callback( GtkNotebook *widget,
+ GtkNotebookPage *page,
+ gint WXUNUSED(page_num),
+ wxMDIParentFrame *parent )
{
if (g_isIdle)
wxapp_install_idle_handler();
+ // send deactivate event to old child
+
wxMDIChildFrame *child = parent->GetActiveChild();
+ if (child)
+ {
+ wxActivateEvent event1( wxEVT_ACTIVATE, FALSE, child->GetId() );
+ event1.SetEventObject( child);
+ child->GetEventHandler()->ProcessEvent( event1 );
+ }
+
+ // send activate event to new child
- if (!child) return;
+ wxMDIClientWindow *client_window = parent->GetClientWindow();
+ if (!client_window)
+ return;
+
+ child = (wxMDIChildFrame*) NULL;
- wxActivateEvent event( wxEVT_ACTIVATE, TRUE, child->GetId() );
- event.SetEventObject( child);
- child->GetEventHandler()->ProcessEvent( event );
+ wxNode *node = client_window->GetChildren().First();
+ while (node)
+ {
+ wxMDIChildFrame *child_frame = (wxMDIChildFrame *)node->Data();
+ if (child_frame->m_page == page)
+ {
+ child = child_frame;
+ break;
+ }
+ node = node->Next();
+ }
+
+ if (!child)
+ return;
+
+ wxActivateEvent event2( wxEVT_ACTIVATE, TRUE, child->GetId() );
+ event2.SetEventObject( child);
+ child->GetEventHandler()->ProcessEvent( event2 );
}
//-----------------------------------------------------------------------------
# Note that this is NOT a relocatable package
%define pref /usr
-%define ver 2.1.10
+%define ver 2.1.11
%define rel 0
Summary: The GTK+ 1.2 port of the wxWindows library
Release: %{rel}
Copyright: wxWindows Licence
Group: X11/Libraries
-Source: ftp://wesley.informatik.uni-freiburg.de/pub/linux/wxxt/source/wxGTK-2.1.10.tgz
+Source: ftp://wesley.informatik.uni-freiburg.de/pub/linux/wxxt/source/wxGTK-2.1.11.tgz
URL: http://wesley.informatik.uni-freiburg.de/~wxxt/docs.html
Packager: Robert Roebling <roebling@ruf.uni-freiburg.de>
BuildRoot: /tmp/wxgtk_root