GnuCash c935c2f+
Loading...
Searching...
No Matches
Files | Data Structures | Macros | Functions
Common object and functions

Files

file  gnc-plugin.c
 Functions for adding plugins to a Gnucash window.
 
file  gnc-plugin.h
 Functions for adding plugins to a GnuCash window.
 

Data Structures

struct  GncPluginPrivate
 The instance private data for a menu-only plugin. More...
 
struct  _GncPluginClass
 The class data structure for a menu-only plugin. More...
 
struct  action_toolbar_labels
 A structure for defining alternate action names for use in the toolbar. More...
 

Macros

#define GNC_TYPE_PLUGIN   (gnc_plugin_get_type ())
 
#define GNC_PLUGIN_NAME   "GncPlugin"
 

Functions

 G_DEFINE_TYPE_WITH_CODE (GncPlugin, gnc_plugin, G_TYPE_OBJECT, G_ADD_PRIVATE(GncPlugin))
 Initialize the class for the new gnucash plugin object.
 
void gnc_plugin_add_to_window (GncPlugin *plugin, GncMainWindow *window, GQuark type)
 Add the specified plugin from the specified window.
 
void gnc_plugin_remove_from_window (GncPlugin *plugin, GncMainWindow *window, GQuark type)
 Remove the specified plugin from the specified window.
 
const gchar * gnc_plugin_get_name (GncPlugin *plugin)
 Retrieve the textual name of a plugin.
 
void gnc_plugin_init_short_names (GtkWidget *toolbar, GncToolBarShortNames *toolbar_labels)
 Add "short" labels to existing actions.
 
void gnc_plugin_set_actions_enabled (GActionMap *action_map, const gchar **action_names, gboolean enable)
 This function sets the sensitivity of a GAction in a specific group.
 
void gnc_plugin_add_menu_tooltip_callbacks (GtkWidget *menubar, GMenuModel *menubar_model, GtkWidget *statusbar)
 This function adds the tooltip callbacks to make the tooltips appear in the status bar.
 
void gnc_plugin_add_toolbar_tooltip_callbacks (GtkWidget *toolbar, GtkWidget *statusbar)
 This function adds the tooltip callbacks to make the tooltips appear in the status bar.
 

Detailed Description

Macro Definition Documentation

◆ GNC_PLUGIN_NAME

#define GNC_PLUGIN_NAME   "GncPlugin"

Definition at line 91 of file gnc-plugin.h.

◆ GNC_TYPE_PLUGIN

#define GNC_TYPE_PLUGIN   (gnc_plugin_get_type ())

Definition at line 88 of file gnc-plugin.h.

Function Documentation

◆ G_DEFINE_TYPE_WITH_CODE()

G_DEFINE_TYPE_WITH_CODE ( GncPlugin  ,
gnc_plugin  ,
G_TYPE_OBJECT  ,
G_ADD_PRIVATE(GncPlugin)   
)

Initialize the class for the new gnucash plugin object.

This will set up any function pointers that override functions in the parent class, and also installs the proprieties that are unique to this class.

Parameters
klassThe new class structure created by the object system.

Definition at line 61 of file gnc-plugin.c.

76{
77 GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
78
79 gobject_class->constructed = gnc_plugin_constructed;
80 gobject_class->finalize = gnc_plugin_finalize;
81}

◆ gnc_plugin_add_menu_tooltip_callbacks()

void gnc_plugin_add_menu_tooltip_callbacks ( GtkWidget *  menubar,
GMenuModel *  menubar_model,
GtkWidget *  statusbar 
)

This function adds the tooltip callbacks to make the tooltips appear in the status bar.

Parameters
menubarThe main window menu bar widget.
menubar_modelThe GMenuModel used to create the menubar.
statusbarThe status bar widget in the main window.

Definition at line 268 of file gnc-plugin.c.

271{
272 GList *menu_item_list;
273
274 g_return_if_fail (G_IS_MENU_MODEL(menubar_model));
275 g_return_if_fail (GTK_IS_STATUSBAR(statusbar));
276
277 menu_item_list = gnc_menu_get_items (menubar);
278
279 for (GList *node = menu_item_list; node; node = node->next)
280 {
281 GtkWidget *menu_item = node->data;
282
284 }
285 g_object_set_data (G_OBJECT(statusbar), "menu-model", menubar_model);
286 g_list_free (menu_item_list);
287}
void gnc_menu_item_setup_tooltip_to_statusbar_callback(GtkWidget *menu_item, GtkWidget *statusbar)
Setup the callbacks for menu bar items so the tooltip can be displayed in the status bar.
GList * gnc_menu_get_items(GtkWidget *menu)
Return a list of GtkMenuItems.

◆ gnc_plugin_add_to_window()

void gnc_plugin_add_to_window ( GncPlugin *  plugin,
GncMainWindow *  window,
GQuark  type 
)

Add the specified plugin from the specified window.

Add the specified plugin to the specified window.

This function will add the page's user interface from the window and call the plugin to perform any plugin specific actions.

See gnc-plugin.h for documentation on the function arguments.

This function will add the page's user interface from the window and call the plugin to perform any plugin specific actions.

Parameters
pluginThe plugin to be added.
windowAdd the plugin to this window.
typeAn identifier for the type of window specified.

Definition at line 133 of file gnc-plugin.c.

136{
137 GncPluginClass *klass;
138
139 g_return_if_fail (GNC_IS_PLUGIN (plugin));
140 klass = GNC_PLUGIN_GET_CLASS (plugin);
141 ENTER (": plugin %s(%p), window %p", gnc_plugin_get_name(plugin),
142 plugin, window);
143
144 /*
145 * Update window with additional UI items
146 */
147 if (klass->actions_name)
148 {
149 DEBUG ("%s: %d actions to merge with gui from %s",
150 klass->actions_name, klass->n_actions, klass->ui_filename);
151 gnc_main_window_merge_actions (window, klass->actions_name,
152 klass->actions, klass->n_actions,
153 klass->ui_updates,
154 klass->ui_filename, plugin);
155 }
156
157 /*
158 * Do plugin specific actions.
159 */
160 if (GNC_PLUGIN_GET_CLASS (plugin)->add_to_window)
161 {
162 DEBUG ("Calling child class function %p", GNC_PLUGIN_GET_CLASS (plugin)->add_to_window);
163 GNC_PLUGIN_GET_CLASS (plugin)->add_to_window (plugin, window, type);
164 }
165 LEAVE ("");
166}
void gnc_main_window_merge_actions(GncMainWindow *window, const gchar *group_name, GActionEntry *actions, guint n_actions, const gchar **ui_updates, const gchar *ui_filename, gpointer user_data)
Add a set of actions to the specified window.
#define DEBUG(format, args...)
Print a debugging message.
Definition qoflog.h:264
#define LEAVE(format, args...)
Print a function exit debugging message.
Definition qoflog.h:282
#define ENTER(format, args...)
Print a function entry debugging message.
Definition qoflog.h:272
const gchar * gnc_plugin_get_name(GncPlugin *plugin)
Retrieve the textual name of a plugin.
Definition gnc-plugin.c:212

◆ gnc_plugin_add_toolbar_tooltip_callbacks()

void gnc_plugin_add_toolbar_tooltip_callbacks ( GtkWidget *  toolbar,
GtkWidget *  statusbar 
)

This function adds the tooltip callbacks to make the tooltips appear in the status bar.

Parameters
toolbarThe main window tool bar widget.
statusbarThe status bar widget in the main window.

Definition at line 299 of file gnc-plugin.c.

300{
301 g_return_if_fail (GTK_IS_TOOLBAR(toolbar));
302 g_return_if_fail (GTK_IS_STATUSBAR(statusbar));
303
304 gtk_container_foreach (GTK_CONTAINER(toolbar), for_each_tool_action, statusbar);
305}

◆ gnc_plugin_get_name()

const gchar * gnc_plugin_get_name ( GncPlugin *  plugin)

Retrieve the textual name of a plugin.

Parameters
pluginThe plugin whose name should be returned.
Returns
A string containing the name of this plugin

Definition at line 212 of file gnc-plugin.c.

213{
214 g_return_val_if_fail (GNC_IS_PLUGIN (plugin), NULL);
215 return (GNC_PLUGIN_GET_CLASS(plugin)->plugin_name);
216}

◆ gnc_plugin_init_short_names()

void gnc_plugin_init_short_names ( GtkWidget *  toolbar,
GncToolBarShortNames toolbar_labels 
)

Add "short" labels to existing actions.

The "short" label is the string used on toolbar buttons when the action is visible.

See gnc-plugin.h for documentation on the function arguments.

The "short" label is the string used on toolbar buttons when the action is visible. All toolbar buttons are homogeneous in size and are sized to fit the longest label. Therefore, this structure should be used if an action name is more than one word. This way the menu can have the label "Whizzy Feature", while the toolbar button only has the label "Whizzy".

Parameters
action_groupThe group of all actions associated with a plugin or plugin page. All actions to me modified must be in this group.
toolbar_labelsA pointer to a NULL terminated array of data GncToolBarShortNames items.

Definition at line 229 of file gnc-plugin.c.

231{
232 g_return_if_fail (toolbar != NULL);
233 g_return_if_fail (toolbar_labels != NULL);
234
235 for (gint i = 0; (toolbar_labels[i].action_name); i++)
236 {
237 GtkWidget *tool_item = gnc_find_toolbar_item (toolbar, toolbar_labels[i].action_name);
238
239 if (!tool_item)
240 continue;
241
242 gtk_tool_button_set_label (GTK_TOOL_BUTTON(tool_item), _(toolbar_labels[i].short_label));
243 gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON(tool_item), TRUE);
244 }
245}
GtkWidget * gnc_find_toolbar_item(GtkWidget *toolbar, const gchar *action_name)
Search the toolbar for the tool item based on the action name.
const char * action_name
The name of the action.

◆ gnc_plugin_remove_from_window()

void gnc_plugin_remove_from_window ( GncPlugin *  plugin,
GncMainWindow *  window,
GQuark  type 
)

Remove the specified plugin from the specified window.

This function will call the plugin to perform any plugin specific actions and remove the page's user interface from the window.

Parameters
pluginThe plugin to be removed.
windowThe window the plugin should be removed from.
typeAn identifier for the type of window specified.

Definition at line 175 of file gnc-plugin.c.

178{
179 GncPluginClass *klass;
180
181 g_return_if_fail (GNC_IS_PLUGIN (plugin));
182 klass = GNC_PLUGIN_GET_CLASS (plugin);
183 ENTER (": plugin %s(%p), window %p", gnc_plugin_get_name(plugin),
184 plugin, window);
185
186 /*
187 * Do plugin specific actions.
188 */
189 if (GNC_PLUGIN_GET_CLASS (plugin)->remove_from_window)
190 {
191 DEBUG ("Calling child class function %p",
192 GNC_PLUGIN_GET_CLASS (plugin)->remove_from_window);
193 GNC_PLUGIN_GET_CLASS (plugin)->remove_from_window (plugin, window, type);
194 }
195
196 /*
197 * Update window to remove UI items
198 */
199 if (klass->actions_name && !gnc_main_window_just_plugin_prefs (window))
200 {
201 DEBUG ("%s: %d actions to unmerge",
202 klass->actions_name, (klass->n_actions));
203 gnc_main_window_unmerge_actions (window, klass->actions_name);
204 }
205 LEAVE ("");
206}
void gnc_main_window_unmerge_actions(GncMainWindow *window, const gchar *group_name)
Remove a set of actions from the specified window.

◆ gnc_plugin_set_actions_enabled()

void gnc_plugin_set_actions_enabled ( GActionMap *  action_map,
const gchar **  action_names,
gboolean  enable 
)

This function sets the sensitivity of a GAction in a specific group.

Parameters
action_mapThe action map associated with the window.
action_namesA NULL terminated list of actions names that should be modified.
enableA boolean specifying the new state for the specified property.

Definition at line 250 of file gnc-plugin.c.

252{
253 g_return_if_fail (action_map != NULL);
254
255 for (gint i = 0; action_names[i]; i++)
256 {
257 GAction *action = g_action_map_lookup_action (G_ACTION_MAP(action_map),
258 action_names[i]);
259 if (action)
260 g_simple_action_set_enabled (G_SIMPLE_ACTION(action), enable);
261 else
262 PERR("No such action with name '%s' in action group %p)",
263 action_names[i], action_map);
264 }
265}
#define PERR(format, args...)
Log a serious error.
Definition qoflog.h:244