2013-04-26 138 views
1

我一直在使用格萊德創建菜單欄我的應用程序菜單的Gtk3.4/3.6基於應用程序是這樣的:有沒有一種等同的方式來從XML加載GMenu?

<object class="GtkMenu" id="popup_menu"> 
    <property name="visible">True</property> 
    <property name="can_focus">False</property> 
    <child> 
     <object class="GtkMenuItem" id="play_album_menu_item"> 
     <property name="use_action_appearance">False</property> 
     <property name="visible">True</property> 
     <property name="can_focus">False</property> 
     <property name="tooltip_text" translatable="yes">Play this album</property> 
     <property name="label" translatable="yes">Play Album</property> 
     <property name="use_underline">True</property> 
     <signal name="activate" handler="play_album_menu_item_callback" swapped="no"/> 
     </object> 
    </child> 

然而,最新的基於Gnome的GTK3.8應用都搬走了從基於GtkMenu/UI-Manager的菜單創建,現在使用基於GMenu和GMenuItem的創建。

我見過的Python代碼例子說明如何單獨代碼菜單項。

但是我想節省時間/試圖通過使用類似的格萊德基於XML的菜單創建過程中提高可維護性&可讀性:

  1. 創建GMenu
  2. 創建一個GMenuItems列表
  3. 設置各種屬性,如sensitivi TY,工具提示
  4. 連接的信號事件

以前我壓根兒東西,如:

ui = Gtk.Builder() 
ui.add_from_file("menufile.xml") 
ui.connect_signals(self) 
popup_menu = ui.get_object('popup_menu') 

etc.etc。

這可能與GMenu和GMenuItems?

如果是這樣,任何人都可以通過示例Python代碼示例或現有Python代碼鏈接指向正確的方向嗎?

回答

1

對於C時,bloatpad例子表明,在GtkBuilder文件中使用新的XML格式: https://git.gnome.org/browse/gtk+/tree/examples/bloatpad.c

但是,你必須手工編寫這些。格萊德還沒有讓你編輯GMenus,只是默默地刪除節點。

+1

鏈接已移動,https://git.gnome.org/browse/gtk+/tree/examples/bp/gtk/menus.ui和https://git.gnome.org/browse/gtk+/tree/examples/ BP/bloatpad.c – 2014-07-14 19:26:11

相關問題