/* Make the user pick a DiscDB genre on submit*/ static void GetDiscDBGenre(GripInfo *ginfo) { GtkWidget *dialog; GtkWidget *label; GtkWidget *submit_button; GtkWidget *cancel_button; GtkWidget *hbox; GtkWidget *genre_combo; GtkWidget *item; int genre; dialog=gtk_dialog_new(); gtk_window_set_title(GTK_WINDOW(dialog),_("Genre selection")); gtk_container_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox),5); label=gtk_label_new(_("Submission requires a genre other than 'unknown'\n" "Please select a DiscDB genre below")); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),label,TRUE,TRUE,0); gtk_widget_show(label); genre_combo=gtk_combo_new(); gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(genre_combo)->entry),FALSE); hbox=gtk_hbox_new(FALSE,3); label=gtk_label_new(_("DiscDB genre")); gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0); gtk_widget_show(label); for(genre=0;genre<12;genre++) { item=gtk_list_item_new_with_label(DiscDBGenre(genre)); gtk_object_set_user_data(GTK_OBJECT(item), (gpointer)genre); gtk_signal_connect(GTK_OBJECT(item), "select", GTK_SIGNAL_FUNC(DiscDBGenreChanged),(gpointer)ginfo); gtk_container_add(GTK_CONTAINER(GTK_COMBO(genre_combo)->list),item); gtk_widget_show(item); } gtk_box_pack_start(GTK_BOX(hbox),genre_combo,TRUE,TRUE,0); gtk_widget_show(genre_combo); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),hbox,TRUE,TRUE,0); gtk_widget_show(hbox); submit_button=gtk_button_new_with_label(_("Submit")); gtk_signal_connect(GTK_OBJECT(submit_button),"clicked", (gpointer)SubmitEntryCB,(gpointer)ginfo); gtk_signal_connect_object(GTK_OBJECT(submit_button),"clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(dialog)); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area),submit_button, TRUE,TRUE,0); gtk_widget_show(submit_button); cancel_button=gtk_button_new_with_label(_("Cancel")); gtk_signal_connect_object(GTK_OBJECT(cancel_button),"clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(dialog)); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area),cancel_button, TRUE,TRUE,0); gtk_widget_show(cancel_button); gtk_widget_show(dialog); gtk_grab_add(dialog); }
bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, int n, const wxString choices[], long style, const wxValidator& validator, const wxString& name ) { m_ignoreNextUpdate = false; m_needParent = true; m_acceptsFocus = true; m_prevSelection = 0; if (!PreCreation( parent, pos, size ) || !CreateBase( parent, id, pos, size, style, validator, name )) { wxFAIL_MSG( wxT("wxComboBox creation failed") ); return false; } #ifdef __WXGTK24__ if (!gtk_check_version(2,4,0)) { m_widget = gtk_combo_box_entry_new_text(); GtkComboBox* combobox = GTK_COMBO_BOX( m_widget ); gtk_entry_set_editable( GTK_ENTRY( GTK_BIN(m_widget)->child ), TRUE ); for (int i = 0; i < n; i++) { gtk_combo_box_append_text( combobox, wxGTK_CONV( choices[i] ) ); m_clientDataList.Append( (wxObject*)NULL ); m_clientObjectList.Append( (wxObject*)NULL ); } } else #endif { m_widget = gtk_combo_new(); GtkCombo* combo = GTK_COMBO(m_widget); // Disable GTK's broken events ... g_signal_handler_disconnect (combo->entry, combo->entry_change_id); // ... and add surrogate handler. combo->entry_change_id = g_signal_connect (combo->entry, "changed", G_CALLBACK (gtkcombo_dummy_callback), combo); // make it more useable gtk_combo_set_use_arrows_always( GTK_COMBO(m_widget), TRUE ); // and case-sensitive gtk_combo_set_case_sensitive( GTK_COMBO(m_widget), TRUE ); if (style & wxNO_BORDER) g_object_set (combo->entry, "has-frame", FALSE, NULL ); GtkWidget *list = combo->list; for (int i = 0; i < n; i++) { GtkWidget *list_item = gtk_list_item_new_with_label( wxGTK_CONV( choices[i] ) ); m_clientDataList.Append( (wxObject*)NULL ); m_clientObjectList.Append( (wxObject*)NULL ); gtk_container_add( GTK_CONTAINER(list), list_item ); gtk_widget_show( list_item ); } } m_parent->DoAddChild( this ); GtkEntry *entry = NULL; #ifdef __WXGTK24__ if (!gtk_check_version(2,4,0)) entry = GTK_ENTRY( GTK_BIN(m_widget)->child ); else #endif entry = GTK_ENTRY( GTK_COMBO(m_widget)->entry ); m_focusWidget = GTK_WIDGET( entry ); PostCreation(size); #ifdef __WXGTK24__ if (!gtk_check_version(2,4,0)) ConnectWidget( m_widget ); else #endif ConnectWidget( GTK_COMBO(m_widget)->button ); #ifdef __WXGTK24__ if (!gtk_check_version(2,4,0)) { gtk_entry_set_text( entry, wxGTK_CONV(value) ); if (style & wxCB_READONLY) gtk_entry_set_editable( entry, FALSE ); g_signal_connect_after (entry, "changed", G_CALLBACK (gtkcombobox_text_changed_callback), this); g_signal_connect_after (m_widget, "changed", G_CALLBACK (gtkcombobox_changed_callback), this); } else #endif { GtkCombo *combo = GTK_COMBO(m_widget); // MSW's combo box shows the value and the selection is -1 gtk_entry_set_text( entry, wxGTK_CONV(value) ); gtk_list_unselect_all( GTK_LIST(combo->list) ); if (style & wxCB_READONLY) gtk_entry_set_editable( entry, FALSE ); // "show" and "hide" events are generated when user click on the combobox button which popups a list // this list is the "popwin" gtk widget g_signal_connect (GTK_COMBO(combo)->popwin, "hide", G_CALLBACK (gtkcombo_popup_hide_callback), this); g_signal_connect (GTK_COMBO(combo)->popwin, "show", G_CALLBACK (gtkcombo_popup_show_callback), this); g_signal_connect_after (combo->list, "select-child", G_CALLBACK (gtkcombo_combo_select_child_callback), this); g_signal_connect_after (entry, "changed", G_CALLBACK (gtkcombo_text_changed_callback), this); // This is required for tool bar support // Doesn't currently work // wxSize setsize = GetSize(); // gtk_widget_set_size_request( m_widget, setsize.x, setsize.y ); } SetInitialSize(size); // need this too because this is a wxControlWithItems return true; }
void wxListBox::GtkAddItem( const wxString &item, int pos ) { wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); GtkWidget *list_item; wxString label(item); #if wxUSE_CHECKLISTBOX if (m_hasCheckBoxes) { label.Prepend(wxCHECKLBOX_STRING); } #endif // wxUSE_CHECKLISTBOX list_item = gtk_list_item_new_with_label( wxGTK_CONV( label ) ); GList *gitem_list = g_list_alloc (); gitem_list->data = list_item; if (pos == -1) gtk_list_append_items( GTK_LIST (m_list), gitem_list ); else gtk_list_insert_items( GTK_LIST (m_list), gitem_list, pos ); gtk_signal_connect_after( GTK_OBJECT(list_item), "select", GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this ); if (HasFlag(wxLB_MULTIPLE) || HasFlag(wxLB_EXTENDED)) gtk_signal_connect_after( GTK_OBJECT(list_item), "deselect", GTK_SIGNAL_FUNC(gtk_listitem_deselect_callback), (gpointer)this ); gtk_signal_connect( GTK_OBJECT(list_item), "button_press_event", (GtkSignalFunc)gtk_listbox_button_press_callback, (gpointer) this ); gtk_signal_connect_after( GTK_OBJECT(list_item), "button_release_event", (GtkSignalFunc)gtk_listbox_button_release_callback, (gpointer) this ); gtk_signal_connect( GTK_OBJECT(list_item), "key_press_event", (GtkSignalFunc)gtk_listbox_key_press_callback, (gpointer)this ); gtk_signal_connect( GTK_OBJECT(list_item), "focus_in_event", GTK_SIGNAL_FUNC(gtk_listitem_focus_in_callback), (gpointer)this ); gtk_signal_connect( GTK_OBJECT(list_item), "focus_out_event", GTK_SIGNAL_FUNC(gtk_listitem_focus_out_callback), (gpointer)this ); ConnectWidget( list_item ); if (GTK_WIDGET_REALIZED(m_widget)) { gtk_widget_show( list_item ); gtk_widget_realize( list_item ); gtk_widget_realize( GTK_BIN(list_item)->child ); #if wxUSE_TOOLTIPS if (m_tooltip) m_tooltip->Apply( this ); #endif } // Apply current widget style to the new list_item GtkRcStyle *style = CreateWidgetStyle(); if (style) { gtk_widget_modify_style( GTK_WIDGET( list_item ), style ); GtkBin *bin = GTK_BIN( list_item ); gtk_widget_modify_style( GTK_WIDGET( bin->child ), style ); gtk_rc_style_unref( style ); } }
GtkWidget *MakeEditBox(GripInfo *ginfo) { GripGUI *uinfo; GtkWidget *vbox,*hbox; GtkWidget *button; GtkWidget *label; GtkWidget *frame; GtkWidget *item; GtkWidget *check; GtkWidget *entry; GtkObject *adj; ID3Genre *id3_genre; gint id3_genre_count; int len; int dub_size; PangoLayout *layout; uinfo=&(ginfo->gui_info); frame=gtk_frame_new(NULL); vbox=gtk_vbox_new(FALSE,0); hbox=gtk_hbox_new(FALSE,3); label=gtk_label_new(_("Disc title")); /* This should be the longest string in the track edit section */ layout=gtk_widget_create_pango_layout(GTK_WIDGET(label), _("Track name")); pango_layout_get_size(layout,&len,NULL); len/=PANGO_SCALE; g_object_unref(layout); layout=gtk_widget_create_pango_layout(GTK_WIDGET(label), _("W")); pango_layout_get_size(layout,&dub_size,NULL); dub_size/=PANGO_SCALE; g_object_unref(layout); gtk_widget_set_usize(label,len,0); gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0); gtk_widget_show(label); uinfo->title_edit_entry=gtk_entry_new_with_max_length(256); gtk_signal_connect(GTK_OBJECT(uinfo->title_edit_entry),"changed", GTK_SIGNAL_FUNC(TitleEditChanged),(gpointer)ginfo); gtk_entry_set_position(GTK_ENTRY(uinfo->title_edit_entry),0); gtk_box_pack_start(GTK_BOX(hbox),uinfo->title_edit_entry,TRUE,TRUE,0); gtk_widget_show(uinfo->title_edit_entry); gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0); gtk_widget_show(hbox); hbox=gtk_hbox_new(FALSE,3); label=gtk_label_new(_("Disc artist")); gtk_widget_set_usize(label,len,0); gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0); gtk_widget_show(label); uinfo->artist_edit_entry=gtk_entry_new_with_max_length(256); gtk_signal_connect(GTK_OBJECT(uinfo->artist_edit_entry),"changed", GTK_SIGNAL_FUNC(ArtistEditChanged),(gpointer)ginfo); gtk_entry_set_position(GTK_ENTRY(uinfo->artist_edit_entry),0); gtk_box_pack_start(GTK_BOX(hbox),uinfo->artist_edit_entry,TRUE,TRUE,0); gtk_widget_show(uinfo->artist_edit_entry); gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0); gtk_widget_show(hbox); hbox=gtk_hbox_new(FALSE,3); label=gtk_label_new(_("ID3 genre:")); gtk_widget_set_usize(label,len,0); gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0); gtk_widget_show(label); uinfo->id3_genre_combo=gtk_combo_new(); for(id3_genre_count=0;(id3_genre=ID3GenreByNum(id3_genre_count)); id3_genre_count++) { item = gtk_list_item_new_with_label(id3_genre->name); gtk_object_set_user_data(GTK_OBJECT(item), (gpointer)(id3_genre->num)); uinfo->id3_genre_item_list=g_list_append(uinfo->id3_genre_item_list,item); gtk_signal_connect(GTK_OBJECT(item),"select", GTK_SIGNAL_FUNC(ID3GenreChanged), (gpointer)ginfo); gtk_container_add(GTK_CONTAINER(GTK_COMBO(uinfo->id3_genre_combo)->list), item); gtk_widget_show(item); } gtk_box_pack_start(GTK_BOX(hbox),uinfo->id3_genre_combo,TRUE,TRUE,0); gtk_widget_show(uinfo->id3_genre_combo); SetID3Genre(ginfo,ginfo->ddata.data_id3genre); gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0); gtk_widget_show(hbox); hbox=gtk_hbox_new(FALSE,3); label=gtk_label_new(_("Disc year")); gtk_widget_set_usize(label,len,0); gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0); gtk_widget_show(label); adj=gtk_adjustment_new(0,0,9999,1.0,5.0,0); uinfo->year_spin_button=gtk_spin_button_new(GTK_ADJUSTMENT(adj),0.5,0); gtk_signal_connect(GTK_OBJECT(uinfo->year_spin_button),"value_changed", GTK_SIGNAL_FUNC(YearEditChanged),(gpointer)ginfo); gtk_box_pack_start(GTK_BOX(hbox),uinfo->year_spin_button,TRUE,TRUE,0); gtk_widget_show(uinfo->year_spin_button); gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0); gtk_widget_show(hbox); hbox=gtk_hbox_new(FALSE,3); label=gtk_label_new(_("Track name")); gtk_widget_set_usize(label,len,0); gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0); gtk_widget_show(label); uinfo->track_edit_entry=gtk_entry_new_with_max_length(256); gtk_signal_connect(GTK_OBJECT(uinfo->track_edit_entry),"changed", GTK_SIGNAL_FUNC(TrackEditChanged),(gpointer)ginfo); gtk_signal_connect(GTK_OBJECT(uinfo->track_edit_entry),"activate", GTK_SIGNAL_FUNC(EditNextTrack),(gpointer)ginfo); gtk_box_pack_start(GTK_BOX(hbox),uinfo->track_edit_entry,TRUE,TRUE,0); gtk_widget_show(uinfo->track_edit_entry); gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0); gtk_widget_show(hbox); uinfo->multi_artist_box=gtk_vbox_new(FALSE,0); hbox=gtk_hbox_new(FALSE,3); label=gtk_label_new(_("Track artist")); gtk_widget_set_usize(label,len,0); gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0); gtk_widget_show(label); uinfo->track_artist_edit_entry=gtk_entry_new_with_max_length(256); gtk_signal_connect(GTK_OBJECT(uinfo->track_artist_edit_entry),"changed", GTK_SIGNAL_FUNC(TrackEditChanged),(gpointer)ginfo); gtk_box_pack_start(GTK_BOX(hbox),uinfo->track_artist_edit_entry, TRUE,TRUE,0); gtk_widget_show(uinfo->track_artist_edit_entry); gtk_box_pack_start(GTK_BOX(uinfo->multi_artist_box),hbox,FALSE,FALSE,0); gtk_widget_show(hbox); hbox=gtk_hbox_new(FALSE,3); label=gtk_label_new(_("Split:")); gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0); gtk_widget_show(label); button=gtk_button_new_with_label(_("Title/Artist")); gtk_object_set_user_data(GTK_OBJECT(button),(gpointer)0); gtk_signal_connect(GTK_OBJECT(button),"clicked", GTK_SIGNAL_FUNC(SplitTitleArtist),(gpointer)ginfo); gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,FALSE,0); gtk_widget_show(button); button=gtk_button_new_with_label(_("Artist/Title")); gtk_object_set_user_data(GTK_OBJECT(button),(gpointer)1); gtk_signal_connect(GTK_OBJECT(button),"clicked", GTK_SIGNAL_FUNC(SplitTitleArtist),(gpointer)ginfo); gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,FALSE,0); gtk_widget_show(button); entry=MakeStrEntry(&uinfo->split_chars_entry,ginfo->title_split_chars, _("Split chars"),5,TRUE); gtk_widget_set_usize(uinfo->split_chars_entry, 5*dub_size,0); gtk_box_pack_end(GTK_BOX(hbox),entry,FALSE,FALSE,0); gtk_widget_show(entry); gtk_box_pack_start(GTK_BOX(uinfo->multi_artist_box),hbox,FALSE,FALSE,2); gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(vbox),uinfo->multi_artist_box,FALSE,FALSE,0); if(ginfo->ddata.data_multi_artist) gtk_widget_show(uinfo->multi_artist_box); hbox=gtk_hbox_new(FALSE,0); check=MakeCheckButton(&uinfo->multi_artist_button, &(ginfo->ddata.data_multi_artist), _("Multi-artist")); gtk_signal_connect(GTK_OBJECT(uinfo->multi_artist_button),"clicked", GTK_SIGNAL_FUNC(UpdateMultiArtist),(gpointer)ginfo); gtk_box_pack_start(GTK_BOX(hbox),check,TRUE,TRUE,0); gtk_widget_show(check); button=ImageButton(GTK_WIDGET(uinfo->app),uinfo->save_image); gtk_widget_set_style(button,uinfo->style_dark_grey); gtk_signal_connect(GTK_OBJECT(button),"clicked", GTK_SIGNAL_FUNC(SaveDiscInfo),(gpointer)ginfo); gtk_tooltips_set_tip(MakeToolTip(),button, _("Save disc info"),NULL); gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,FALSE,0); gtk_widget_show(button); button=ImageButton(GTK_WIDGET(uinfo->app),uinfo->mail_image); gtk_widget_set_style(button,uinfo->style_dark_grey); gtk_signal_connect(GTK_OBJECT(button),"clicked", GTK_SIGNAL_FUNC(SubmitEntryCB),(gpointer)ginfo); gtk_tooltips_set_tip(MakeToolTip(),button, _("Submit disc info"),NULL); gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,FALSE,0); gtk_widget_show(button); gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0); gtk_widget_show(hbox); gtk_container_add(GTK_CONTAINER(frame),vbox); gtk_widget_show(vbox); return frame; }
static int MicrocodeDialog() { GtkWidget *infoLabel; GtkWidget *infoFrame, *infoTable; GtkWidget *crcInfoLabel, *crcDataInfoLabel, *textInfoLabel; GtkWidget *crcLabel = NULL, *crcDataLabel = NULL, *textLabel = NULL; GtkWidget *selectUcodeLabel; //GtkWidget *microcodeLabel; GtkWidget *okButton, *stopButton; GList *ucodeList = 0; char buf[1024]; if (!g_thread_supported()) g_thread_init( NULL ); gdk_threads_enter(); // create dialog if (microcodeWindow == 0) { microcodeWindow = gtk_dialog_new(); gtk_signal_connect( GTK_OBJECT(microcodeWindow), "delete_event", GTK_SIGNAL_FUNC(delete_question_event), (gpointer)NULL ); sprintf( buf, "%s - unknown microcode", pluginName ); gtk_window_set_title( GTK_WINDOW(microcodeWindow), buf ); gtk_container_set_border_width( GTK_CONTAINER(GTK_DIALOG(microcodeWindow)->vbox), 11 ); // ok button okButton = gtk_button_new_with_label( "Ok" ); gtk_signal_connect_object( GTK_OBJECT(okButton), "clicked", GTK_SIGNAL_FUNC(okButton_clicked), NULL ); gtk_container_add( GTK_CONTAINER(GTK_DIALOG(microcodeWindow)->action_area), okButton ); // stop button stopButton = gtk_button_new_with_label( "Stop" ); gtk_signal_connect_object( GTK_OBJECT(stopButton), "clicked", GTK_SIGNAL_FUNC(stopButton_clicked), NULL ); gtk_container_add( GTK_CONTAINER(GTK_DIALOG(microcodeWindow)->action_area), stopButton ); // info label infoLabel = gtk_label_new( "Unknown microcode. Please notify Orkin, including the following information:" ); gtk_box_pack_start_defaults( GTK_BOX(GTK_DIALOG(microcodeWindow)->vbox), infoLabel ); // info frame infoFrame = gtk_frame_new( "Microcode info" ); gtk_container_set_border_width( GTK_CONTAINER(infoFrame), 7 ); gtk_box_pack_start_defaults( GTK_BOX(GTK_DIALOG(microcodeWindow)->vbox), infoFrame ); infoTable = gtk_table_new( 3, 2, FALSE ); gtk_container_set_border_width( GTK_CONTAINER(infoTable), 7 ); gtk_table_set_col_spacings( GTK_TABLE(infoTable), 3 ); gtk_table_set_row_spacings( GTK_TABLE(infoTable), 3 ); gtk_container_add( GTK_CONTAINER(infoFrame), infoTable ); crcInfoLabel = gtk_label_new( "Microcode CRC:" ); crcDataInfoLabel = gtk_label_new( "Microcode Data CRC:" ); textInfoLabel = gtk_label_new( "Microcode Text:" ); crcLabel = gtk_label_new( "" ); crcDataLabel = gtk_label_new( "" ); textLabel = gtk_label_new( "" ); gtk_table_attach_defaults( GTK_TABLE(infoTable), crcInfoLabel, 0, 1, 0, 1 ); gtk_table_attach_defaults( GTK_TABLE(infoTable), crcLabel, 1, 2, 0, 1 ); gtk_table_attach_defaults( GTK_TABLE(infoTable), crcDataInfoLabel, 0, 1, 1, 2 ); gtk_table_attach_defaults( GTK_TABLE(infoTable), crcDataLabel, 1, 2, 1, 2 ); gtk_table_attach_defaults( GTK_TABLE(infoTable), textInfoLabel, 0, 1, 2, 3 ); gtk_table_attach_defaults( GTK_TABLE(infoTable), textLabel, 1, 2, 2, 3 ); selectUcodeLabel = gtk_label_new( "You can manually select the closest matching microcode." ); for (int i = 0; i < numMicrocodeTypes; i++) ucodeList = g_list_append( ucodeList, gtk_list_item_new_with_label( MicrocodeTypes[i] ) ); microcodeList = gtk_list_new(); gtk_list_set_selection_mode( GTK_LIST(microcodeList), GTK_SELECTION_SINGLE ); gtk_list_append_items( GTK_LIST(microcodeList), ucodeList ); gtk_box_pack_start_defaults( GTK_BOX(GTK_DIALOG(microcodeWindow)->vbox), selectUcodeLabel ); gtk_box_pack_start_defaults( GTK_BOX(GTK_DIALOG(microcodeWindow)->vbox), microcodeList ); } snprintf( buf, 1024, "0x%8.8X", (unsigned int)uc_crc ); if(crcLabel) gtk_label_set_text( GTK_LABEL(crcLabel), buf ); snprintf( buf, 1024, "0x%8.8X", (unsigned int)uc_dcrc ); if(crcDataLabel) gtk_label_set_text( GTK_LABEL(crcDataLabel), buf ); if(textLabel) gtk_label_set_text( GTK_LABEL(textLabel), uc_str ); selectedMicrocode = -1; gtk_widget_show_all( microcodeWindow ); while (selectedMicrocode == -1) { if( gtk_main_iteration() ) break; usleep( 10000 ); } gdk_threads_leave(); return selectedMicrocode; }
//Algoritmo T9 di predizione del testo basato su liste void gestionet9 (struttura *str,int tasto) { //fase inizializzazione str->tp.numparoletrovate=0; int i=0; for (i=0; i<N;i++) { str->tp.vetparole[i].frequenza=0; bzero(str->tp.vetparole[i].parola,30); } gtk_list_clear_items ((GtkList *) str->tp.gtklist,0,N); //aggiornamento str->tp.luncodicet9=str->tp.luncodicet9+1; sprintf(str->tp.codicet9,"%s%d",str->tp.codicet9,tasto); //printf("\nTasti premuti: %s\tlunghezza:%d\n",str->tp.codicet9,str->tp.luncodicet9); char query[200]; bzero (query,200); //se freq0 globale, se 1 pers sprintf (query, " select parola dist,frequenza from personale where codice like \'%s%%\' union select parola dist,frequenza from globale where codice like \'%s%%\' order by 2 desc, 1 asc limit 0,5;",str->tp.codicet9,str->tp.codicet9); //GtkWidget *list_item; GList *dlist=NULL; gchar *s; s = (gchar*)malloc(sizeof(gchar)); sprintf(s,""); printf("\n%s\n",query); int retval = sqlite3_prepare_v2(str->tp.db,query,-1,&str->tp.stmt,0); if(retval) { printf("\nerrore database\n"); return; } // Read the number of rows fetched int cols = sqlite3_column_count(str->tp.stmt); while(1) { // fetch a row's status retval = sqlite3_step(str->tp.stmt); if(retval == SQLITE_DONE) break; else if(retval == SQLITE_ROW) { // SQLITE_ROW means fetched a row str->tp.numparoletrovate=str->tp.numparoletrovate+1; printf ("\n"); // sqlite3_column_text returns a const void* , typecast it to const char* for(int col=0 ; col<cols;col++) { const char *val = (const char*)sqlite3_column_text(str->tp.stmt,col); //printf("%s = %s\t",sqlite3_column_name(str->tp.stmt,col),val); if (col==0) { printf ("%s",val); sprintf(str->tp.vetparole[str->tp.numparoletrovate-1].parola,"%s",val); str->tp.list_item=gtk_list_item_new_with_label(val); dlist=g_list_append(dlist, str->tp.list_item); gtk_widget_show(str->tp.list_item); gtk_object_set_data(GTK_OBJECT(str->tp.list_item), list_item_data_key,s); } else { printf ("\tfr=%s",val); str->tp.vetparole[str->tp.numparoletrovate-1].frequenza=atoi(val); } } } else { // Some error encountered printf("errori query\n"); return; } } str->tp.indice=0; Display *display = XOpenDisplay(0); if(str->tp.numparoletrovate> 0) { gtk_list_append_items((GtkList*)(str->tp.gtklist), dlist); } gdk_window_process_all_updates (); XCloseDisplay(display); printf ("\n"); }
static GtkWidget * make_item(const gchar *line) { GtkWidget *item = gtk_list_item_new_with_label(line); gtk_widget_show(item); return item; }
int wxComboBox::DoInsertItems(const wxArrayStringsAdapter& items, unsigned int pos, void **clientData, wxClientDataType type) { wxCHECK_MSG( m_widget != NULL, -1, wxT("invalid combobox") ); DisableEvents(); GtkWidget *list = GTK_COMBO(m_widget)->list; GtkRcStyle *style = CreateWidgetStyle(); const unsigned int count = items.GetCount(); for( unsigned int i = 0; i < count; ++i, ++pos ) { GtkWidget * list_item = gtk_list_item_new_with_label( wxGTK_CONV( items[i] ) ); if ( pos == GetCount() ) { gtk_container_add( GTK_CONTAINER(list), list_item ); } else // insert, not append { GList *gitem_list = g_list_alloc (); gitem_list->data = list_item; gtk_list_insert_items( GTK_LIST (list), gitem_list, pos ); } if (GTK_WIDGET_REALIZED(m_widget)) { gtk_widget_realize( list_item ); gtk_widget_realize( GTK_BIN(list_item)->child ); if (style) { gtk_widget_modify_style( GTK_WIDGET( list_item ), style ); GtkBin *bin = GTK_BIN( list_item ); GtkWidget *label = GTK_WIDGET( bin->child ); gtk_widget_modify_style( label, style ); } } gtk_widget_show( list_item ); if ( m_clientDataList.GetCount() < GetCount() ) m_clientDataList.Insert( pos, NULL ); if ( m_clientObjectList.GetCount() < GetCount() ) m_clientObjectList.Insert( pos, NULL ); AssignNewItemClientData(pos, clientData, i, type); } if ( style ) gtk_rc_style_unref( style ); EnableEvents(); InvalidateBestSize(); return pos - 1; }
bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, int n, const wxString choices[], long style, const wxValidator& validator, const wxString& name ) { m_ignoreNextUpdate = false; m_needParent = true; m_acceptsFocus = true; m_prevSelection = 0; if (!PreCreation( parent, pos, size ) || !CreateBase( parent, id, pos, size, style, validator, name )) { wxFAIL_MSG( wxT("wxComboBox creation failed") ); return false; } m_widget = gtk_combo_new(); GtkCombo *combo = GTK_COMBO(m_widget); // Disable GTK's broken events ... gtk_signal_disconnect( GTK_OBJECT(combo->entry), combo->entry_change_id ); // ... and add surrogate handler. combo->entry_change_id = gtk_signal_connect (GTK_OBJECT (combo->entry), "changed", (GtkSignalFunc) gtk_dummy_callback, combo); // make it more useable gtk_combo_set_use_arrows_always( GTK_COMBO(m_widget), TRUE ); // and case-sensitive gtk_combo_set_case_sensitive( GTK_COMBO(m_widget), TRUE ); GtkWidget *list = GTK_COMBO(m_widget)->list; // gtk_list_set_selection_mode( GTK_LIST(list), GTK_SELECTION_MULTIPLE ); for (int i = 0; i < n; i++) { GtkWidget *list_item = gtk_list_item_new_with_label( wxGTK_CONV( choices[i] ) ); m_clientDataList.Append( NULL ); m_clientObjectList.Append( NULL ); gtk_container_add( GTK_CONTAINER(list), list_item ); gtk_widget_show( list_item ); } m_parent->DoAddChild( this ); m_focusWidget = combo->entry; PostCreation(size); ConnectWidget( combo->button ); // MSW's combo box shows the value and the selection is -1 gtk_entry_set_text( GTK_ENTRY(combo->entry), wxGTK_CONV(value) ); gtk_list_unselect_all( GTK_LIST(combo->list) ); if (style & wxCB_READONLY) gtk_entry_set_editable( GTK_ENTRY( combo->entry ), FALSE ); // "show" and "hide" events are generated when user click on the combobox button which popups a list // this list is the "popwin" gtk widget gtk_signal_connect( GTK_OBJECT(GTK_COMBO(combo)->popwin), "hide", GTK_SIGNAL_FUNC(gtk_popup_hide_callback), (gpointer)this ); gtk_signal_connect( GTK_OBJECT(GTK_COMBO(combo)->popwin), "show", GTK_SIGNAL_FUNC(gtk_popup_show_callback), (gpointer)this ); gtk_signal_connect_after( GTK_OBJECT(combo->entry), "changed", GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this ); gtk_signal_connect_after( GTK_OBJECT(combo->list), "select-child", GTK_SIGNAL_FUNC(gtk_combo_select_child_callback), (gpointer)this ); SetInitialSize(size); // need this too because this is a wxControlWithItems // This is required for tool bar support // wxSize setsize = GetSize(); // gtk_widget_set_usize( m_widget, setsize.x, setsize.y ); return true; }