# HG changeset patch # User Christian Hammond # Date 1054635329 0 # Node ID cee14870644ce75c1b521360779bf82304e5d341 # Parent 05858c215226374241b698cfe6cd945b9f972175 [gaim-migrate @ 6124] Added some niceties, like the OK, Delete, and Modify buttons only being clickable when something is selected or entered or whatever. Also, some bug fixes. I had too many sanity checks. Some I did not want. committer: Tailor Script diff -r 05858c215226 -r cee14870644c src/account.c --- a/src/account.c Tue Jun 03 09:39:17 2003 +0000 +++ b/src/account.c Tue Jun 03 10:15:29 2003 +0000 @@ -179,7 +179,6 @@ gaim_account_set_username(GaimAccount *account, const char *username) { g_return_if_fail(account != NULL); - g_return_if_fail(username != NULL); if (account->username != NULL) g_free(account->username); @@ -193,7 +192,6 @@ gaim_account_set_password(GaimAccount *account, const char *password) { g_return_if_fail(account != NULL); - g_return_if_fail(password != NULL); if (account->password != NULL) g_free(account->password); @@ -207,7 +205,6 @@ gaim_account_set_alias(GaimAccount *account, const char *alias) { g_return_if_fail(account != NULL); - g_return_if_fail(alias != NULL); if (account->alias != NULL) g_free(account->alias); @@ -221,7 +218,6 @@ gaim_account_set_user_info(GaimAccount *account, const char *user_info) { g_return_if_fail(account != NULL); - g_return_if_fail(user_info != NULL); if (account->user_info != NULL) g_free(account->user_info); @@ -235,7 +231,6 @@ gaim_account_set_buddy_icon(GaimAccount *account, const char *icon) { g_return_if_fail(account != NULL); - g_return_if_fail(icon != NULL); if (account->buddy_icon != NULL) g_free(account->buddy_icon); diff -r 05858c215226 -r cee14870644c src/gtkaccount.c --- a/src/gtkaccount.c Tue Jun 03 09:39:17 2003 +0000 +++ b/src/gtkaccount.c Tue Jun 03 10:15:29 2003 +0000 @@ -62,6 +62,9 @@ GtkWidget *window; GtkWidget *treeview; + GtkWidget *modify_button; + GtkWidget *delete_button; + GtkListStore *model; GtkTreeIter drag_iter; @@ -90,6 +93,7 @@ GtkWidget *top_vbox; GtkWidget *bottom_vbox; + GtkWidget *ok_button; /* Login Options */ GtkWidget *login_frame; @@ -185,6 +189,16 @@ } static void +__screenname_changed_cb(GtkEntry *entry, AccountPrefsDialog *dialog) +{ + if (dialog->ok_button == NULL) + return; + + gtk_widget_set_sensitive(dialog->ok_button, + *gtk_entry_get_text(entry) != '\0'); +} + +static void __add_login_options(AccountPrefsDialog *dialog, GtkWidget *parent) { GtkWidget *frame; @@ -222,6 +236,9 @@ __add_pref_box(dialog, vbox, _("Screenname:"), dialog->screenname_entry); + g_signal_connect(G_OBJECT(dialog->screenname_entry), "changed", + G_CALLBACK(__screenname_changed_cb), dialog); + /* Do the user split thang */ if (dialog->plugin == NULL) /* Yeah right. */ user_splits = NULL; @@ -629,6 +646,21 @@ } static void +__port_popup_cb(GtkWidget *w, GtkMenu *menu, gpointer data) +{ + GtkWidget *item; + + item = gtk_menu_item_new_with_label( + _("you can see the butterflies mating")); + gtk_widget_show(item); + gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), item); + + item = gtk_menu_item_new_with_label(_("If you look real closely")); + gtk_widget_show(item); + gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), item); +} + +static void __add_proxy_options(AccountPrefsDialog *dialog, GtkWidget *parent) { GaimProxyInfo *proxy_info; @@ -670,8 +702,12 @@ dialog->proxy_port_entry = gtk_entry_new(); __add_pref_box(dialog, vbox2, _("_Port:"), dialog->proxy_port_entry); + g_signal_connect(G_OBJECT(dialog->proxy_port_entry), "populate-popup", + G_CALLBACK(__port_popup_cb), NULL); + /* User */ dialog->proxy_user_entry = gtk_entry_new(); + __add_pref_box(dialog, vbox2, _("_Username:"), dialog->proxy_user_entry); /* Password */ @@ -926,6 +962,8 @@ gtk_widget_destroy(dialog->window); __account_win_destroy_cb(NULL, NULL, dialog); + + gaim_accounts_sync(); } static void @@ -1027,8 +1065,14 @@ /* OK button */ button = gtk_button_new_from_stock(GTK_STOCK_OK); gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); + + if (dialog->account == NULL) + gtk_widget_set_sensitive(button, FALSE); + gtk_widget_show(button); + dialog->ok_button = button; + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(__ok_account_prefs_cb), dialog); @@ -1433,11 +1477,19 @@ __add_account(dialog, (GaimAccount *)l->data); } +static void +__account_selected_cb(GtkTreeSelection *sel, AccountsDialog *dialog) +{ + gtk_widget_set_sensitive(dialog->modify_button, TRUE); + gtk_widget_set_sensitive(dialog->delete_button, TRUE); +} + static GtkWidget * __create_accounts_list(AccountsDialog *dialog) { GtkWidget *sw; GtkWidget *treeview; + GtkTreeSelection *sel; GtkTargetEntry gte[] = {{"GAIM_ACCOUNT", GTK_TARGET_SAME_APP, 0}}; /* Create the scrolled window. */ @@ -1470,6 +1522,10 @@ __populate_accounts_list(dialog); + sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); + g_signal_connect(G_OBJECT(sel), "changed", + G_CALLBACK(__account_selected_cb), dialog); + /* Setup DND. I wanna be an orc! */ gtk_tree_view_enable_model_drag_source( GTK_TREE_VIEW(treeview), GDK_BUTTON1_MASK, gte, @@ -1552,7 +1608,9 @@ /* Modify button */ button = gtk_button_new_from_stock(GAIM_STOCK_MODIFY); + dialog->modify_button = button; gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); + gtk_widget_set_sensitive(button, FALSE); gtk_widget_show(button); g_signal_connect(G_OBJECT(button), "clicked", @@ -1560,7 +1618,9 @@ /* Delete button */ button = gtk_button_new_from_stock(GTK_STOCK_DELETE); + dialog->delete_button = button; gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); + gtk_widget_set_sensitive(button, FALSE); gtk_widget_show(button); g_signal_connect(G_OBJECT(button), "clicked",