0

ピジンメニューに任意の項目を追加したい。Buddies → Show → Groupsとします。カスタム機能が関連付けられたチェックボタン(Buddies → Show → Empty Groupsなど)にしたい。これどうやってするの?

4

2 に答える 2

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
于 2014-04-30T03:28:37.090 に答える