有没有一种等同的方式来从XML加载GMenu?

问题描述:

我一直在使用格莱德创建菜单栏我的应用程序菜单的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代码链接指向正确的方向吗?

对于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