ピジンメニューに任意の項目を追加したい。Buddies → Show → Groupsとします。カスタム機能が関連付けられたチェックボタン(Buddies → Show → Empty Groupsなど)にしたい。これどうやってするの?
2 に答える
次の例は、Pidgin バージョン 2.10.9 用です。3.0.0 (現在の開発ブランチ) には多くの変更がないと思いますので、最小限の変更で適用できます。
まず、Pidgin のソースをダウンロードします。Ubuntu では、これを実行するだけで実行できます。
apt-get source pidgin
libpurple、pidgin、および finch のソースをフェッチします。次に、入っpidgin-2.10.9/pidgin/gtkblist.c
て行を見つけます
static GtkItemFactoryEntry blist_menu[] =
Gtk メニューがテキストで表示されます。次の行を追加します。
{ N_("/Buddies/Show/_Groups"), NULL, pidgin_blist_show_groups_cb, 1, "<CheckItem>", NULL },
後
{ N_("/Buddies/Show/_Empty Groups"), NULL, pidgin_blist_show_empty_groups_cb, 1, "<CheckItem>", NULL },
追加された行は、追加された後の類似物であることがわかります。3 番目の配列メンバーは、メニュー項目のステータスの更新を担当する関数です。
次に、先ほど指定した関数 を追加しますpidgin_blist_show_groups_cb
。を見つけてそのpidgin_blist_show_empty_groups_cb
内容をコピーすることができます。
static void pidgin_blist_show_groups_cb(gpointer data, guint action, GtkWidget *item)
{
pidgin_set_cursor(gtkblist->window, GDK_WATCH);
purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/show_groups",
gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
pidgin_clear_cursor(gtkblist->window);
}
また、起動時にアイテムのステータスを設定する必要があります。関数を見つける
static void pidgin_blist_show(PurpleBuddyList *list)
そして追加
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show/Groups"))),
purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_groups"));
後
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show/Empty Groups"))),
purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_empty_groups"));
設定の"/blist/show_groups"
追加とコールバックの追加については、カスタム設定を Pidgin に追加するにはどうすればよいですか?で説明されています。. 変更をテストするには、pidgin をコンパイルしてインストールします。
sudo apt-get build-dep pidgin
cd pidgin-2.10.9/
fakeroot debian/rules binary
sudo dpkg -i ../pidgin_2.10.9-0ubuntu3.deb