mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
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:
@@ -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 ();
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user