有没有一种等同的方式来从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的菜单创建过程中提高可维护性&可读性:
- 创建GMenu
- 创建一个GMenuItems列表
- 设置各种属性,如sensitivi TY,工具提示
- 连接的信号事件
以前我压根儿东西,如:
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,只是默默地删除节点。
链接已移动,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