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:
31
src/common/serbase.cpp
Normal file
31
src/common/serbase.cpp
Normal 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
|
@@ -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 \
|
||||
|
@@ -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 )
|
||||
|
@@ -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 )
|
||||
|
Reference in New Issue
Block a user