more patches from Jan Petersen

(see the ChangeLog for more details).

this patch fixes some problems with the new ui plugin system.


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/branches/gnucash-gnome2-dev@8409 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Derek Atkins
2003-05-26 20:50:19 +00:00
parent 98db98ccf5
commit 231a242dd3
12 changed files with 276 additions and 188 deletions

View File

@@ -11,19 +11,17 @@
#include "druid-qif-import.h"
#include "messages.h"
static void gnc_plugin_qif_import_class_init (GncPluginQifImportClass *klass);
static void gnc_plugin_qif_import_init (GncPluginQifImport *plugin);
static void gnc_plugin_qif_import_finalize (GObject *object);
#define GNC_PLUGIN_QIF_IMPORT_DEFAULT_ACTIONS "gnc-plugin-qif-import-default-actions"
static void gnc_plugin_qif_import_plugin_init (GncPluginIface *iface);
static void gnc_plugin_qif_import_merge_actions (GncPlugin *plugin, EggMenuMerge *ui_merge);
static void gnc_plugin_qif_import_unmerge_actions (GncPlugin *plugin, EggMenuMerge *ui_merge);
static void gnc_plugin_qif_import_add_to_window (GncPlugin *plugin, GncMainWindow *window);
static void gnc_plugin_qif_import_remove_from_window (GncPlugin *plugin, GncMainWindow *window);
static const gchar *gnc_plugin_qif_import_get_name (GncPlugin *plugin);
static GncPluginPage *gnc_plugin_qif_import_create_page (GncPlugin *plugin, const gchar *uri);
/* Command callbacks */
static void gnc_plugin_qif_import_cmd_new_qif_import (EggAction *action, GncPluginQifImport *plugin);
static void gnc_plugin_qif_import_cmd_new_qif_import (EggAction *action, gpointer data);
static EggActionGroupEntry gnc_plugin_qif_import_actions [] = {
{ "QIFImportAction", N_("Import _QIF..."), GTK_STOCK_CONVERT, "<control>i",
@@ -32,14 +30,6 @@ static EggActionGroupEntry gnc_plugin_qif_import_actions [] = {
};
static guint gnc_plugin_qif_import_n_actions = G_N_ELEMENTS (gnc_plugin_qif_import_actions);
struct GncPluginQifImportPrivate
{
EggActionGroup *action_group;
guint merge_id;
};
static GObjectClass *parent_class = NULL;
GType
gnc_plugin_qif_import_get_type (void)
{
@@ -50,12 +40,12 @@ gnc_plugin_qif_import_get_type (void)
sizeof (GncPluginQifImportClass),
NULL,
NULL,
(GClassInitFunc) gnc_plugin_qif_import_class_init,
NULL,
NULL,
NULL,
sizeof (GncPluginQifImport),
0,
(GInstanceInitFunc) gnc_plugin_qif_import_init
NULL
};
static const GInterfaceInfo plugin_info = {
@@ -79,91 +69,39 @@ gnc_plugin_qif_import_get_type (void)
GncPlugin *
gnc_plugin_qif_import_new (void)
{
GncPluginQifImport *plugin;
plugin = g_object_new (GNC_TYPE_PLUGIN_QIF_IMPORT,
NULL);
return GNC_PLUGIN (plugin);
return GNC_PLUGIN (g_object_new (GNC_TYPE_PLUGIN_QIF_IMPORT, NULL));
}
static void
gnc_plugin_qif_import_class_init (GncPluginQifImportClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
object_class->finalize = gnc_plugin_qif_import_finalize;
}
static void
gnc_plugin_qif_import_init (GncPluginQifImport *plugin)
{
gint i;
plugin->priv = g_new0 (GncPluginQifImportPrivate, 1);
/* Create menu and toolbar information */
for (i = 0; i < gnc_plugin_qif_import_n_actions; i++) {
gnc_plugin_qif_import_actions[i].user_data = plugin;
}
plugin->priv->action_group = egg_action_group_new ("GncPluginQifImportActions");
egg_action_group_add_actions (plugin->priv->action_group, gnc_plugin_qif_import_actions,
gnc_plugin_qif_import_n_actions);
}
static void
gnc_plugin_qif_import_finalize (GObject *object)
{
GncPluginQifImport *model = GNC_PLUGIN_QIF_IMPORT (object);
g_return_if_fail (GNC_IS_PLUGIN_QIF_IMPORT (model));
g_return_if_fail (model->priv != NULL);
g_free (model->priv);
G_OBJECT_CLASS (parent_class)->finalize (object);
}
static void
gnc_plugin_qif_import_plugin_init (GncPluginIface *iface)
{
iface->merge_actions = gnc_plugin_qif_import_merge_actions;
iface->unmerge_actions = gnc_plugin_qif_import_unmerge_actions;
iface->add_to_window = gnc_plugin_qif_import_add_to_window;
iface->remove_from_window = gnc_plugin_qif_import_remove_from_window;
iface->get_name = gnc_plugin_qif_import_get_name;
iface->create_page = gnc_plugin_qif_import_create_page;
}
static void
gnc_plugin_qif_import_merge_actions (GncPlugin *plugin,
EggMenuMerge *ui_merge)
gnc_plugin_qif_import_add_to_window (GncPlugin *plugin,
GncMainWindow *window)
{
GncPluginQifImport *plugin_qif_import = GNC_PLUGIN_QIF_IMPORT(plugin);
g_return_if_fail (GNC_IS_PLUGIN_QIF_IMPORT (plugin_qif_import));
g_return_if_fail (GNC_IS_PLUGIN_QIF_IMPORT (plugin));
g_return_if_fail (GNC_IS_MAIN_WINDOW (window));
egg_menu_merge_insert_action_group (ui_merge, plugin_qif_import->priv->action_group, 0);
plugin_qif_import->priv->merge_id = egg_menu_merge_add_ui_from_file (ui_merge,
GNC_UI_DIR "/gnc-plugin-qif-import-ui.xml",
NULL);
egg_menu_merge_ensure_update (ui_merge);
gnc_main_window_merge_actions (window, GNC_PLUGIN_QIF_IMPORT_DEFAULT_ACTIONS,
gnc_plugin_qif_import_actions, gnc_plugin_qif_import_n_actions,
GNC_UI_DIR "/gnc-plugin-qif-import-ui.xml", NULL);
}
static void
gnc_plugin_qif_import_unmerge_actions (GncPlugin *plugin,
EggMenuMerge *ui_merge)
gnc_plugin_qif_import_remove_from_window (GncPlugin *plugin,
GncMainWindow *window)
{
GncPluginQifImport *plugin_qif_import = GNC_PLUGIN_QIF_IMPORT(plugin);
g_return_if_fail (GNC_IS_PLUGIN_QIF_IMPORT (plugin_qif_import));
g_return_if_fail (plugin_qif_import->priv->merge_id != 0);
g_return_if_fail (plugin_qif_import->priv->action_group != NULL);
g_return_if_fail (GNC_IS_PLUGIN_QIF_IMPORT (plugin));
g_return_if_fail (GNC_IS_MAIN_WINDOW (window));
egg_menu_merge_remove_action_group (ui_merge, plugin_qif_import->priv->action_group);
egg_menu_merge_remove_ui (ui_merge, plugin_qif_import->priv->merge_id);
gnc_main_window_unmerge_actions (window, GNC_PLUGIN_QIF_IMPORT_DEFAULT_ACTIONS);
}
static const gchar *
@@ -182,7 +120,7 @@ gnc_plugin_qif_import_create_page (GncPlugin *plugin,
/* Command callbacks */
static void
gnc_plugin_qif_import_cmd_new_qif_import (EggAction *action, GncPluginQifImport *plugin)
gnc_plugin_qif_import_cmd_new_qif_import (EggAction *action, gpointer data)
{
gnc_ui_qif_import_druid_make ();
}

View File

@@ -24,12 +24,8 @@ G_BEGIN_DECLS
#define GNC_PLUGIN_QIF_IMPORT_NAME "gnc-plugin-qif-import"
/* typedefs & structures */
typedef struct GncPluginQifImportPrivate GncPluginQifImportPrivate;
typedef struct {
GObject parent;
GncPluginQifImportPrivate *priv;
} GncPluginQifImport;
typedef struct {