| 113 |
113 |
| 114 /* Login Options */ |
114 /* Login Options */ |
| 115 GtkWidget *login_frame; |
115 GtkWidget *login_frame; |
| 116 GtkWidget *protocol_menu; |
116 GtkWidget *protocol_menu; |
| 117 GtkWidget *password_box; |
117 GtkWidget *password_box; |
| 118 GtkWidget *screenname_entry; |
118 GtkWidget *username_entry; |
| 119 GtkWidget *password_entry; |
119 GtkWidget *password_entry; |
| 120 GtkWidget *alias_entry; |
120 GtkWidget *alias_entry; |
| 121 GtkWidget *remember_pass_check; |
121 GtkWidget *remember_pass_check; |
| 122 |
122 |
| 123 /* User Options */ |
123 /* User Options */ |
| 273 |
273 |
| 274 return FALSE; |
274 return FALSE; |
| 275 } |
275 } |
| 276 |
276 |
| 277 static void |
277 static void |
| 278 screenname_changed_cb(GtkEntry *entry, AccountPrefsDialog *dialog) |
278 username_changed_cb(GtkEntry *entry, AccountPrefsDialog *dialog) |
| 279 { |
279 { |
| 280 if (dialog->ok_button) |
280 if (dialog->ok_button) |
| 281 gtk_widget_set_sensitive(dialog->ok_button, |
281 gtk_widget_set_sensitive(dialog->ok_button, |
| 282 *gtk_entry_get_text(entry) != '\0'); |
282 *gtk_entry_get_text(entry) != '\0'); |
| 283 if (dialog->register_button) { |
283 if (dialog->register_button) { |
| 288 *gtk_entry_get_text(entry) != '\0'); |
288 *gtk_entry_get_text(entry) != '\0'); |
| 289 } |
289 } |
| 290 } |
290 } |
| 291 |
291 |
| 292 static gboolean |
292 static gboolean |
| 293 screenname_nofocus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog) |
293 username_nofocus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog) |
| 294 { |
294 { |
| 295 GdkColor color = {0, 34952, 35466, 34181}; |
295 GdkColor color = {0, 34952, 35466, 34181}; |
| 296 GHashTable *table = NULL; |
296 GHashTable *table = NULL; |
| 297 const char *label = NULL; |
297 const char *label = NULL; |
| 298 |
298 |
| 299 if(PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(dialog->prpl_info, get_account_text_table)) { |
299 if(PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(dialog->prpl_info, get_account_text_table)) { |
| 300 table = dialog->prpl_info->get_account_text_table(NULL); |
300 table = dialog->prpl_info->get_account_text_table(NULL); |
| 301 label = g_hash_table_lookup(table, "login_label"); |
301 label = g_hash_table_lookup(table, "login_label"); |
| 302 |
302 |
| 303 if (*gtk_entry_get_text(GTK_ENTRY(widget)) == '\0') { |
303 if (*gtk_entry_get_text(GTK_ENTRY(widget)) == '\0') { |
| 304 /* We have to avoid hitting the screenname_changed_cb function |
304 /* We have to avoid hitting the username_changed_cb function |
| 305 * because it enables buttons we don't want enabled yet ;) |
305 * because it enables buttons we don't want enabled yet ;) |
| 306 */ |
306 */ |
| 307 g_signal_handlers_block_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog); |
307 g_signal_handlers_block_by_func(widget, G_CALLBACK(username_changed_cb), dialog); |
| 308 gtk_entry_set_text(GTK_ENTRY(widget), label); |
308 gtk_entry_set_text(GTK_ENTRY(widget), label); |
| 309 /* Make sure we can hit it again */ |
309 /* Make sure we can hit it again */ |
| 310 g_signal_handlers_unblock_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog); |
310 g_signal_handlers_unblock_by_func(widget, G_CALLBACK(username_changed_cb), dialog); |
| 311 gtk_widget_modify_text(widget, GTK_STATE_NORMAL, &color); |
311 gtk_widget_modify_text(widget, GTK_STATE_NORMAL, &color); |
| 312 } |
312 } |
| 313 |
313 |
| 314 g_hash_table_destroy(table); |
314 g_hash_table_destroy(table); |
| 315 } |
315 } |
| 391 if (gc != NULL && dialog->account != purple_connection_get_account(gc)) |
391 if (gc != NULL && dialog->account != purple_connection_get_account(gc)) |
| 392 return; |
392 return; |
| 393 |
393 |
| 394 set = !(purple_account_is_connected(dialog->account) || purple_account_is_connecting(dialog->account)); |
394 set = !(purple_account_is_connected(dialog->account) || purple_account_is_connecting(dialog->account)); |
| 395 gtk_widget_set_sensitive(dialog->protocol_menu, set); |
395 gtk_widget_set_sensitive(dialog->protocol_menu, set); |
| 396 gtk_widget_set_sensitive(dialog->screenname_entry, set); |
396 gtk_widget_set_sensitive(dialog->username_entry, set); |
| 397 |
397 |
| 398 for (l = dialog->user_split_entries ; l != NULL ; l = l->next) |
398 for (l = dialog->user_split_entries ; l != NULL ; l = l->next) |
| 399 gtk_widget_set_sensitive((GtkWidget *)l->data, set); |
399 gtk_widget_set_sensitive((GtkWidget *)l->data, set); |
| 400 } |
400 } |
| 401 |
401 |
| 447 hbox = add_pref_box(dialog, vbox, _("Pro_tocol:"), dialog->protocol_menu); |
447 hbox = add_pref_box(dialog, vbox, _("Pro_tocol:"), dialog->protocol_menu); |
| 448 g_object_set_data(G_OBJECT(dialog->protocol_menu), "container", hbox); |
448 g_object_set_data(G_OBJECT(dialog->protocol_menu), "container", hbox); |
| 449 |
449 |
| 450 gtk_widget_unref(dialog->protocol_menu); |
450 gtk_widget_unref(dialog->protocol_menu); |
| 451 |
451 |
| 452 /* Screen name */ |
452 /* Username */ |
| 453 dialog->screenname_entry = gtk_entry_new(); |
453 dialog->username_entry = gtk_entry_new(); |
| 454 #if GTK_CHECK_VERSION(2,10,0) |
454 #if GTK_CHECK_VERSION(2,10,0) |
| 455 g_object_set(G_OBJECT(dialog->screenname_entry), "truncate-multiline", TRUE, NULL); |
455 g_object_set(G_OBJECT(dialog->username_entry), "truncate-multiline", TRUE, NULL); |
| 456 #endif |
456 #endif |
| 457 |
457 |
| 458 add_pref_box(dialog, vbox, _("_Username:"), dialog->screenname_entry); |
458 add_pref_box(dialog, vbox, _("_Username:"), dialog->username_entry); |
| 459 |
459 |
| 460 if (dialog->account != NULL) |
460 if (dialog->account != NULL) |
| 461 username = g_strdup(purple_account_get_username(dialog->account)); |
461 username = g_strdup(purple_account_get_username(dialog->account)); |
| 462 |
462 |
| 463 if (!username && dialog->prpl_info |
463 if (!username && dialog->prpl_info |
| 466 GHashTable *table; |
466 GHashTable *table; |
| 467 const char *label; |
467 const char *label; |
| 468 table = dialog->prpl_info->get_account_text_table(NULL); |
468 table = dialog->prpl_info->get_account_text_table(NULL); |
| 469 label = g_hash_table_lookup(table, "login_label"); |
469 label = g_hash_table_lookup(table, "login_label"); |
| 470 |
470 |
| 471 gtk_entry_set_text(GTK_ENTRY(dialog->screenname_entry), label); |
471 gtk_entry_set_text(GTK_ENTRY(dialog->username_entry), label); |
| 472 g_signal_connect(G_OBJECT(dialog->screenname_entry), "focus-in-event", |
472 g_signal_connect(G_OBJECT(dialog->username_entry), "focus-in-event", |
| 473 G_CALLBACK(screenname_focus_cb), dialog); |
473 G_CALLBACK(username_focus_cb), dialog); |
| 474 g_signal_connect(G_OBJECT(dialog->screenname_entry), "focus-out-event", |
474 g_signal_connect(G_OBJECT(dialog->username_entry), "focus-out-event", |
| 475 G_CALLBACK(screenname_nofocus_cb), dialog); |
475 G_CALLBACK(username_nofocus_cb), dialog); |
| 476 gtk_widget_modify_text(dialog->screenname_entry, GTK_STATE_NORMAL, &color); |
476 gtk_widget_modify_text(dialog->username_entry, GTK_STATE_NORMAL, &color); |
| 477 g_hash_table_destroy(table); |
477 g_hash_table_destroy(table); |
| 478 } |
478 } |
| 479 |
479 |
| 480 g_signal_connect(G_OBJECT(dialog->screenname_entry), "changed", |
480 g_signal_connect(G_OBJECT(dialog->username_entry), "changed", |
| 481 G_CALLBACK(screenname_changed_cb), dialog); |
481 G_CALLBACK(username_changed_cb), dialog); |
| 482 |
482 |
| 483 /* Do the user split thang */ |
483 /* Do the user split thang */ |
| 484 if (dialog->prpl_info == NULL) |
484 if (dialog->prpl_info == NULL) |
| 485 user_splits = NULL; |
485 user_splits = NULL; |
| 486 else |
486 else |
| 588 |
588 |
| 589 gtk_widget_hide(dialog->password_box); |
589 gtk_widget_hide(dialog->password_box); |
| 590 gtk_widget_hide(dialog->remember_pass_check); |
590 gtk_widget_hide(dialog->remember_pass_check); |
| 591 } |
591 } |
| 592 |
592 |
| 593 /* Do not let the user change the protocol/screenname while connected. */ |
593 /* Do not let the user change the protocol/username while connected. */ |
| 594 update_editable(NULL, dialog); |
594 update_editable(NULL, dialog); |
| 595 purple_signal_connect(purple_connections_get_handle(), "signing-on", dialog, |
595 purple_signal_connect(purple_connections_get_handle(), "signing-on", dialog, |
| 596 G_CALLBACK(update_editable), dialog); |
596 G_CALLBACK(update_editable), dialog); |
| 597 purple_signal_connect(purple_connections_get_handle(), "signed-off", dialog, |
597 purple_signal_connect(purple_connections_get_handle(), "signed-off", dialog, |
| 598 G_CALLBACK(update_editable), dialog); |
598 G_CALLBACK(update_editable), dialog); |
| 1191 char *tmp; |
1191 char *tmp; |
| 1192 gboolean new_acct = FALSE, icon_change = FALSE; |
1192 gboolean new_acct = FALSE, icon_change = FALSE; |
| 1193 PurpleAccount *account; |
1193 PurpleAccount *account; |
| 1194 |
1194 |
| 1195 /* Build the username string. */ |
1195 /* Build the username string. */ |
| 1196 username = g_strdup(gtk_entry_get_text(GTK_ENTRY(dialog->screenname_entry))); |
1196 username = g_strdup(gtk_entry_get_text(GTK_ENTRY(dialog->username_entry))); |
| 1197 |
1197 |
| 1198 if (dialog->prpl_info != NULL) |
1198 if (dialog->prpl_info != NULL) |
| 1199 { |
1199 { |
| 1200 for (l = dialog->prpl_info->user_splits, |
1200 for (l = dialog->prpl_info->user_splits, |
| 1201 l2 = dialog->user_split_entries; |
1201 l2 = dialog->user_split_entries; |
| 1931 renderer, "active", COLUMN_ENABLED, NULL); |
1931 renderer, "active", COLUMN_ENABLED, NULL); |
| 1932 |
1932 |
| 1933 gtk_tree_view_column_set_resizable(column, FALSE); |
1933 gtk_tree_view_column_set_resizable(column, FALSE); |
| 1934 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); |
1934 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); |
| 1935 |
1935 |
| 1936 /* Screen Name column */ |
1936 /* Username column */ |
| 1937 column = gtk_tree_view_column_new(); |
1937 column = gtk_tree_view_column_new(); |
| 1938 gtk_tree_view_column_set_title(column, _("Username")); |
1938 gtk_tree_view_column_set_title(column, _("Username")); |
| 1939 gtk_tree_view_column_set_resizable(column, TRUE); |
1939 gtk_tree_view_column_set_resizable(column, TRUE); |
| 1940 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); |
1940 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); |
| 1941 |
1941 |
| 1943 renderer = gtk_cell_renderer_pixbuf_new(); |
1943 renderer = gtk_cell_renderer_pixbuf_new(); |
| 1944 gtk_tree_view_column_pack_start(column, renderer, FALSE); |
1944 gtk_tree_view_column_pack_start(column, renderer, FALSE); |
| 1945 gtk_tree_view_column_add_attribute(column, renderer, |
1945 gtk_tree_view_column_add_attribute(column, renderer, |
| 1946 "pixbuf", COLUMN_BUDDYICON); |
1946 "pixbuf", COLUMN_BUDDYICON); |
| 1947 |
1947 |
| 1948 /* Screen Name */ |
1948 /* Username */ |
| 1949 renderer = gtk_cell_renderer_text_new(); |
1949 renderer = gtk_cell_renderer_text_new(); |
| 1950 gtk_tree_view_column_pack_start(column, renderer, TRUE); |
1950 gtk_tree_view_column_pack_start(column, renderer, TRUE); |
| 1951 gtk_tree_view_column_add_attribute(column, renderer, |
1951 gtk_tree_view_column_add_attribute(column, renderer, |
| 1952 "text", COLUMN_SCREENNAME); |
1952 "text", COLUMN_USERNAME); |
| 1953 dialog->screenname_col = column; |
1953 dialog->username_col = column; |
| 1954 |
1954 |
| 1955 |
1955 |
| 1956 /* Protocol name */ |
1956 /* Protocol name */ |
| 1957 column = gtk_tree_view_column_new(); |
1957 column = gtk_tree_view_column_new(); |
| 1958 gtk_tree_view_column_set_title(column, _("Protocol")); |
1958 gtk_tree_view_column_set_title(column, _("Protocol")); |
| 2014 } |
2014 } |
| 2015 |
2015 |
| 2016 gtk_list_store_set(store, iter, |
2016 gtk_list_store_set(store, iter, |
| 2017 COLUMN_ICON, pixbuf, |
2017 COLUMN_ICON, pixbuf, |
| 2018 COLUMN_BUDDYICON, buddyicon, |
2018 COLUMN_BUDDYICON, buddyicon, |
| 2019 COLUMN_SCREENNAME, purple_account_get_username(account), |
2019 COLUMN_USERNAME, purple_account_get_username(account), |
| 2020 COLUMN_ENABLED, purple_account_get_enabled(account, PIDGIN_UI), |
2020 COLUMN_ENABLED, purple_account_get_enabled(account, PIDGIN_UI), |
| 2021 COLUMN_PROTOCOL, purple_account_get_protocol_name(account), |
2021 COLUMN_PROTOCOL, purple_account_get_protocol_name(account), |
| 2022 COLUMN_DATA, account, |
2022 COLUMN_DATA, account, |
| 2023 -1); |
2023 -1); |
| 2024 |
2024 |
| 2188 |
2188 |
| 2189 /* Create the list model. */ |
2189 /* Create the list model. */ |
| 2190 dialog->model = gtk_list_store_new(NUM_COLUMNS, |
2190 dialog->model = gtk_list_store_new(NUM_COLUMNS, |
| 2191 GDK_TYPE_PIXBUF, /* COLUMN_ICON */ |
2191 GDK_TYPE_PIXBUF, /* COLUMN_ICON */ |
| 2192 GDK_TYPE_PIXBUF, /* COLUMN_BUDDYICON */ |
2192 GDK_TYPE_PIXBUF, /* COLUMN_BUDDYICON */ |
| 2193 G_TYPE_STRING, /* COLUMN_SCREENNAME */ |
2193 G_TYPE_STRING, /* COLUMN_USERNAME */ |
| 2194 G_TYPE_BOOLEAN, /* COLUMN_ENABLED */ |
2194 G_TYPE_BOOLEAN, /* COLUMN_ENABLED */ |
| 2195 G_TYPE_STRING, /* COLUMN_PROTOCOL */ |
2195 G_TYPE_STRING, /* COLUMN_PROTOCOL */ |
| 2196 G_TYPE_POINTER /* COLUMN_DATA */ |
2196 G_TYPE_POINTER /* COLUMN_DATA */ |
| 2197 ); |
2197 ); |
| 2198 |
2198 |