# HG changeset patch # User Christian Hammond # Date 1086495693 0 # Node ID 5b35a6b96726ebba445ceb050de0f20583886b98 # Parent 6478190b36a9a5b58df9c9f6cd908cf7cfeedfcf [gaim-migrate @ 10000] Buddy pounce defaults are now more sane, and apply to the state the buddy is currently in. For example, if the buddy is idle, set "Return from idle" by default. The action is now set to "Popup notification" by default, as well. Also, cleaned up the code a little bit. committer: Tailor Script diff -r 6478190b36a9 -r 5b35a6b96726 src/gtkpounce.c --- a/src/gtkpounce.c Sun Jun 06 04:15:32 2004 +0000 +++ b/src/gtkpounce.c Sun Jun 06 04:21:33 2004 +0000 @@ -151,15 +151,15 @@ g_hash_table_insert(args, "filesel", filesel); g_hash_table_insert(args, "entry", entry); - g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button), - "clicked", - G_CALLBACK(pounce_update_entry_fields), args); - g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(filesel)->cancel_button), - "clicked", - G_CALLBACK(g_hash_table_destroy), args); - g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(filesel)->cancel_button), - "clicked", - G_CALLBACK(gtk_widget_destroy), filesel); + g_signal_connect( + GTK_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button), "clicked", + G_CALLBACK(pounce_update_entry_fields), args); + g_signal_connect_swapped( + G_OBJECT(GTK_FILE_SELECTION(filesel)->cancel_button), "clicked", + G_CALLBACK(g_hash_table_destroy), args); + g_signal_connect_swapped( + G_OBJECT(GTK_FILE_SELECTION(filesel)->cancel_button), "clicked", + G_CALLBACK(gtk_widget_destroy), filesel); gtk_widget_show(filesel); } @@ -228,7 +228,8 @@ if (*command == '\0') command = NULL; if (*sound == '\0') sound = NULL; - if (dialog->pounce == NULL) { + if (dialog->pounce == NULL) + { dialog->pounce = gaim_pounce_new(GAIM_GTK_UI, dialog->account, name, events); } @@ -289,7 +290,7 @@ return; gtk_widget_set_sensitive(dialog->save_button, - *gtk_entry_get_text(entry) != '\0'); + *gtk_entry_get_text(entry) != '\0'); } static void @@ -530,18 +531,23 @@ gtk_table_set_col_spacings(GTK_TABLE(table), 12); gtk_widget_show(table); - dialog->open_win = gtk_check_button_new_with_mnemonic(_("Op_en an IM window")); - dialog->popup = gtk_check_button_new_with_mnemonic(_("_Popup notification")); - dialog->send_msg = gtk_check_button_new_with_mnemonic(_("Send a _message")); - dialog->exec_cmd = gtk_check_button_new_with_mnemonic(_("E_xecute a command")); - dialog->play_sound = gtk_check_button_new_with_mnemonic(_("P_lay a sound")); + dialog->open_win + = gtk_check_button_new_with_mnemonic(_("Op_en an IM window")); + dialog->popup + = gtk_check_button_new_with_mnemonic(_("_Popup notification")); + dialog->send_msg + = gtk_check_button_new_with_mnemonic(_("Send a _message")); + dialog->exec_cmd + = gtk_check_button_new_with_mnemonic(_("E_xecute a command")); + dialog->play_sound + = gtk_check_button_new_with_mnemonic(_("P_lay a sound")); - dialog->send_msg_entry = gtk_entry_new(); - dialog->exec_cmd_entry = gtk_entry_new(); - dialog->exec_cmd_browse = gtk_button_new_with_mnemonic(_("B_rowse...")); - dialog->play_sound_entry = gtk_entry_new(); + dialog->send_msg_entry = gtk_entry_new(); + dialog->exec_cmd_entry = gtk_entry_new(); + dialog->exec_cmd_browse = gtk_button_new_with_mnemonic(_("B_rowse...")); + dialog->play_sound_entry = gtk_entry_new(); dialog->play_sound_browse = gtk_button_new_with_mnemonic(_("Bro_wse...")); - dialog->play_sound_test = gtk_button_new_with_mnemonic(_("Pre_view")); + dialog->play_sound_test = gtk_button_new_with_mnemonic(_("Pre_view")); gtk_widget_set_sensitive(dialog->send_msg_entry, FALSE); gtk_widget_set_sensitive(dialog->exec_cmd_entry, FALSE); @@ -687,7 +693,8 @@ G_CALLBACK(pounce_dnd_recv), dialog); /* Set the values of stuff. */ - if (cur_pounce != NULL) { + if (cur_pounce != NULL) + { GaimPounceEvent events = gaim_pounce_get_events(cur_pounce); const char *value; @@ -726,28 +733,75 @@ if ((value = gaim_pounce_action_get_attribute(cur_pounce, "send-message", - "message")) != NULL) { - + "message")) != NULL) + { gtk_entry_set_text(GTK_ENTRY(dialog->send_msg_entry), value); } if ((value = gaim_pounce_action_get_attribute(cur_pounce, "execute-command", - "command")) != NULL) { - + "command")) != NULL) + { gtk_entry_set_text(GTK_ENTRY(dialog->exec_cmd_entry), value); } if ((value = gaim_pounce_action_get_attribute(cur_pounce, "play-sound", - "filename")) != NULL) { + "filename")) != NULL) + { gtk_entry_set_text(GTK_ENTRY(dialog->play_sound_entry), value); } } - else { + else + { + GaimBuddy *buddy = NULL; + + if (name != NULL) + buddy = gaim_find_buddy(account, name); + /* Set some defaults */ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->send_msg), TRUE); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->signon), TRUE); + if (buddy == NULL) + { + gtk_toggle_button_set_active( + GTK_TOGGLE_BUTTON(dialog->signon), TRUE); + } + else + { + if (!GAIM_BUDDY_IS_ONLINE(buddy)) + { + gtk_toggle_button_set_active( + GTK_TOGGLE_BUTTON(dialog->signon), TRUE); + } + else + { + gboolean default_set = FALSE; + + if (buddy->idle) + { + gtk_toggle_button_set_active( + GTK_TOGGLE_BUTTON(dialog->idle_return), TRUE); + + default_set = TRUE; + } + + if (buddy->uc & UC_UNAVAILABLE) + { + gtk_toggle_button_set_active( + GTK_TOGGLE_BUTTON(dialog->away_return), TRUE); + + default_set = TRUE; + } + + if (!default_set) + { + gtk_toggle_button_set_active( + GTK_TOGGLE_BUTTON(dialog->signon), TRUE); + } + } + } + + gtk_toggle_button_set_active( + GTK_TOGGLE_BUTTON(dialog->popup), TRUE); } gtk_widget_show_all(vbox2); @@ -786,7 +840,8 @@ gboolean has_items = FALSE; GList *bp; - for (bp = gaim_pounces_get_all(); bp != NULL; bp = bp->next) { + for (bp = gaim_pounces_get_all(); bp != NULL; bp = bp->next) + { pounce = (GaimPounce *)bp->data; buddy = gaim_pounce_get_pouncee(pounce); @@ -801,9 +856,10 @@ /* Create a pixmap for the protocol icon. */ pixbuf = create_prpl_icon(gaim_pounce_get_pouncer(pounce)); - if(pixbuf) { + if (pixbuf != NULL) + { scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, - GDK_INTERP_BILINEAR); + GDK_INTERP_BILINEAR); /* Now convert it to GtkImage */ image = gtk_image_new_from_pixbuf(scale); @@ -883,7 +939,7 @@ const char *pouncee; const char *alias; const char *proto_id; - + pouncee = gaim_pounce_get_pouncee(pounce); account = gaim_pounce_get_pouncer(pounce); @@ -891,51 +947,67 @@ alias = gaim_get_buddy_alias(buddy); - /*find the protocol id for the window title and/or message*/ + /* Find the protocol id for the window title and/or message */ proto = gaim_find_prpl(gaim_account_get_protocol_id(account)); proto_id = proto->info->name; - if (gaim_pounce_action_is_enabled(pounce, "open-window")) { + if (gaim_pounce_action_is_enabled(pounce, "open-window")) + { conv = gaim_find_conversation_with_account(pouncee, account); if (conv == NULL) conv = gaim_conversation_new(GAIM_CONV_IM, account, pouncee); } - if (gaim_pounce_action_is_enabled(pounce, "popup-notify")) { + if (gaim_pounce_action_is_enabled(pounce, "popup-notify")) + { char tmp[1024]; + const char *name_shown; - /*Here we place the protocol name in the pounce dialog to lessen confusion about what - protocol a pounce is for*/ + /* + * Here we place the protocol name in the pounce dialog to lessen + * confusion about what protocol a pounce is for. + */ g_snprintf(tmp, sizeof(tmp), - (events & GAIM_POUNCE_TYPING) ? _("%s has started typing to you (%s)") : - (events & GAIM_POUNCE_SIGNON) ? _("%s has signed on (%s)") : - (events & GAIM_POUNCE_IDLE_RETURN) ? _("%s has returned from being idle (%s)") : - (events & GAIM_POUNCE_AWAY_RETURN) ? _("%s has returned from being away (%s)") : - (events & GAIM_POUNCE_TYPING_STOPPED) ? _("%s has stopped typing to you %s") : - (events & GAIM_POUNCE_SIGNOFF) ? _("%s has signed off (%s)") : - (events & GAIM_POUNCE_IDLE) ? _("%s has become idle (%s)") : - (events & GAIM_POUNCE_AWAY) ? _("%s has gone away. (%s)") : + (events & GAIM_POUNCE_TYPING) ? + _("%s has started typing to you (%s)") : + (events & GAIM_POUNCE_SIGNON) ? + _("%s has signed on (%s)") : + (events & GAIM_POUNCE_IDLE_RETURN) ? + _("%s has returned from being idle (%s)") : + (events & GAIM_POUNCE_AWAY_RETURN) ? + _("%s has returned from being away (%s)") : + (events & GAIM_POUNCE_TYPING_STOPPED) ? + _("%s has stopped typing to you (%s)") : + (events & GAIM_POUNCE_SIGNOFF) ? + _("%s has signed off (%s)") : + (events & GAIM_POUNCE_IDLE) ? + _("%s has become idle (%s)") : + (events & GAIM_POUNCE_AWAY) ? + _("%s has gone away. (%s)") : _("Unknown pounce event. Please report this!"), alias,proto_id); - /*Ok here is where I change the second argument, title, - from NULL to the account name if that's all we have - or the account alias if we have that*/ - if(gaim_account_get_alias(account)) { - gaim_notify_info(NULL, gaim_account_get_alias(account), tmp, (char*)gaim_date_full()); - } else { - gaim_notify_info(NULL, gaim_account_get_username(account), tmp, (char*)gaim_date_full()); - } + /* + * Ok here is where I change the second argument, title, from + * NULL to the account name if that's all we have or the account + * alias if we have that + */ + if ((name_shown = gaim_account_get_alias(account)) == NULL) + name_shown = gaim_account_get_username(account); + + gaim_notify_info(NULL, name_shown, tmp, gaim_date_full()); } - if (gaim_pounce_action_is_enabled(pounce, "send-message")) { + if (gaim_pounce_action_is_enabled(pounce, "send-message")) + { const char *message; message = gaim_pounce_action_get_attribute(pounce, "send-message", "message"); - if (message != NULL) { + if (message != NULL) + { conv = gaim_find_conversation_with_account(pouncee, account); if (conv == NULL) @@ -948,13 +1020,15 @@ } } - if (gaim_pounce_action_is_enabled(pounce, "execute-command")) { + if (gaim_pounce_action_is_enabled(pounce, "execute-command")) + { const char *command; command = gaim_pounce_action_get_attribute(pounce, "execute-command", "command"); - if (command != NULL) { + if (command != NULL) + { #ifndef _WIN32 int pid = fork(); @@ -970,26 +1044,28 @@ _exit(0); } -#else +#else /* !_WIN32 */ STARTUPINFO StartInfo; PROCESS_INFORMATION ProcInfo; memset(&ProcInfo, 0, sizeof(ProcInfo)); memset(&StartInfo, 0 , sizeof(StartInfo)); StartInfo.cb = sizeof(StartInfo); - CreateProcess(NULL, (char *)command, NULL, NULL, 0, 0, NULL, NULL, &StartInfo, &ProcInfo); + CreateProcess(NULL, (char *)command, NULL, NULL, 0, 0, NULL, + NULL, &StartInfo, &ProcInfo); gaim_debug_info("pounce", "Pounce execute command called for: %s\n", command); -#endif +#endif /* !_WIN32 */ } } - if (gaim_pounce_action_is_enabled(pounce, "play-sound")) { + if (gaim_pounce_action_is_enabled(pounce, "play-sound")) + { const char *sound; - sound = gaim_pounce_action_get_attribute(pounce, "play-sound", - "filename"); + sound = gaim_pounce_action_get_attribute(pounce, + "play-sound", "filename"); if (sound != NULL) gaim_sound_play_file(sound);