| 143 } |
143 } |
| 144 |
144 |
| 145 static void |
145 static void |
| 146 dialog_select_account_cb(GtkWidget *chooser, PidginDiscoDialog *dialog) |
146 dialog_select_account_cb(GtkWidget *chooser, PidginDiscoDialog *dialog) |
| 147 { |
147 { |
| 148 PurpleAccount *account = pidgin_account_chooser_get_selected(chooser); |
148 PurpleAccount *account = pidgin_account_chooser_get_selected(PIDGIN_ACCOUNT_CHOOSER(chooser)); |
| 149 gboolean change = (account != dialog->account); |
149 gboolean change = (account != dialog->account); |
| 150 dialog->account = account; |
150 dialog->account = account; |
| 151 gtk_widget_set_sensitive(dialog->browse_button, account != NULL); |
151 gtk_widget_set_sensitive(dialog->browse_button, account != NULL); |
| 152 |
152 |
| 153 if (change) { |
153 if (change) { |
| 412 static void close_button_cb(GtkButton *button, PidginDiscoDialog *dialog) |
412 static void close_button_cb(GtkButton *button, PidginDiscoDialog *dialog) |
| 413 { |
413 { |
| 414 gtk_widget_destroy(GTK_WIDGET(dialog)); |
414 gtk_widget_destroy(GTK_WIDGET(dialog)); |
| 415 } |
415 } |
| 416 |
416 |
| 417 static gboolean account_filter_func(PurpleAccount *account) |
|
| 418 { |
|
| 419 return purple_strequal(purple_account_get_protocol_id(account), XMPP_PROTOCOL_ID); |
|
| 420 } |
|
| 421 |
|
| 422 static gboolean |
417 static gboolean |
| 423 disco_paint_tooltip(GtkWidget *tipwindow, cairo_t *cr, gpointer data) |
418 disco_paint_tooltip(GtkWidget *tipwindow, cairo_t *cr, gpointer data) |
| 424 { |
419 { |
| 425 PangoLayout *layout = g_object_get_data(G_OBJECT(tipwindow), "tooltip-plugin"); |
420 PangoLayout *layout = g_object_get_data(G_OBJECT(tipwindow), "tooltip-plugin"); |
| 426 GtkStyleContext *context = gtk_widget_get_style_context(tipwindow); |
421 GtkStyleContext *context = gtk_widget_get_style_context(tipwindow); |
| 518 for (node = dialogs; node; node = node->next) { |
513 for (node = dialogs; node; node = node->next) { |
| 519 PidginDiscoDialog *dialog = node->data; |
514 PidginDiscoDialog *dialog = node->data; |
| 520 PidginDiscoList *list = dialog->discolist; |
515 PidginDiscoList *list = dialog->discolist; |
| 521 |
516 |
| 522 if (list && list->pc == pc) { |
517 if (list && list->pc == pc) { |
| |
518 PurpleAccount *account = NULL; |
| |
519 |
| 523 if (list->in_progress) |
520 if (list->in_progress) |
| 524 pidgin_disco_list_set_in_progress(list, FALSE); |
521 pidgin_disco_list_set_in_progress(list, FALSE); |
| 525 |
522 |
| 526 gtk_tree_store_clear(dialog->model); |
523 gtk_tree_store_clear(dialog->model); |
| 527 |
524 |
| 528 pidgin_disco_list_unref(list); |
525 pidgin_disco_list_unref(list); |
| 529 dialog->discolist = NULL; |
526 dialog->discolist = NULL; |
| 530 |
527 |
| |
528 account = pidgin_account_chooser_get_selected( |
| |
529 PIDGIN_ACCOUNT_CHOOSER(dialog->account_chooser)); |
| |
530 |
| 531 gtk_widget_set_sensitive( |
531 gtk_widget_set_sensitive( |
| 532 dialog->browse_button, |
532 dialog->browse_button, |
| 533 pidgin_account_chooser_get_selected( |
533 account != NULL); |
| 534 dialog->account_chooser) != NULL); |
|
| 535 |
534 |
| 536 gtk_widget_set_sensitive(dialog->register_button, FALSE); |
535 gtk_widget_set_sensitive(dialog->register_button, FALSE); |
| 537 gtk_widget_set_sensitive(dialog->add_button, FALSE); |
536 gtk_widget_set_sensitive(dialog->add_button, FALSE); |
| 538 } |
537 } |
| 539 } |
538 } |
| 607 dialogs = g_list_prepend(dialogs, dialog); |
606 dialogs = g_list_prepend(dialogs, dialog); |
| 608 |
607 |
| 609 gtk_widget_init_template(GTK_WIDGET(dialog)); |
608 gtk_widget_init_template(GTK_WIDGET(dialog)); |
| 610 |
609 |
| 611 /* accounts dropdown list */ |
610 /* accounts dropdown list */ |
| 612 pidgin_account_chooser_set_filter_func( |
611 dialog->account = pidgin_account_chooser_get_selected( |
| 613 PIDGIN_ACCOUNT_CHOOSER(dialog->account_chooser), |
612 PIDGIN_ACCOUNT_CHOOSER(dialog->account_chooser)); |
| 614 account_filter_func); |
|
| 615 dialog->account = |
|
| 616 pidgin_account_chooser_get_selected(dialog->account_chooser); |
|
| 617 |
613 |
| 618 /* browse button */ |
614 /* browse button */ |
| 619 gtk_widget_set_sensitive(dialog->browse_button, dialog->account != NULL); |
615 gtk_widget_set_sensitive(dialog->browse_button, dialog->account != NULL); |
| 620 |
616 |
| 621 pidgin_tooltip_setup_for_treeview(GTK_WIDGET(dialog->tree), dialog, |
617 pidgin_tooltip_setup_for_treeview(GTK_WIDGET(dialog->tree), dialog, |