GnuCash  2.6.99
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Files | Data Structures | Macros | Functions
Embedded Window Functions

Files

file  gnc-embedded-window.h
 Functions that are supported by all types of windows.
 

Data Structures

struct  GncEmbeddedWindow
 
struct  GncEmbeddedWindowClass
 

Macros

#define GNC_TYPE_EMBEDDED_WINDOW   (gnc_embedded_window_get_type ())
 
#define GNC_EMBEDDED_WINDOW(obj)   (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNC_TYPE_EMBEDDED_WINDOW, GncEmbeddedWindow))
 
#define GNC_EMBEDDED_WINDOW_CLASS(klass)   (G_TYPE_CHECK_CLASS_CAST ((klass), GNC_TYPE_EMBEDDED_WINDOW, GncEmbeddedWindowClass))
 
#define GNC_IS_EMBEDDED_WINDOW(obj)   (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNC_TYPE_EMBEDDED_WINDOW))
 
#define GNC_IS_EMBEDDED_WINDOW_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GNC_TYPE_EMBEDDED_WINDOW))
 
#define GNC_EMBEDDED_WINDOW_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GNC_TYPE_EMBEDDED_WINDOW, GncEmbeddedWindowClass))
 

Functions

GType gnc_embedded_window_get_type (void)
 
GncEmbeddedWindowgnc_embedded_window_new (const gchar *action_group_name, GtkActionEntry *action_entries, gint n_action_entries, const gchar *ui_filename, GtkWidget *enclosing_win, gboolean add_accelerators, gpointer user_data)
 
void gnc_embedded_window_open_page (GncEmbeddedWindow *window, GncPluginPage *page)
 
void gnc_embedded_window_close_page (GncEmbeddedWindow *window, GncPluginPage *page)
 
GncPluginPagegnc_embedded_window_get_page (GncEmbeddedWindow *window)
 

Detailed Description

Function Documentation

void gnc_embedded_window_close_page ( GncEmbeddedWindow window,
GncPluginPage page 
)

Remove a data plugin page from a window.

Parameters
windowThe window whose plugin is to be removed.
pageThe page of data to be removed.

Definition at line 161 of file gnc-embedded-window.c.

163 {
165 
166  g_return_if_fail (GNC_IS_EMBEDDED_WINDOW (window));
167  g_return_if_fail (GNC_IS_PLUGIN_PAGE (page));
168  priv = GNC_EMBEDDED_WINDOW_GET_PRIVATE(window);
169  g_return_if_fail (priv->page == page);
170 
171  ENTER("window %p, page %p", window, page);
172 
173  if (!page->notebook_page)
174  {
175  LEAVE("no displayed widget");
176  return;
177  }
178 
179  gtk_container_remove (GTK_CONTAINER(window), GTK_WIDGET(page->notebook_page));
180  priv->page = NULL;
181  gnc_plugin_page_removed (page);
182 
184  gtk_ui_manager_ensure_update (window->ui_merge);
185 
187  g_object_unref(page);
188  LEAVE(" ");
189 }
void gnc_plugin_page_destroy_widget(GncPluginPage *plugin_page)
#define ENTER(format, args...)
Definition: qoflog.h:261
void gnc_plugin_page_unmerge_actions(GncPluginPage *page, GtkUIManager *ui_merge)
GtkUIManager * ui_merge
#define LEAVE(format, args...)
Definition: qoflog.h:271
GtkWidget * notebook_page
GncPluginPage* gnc_embedded_window_get_page ( GncEmbeddedWindow window)

Retrieve the plugin that is embedded in the specified window.

Parameters
windowThe window whose plugin is desired.
Returns
A pointer to a GncPluginPage.

Definition at line 194 of file gnc-embedded-window.c.

195 {
197 
198  priv = GNC_EMBEDDED_WINDOW_GET_PRIVATE(window);
199  return priv->page;
200 }
GType gnc_embedded_window_get_type ( void  )

Get the type of a gnc embedded window.

Returns
A GType.

Definition at line 96 of file gnc-embedded-window.c.

97 {
98  static GType gnc_embedded_window_type = 0;
99 
100  if (gnc_embedded_window_type == 0)
101  {
102  static const GTypeInfo our_info =
103  {
104  sizeof (GncEmbeddedWindowClass),
105  NULL,
106  NULL,
107  (GClassInitFunc) gnc_embedded_window_class_init,
108  NULL,
109  NULL,
110  sizeof (GncEmbeddedWindow),
111  0,
112  (GInstanceInitFunc) gnc_embedded_window_init
113  };
114 
115  static const GInterfaceInfo plugin_info =
116  {
117  (GInterfaceInitFunc) gnc_window_embedded_window_init,
118  NULL,
119  NULL
120  };
121 
122  gnc_embedded_window_type = g_type_register_static (GTK_TYPE_VBOX,
123  "GncEmbeddedWindow",
124  &our_info, 0);
125  g_type_add_interface_static (gnc_embedded_window_type,
126  GNC_TYPE_WINDOW,
127  &plugin_info);
128  }
129 
130  return gnc_embedded_window_type;
131 }
GncEmbeddedWindow* gnc_embedded_window_new ( const gchar *  action_group_name,
GtkActionEntry *  action_entries,
gint  n_action_entries,
const gchar *  ui_filename,
GtkWidget *  enclosing_win,
gboolean  add_accelerators,
gpointer  user_data 
)

Create a new gnc embedded window plugin.

Returns
A pointer to the new object.

Create a new gnc embedded window plugin.

Definition at line 347 of file gnc-embedded-window.c.

354 {
356  GncEmbeddedWindow *window;
357  gchar *ui_fullname;
358  GError *error = NULL;
359  guint merge_id;
360 
361  ENTER("group %s, first %p, num %d, ui file %s, parent %p, add accelerators %d, user data %p",
362  action_group_name, action_entries, n_action_entries, ui_filename,
363  enclosing_win, add_accelerators, user_data);
364  window = g_object_new (GNC_TYPE_EMBEDDED_WINDOW, NULL);
365  priv = GNC_EMBEDDED_WINDOW_GET_PRIVATE(window);
366 
367  /* Determine the full pathname of the ui file */
368  ui_fullname = gnc_filepath_locate_ui_file (ui_filename);
369  g_return_val_if_fail (ui_fullname != NULL, NULL);
370 
371  priv->parent_window = enclosing_win;
372 
373  /* Create menu and toolbar information */
374  priv->action_group = gtk_action_group_new (action_group_name);
376  gtk_action_group_add_actions (priv->action_group, action_entries,
377  n_action_entries, user_data);
378  gtk_ui_manager_insert_action_group (window->ui_merge, priv->action_group, 0);
379  merge_id = gtk_ui_manager_add_ui_from_file (window->ui_merge, ui_fullname,
380  &error);
381 
382  /* Error checking */
383  g_assert(merge_id || error);
384  if (error)
385  {
386  g_critical("Failed to load ui file.\n Filename %s\n Error %s",
387  ui_fullname, error->message);
388  g_error_free(error);
389  g_free(ui_fullname);
390  LEAVE("window %p", window);
391  return window;
392  }
393 
394  /* Add accelerators (if wanted) */
395  if (add_accelerators)
396  gtk_window_add_accel_group (GTK_WINDOW(enclosing_win),
397  gtk_ui_manager_get_accel_group(window->ui_merge));
398 
399  gtk_ui_manager_ensure_update (window->ui_merge);
400  g_free(ui_fullname);
401  LEAVE("window %p", window);
402  return window;
403 }
gchar * gnc_filepath_locate_ui_file(const gchar *name)
#define ENTER(format, args...)
Definition: qoflog.h:261
GtkUIManager * ui_merge
#define LEAVE(format, args...)
Definition: qoflog.h:271
void gnc_gtk_action_group_set_translation_domain(GtkActionGroup *action_group, const gchar *domain)
void gnc_embedded_window_open_page ( GncEmbeddedWindow window,
GncPluginPage page 
)

Display a data plugin page in a window.

Parameters
windowThe window to display a new page in.
pageThe new page of data to be displayed.

Definition at line 136 of file gnc-embedded-window.c.

138 {
140 
141  g_return_if_fail (GNC_IS_EMBEDDED_WINDOW (window));
142  g_return_if_fail (GNC_IS_PLUGIN_PAGE (page));
143  priv = GNC_EMBEDDED_WINDOW_GET_PRIVATE(window);
144  g_return_if_fail (priv->page == NULL);
145 
146  ENTER("window %p, page %p", window, page);
147  priv->page = page;
148  page->window = GTK_WIDGET(window);
150 
151  gtk_box_pack_end(GTK_BOX(window), page->notebook_page, TRUE, TRUE, 2);
152  gnc_plugin_page_inserted (page);
153 
154  gnc_plugin_page_merge_actions (page, window->ui_merge);
155  LEAVE(" ");
156 }
void gnc_plugin_page_merge_actions(GncPluginPage *page, GtkUIManager *ui_merge)
GtkWidget * window
#define ENTER(format, args...)
Definition: qoflog.h:261
GtkWidget * gnc_plugin_page_create_widget(GncPluginPage *plugin_page)
GtkUIManager * ui_merge
#define LEAVE(format, args...)
Definition: qoflog.h:271
GtkWidget * notebook_page