Mercurial > pidgin-twitter
changeset 240:405f8b880142
restored jisko support.
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Tue, 07 Oct 2008 16:44:02 +0900 |
parents | e3a24c98772d |
children | 1a4d37f15e9c |
files | pidgin-twitter.c pidgin-twitter.h prefs.ui |
diffstat | 3 files changed, 227 insertions(+), 36 deletions(-) [+] |
line wrap: on
line diff
--- a/pidgin-twitter.c Tue Oct 07 14:51:22 2008 +0900 +++ b/pidgin-twitter.c Tue Oct 07 16:44:02 2008 +0900 @@ -24,8 +24,8 @@ /***********/ /* globals */ /***********/ -#define NUM_REGPS 12 -#define NUM_SERVICES 3 /* twitter, wassr, identica. */ +#define NUM_REGPS 13 +#define NUM_SERVICES 4 /* twitter, wassr, identica, jisko. */ static GRegex *regp[NUM_REGPS]; static gboolean suppress_oops = FALSE; static GHashTable *icon_hash[NUM_SERVICES]; @@ -909,6 +909,9 @@ case identica_service: format = RECIPIENT_FORMAT_IDENTICA; break; + case jisko_service: + format = RECIPIENT_FORMAT_JISKO; + break; default: twitter_debug("unknown service\n"); break; @@ -932,6 +935,9 @@ case identica_service: format = SENDER_FORMAT_IDENTICA; break; + case jisko_service: + format = SENDER_FORMAT_JISKO; + break; default: twitter_debug("unknown service\n"); break; @@ -1069,6 +1075,9 @@ case identica_service: screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA); break; + case jisko_service: + screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_JISKO); + break; } if (screen_name) { @@ -1135,6 +1144,7 @@ switch(service) { case twitter_service: case identica_service: + case jisko_service: count = gtk_text_buffer_get_char_count(textbuffer) + (unsigned int)g_utf8_strlen(new_text, -1); markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", @@ -1175,6 +1185,7 @@ switch(service) { case twitter_service: case identica_service: + case jisko_service: count= gtk_text_buffer_get_char_count(textbuffer) - (gtk_text_iter_get_offset(end_pos) - gtk_text_iter_get_offset(start_pos)); @@ -1216,6 +1227,7 @@ case twitter_service: case wassr_service: case identica_service: + case jisko_service: detach_from_conv(conv, NULL); break; default: @@ -1333,6 +1345,7 @@ case twitter_service: case wassr_service: case identica_service: + case jisko_service: attach_to_conv(conv, NULL); break; default: @@ -1474,6 +1487,30 @@ return is_identica_account(account, name); } +static gboolean +is_jisko_account(PurpleAccount *account, const char *name) +{ + const gchar *proto = purple_account_get_protocol_id(account); + + if(g_strstr_len(name, 16, "bot@jisko.net") && + g_strstr_len(proto, 11, "prpl-jabber")) { + return TRUE; + } + + return FALSE; +} + +static gboolean +is_jisko_conv(PurpleConversation *conv) +{ + g_return_val_if_fail(conv != NULL, FALSE); + + const char *name = purple_conversation_get_name(conv); + PurpleAccount *account = purple_conversation_get_account(conv); + + return is_jisko_account(account, name); +} + static gint get_service_type_by_account(PurpleAccount *account, const char *sender) { @@ -1488,6 +1525,8 @@ service = wassr_service; else if(is_identica_account(account, sender)) service = identica_service; + else if(is_jisko_account(account, sender)) + service = jisko_service; return service; } @@ -1505,6 +1544,8 @@ service = wassr_service; else if(is_identica_conv(conv)) service = identica_service; + else if(is_jisko_conv(conv)) + service = jisko_service; return service; } @@ -1531,6 +1572,7 @@ break; case wassr_service: case identica_service: + case jisko_service: attach_to_conv(conv, NULL); break; default: @@ -1567,6 +1609,9 @@ case identica_service: hash = icon_hash[identica_service]; break; + case jisko_service: + hash = icon_hash[jisko_service]; + break; default: twitter_debug("unknown service\n"); break; @@ -1603,6 +1648,10 @@ list = purple_prefs_get_string(OPT_FILTER_IDENTICA); screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA)); break; + case jisko_service: + list = purple_prefs_get_string(OPT_FILTER_JISKO); + screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_JISKO)); + break; } g_return_if_fail(list != NULL); if(strstr(list, DEFAULT_LIST)) @@ -1829,6 +1878,9 @@ case identica_service: hash = icon_hash[identica_service]; break; + case jisko_service: + hash = icon_hash[jisko_service]; + break; default: twitter_debug("unknown service\n"); } @@ -1875,6 +1927,9 @@ case identica_service: hash = icon_hash[identica_service]; break; + case jisko_service: + hash = icon_hash[jisko_service]; + break; default: twitter_debug("unknown service\n"); break; @@ -1933,6 +1988,11 @@ icon_hash[identica_service], user_name); regp_id = IMAGE_IDENTICA; } + else if(service == jisko_service) { + data = (icon_data *)g_hash_table_lookup( + icon_hash[jisko_service], user_name); + regp_id = IMAGE_JISKO; + } if(!url_text) { if(data) { @@ -2100,6 +2160,9 @@ case identica_service: hash = icon_hash[identica_service]; break; + case jisko_service: + hash = icon_hash[jisko_service]; + break; default: twitter_debug("unknown service\n"); } @@ -2171,6 +2234,9 @@ case identica_service: suffix = "identica"; break; + case jisko_service: + suffix = "jisko"; + break; default: twitter_debug("unknown service\n"); break; @@ -2235,6 +2301,10 @@ suffix = "identica"; hash = icon_hash[identica_service]; break; + case jisko_service: + suffix = "jisko"; + hash = icon_hash[jisko_service]; + break; default: twitter_debug("unknown service\n"); break; @@ -2324,6 +2394,9 @@ case identica_service: url = g_strdup_printf("http://identi.ca/%s", user_name); break; + case jisko_service: + url = g_strdup_printf("http://jisko.net/%s", user_name); + break; default: twitter_debug("unknown service\n"); break; @@ -2337,7 +2410,8 @@ /* gotdata will be released in got_icon_cb */ if(service == twitter_service || service == wassr_service || - service == identica_service) { + service == identica_service || + service == jisko_service) { data->fetch_data = purple_util_fetch_url(url, TRUE, NULL, TRUE, got_page_cb, gotdata); } @@ -2369,6 +2443,9 @@ case identica_service: hash = icon_hash[identica_service]; break; + case jisko_service: + hash = icon_hash[jisko_service]; + break; default: twitter_debug("unknown service\n"); break; @@ -2468,6 +2545,9 @@ case identica_service: hash = icon_hash[identica_service]; break; + case jisko_service: + hash = icon_hash[jisko_service]; + break; default: twitter_debug("unknown service\n"); break; @@ -2611,10 +2691,11 @@ regp[PSEUDO] = g_regex_new(P_PSEUDO, G_REGEX_RAW, 0, NULL); regp[USER] = g_regex_new(P_USER, 0, 0, NULL); regp[CHANNEL_WASSR] = g_regex_new(P_CHANNEL, 0, 0, NULL); + regp[TAG_IDENTICA] = g_regex_new(P_TAG_IDENTICA, 0, 0, NULL); regp[IMAGE_TWITTER] = g_regex_new(P_IMAGE_TWITTER, 0, 0, NULL); regp[IMAGE_WASSR] = g_regex_new(P_IMAGE_WASSR, 0, 0, NULL); regp[IMAGE_IDENTICA] = g_regex_new(P_IMAGE_IDENTICA, 0, 0, NULL); - regp[TAG_IDENTICA] = g_regex_new(P_TAG_IDENTICA, 0, 0, NULL); + regp[IMAGE_JISKO] = g_regex_new(P_IMAGE_JISKO, 0, 0, NULL); regp[SIZE_128_WASSR] = g_regex_new(P_SIZE_128_WASSR, 0, 0, NULL); regp[EXCESS_LF] = g_regex_new(P_EXCESS_LF, 0, 0, NULL); @@ -2913,6 +2994,13 @@ g_signal_connect(e, "changed", G_CALLBACK(text_changed_cb), &e); + e = GTK_WIDGET(gtk_builder_get_object (builder, "account_jisko")); + g_object_set_data(G_OBJECT(e), "pref", OPT_SCREEN_NAME_JISKO); + text = purple_prefs_get_string(OPT_SCREEN_NAME_JISKO); + gtk_entry_set_text(GTK_ENTRY(e), text); + g_signal_connect(e, "changed", + G_CALLBACK(text_changed_cb), &e); + e = GTK_WIDGET(gtk_builder_get_object (builder, "account_api")); g_object_set_data(G_OBJECT(e), "pref", OPT_API_BASE_POST); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e), @@ -3025,6 +3113,13 @@ g_signal_connect(e, "changed", G_CALLBACK(text_changed_cb), &e); + e = GTK_WIDGET(gtk_builder_get_object (builder, "filter_jisko")); + g_object_set_data(G_OBJECT(e), "pref", OPT_FILTER_JISKO); + text = purple_prefs_get_string(OPT_FILTER_JISKO); + gtk_entry_set_text(GTK_ENTRY(e), text); + g_signal_connect(e, "changed", + G_CALLBACK(text_changed_cb), &e); + /*************/ @@ -3238,7 +3333,7 @@ PURPLE_PRIORITY_DEFAULT, /**< priority */ PLUGIN_ID, /**< id */ "Pidgin-Twitter", /**< name */ - "0.8.0b1", /**< version */ + "0.8.0b2", /**< version */ "provides useful features for twitter", /** summary */ "provides useful features for twitter", /** desc */ "Yoshiki Yazawa, mikanbako, \nKonosuke Watanabe, IWATA Ray, \nmojin, umq, \nthe pidging-twitter team", /**< author */ @@ -3288,6 +3383,7 @@ purple_prefs_add_string(OPT_PASSWORD_TWITTER, EMPTY); purple_prefs_add_string(OPT_SCREEN_NAME_WASSR, EMPTY); purple_prefs_add_string(OPT_SCREEN_NAME_IDENTICA, EMPTY); + purple_prefs_add_string(OPT_SCREEN_NAME_JISKO, EMPTY); purple_prefs_add_bool(OPT_SHOW_ICON, TRUE); purple_prefs_add_int(OPT_ICON_SIZE, DEFAULT_ICON_SIZE); @@ -3301,6 +3397,7 @@ purple_prefs_add_string(OPT_FILTER_TWITTER, DEFAULT_LIST); purple_prefs_add_string(OPT_FILTER_WASSR, DEFAULT_LIST); purple_prefs_add_string(OPT_FILTER_IDENTICA, DEFAULT_LIST); + purple_prefs_add_string(OPT_FILTER_JISKO, DEFAULT_LIST); } PURPLE_INIT_PLUGIN(pidgin_twitter, init_plugin, info)
--- a/pidgin-twitter.h Tue Oct 07 14:51:22 2008 +0900 +++ b/pidgin-twitter.h Tue Oct 07 16:44:02 2008 +0900 @@ -32,10 +32,11 @@ PSEUDO, USER, CHANNEL_WASSR, + TAG_IDENTICA, IMAGE_TWITTER, IMAGE_WASSR, IMAGE_IDENTICA, - TAG_IDENTICA, + IMAGE_JISKO, SIZE_128_WASSR, EXCESS_LF }; @@ -45,7 +46,8 @@ unknown_service = -1, twitter_service, wassr_service, - identica_service + identica_service, + jisko_service }; /* container to hold icon data */ @@ -112,6 +114,7 @@ #define OPT_SCREEN_NAME_TWITTER OPT_PIDGINTWITTER "/screen_name_twitter" #define OPT_SCREEN_NAME_WASSR OPT_PIDGINTWITTER "/screen_name_wassr" #define OPT_SCREEN_NAME_IDENTICA OPT_PIDGINTWITTER "/screen_name_identica" +#define OPT_SCREEN_NAME_JISKO OPT_PIDGINTWITTER "/screen_name_jisko" #define OPT_PASSWORD_TWITTER OPT_PIDGINTWITTER "/password_twitter" #define OPT_SHOW_ICON OPT_PIDGINTWITTER "/show_icon" #define OPT_ICON_SIZE OPT_PIDGINTWITTER "/icon_size" @@ -125,6 +128,7 @@ #define OPT_FILTER_TWITTER OPT_PIDGINTWITTER "/filter_twitter" #define OPT_FILTER_WASSR OPT_PIDGINTWITTER "/filter_wassr" #define OPT_FILTER_IDENTICA OPT_PIDGINTWITTER "/filter_identica" +#define OPT_FILTER_JISKO OPT_PIDGINTWITTER "/filter_jisko" #define OPT_STRIP_EXCESS_LF OPT_PIDGINTWITTER "/strip_excess_lf" #ifdef _WIN32 @@ -138,6 +142,8 @@ #define SENDER_FORMAT_WASSR "%s<a href='http://wassr.jp/user/%s'>%s</a>: " #define RECIPIENT_FORMAT_IDENTICA "%s@<a href='http://identi.ca/%s'>%s</a>" #define SENDER_FORMAT_IDENTICA "%s<a href='http://identi.ca/%s'>%s</a>: " +#define RECIPIENT_FORMAT_JISKO "@<a href='http://jisko.net/%s'>%s</a>" +#define SENDER_FORMAT_JISKO "%s<a href='http://jisko.net/%s'>%s</a>: " #define CHANNEL_FORMAT_WASSR "%s<a href='http://wassr.jp/channel/%s'>%s</a> " #define CHANNEL_FORMAT_IDENTICA "%s<a href='http://identi.ca/tag/%s'>%s</a> " #define TAG_FORMAT_IDENTICA "#<a href='http://identi.ca/tag/%s'>%s</a>" @@ -153,11 +159,12 @@ #define P_PSEUDO "^\\s*(?:[\"#$%&'()*+,\\-./:;<=>?\\[\\\\\\]_`{|}~]|[^\\s\\x21-\\x7E])*([dDfFgGlLmMnNtTwW]{1})(?:\\Z|\\s+|[^\\x21-\\x7E]+\\Z)" #define P_USER "^.*?(?:<a .+?>)?([-A-Za-z0-9_]+)(?:</a>)?:" #define P_CHANNEL "^(.*?(?:<a .+?>)?[-A-Za-z0-9_]+(?:</a>)?: \\r?\\n?#)([A-Za-z0-9_]+) " +#define P_TAG_IDENTICA "#([-A-Za-z0-9_]+)" #define P_IMAGE_TWITTER "<a href=\"/account/profile_image/.+?\"><img .+? id=\"profile-image\".*src=\"(http://.+)\" .+?/>" #define P_IMAGE_WASSR "<div class=\"image\"><a href=\".+\"><img src=\"(.+)\" width=\".+?\" /></a></div>" +#define P_IMAGE_IDENTICA "<img src=\"(http://.+.identi.ca/.+)\" class=\"avatar profile\" width=\"96\" height=\"96\" alt=\"[A-Za-z0-0_]+\"/>" +#define P_IMAGE_JISKO "<img src=\"(http://jisko.net/users/.+/img/avatar/thumb_side\\..+)\" alt=\"Avatar\" />" #define P_SIZE_128_WASSR "\\.128\\." -#define P_IMAGE_IDENTICA "<img src=\"(http://.+.identi.ca/.+)\" class=\"avatar profile\" width=\"96\" height=\"96\" alt=\"[A-Za-z0-0_]+\"/>" -#define P_TAG_IDENTICA "#([-A-Za-z0-9_]+)" #define P_EXCESS_LF "([\\r|\\n]{3,})" /* twitter API specific macros */ @@ -212,6 +219,8 @@ static gboolean is_wassr_conv(PurpleConversation *conv); static gboolean is_identica_account(PurpleAccount *account, const char *name); static gboolean is_identica_conv(PurpleConversation *conv); +static gboolean is_jisko_account(PurpleAccount *account, const char *name); +static gboolean is_jisko_conv(PurpleConversation *conv); static void conv_created_cb(PurpleConversation *conv, gpointer null); static void deleting_conv_cb(PurpleConversation *conv); static gboolean receiving_im_cb(PurpleAccount *account, char **sender, char **buffer, PurpleConversation *conv, PurpleMessageFlags *flags, void *data);
--- a/prefs.ui Tue Oct 07 14:51:22 2008 +0900 +++ b/prefs.ui Tue Oct 07 16:44:02 2008 +0900 @@ -188,6 +188,47 @@ </packing> </child> <child> + <object class="GtkHBox" id="hbox10"> + <property name="visible">True</property> + <child> + <object class="GtkAlignment" id="alignment43"> + <property name="visible">True</property> + <property name="left_padding">20</property> + <child> + <object class="GtkLabel" id="label30"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">jisko</property> + <property name="max_width_chars">10</property> + </object> + </child> + </object> + </child> + <child> + <object class="GtkAlignment" id="alignment44"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="right_padding">4</property> + <child> + <object class="GtkEntry" id="account_jisko"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="width_chars">20</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">4</property> + </packing> + </child> + <child> <object class="GtkAlignment" id="alignment8"> <property name="visible">True</property> <property name="top_padding">8</property> @@ -204,7 +245,7 @@ </child> </object> <packing> - <property name="position">4</property> + <property name="position">5</property> </packing> </child> <child> @@ -223,7 +264,7 @@ </child> </object> <packing> - <property name="position">5</property> + <property name="position">6</property> </packing> </child> <child> @@ -267,7 +308,7 @@ </child> </object> <packing> - <property name="position">6</property> + <property name="position">7</property> </packing> </child> <child> @@ -336,7 +377,7 @@ </object> <packing> <property name="expand">False</property> - <property name="position">7</property> + <property name="position">8</property> </packing> </child> </object> @@ -521,7 +562,7 @@ </packing> </child> <child> - <object class="GtkAlignment" id="alignment43"> + <object class="GtkAlignment" id="alignment12"> <property name="visible">True</property> <property name="xalign">0</property> <property name="top_padding">4</property> @@ -543,10 +584,10 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox10"> + <object class="GtkHBox" id="hbox6"> <property name="visible">True</property> <child> - <object class="GtkAlignment" id="alignment44"> + <object class="GtkAlignment" id="alignment16"> <property name="visible">True</property> <property name="left_padding">20</property> <child> @@ -673,6 +714,50 @@ <property name="position">6</property> </packing> </child> + <child> + <object class="GtkHBox" id="hbox14"> + <property name="visible">True</property> + <child> + <object class="GtkAlignment" id="alignment67"> + <property name="visible">True</property> + <property name="left_padding">20</property> + <child> + <object class="GtkLabel" id="label38"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">jisko</property> + <property name="max_width_chars">10</property> + </object> + </child> + </object> + </child> + <child> + <object class="GtkAlignment" id="alignment68"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="right_padding">4</property> + <child> + <object class="GtkEntry" id="filter_jisko"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="width_chars">35</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">2</property> + <property name="position">7</property> + </packing> + </child> </object> <packing> <property name="position">2</property> @@ -680,7 +765,7 @@ </packing> </child> <child type="tab"> - <object class="GtkLabel" id="label30"> + <object class="GtkLabel" id="label3"> <property name="visible">True</property> <property name="label" translatable="yes"><b>Filter</b></property> <property name="use_markup">True</property> @@ -694,7 +779,7 @@ <object class="GtkVBox" id="vbox1"> <property name="visible">True</property> <child> - <object class="GtkAlignment" id="alignment12"> + <object class="GtkAlignment" id="alignment17"> <property name="visible">True</property> <property name="top_padding">12</property> <property name="bottom_padding">4</property> @@ -774,7 +859,7 @@ </packing> </child> <child> - <object class="GtkAlignment" id="alignment16"> + <object class="GtkAlignment" id="alignment19"> <property name="visible">True</property> <child> <placeholder/> @@ -848,7 +933,7 @@ </packing> </child> <child> - <object class="GtkAlignment" id="alignment17"> + <object class="GtkAlignment" id="alignment20"> <property name="visible">True</property> <property name="top_padding">12</property> <property name="bottom_padding">8</property> @@ -927,7 +1012,7 @@ <placeholder/> </child> <child> - <object class="GtkAlignment" id="alignment19"> + <object class="GtkAlignment" id="alignment21"> <property name="visible">True</property> <child> <placeholder/> @@ -980,7 +1065,7 @@ <object class="GtkAlignment" id="alignment53"> <property name="visible">True</property> <child> - <object class="GtkLabel" id="label3"> + <object class="GtkLabel" id="label4"> <property name="visible">True</property> <property name="label" translatable="yes">times or</property> </object> @@ -1093,7 +1178,7 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox6"> + <object class="GtkHBox" id="hbox7"> <property name="visible">True</property> <child> <object class="GtkAlignment" id="alignment28"> @@ -1137,7 +1222,7 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox7"> + <object class="GtkHBox" id="hbox8"> <property name="visible">True</property> <child> <object class="GtkAlignment" id="alignment30"> @@ -1225,7 +1310,7 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox8"> + <object class="GtkHBox" id="hbox9"> <property name="visible">True</property> <child> <object class="GtkAlignment" id="alignment34"> @@ -1269,7 +1354,7 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox9"> + <object class="GtkHBox" id="hbox13"> <property name="visible">True</property> <child> <object class="GtkAlignment" id="alignment36"> @@ -1327,7 +1412,7 @@ </packing> </child> <child type="tab"> - <object class="GtkLabel" id="label4"> + <object class="GtkLabel" id="label12"> <property name="visible">True</property> <property name="label" translatable="yes"><b>Sound</b></property> <property name="use_markup">True</property> @@ -1341,7 +1426,7 @@ <object class="GtkVBox" id="vbox4"> <property name="visible">True</property> <child> - <object class="GtkAlignment" id="alignment20"> + <object class="GtkAlignment" id="alignment22"> <property name="visible">True</property> <property name="top_padding">8</property> <property name="bottom_padding">4</property> @@ -1357,7 +1442,7 @@ </object> </child> <child> - <object class="GtkAlignment" id="alignment21"> + <object class="GtkAlignment" id="alignment23"> <property name="visible">True</property> <property name="left_padding">20</property> <child> @@ -1375,7 +1460,7 @@ </packing> </child> <child> - <object class="GtkAlignment" id="alignment22"> + <object class="GtkAlignment" id="alignment24"> <property name="visible">True</property> <property name="top_padding">8</property> <property name="bottom_padding">4</property> @@ -1394,7 +1479,7 @@ </packing> </child> <child> - <object class="GtkAlignment" id="alignment23"> + <object class="GtkAlignment" id="alignment25"> <property name="visible">True</property> <property name="left_padding">20</property> <child> @@ -1412,7 +1497,7 @@ </packing> </child> <child> - <object class="GtkAlignment" id="alignment24"> + <object class="GtkAlignment" id="alignment49"> <property name="visible">True</property> <property name="left_padding">20</property> <child> @@ -1448,7 +1533,7 @@ </packing> </child> <child> - <object class="GtkAlignment" id="alignment25"> + <object class="GtkAlignment" id="alignment63"> <property name="visible">True</property> <property name="left_padding">20</property> <child> @@ -1466,7 +1551,7 @@ </packing> </child> <child> - <object class="GtkAlignment" id="alignment63"> + <object class="GtkAlignment" id="alignment65"> <property name="visible">True</property> <property name="top_padding">8</property> <property name="bottom_padding">4</property> @@ -1485,7 +1570,7 @@ </packing> </child> <child> - <object class="GtkAlignment" id="alignment49"> + <object class="GtkAlignment" id="alignment66"> <property name="visible">True</property> <property name="bottom_padding">10</property> <property name="left_padding">20</property> @@ -1509,7 +1594,7 @@ </packing> </child> <child type="tab"> - <object class="GtkLabel" id="label12"> + <object class="GtkLabel" id="label37"> <property name="visible">True</property> <property name="label" translatable="yes"><b>Utility</b></property> <property name="use_markup">True</property>