Fixed compilation (add serbase.cpp)

Added ListBox::SetString
 Changed listbox message behaviour to match wxMSW (I hope)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@445 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1998-08-06 19:07:05 +00:00
parent 496e3a4a03
commit 09cf7c5853
4 changed files with 107 additions and 43 deletions

31
src/common/serbase.cpp Normal file
View File

@@ -0,0 +1,31 @@
/////////////////////////////////////////////////////////////////////////////
// Name: serbase.cpp
// Purpose: wxStream base classes
// Author: Robert Roebling
// Modified by:
// Created: 11/07/98
// RCS-ID: $Id$
// Copyright: (c) Robert Roebling
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "stream.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include <wx/serbase.h>
#ifdef __BORLANDC__
#pragma hdrstop
#endif
// ----------------------------------------------------------------------------
// wxObject_Serialize
// ----------------------------------------------------------------------------
#if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxObject_Serialize,wxObject)
#endif

View File

@@ -16,6 +16,7 @@ LIB_CPP_SRC=\
common/docmdi.cpp \
common/docview.cpp \
common/dynarray.cpp \
common/dynlib.cpp \
common/event.cpp \
common/file.cpp \
common/fileconf.cpp \
@@ -35,6 +36,7 @@ LIB_CPP_SRC=\
common/odbc.cpp \
common/postscrp.cpp \
common/prntbase.cpp \
common/serbase.cpp \
common/string.cpp \
common/textfile.cpp \
common/time.cpp \
@@ -112,7 +114,6 @@ LIB_CPP_SRC=\
generic/textdlgg.cpp \
generic/treectrl.cpp
# common/dynlib.cpp Disabled until I write support for DLL on all platforms
LIB_C_SRC=\
common/extended.c \

View File

@@ -15,6 +15,7 @@
#include "wx/dynarray.h"
#include "wx/listbox.h"
#include "wx/utils.h"
//-----------------------------------------------------------------------------
// data
@@ -26,22 +27,32 @@ extern bool g_blockEventsOnDrag;
// wxListBox
//-----------------------------------------------------------------------------
static void gtk_listitem_select_callback( GtkWidget *widget, wxListBox *listbox )
static void gtk_listitem_select_callback( GtkWidget *WXUNUSED(widget), wxListBox *listbox )
{
if (!listbox->HasVMT()) return;
if (g_blockEventsOnDrag) return;
wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() );
event.SetInt( listbox->GetIndex( widget ) );
GtkBin *bin = GTK_BIN( widget );
GtkLabel *label = GTK_LABEL( bin->child );
wxString tmp( label->label );
event.SetString( WXSTRINGCAST(tmp) );
wxArrayInt aSelections;
int count = listbox->GetSelections(aSelections);
if ( count > 0 )
{
event.m_commandInt = aSelections[0] ;
event.m_clientData = listbox->GetClientData(event.m_commandInt);
wxString str(listbox->GetString(event.m_commandInt));
if (str != "")
event.m_commandString = copystring((char *)(const char *)str);
}
else
{
event.m_commandInt = -1 ;
event.m_commandString = copystring("") ;
}
event.SetEventObject( listbox );
listbox->GetEventHandler()->ProcessEvent( event );
if (event.m_commandString) delete[] event.m_commandString ;
};
//-----------------------------------------------------------------------------
@@ -98,6 +109,10 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
gtk_signal_connect( GTK_OBJECT(list_item), "select",
GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
if ( style & wxLB_MULTIPLE )
gtk_signal_connect( GTK_OBJECT(list_item), "deselect",
GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
m_clientData.Append( (wxObject*)NULL );
gtk_widget_show( list_item );
@@ -114,17 +129,7 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
void wxListBox::Append( const wxString &item )
{
GtkWidget *list_item;
list_item = gtk_list_item_new_with_label( item );
gtk_signal_connect( GTK_OBJECT(list_item), "select",
GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
gtk_container_add( GTK_CONTAINER(m_list), list_item );
m_clientData.Append( (wxObject*)NULL );
gtk_widget_show( list_item );
Append( item, (char*)NULL );
};
void wxListBox::Append( const wxString &item, char *clientData )
@@ -132,9 +137,13 @@ void wxListBox::Append( const wxString &item, char *clientData )
GtkWidget *list_item;
list_item = gtk_list_item_new_with_label( item );
gtk_signal_connect( GTK_OBJECT(list_item), "select",
gtk_signal_connect( GTK_OBJECT(list_item), "select",
GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
if ( GetWindowStyleFlag() & wxLB_MULTIPLE )
gtk_signal_connect( GTK_OBJECT(list_item), "deselect",
GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
gtk_container_add( GTK_CONTAINER(m_list), list_item );
m_clientData.Append( (wxObject*)clientData );
@@ -304,8 +313,15 @@ void wxListBox::SetSelection( int n, bool select )
gtk_list_unselect_item( m_list, n );
};
void wxListBox::SetString( int WXUNUSED(n), const wxString &WXUNUSED(string) )
void wxListBox::SetString( int n, const wxString &string )
{
GList *child = g_list_nth( m_list->children, n );
if (child)
{
GtkBin *bin = GTK_BIN( child->data );
GtkLabel *label = GTK_LABEL( bin->child );
gtk_label_set( label, string );
};
};
void wxListBox::SetStringSelection( const wxString &string, bool select )

View File

@@ -15,6 +15,7 @@
#include "wx/dynarray.h"
#include "wx/listbox.h"
#include "wx/utils.h"
//-----------------------------------------------------------------------------
// data
@@ -26,22 +27,32 @@ extern bool g_blockEventsOnDrag;
// wxListBox
//-----------------------------------------------------------------------------
static void gtk_listitem_select_callback( GtkWidget *widget, wxListBox *listbox )
static void gtk_listitem_select_callback( GtkWidget *WXUNUSED(widget), wxListBox *listbox )
{
if (!listbox->HasVMT()) return;
if (g_blockEventsOnDrag) return;
wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() );
event.SetInt( listbox->GetIndex( widget ) );
GtkBin *bin = GTK_BIN( widget );
GtkLabel *label = GTK_LABEL( bin->child );
wxString tmp( label->label );
event.SetString( WXSTRINGCAST(tmp) );
wxArrayInt aSelections;
int count = listbox->GetSelections(aSelections);
if ( count > 0 )
{
event.m_commandInt = aSelections[0] ;
event.m_clientData = listbox->GetClientData(event.m_commandInt);
wxString str(listbox->GetString(event.m_commandInt));
if (str != "")
event.m_commandString = copystring((char *)(const char *)str);
}
else
{
event.m_commandInt = -1 ;
event.m_commandString = copystring("") ;
}
event.SetEventObject( listbox );
listbox->GetEventHandler()->ProcessEvent( event );
if (event.m_commandString) delete[] event.m_commandString ;
};
//-----------------------------------------------------------------------------
@@ -98,6 +109,10 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
gtk_signal_connect( GTK_OBJECT(list_item), "select",
GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
if ( style & wxLB_MULTIPLE )
gtk_signal_connect( GTK_OBJECT(list_item), "deselect",
GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
m_clientData.Append( (wxObject*)NULL );
gtk_widget_show( list_item );
@@ -114,17 +129,7 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
void wxListBox::Append( const wxString &item )
{
GtkWidget *list_item;
list_item = gtk_list_item_new_with_label( item );
gtk_signal_connect( GTK_OBJECT(list_item), "select",
GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
gtk_container_add( GTK_CONTAINER(m_list), list_item );
m_clientData.Append( (wxObject*)NULL );
gtk_widget_show( list_item );
Append( item, (char*)NULL );
};
void wxListBox::Append( const wxString &item, char *clientData )
@@ -132,9 +137,13 @@ void wxListBox::Append( const wxString &item, char *clientData )
GtkWidget *list_item;
list_item = gtk_list_item_new_with_label( item );
gtk_signal_connect( GTK_OBJECT(list_item), "select",
gtk_signal_connect( GTK_OBJECT(list_item), "select",
GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
if ( GetWindowStyleFlag() & wxLB_MULTIPLE )
gtk_signal_connect( GTK_OBJECT(list_item), "deselect",
GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
gtk_container_add( GTK_CONTAINER(m_list), list_item );
m_clientData.Append( (wxObject*)clientData );
@@ -304,8 +313,15 @@ void wxListBox::SetSelection( int n, bool select )
gtk_list_unselect_item( m_list, n );
};
void wxListBox::SetString( int WXUNUSED(n), const wxString &WXUNUSED(string) )
void wxListBox::SetString( int n, const wxString &string )
{
GList *child = g_list_nth( m_list->children, n );
if (child)
{
GtkBin *bin = GTK_BIN( child->data );
GtkLabel *label = GTK_LABEL( bin->child );
gtk_label_set( label, string );
};
};
void wxListBox::SetStringSelection( const wxString &string, bool select )