X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dcf924a345ea8ffbc1cf6b40b5f75c6005e504c0..a1fffa9fd5792a2d45b03330909f3698b28ca51f:/src/gtk1/choice.cpp diff --git a/src/gtk1/choice.cpp b/src/gtk1/choice.cpp index 9b9be9c0b0..32322e0a7f 100644 --- a/src/gtk1/choice.cpp +++ b/src/gtk1/choice.cpp @@ -14,6 +14,8 @@ #include "wx/choice.h" +#if wxUSE_CHOICE + #include "gdk/gdk.h" #include "gtk/gtk.h" @@ -36,7 +38,8 @@ extern bool g_blockEventsOnDrag; static void gtk_choice_clicked_callback( GtkWidget *WXUNUSED(widget), wxChoice *choice ) { - if (g_isIdle) wxapp_install_idle_handler(); + if (g_isIdle) + wxapp_install_idle_handler(); if (!choice->m_hasVMT) return; @@ -69,9 +72,12 @@ bool wxChoice::Create( wxWindow *parent, wxWindowID id, m_acceptsFocus = TRUE; #endif - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); + if (!PreCreation( parent, pos, size ) || + !CreateBase( parent, id, pos, size, style, validator, name )) + { + wxFAIL_MSG( wxT("wxChoice creation failed") ); + return FALSE; + } m_widget = gtk_option_menu_new(); @@ -119,7 +125,7 @@ wxChoice::~wxChoice() void wxChoice::AppendCommon( const wxString &item ) { - wxCHECK_RET( m_widget != NULL, _T("invalid choice") ); + wxCHECK_RET( m_widget != NULL, wxT("invalid choice") ); GtkWidget *menu = gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ); GtkWidget *menu_item = gtk_menu_item_new_with_label( item.mbc_str() ); @@ -166,7 +172,7 @@ void wxChoice::Append( const wxString &item, wxClientData *clientData ) void wxChoice::SetClientData( int n, void* clientData ) { - wxCHECK_RET( m_widget != NULL, _T("invalid combobox") ); + wxCHECK_RET( m_widget != NULL, wxT("invalid combobox") ); wxNode *node = m_clientDataList.Nth( n ); if (!node) return; @@ -176,7 +182,7 @@ void wxChoice::SetClientData( int n, void* clientData ) void* wxChoice::GetClientData( int n ) { - wxCHECK_MSG( m_widget != NULL, NULL, _T("invalid combobox") ); + wxCHECK_MSG( m_widget != NULL, NULL, wxT("invalid combobox") ); wxNode *node = m_clientDataList.Nth( n ); if (!node) return NULL; @@ -186,7 +192,7 @@ void* wxChoice::GetClientData( int n ) void wxChoice::SetClientObject( int n, wxClientData* clientData ) { - wxCHECK_RET( m_widget != NULL, _T("invalid combobox") ); + wxCHECK_RET( m_widget != NULL, wxT("invalid combobox") ); wxNode *node = m_clientObjectList.Nth( n ); if (!node) return; @@ -199,7 +205,7 @@ void wxChoice::SetClientObject( int n, wxClientData* clientData ) wxClientData* wxChoice::GetClientObject( int n ) { - wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, _T("invalid combobox") ); + wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, wxT("invalid combobox") ); wxNode *node = m_clientObjectList.Nth( n ); if (!node) return (wxClientData*) NULL; @@ -209,7 +215,7 @@ wxClientData* wxChoice::GetClientObject( int n ) void wxChoice::Clear() { - wxCHECK_RET( m_widget != NULL, _T("invalid choice") ); + wxCHECK_RET( m_widget != NULL, wxT("invalid choice") ); gtk_option_menu_remove_menu( GTK_OPTION_MENU(m_widget) ); GtkWidget *menu = gtk_menu_new(); @@ -229,12 +235,12 @@ void wxChoice::Clear() void wxChoice::Delete( int WXUNUSED(n) ) { - wxFAIL_MSG( _T("wxChoice:Delete not implemented") ); + wxFAIL_MSG( wxT("wxChoice:Delete not implemented") ); } int wxChoice::FindString( const wxString &string ) const { - wxCHECK_MSG( m_widget != NULL, -1, _T("invalid choice") ); + wxCHECK_MSG( m_widget != NULL, -1, wxT("invalid choice") ); // If you read this code once and you think you understand // it, then you are very wrong. Robert Roebling. @@ -249,7 +255,7 @@ int wxChoice::FindString( const wxString &string ) const if (bin->child) label = GTK_LABEL(bin->child); if (!label) label = GTK_LABEL( GTK_BUTTON(m_widget)->child ); - wxASSERT_MSG( label != NULL , _T("wxChoice: invalid label") ); + wxASSERT_MSG( label != NULL , wxT("wxChoice: invalid label") ); if (string == wxString(label->label,*wxConvCurrent)) return count; @@ -268,7 +274,7 @@ int wxChoice::GetColumns() const int wxChoice::GetSelection() { - wxCHECK_MSG( m_widget != NULL, -1, _T("invalid choice") ); + wxCHECK_MSG( m_widget != NULL, -1, wxT("invalid choice") ); GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); int count = 0; @@ -281,14 +287,12 @@ int wxChoice::GetSelection() count++; } - wxFAIL_MSG( _T("wxChoice: no selection") ); - return -1; } wxString wxChoice::GetString( int n ) const { - wxCHECK_MSG( m_widget != NULL, _T(""), _T("invalid choice") ); + wxCHECK_MSG( m_widget != NULL, wxT(""), wxT("invalid choice") ); GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); int count = 0; @@ -302,7 +306,7 @@ wxString wxChoice::GetString( int n ) const if (bin->child) label = GTK_LABEL(bin->child); if (!label) label = GTK_LABEL( GTK_BUTTON(m_widget)->child ); - wxASSERT_MSG( label != NULL , _T("wxChoice: invalid label") ); + wxASSERT_MSG( label != NULL , wxT("wxChoice: invalid label") ); return wxString(label->label,*wxConvCurrent); } @@ -310,25 +314,25 @@ wxString wxChoice::GetString( int n ) const count++; } - wxFAIL_MSG( _T("wxChoice: invalid index in GetString()") ); + wxFAIL_MSG( wxT("wxChoice: invalid index in GetString()") ); - return _T(""); + return wxT(""); } wxString wxChoice::GetStringSelection() const { - wxCHECK_MSG( m_widget != NULL, _T(""), _T("invalid choice") ); + wxCHECK_MSG( m_widget != NULL, wxT(""), wxT("invalid choice") ); GtkLabel *label = GTK_LABEL( GTK_BUTTON(m_widget)->child ); - wxASSERT_MSG( label != NULL , _T("wxChoice: invalid label") ); + wxASSERT_MSG( label != NULL , wxT("wxChoice: invalid label") ); return wxString(label->label,*wxConvCurrent); } int wxChoice::Number() const { - wxCHECK_MSG( m_widget != NULL, 0, _T("invalid choice") ); + wxCHECK_MSG( m_widget != NULL, 0, wxT("invalid choice") ); GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); int count = 0; @@ -347,22 +351,50 @@ void wxChoice::SetColumns( int WXUNUSED(n) ) void wxChoice::SetSelection( int n ) { - wxCHECK_RET( m_widget != NULL, _T("invalid choice") ); + wxCHECK_RET( m_widget != NULL, wxT("invalid choice") ); int tmp = n; gtk_option_menu_set_history( GTK_OPTION_MENU(m_widget), (gint)tmp ); - - gtk_choice_clicked_callback( (GtkWidget *) NULL, this ); } void wxChoice::SetStringSelection( const wxString &string ) { - wxCHECK_RET( m_widget != NULL, _T("invalid choice") ); + wxCHECK_RET( m_widget != NULL, wxT("invalid choice") ); int n = FindString( string ); if (n != -1) SetSelection( n ); } +void wxChoice::DisableEvents() +{ +/* + GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); + GList *child = menu_shell->children; + while (child) + { + gtk_signal_disconnect_by_func( GTK_OBJECT( child->data ), + GTK_SIGNAL_FUNC(gtk_choice_clicked_callback), (gpointer*)this ); + + child = child->next; + } +*/ +} + +void wxChoice::EnableEvents() +{ +/* + GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); + GList *child = menu_shell->children; + while (child) + { + gtk_signal_connect( GTK_OBJECT( child->data ), "activate", + GTK_SIGNAL_FUNC(gtk_choice_clicked_callback), (gpointer*)this ); + + child = child->next; + } +*/ +} + void wxChoice::ApplyWidgetStyle() { SetWidgetStyle(); @@ -388,3 +420,4 @@ void wxChoice::ApplyWidgetStyle() } } +#endif