src/gtkrequest.c

changeset 5832
f81c9ce730fa
parent 5817
d085bb1af93c
child 5834
c7945c10cff3
equal deleted inserted replaced
5831:86cd3b478632 5832:f81c9ce730fa
91 91
92 gaim_request_close(GAIM_REQUEST_INPUT, data); 92 gaim_request_close(GAIM_REQUEST_INPUT, data);
93 } 93 }
94 94
95 static void 95 static void
96 field_string_focus_out_cb(GtkEntry *entry, GaimRequestField *field)
97 {
98 gaim_request_field_string_set_value(field,
99 gtk_entry_get_text(entry));
100 }
101
102 static void
103 field_int_focus_out_cb(GtkEntry *entry, GaimRequestField *field)
104 {
105 gaim_request_field_int_set_value(field,
106 atoi(gtk_entry_get_text(entry)));
107 }
108
109 static void
110 field_bool_cb(GtkToggleButton *button, GaimRequestField *field)
111 {
112 gaim_request_field_bool_set_value(field,
113 gtk_toggle_button_get_active(button));
114 }
115
116 static void
117 field_choice_menu_cb(GtkOptionMenu *menu, GaimRequestField *field)
118 {
119 gaim_request_field_choice_set_value(field,
120 gtk_option_menu_get_history(menu));
121 }
122
123 static void
124 field_choice_option_cb(GtkRadioButton *button, GaimRequestField *field)
125 {
126 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
127 gaim_request_field_choice_set_value(field,
128 g_slist_index(gtk_radio_button_get_group(button), button));
129 }
130
131 static void
96 multifield_ok_cb(GtkWidget *button, GaimGtkRequestData *data) 132 multifield_ok_cb(GtkWidget *button, GaimGtkRequestData *data)
97 { 133 {
98 if (data->cbs[0] != NULL) 134 if (data->cbs[0] != NULL)
99 ((GaimRequestFieldsCb)data->cbs[0])(data->user_data, 135 ((GaimRequestFieldsCb)data->cbs[0])(data->user_data,
100 data->u.multifield.fields); 136 data->u.multifield.fields);
487 523
488 value = gaim_request_field_string_get_default_value(field); 524 value = gaim_request_field_string_get_default_value(field);
489 525
490 if (value != NULL) 526 if (value != NULL)
491 gtk_entry_set_text(GTK_ENTRY(widget), value); 527 gtk_entry_set_text(GTK_ENTRY(widget), value);
528
529 g_signal_connect(G_OBJECT(widget), "focus-out-event",
530 G_CALLBACK(field_string_focus_out_cb),
531 field);
492 } 532 }
493 else if (type == GAIM_REQUEST_FIELD_INTEGER) { 533 else if (type == GAIM_REQUEST_FIELD_INTEGER) {
494 int value; 534 int value;
495 535
496 widget = gtk_entry_new(); 536 widget = gtk_entry_new();
502 542
503 g_snprintf(buf, sizeof(buf), "%d", value); 543 g_snprintf(buf, sizeof(buf), "%d", value);
504 544
505 gtk_entry_set_text(GTK_ENTRY(widget), buf); 545 gtk_entry_set_text(GTK_ENTRY(widget), buf);
506 } 546 }
547
548 g_signal_connect(G_OBJECT(widget), "focus-out-event",
549 G_CALLBACK(field_int_focus_out_cb),
550 field);
507 } 551 }
508 else if (type == GAIM_REQUEST_FIELD_BOOLEAN) { 552 else if (type == GAIM_REQUEST_FIELD_BOOLEAN) {
509 widget = gtk_check_button_new_with_label( 553 widget = gtk_check_button_new_with_label(
510 gaim_request_field_get_label(field)); 554 gaim_request_field_get_label(field));
511 555
512 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), 556 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
513 gaim_request_field_bool_get_default_value(field)); 557 gaim_request_field_bool_get_default_value(field));
558
559 g_signal_connect(G_OBJECT(widget), "toggled",
560 G_CALLBACK(field_bool_cb), field);
514 } 561 }
515 else if (type == GAIM_REQUEST_FIELD_CHOICE) { 562 else if (type == GAIM_REQUEST_FIELD_CHOICE) {
516 GList *labels; 563 GList *labels;
517 GList *l; 564 GList *l;
518 565
533 580
534 item = gtk_menu_item_new_with_label(text); 581 item = gtk_menu_item_new_with_label(text);
535 582
536 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); 583 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
537 } 584 }
585
586 g_signal_connect(G_OBJECT(widget), "changed",
587 G_CALLBACK(field_choice_menu_cb),
588 field);
538 } 589 }
539 else { 590 else {
540 GtkWidget *box; 591 GtkWidget *box;
541 GtkWidget *first_radio = NULL; 592 GtkWidget *first_radio = NULL;
542 GtkWidget *radio; 593 GtkWidget *radio;
559 first_radio = radio; 610 first_radio = radio;
560 611
561 gtk_box_pack_start(GTK_BOX(box), radio, 612 gtk_box_pack_start(GTK_BOX(box), radio,
562 TRUE, TRUE, 0); 613 TRUE, TRUE, 0);
563 gtk_widget_show(radio); 614 gtk_widget_show(radio);
615
616 g_signal_connect(G_OBJECT(widget), "toggled",
617 G_CALLBACK(field_choice_option_cb),
618 field);
564 } 619 }
565 } 620 }
566 } 621 }
567 622
568 if (type != GAIM_REQUEST_FIELD_BOOLEAN) { 623 if (type != GAIM_REQUEST_FIELD_BOOLEAN) {

mercurial