MenuManager

The goal of #DzlMenuManager is to simplify the process of merging multiple GtkBuilder .ui files containing menus into a single representation of the application menus. Additionally, it provides the ability to "unmerge" previously merged menus.

This allows for an application to have plugins which seemlessly extends the core application menus.

Implementation notes:

To make this work, we don't use the GMenu instances created by a GtkBuilder instance. Instead, we create the menus ourself and recreate section and submenu links. This allows the #DzlMenuManager to be in full control of the generated menus.

dzl_menu_manager_get_menu_by_id() will always return a #GMenu, however that menu may contain no children until something has extended it later on during the application process.

Constructors

this
this(DzlMenuManager* dzlMenuManager, bool ownedRef = false)

Sets our main struct and passes it to the parent class.

this
this()

Members

Functions

addFilename
uint addFilename(string filename)
addResource
uint addResource(string resource)
getMenuById
Menu getMenuById(string menuId)
getMenuManagerStruct
DzlMenuManager* getMenuManagerStruct(bool transferOwnership = false)

Get the main Gtk struct

getStruct
void* getStruct()

the main Gtk struct as a void*

merge
uint merge(string menuId, MenuModel model)
remove
void remove(uint mergeId)

This removes items from menus that were added as part of a previous menu merge. Use the value returned from dzl_menu_manager_merge() as the @merge_id.

Static functions

getType
GType getType()

Variables

dzlMenuManager
DzlMenuManager* dzlMenuManager;

the main Gtk struct

Meta

Since

3.26