Add ability to main window to specify a popup window qualifier

This will allow different popup context window menus for a plugin page
to be popped when required.
This commit is contained in:
Robert Fewell 2023-03-22 10:35:11 +00:00
parent 0110442c28
commit b30fb2d34a
3 changed files with 49 additions and 3 deletions

View File

@ -5510,6 +5510,9 @@ do_popup_menu (GncPluginPage *page, GdkEventButton *event)
builder = gnc_plugin_page_get_builder (page);
menu_qualifier = gnc_plugin_page_get_menu_popup_qualifier (page);
if (!menu_qualifier)
menu_qualifier = gnc_plugin_page_get_menu_qualifier (page);
if (builder == nullptr)
@ -5519,7 +5522,7 @@ do_popup_menu (GncPluginPage *page, GdkEventButton *event)
}
if (menu_qualifier)
popup_menu_name = g_strconcat ("mainwin-popup-", menu_qualifier, NULL);
popup_menu_name = g_strconcat ("mainwin-popup-", menu_qualifier, nullptr);
else
popup_menu_name = g_strdup ("mainwin-popup");

View File

@ -94,6 +94,7 @@ typedef struct _GncPluginPagePrivate
GSimpleActionGroup *simple_action_group;
const gchar *simple_action_group_name;
const gchar *menu_qualifier;
const gchar *menu_popup_qualifier;
GList *books;
@ -1024,7 +1025,6 @@ gnc_plugin_page_get_menu_qualifier (GncPluginPage *page)
return priv->menu_qualifier;
}
void
gnc_plugin_page_set_menu_qualifier (GncPluginPage *page,
const char *menu_qualifier)
@ -1038,6 +1038,31 @@ gnc_plugin_page_set_menu_qualifier (GncPluginPage *page,
priv->menu_qualifier = menu_qualifier;
}
const gchar *
gnc_plugin_page_get_menu_popup_qualifier (GncPluginPage *page)
{
GncPluginPagePrivate *priv;
g_return_val_if_fail (GNC_IS_PLUGIN_PAGE(page), NULL);
priv = GNC_PLUGIN_PAGE_GET_PRIVATE(page);
return priv->menu_popup_qualifier;
}
void
gnc_plugin_page_set_menu_popup_qualifier (GncPluginPage *page,
const char *menu_qualifier)
{
GncPluginPagePrivate *priv;
g_return_if_fail (GNC_IS_PLUGIN_PAGE(page));
priv = GNC_PLUGIN_PAGE_GET_PRIVATE(page);
priv->menu_popup_qualifier = menu_qualifier;
}
GSimpleActionGroup *
gnc_plugin_page_get_action_group (GncPluginPage *page)
{

View File

@ -516,6 +516,24 @@ const gchar * gnc_plugin_page_get_menu_qualifier (GncPluginPage *page);
void gnc_plugin_page_set_menu_qualifier (GncPluginPage *page,
const char *menu_qualifier);
/** Retrieve the menu popup qualifier for this page.
*
* @param page The page whose quailifier string should be retrieved.
*
* @return A qualifier string for this page.
*/
const gchar * gnc_plugin_page_get_menu_popup_qualifier (GncPluginPage *page);
/** Set a qualifier string for this page. This string is used when there
* is more than one popup menu associated with the page.
*
* @param page The page whose qualifier string should be updated.
*
* @param menu_qualifier A string to be used as for the qualifier.
*/
void gnc_plugin_page_set_menu_popup_qualifier (GncPluginPage *page,
const char *menu_qualifier);
/** Retrieve the GSimpleActionGroup object associated with this page.
*
* @param page The page whose menu/toolbar action group should be