Replace Account Hierarchy setup druid with gtkbuilder compatible gtkassistant

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@20533 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Geert Janssens 2011-04-05 19:55:45 +00:00
parent 6107870317
commit 3a809cfc98
7 changed files with 109 additions and 881 deletions

View File

@ -24,6 +24,7 @@ libgnc_gnome_la_LIBADD = \
libgnc_gnome_la_SOURCES = \ libgnc_gnome_la_SOURCES = \
swig-gnome.c \ swig-gnome.c \
assistant-hierarchy.c \
dialog-commodities.c \ dialog-commodities.c \
dialog-fincalc.c \ dialog-fincalc.c \
dialog-find-transactions.c \ dialog-find-transactions.c \
@ -37,7 +38,6 @@ libgnc_gnome_la_SOURCES = \
dialog-sx-since-last-run.c \ dialog-sx-since-last-run.c \
dialog-tax-info.c \ dialog-tax-info.c \
druid-acct-period.c \ druid-acct-period.c \
druid-hierarchy.c \
druid-loan.c \ druid-loan.c \
druid-stock-split.c \ druid-stock-split.c \
gnc-plugin-account-tree.c \ gnc-plugin-account-tree.c \
@ -64,6 +64,7 @@ gnomeapp_DATA = $(gnomeapp_in_files:.desktop.in=.desktop)
appicondir = $(datadir)/pixmaps appicondir = $(datadir)/pixmaps
noinst_HEADERS = \ noinst_HEADERS = \
assistant-hierarchy.h \
dialog-fincalc.h \ dialog-fincalc.h \
dialog-find-transactions.h \ dialog-find-transactions.h \
dialog-new-user.h \ dialog-new-user.h \
@ -73,7 +74,6 @@ noinst_HEADERS = \
dialog-sx-from-trans.h \ dialog-sx-from-trans.h \
dialog-sx-since-last-run.h \ dialog-sx-since-last-run.h \
druid-acct-period.h \ druid-acct-period.h \
druid-hierarchy.h \
druid-loan.h \ druid-loan.h \
druid-stock-split.h \ druid-stock-split.h \
gnc-plugin-account-tree.h \ gnc-plugin-account-tree.h \

View File

@ -1,7 +1,8 @@
/********************************************************************\ /********************************************************************\
* druid-hierarchy.c -- account hierarchy creation functionality * * assistant-hierarchy.c -- account hierarchy creation functionality*
* Copyright (C) 2001 Gnumatic, Inc. * * Copyright (C) 2001 Gnumatic, Inc. *
* Copyright (C) 2006 David Hampton <hampton@employees.org> * * Copyright (C) 2006 David Hampton <hampton@employees.org> *
* Copyright (C) 2010 Geert Janssens *
* * * *
* This program is free software; you can redistribute it and/or * * This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as * * modify it under the terms of the GNU General Public License as *
@ -33,9 +34,8 @@
#include "gnc-account-merge.h" #include "gnc-account-merge.h"
#include "dialog-new-user.h" #include "dialog-new-user.h"
#include "dialog-utils.h" #include "dialog-utils.h"
#include "dialog-file-access.h" #include "assistant-hierarchy.h"
#include "druid-hierarchy.h" #include "assistant-utils.h"
#include "druid-utils.h"
#include "gnc-amount-edit.h" #include "gnc-amount-edit.h"
#include "gnc-currency-edit.h" #include "gnc-currency-edit.h"
#include "gnc-exp-parser.h" #include "gnc-exp-parser.h"
@ -71,7 +71,7 @@ typedef enum
typedef struct typedef struct
{ {
GtkWidget *dialog; GtkWidget *dialog;
GtkWidget *druid; GtkWidget *assistant;
gboolean next_ok; gboolean next_ok;
GtkWidget *currency_selector; GtkWidget *currency_selector;
@ -96,22 +96,20 @@ typedef struct
gboolean account_list_added; gboolean account_list_added;
gboolean use_defaults; gboolean use_defaults;
GncHierarchyDruidFinishedCallback when_completed; GncHierarchyAssistantFinishedCallback when_completed;
} hierarchy_data; } hierarchy_data;
void on_choose_account_categories_prepare (GnomeDruidPage *gnomedruidpage, G_MODULE_EXPORT void on_prepare (GtkAssistant *assistant, GtkWidget *page,
gpointer arg1,
hierarchy_data *data); hierarchy_data *data);
void select_all_clicked (GtkButton *button, void on_choose_account_categories_prepare (hierarchy_data *data);
G_MODULE_EXPORT void select_all_clicked (GtkButton *button,
hierarchy_data *data); hierarchy_data *data);
void clear_all_clicked (GtkButton *button, G_MODULE_EXPORT void clear_all_clicked (GtkButton *button,
hierarchy_data *data); hierarchy_data *data);
void on_final_account_prepare (GnomeDruidPage *gnomedruidpage, void on_final_account_prepare (hierarchy_data *data);
gpointer arg1, G_MODULE_EXPORT void on_cancel (GtkAssistant *gtkassistant, hierarchy_data *data);
hierarchy_data *data); G_MODULE_EXPORT void on_finish (GtkAssistant *gtkassistant, hierarchy_data *data);
void on_cancel (GnomeDruid *gnomedruid, hierarchy_data *data);
void on_finish (GnomeDruidPage *gnomedruidpage, gpointer arg1, hierarchy_data *data);
// ------------------------------------------------------------ // ------------------------------------------------------------
@ -228,28 +226,8 @@ gnc_get_ea_locale_dir(const char *top_dir)
* Choose Categories Page * * Choose Categories Page *
************************************************************/ ************************************************************/
/** This is a helper function to get around a gtk issue (probably and
* ordering issue) where you cannot set this button as sensitive
* during the initial creation of the druid page. Using a delayed
* idle function works correctly for both the initial page creation
* and the subsequent changes when account sets are
* selected/deselected.
*
* @param data A pointer to the data structure describing the
* hierarchy druid.
*
* @return Always returns FALSE to remove this function from the idle
* loop. */
static gboolean
delayed_enable_next_button (hierarchy_data *data)
{
gnome_druid_set_buttons_sensitive(GNOME_DRUID(data->druid),
TRUE, data->next_ok, TRUE, TRUE);
return FALSE;
}
/** This is a helper function called on each item in the GtkTreeStore /** This is a helper function called on each item in the GtkTreeStore
* by categories_page_enable_next. The purpose is to determine is an * by categories_page_enable_next. The purpose is to determine if an
* account set has been selected. * account set has been selected.
* *
* @param store The GtkListStore containing one line per account set. * @param store The GtkListStore containing one line per account set.
@ -290,15 +268,23 @@ account_set_checked_helper (GtkListStore *store,
* sensitive if one or more account sets has been selected. * sensitive if one or more account sets has been selected.
* *
* @param data A pointer to the data structure describing the * @param data A pointer to the data structure describing the
* hierarchy druid. */ * hierarchy assistant. */
static void static void
categories_page_enable_next (hierarchy_data *data) categories_page_enable_next (hierarchy_data *data)
{ {
gint currentpagenum;
GtkWidget *currentpage;
GtkAssistant *assistant = GTK_ASSISTANT(data->dialog);
data->next_ok = FALSE; data->next_ok = FALSE;
gtk_tree_model_foreach (gtk_tree_view_get_model (data->categories_tree), gtk_tree_model_foreach (gtk_tree_view_get_model (data->categories_tree),
(GtkTreeModelForeachFunc)account_set_checked_helper, (GtkTreeModelForeachFunc)account_set_checked_helper,
&data->next_ok); &data->next_ok);
g_idle_add((GSourceFunc)delayed_enable_next_button, data);
currentpagenum = gtk_assistant_get_current_page(assistant);
currentpage = gtk_assistant_get_nth_page(assistant, currentpagenum);
gtk_assistant_set_page_complete(assistant, currentpage, data->next_ok);
} }
@ -441,10 +427,27 @@ account_categories_tree_view_prepare (hierarchy_data *data)
} }
} }
G_MODULE_EXPORT void on_prepare (GtkAssistant *assistant, GtkWidget *page,
hierarchy_data *data)
{
gint currentpage = gtk_assistant_get_current_page(assistant);
switch (gtk_assistant_get_current_page(assistant))
{
case 2:
/* Current page is account selection */
on_choose_account_categories_prepare(data);
break;
case 3:
/* Current page is final account page */
on_final_account_prepare (data);
break;
}
}
void void
on_choose_account_categories_prepare (GnomeDruidPage *gnomedruidpage, on_choose_account_categories_prepare (hierarchy_data *data)
gpointer arg1,
hierarchy_data *data)
{ {
GtkTextBuffer* buffer; GtkTextBuffer* buffer;
@ -540,7 +543,7 @@ select_helper (GtkListStore *store,
return FALSE; /* Run entire tree */ return FALSE; /* Run entire tree */
} }
void G_MODULE_EXPORT void
select_all_clicked (GtkButton *button, select_all_clicked (GtkButton *button,
hierarchy_data *data) hierarchy_data *data)
{ {
@ -549,7 +552,7 @@ select_all_clicked (GtkButton *button,
GINT_TO_POINTER(TRUE)); GINT_TO_POINTER(TRUE));
} }
void G_MODULE_EXPORT void
clear_all_clicked (GtkButton *button, clear_all_clicked (GtkButton *button,
hierarchy_data *data) hierarchy_data *data)
{ {
@ -858,9 +861,7 @@ use_existing_account_data_func(GtkTreeViewColumn *tree_column,
} }
void void
on_final_account_prepare (GnomeDruidPage *gnomedruidpage, on_final_account_prepare (hierarchy_data *data)
gpointer arg1,
hierarchy_data *data)
{ {
GSList *actlist; GSList *actlist;
GtkTreeView *tree_view; GtkTreeView *tree_view;
@ -978,8 +979,8 @@ on_final_account_prepare (GnomeDruidPage *gnomedruidpage,
gnc_resume_gui_refresh (); gnc_resume_gui_refresh ();
} }
void G_MODULE_EXPORT void
on_cancel (GnomeDruid *gnomedruid, on_cancel (GtkAssistant *gtkassistant,
hierarchy_data *data) hierarchy_data *data)
{ {
gnc_suspend_gui_refresh (); gnc_suspend_gui_refresh ();
@ -1003,12 +1004,11 @@ starting_balance_helper (Account *account, hierarchy_data *data)
gnc_get_current_book ()); gnc_get_current_book ());
} }
void G_MODULE_EXPORT void
on_finish (GnomeDruidPage *gnomedruidpage, on_finish (GtkAssistant *gtkassistant,
gpointer arg1,
hierarchy_data *data) hierarchy_data *data)
{ {
GncHierarchyDruidFinishedCallback when_completed; GncHierarchyAssistantFinishedCallback when_completed;
ENTER (" "); ENTER (" ");
if (data->our_account_tree) if (data->our_account_tree)
@ -1042,50 +1042,63 @@ on_finish (GnomeDruidPage *gnomedruidpage,
} }
static GtkWidget * static GtkWidget *
gnc_create_hierarchy_druid (gboolean use_defaults, GncHierarchyDruidFinishedCallback when_completed) gnc_create_hierarchy_assistant (gboolean use_defaults, GncHierarchyAssistantFinishedCallback when_completed)
{ {
hierarchy_data *data; hierarchy_data *data;
GtkWidget *dialog; GtkWidget *dialog;
GtkTreeView *tree_view; GtkTreeView *tree_view;
GtkWidget *box, *start_page; GtkWidget *box, *start_page;
GladeXML *xml; GtkBuilder *builder;
GdkColor *color; GdkColor *color;
data = g_new0 (hierarchy_data, 1); data = g_new0 (hierarchy_data, 1);
xml = gnc_glade_xml_new ("account.glade", "Hierarchy Druid"); builder = gnc_builder_add_from_file ("account.glade", "Hierarchy Assistant");
dialog = glade_xml_get_widget (xml, "Hierarchy Druid"); dialog = GTK_WIDGET(gtk_builder_get_object (builder, "Hierarchy Assistant"));
data->dialog = dialog; data->dialog = dialog;
data->druid = glade_xml_get_widget (xml, "hierarchy_druid"); gnc_assistant_set_colors (GTK_ASSISTANT (data->dialog));
gnc_druid_set_colors (GNOME_DRUID (data->druid));
start_page = glade_xml_get_widget (xml, "start_page"); /* Enable buttons on first and last page. */
gtk_widget_show (start_page); gtk_assistant_set_page_complete (GTK_ASSISTANT (dialog),
gtk_widget_show (glade_xml_get_widget (xml, "newUserDruidFinishPage")); GTK_WIDGET(gtk_builder_get_object(builder, "intro_page_label")),
TRUE);
gtk_assistant_set_page_complete (GTK_ASSISTANT (dialog),
GTK_WIDGET(gtk_builder_get_object(builder, "currency_page_vbox")),
TRUE);
gtk_assistant_set_page_complete (GTK_ASSISTANT (dialog),
GTK_WIDGET(gtk_builder_get_object(builder, "final_account_vbox")),
TRUE);
gtk_assistant_set_page_complete (GTK_ASSISTANT (dialog),
GTK_WIDGET(gtk_builder_get_object(builder, "finish_page_label")),
TRUE);
/* Currency Page */ /* Currency Page */
data->currency_selector = gnc_currency_edit_new(); data->currency_selector = gnc_currency_edit_new();
gnc_currency_edit_set_currency (GNC_CURRENCY_EDIT(data->currency_selector), gnc_default_currency()); gnc_currency_edit_set_currency (GNC_CURRENCY_EDIT(data->currency_selector), gnc_default_currency());
gtk_widget_show (data->currency_selector); gtk_widget_show (data->currency_selector);
box = glade_xml_get_widget (xml, "currency_chooser_vbox"); box = GTK_WIDGET(gtk_builder_get_object (builder, "currency_chooser_vbox"));
gtk_box_pack_start(GTK_BOX(box), data->currency_selector, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(box), data->currency_selector, FALSE, FALSE, 0);
/* Categories Page */ /* Categories Page */
tree_view = GTK_TREE_VIEW(glade_xml_get_widget (xml, "account_categories_tree_view")); tree_view = GTK_TREE_VIEW(gtk_builder_get_object (builder, "account_categories_tree_view"));
g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (tree_view)), "changed", g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (tree_view)), "changed",
G_CALLBACK (categories_tree_selection_changed), data); G_CALLBACK (categories_tree_selection_changed), data);
gtk_tree_selection_set_mode (gtk_tree_view_get_selection (tree_view), GTK_SELECTION_SINGLE); gtk_tree_selection_set_mode (gtk_tree_view_get_selection (tree_view), GTK_SELECTION_SINGLE);
data->categories_tree = tree_view; data->categories_tree = tree_view;
data->category_accounts_label = GTK_LABEL(glade_xml_get_widget (xml, "accounts_in_category_label")); data->category_accounts_label = GTK_LABEL(gtk_builder_get_object (builder, "accounts_in_category_label"));
data->category_accounts_container = glade_xml_get_widget (xml, "accounts_in_category"); data->category_accounts_container = GTK_WIDGET(gtk_builder_get_object (builder, "accounts_in_category"));
data->category_description = GTK_TEXT_VIEW(glade_xml_get_widget (xml, "account_types_description")); data->category_description = GTK_TEXT_VIEW(gtk_builder_get_object (builder, "account_types_description"));
data->account_list_added = FALSE;
/* FIXME -- what is this ?
color = &GNOME_DRUID_PAGE_EDGE(start_page)->textbox_color; color = &GNOME_DRUID_PAGE_EDGE(start_page)->textbox_color;
gtk_widget_modify_base(GTK_WIDGET(data->category_description), GTK_STATE_INSENSITIVE, color); gtk_widget_modify_base(GTK_WIDGET(data->category_description), GTK_STATE_INSENSITIVE, color);
*/
/* Final Accounts Page */ /* Final Accounts Page */
data->final_account_tree_container = glade_xml_get_widget (xml, "final_account_tree_box"); data->final_account_tree_container = GTK_WIDGET(gtk_builder_get_object (builder, "final_account_tree_box"));
data->final_account_tree = NULL; data->final_account_tree = NULL;
data->balance_hash = g_hash_table_new(NULL, NULL); data->balance_hash = g_hash_table_new(NULL, NULL);
@ -1093,7 +1106,7 @@ gnc_create_hierarchy_druid (gboolean use_defaults, GncHierarchyDruidFinishedCall
g_signal_connect (G_OBJECT(dialog), "destroy", g_signal_connect (G_OBJECT(dialog), "destroy",
G_CALLBACK (gnc_hierarchy_destroy_cb), data); G_CALLBACK (gnc_hierarchy_destroy_cb), data);
glade_xml_signal_autoconnect_full(xml, gnc_glade_autoconnect_full_func, data); gtk_builder_connect_signals(builder, data);
data->when_completed = when_completed; data->when_completed = when_completed;
data->use_defaults = use_defaults; data->use_defaults = use_defaults;
@ -1101,16 +1114,16 @@ gnc_create_hierarchy_druid (gboolean use_defaults, GncHierarchyDruidFinishedCall
} }
GtkWidget* GtkWidget*
gnc_ui_hierarchy_druid(gboolean use_defaults) gnc_ui_hierarchy_assistant(gboolean use_defaults)
{ {
return gnc_create_hierarchy_druid(use_defaults, NULL); return gnc_create_hierarchy_assistant(use_defaults, NULL);
} }
GtkWidget* GtkWidget*
gnc_ui_hierarchy_druid_with_callback(gboolean use_defaults, gnc_ui_hierarchy_assistant_with_callback(gboolean use_defaults,
GncHierarchyDruidFinishedCallback when_finished) GncHierarchyAssistantFinishedCallback when_finished)
{ {
return gnc_create_hierarchy_druid(use_defaults, when_finished); return gnc_create_hierarchy_assistant(use_defaults, when_finished);
} }
static void static void
@ -1119,21 +1132,20 @@ create_account_page(void)
GncPluginPage *page; GncPluginPage *page;
page = gnc_plugin_page_account_tree_new(); page = gnc_plugin_page_account_tree_new();
gnc_main_window_open_page(NULL, page); gnc_main_window_open_page(NULL, page);
gnc_ui_file_access_for_save_as();
} }
static void static void
gnc_ui_hierarchy_druid_hook (void) gnc_ui_hierarchy_assistant_hook (void)
{ {
if (gnc_gconf_get_bool(GCONF_SECTION, "show_on_new_file", NULL)) if (gnc_gconf_get_bool(GCONF_SECTION, "show_on_new_file", NULL))
{ {
gnc_ui_hierarchy_druid_with_callback(TRUE, create_account_page); gnc_ui_hierarchy_assistant_with_callback(TRUE, create_account_page);
} }
} }
void void
gnc_ui_hierarchy_druid_initialize (void) gnc_ui_hierarchy_assistant_initialize (void)
{ {
gnc_hook_add_dangler(HOOK_NEW_BOOK, gnc_hook_add_dangler(HOOK_NEW_BOOK,
(GFunc)gnc_ui_hierarchy_druid_hook, NULL); (GFunc)gnc_ui_hierarchy_assistant_hook, NULL);
} }

View File

@ -1,6 +1,7 @@
/********************************************************************\ /********************************************************************\
* druid-hierarchy.h -- account hierarchy creation functionality * * assistant-hierarchy.h -- account hierarchy creation functionality*
* Copyright (C) 2001 Gnumatic, Inc. * * Copyright (C) 2001 Gnumatic, Inc. *
* Copyright (C) 2010 Geert Janssens *
* * * *
* This program is free software; you can redistribute it and/or * * This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as * * modify it under the terms of the GNU General Public License as *
@ -20,20 +21,20 @@
* Boston, MA 02110-1301, USA gnu@gnu.org * * Boston, MA 02110-1301, USA gnu@gnu.org *
\********************************************************************/ \********************************************************************/
#ifndef DRUID_HIERARCHY_H #ifndef ASSISTANT_HIERARCHY_H
#define DRUID_HIERARCHY_H #define ASSISTANT_HIERARCHY_H
/** /**
* A callback (provided by the caller) to be invoked when the druid * A callback (provided by the caller) to be invoked when the assistant
* completes successfully. I.e., the new-user druid can finish the GnuCash * completes successfully. I.e., the new-user assistant can finish the GnuCash
* New-User Experience, create an account plugin-page, &c. * New-User Experience, create an account plugin-page, &c.
**/ **/
typedef void (*GncHierarchyDruidFinishedCallback)(void); typedef void (*GncHierarchyAssistantFinishedCallback)(void);
GtkWidget* gnc_ui_hierarchy_druid (gboolean use_defaults); GtkWidget* gnc_ui_hierarchy_assistant (gboolean use_defaults);
GtkWidget* gnc_ui_hierarchy_druid_with_callback(gboolean use_defaults, GncHierarchyDruidFinishedCallback when_finished); GtkWidget* gnc_ui_hierarchy_assistant_with_callback(gboolean use_defaults, GncHierarchyAssistantFinishedCallback when_finished);
void gnc_ui_hierarchy_druid_initialize (void); void gnc_ui_hierarchy_assistant_initialize (void);
#endif #endif

View File

@ -28,7 +28,7 @@
#include "dialog-new-user.h" #include "dialog-new-user.h"
#include "dialog-utils.h" #include "dialog-utils.h"
#include "druid-hierarchy.h" #include "assistant-hierarchy.h"
#include "gnc-engine.h" #include "gnc-engine.h"
#include "gnc-gconf-utils.h" #include "gnc-gconf-utils.h"
#include "gnc-hooks.h" #include "gnc-hooks.h"
@ -62,7 +62,7 @@ gnc_set_first_startup (gboolean first_startup)
} }
static void static void
after_hierarchy_druid(void) after_hierarchy_assistant(void)
{ {
GncPluginPage *page; GncPluginPage *page;
@ -107,7 +107,7 @@ gnc_ui_new_user_dialog (void)
case GTK_RESPONSE_OK: case GTK_RESPONSE_OK:
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (new_accounts_button))) if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (new_accounts_button)))
{ {
gnc_ui_hierarchy_druid_with_callback(TRUE, after_hierarchy_druid); gnc_ui_hierarchy_assistant_with_callback(TRUE, after_hierarchy_assistant);
break; break;
} }
else if ((qifImportDruidFcn != NULL) else if ((qifImportDruidFcn != NULL)

View File

@ -9,7 +9,6 @@
<property name="title" translatable="yes">New Account</property> <property name="title" translatable="yes">New Account</property>
<property name="window_position">center</property> <property name="window_position">center</property>
<property name="type_hint">dialog</property> <property name="type_hint">dialog</property>
<property name="has_separator">False</property>
<child internal-child="vbox"> <child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox12"> <widget class="GtkVBox" id="dialog-vbox12">
<property name="visible">True</property> <property name="visible">True</property>
@ -819,414 +818,6 @@
</widget> </widget>
</child> </child>
</widget> </widget>
<widget class="GtkWindow" id="Hierarchy Druid">
<property name="visible">True</property>
<property name="border_width">1</property>
<property name="title" translatable="yes">New Account Hierarchy Setup</property>
<property name="window_position">center-on-parent</property>
<property name="default_width">640</property>
<property name="default_height">550</property>
<property name="type_hint">dialog</property>
<child>
<widget class="GnomeDruid" id="hierarchy_druid">
<property name="visible">True</property>
<property name="border_width">4</property>
<property name="show_finish">True</property>
<signal name="cancel" handler="on_cancel"/>
<child>
<widget class="GnomeDruidPageEdge" id="start_page">
<property name="visible">True</property>
<property name="position">Edge Start</property>
<property name="title" translatable="yes">New Account Hierarchy Setup</property>
<property name="text" translatable="yes">This assistant will help you create a set of GnuCash accounts for your assets (such as investments, checking or savings accounts), liabilities (such as loans) and different kinds of income and expenses you might have.
Click 'Cancel' if you do not wish to create any new accounts now.</property>
</widget>
</child>
<child>
<widget class="GnomeDruidPageStandard" id="currency_choose_page">
<property name="visible">True</property>
<property name="title" translatable="yes">Choose Currency</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="vbox2">
<property name="visible">True</property>
<property name="border_width">20</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<widget class="GtkLabel" id="newUserChooseCurrencyDescrip">
<property name="visible">True</property>
<property name="label" translatable="yes">Please choose the currency to use for new accounts.</property>
<property name="justify">center</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<child>
<widget class="GtkLabel" id="label8477440">
<property name="visible">True</property>
</widget>
<packing>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="currency_chooser_vbox">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label8477441">
<property name="visible">True</property>
</widget>
<packing>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GnomeDruidPageStandard" id="choose_account_types_page">
<property name="visible">True</property>
<property name="title" translatable="yes">Choose accounts to create</property>
<signal name="prepare" handler="on_choose_account_categories_prepare"/>
<child internal-child="vbox">
<widget class="GtkVBox" id="druid-vbox1">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<widget class="GtkLabel" id="pickAccountsDescriptionLabel">
<property name="visible">True</property>
<property name="label" translatable="yes">Select categories that correspond to the ways that you will use GnuCash. Each category you select will cause several accounts to be created. Select the categories that are relevant to you. You can always create additional accounts by hand later.</property>
<property name="wrap">True</property>
<property name="width_chars">75</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkHPaned" id="hpaned2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="position">336</property>
<child>
<widget class="GtkVPaned" id="vpaned2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="orientation">vertical</property>
<property name="position">200</property>
<child>
<widget class="GtkVBox" id="vbox7">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<widget class="GtkLabel" id="label8477431">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;b&gt;Categories&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment11">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">automatic</property>
<property name="shadow_type">in</property>
<child>
<widget class="GtkTreeView" id="account_categories_tree_view">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="reorderable">True</property>
<property name="rules_hint">True</property>
</widget>
</child>
</widget>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment12">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
<widget class="GtkHButtonBox" id="hbuttonbox3">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="layout_style">spread</property>
<child>
<widget class="GtkButton" id="select_all_button">
<property name="label" translatable="yes">_Select All</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<signal name="clicked" handler="select_all_clicked"/>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="clear_all_button">
<property name="label" translatable="yes">C_lear All</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<signal name="clicked" handler="clear_all_clicked"/>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</widget>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="position">2</property>
</packing>
</child>
</widget>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox130">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<widget class="GtkLabel" id="label8477397">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;b&gt;Category Description&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment10">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow31">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<property name="shadow_type">in</property>
<child>
<widget class="GtkTextView" id="account_types_description">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="editable">False</property>
<property name="wrap_mode">word</property>
<property name="cursor_visible">False</property>
<property name="accepts_tab">False</property>
</widget>
</child>
</widget>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
</widget>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox131">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<widget class="GtkLabel" id="accounts_in_category_label">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label">&lt;b&gt;Accounts in %s&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment13">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
<widget class="GtkScrolledWindow" id="accounts_in_category">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<property name="shadow_type">in</property>
<child>
<placeholder/>
</child>
</widget>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GnomeDruidPageStandard" id="final_account_page">
<property name="visible">True</property>
<property name="title" translatable="yes">Setup selected accounts</property>
<signal name="prepare" handler="on_final_account_prepare"/>
<child internal-child="vbox">
<widget class="GtkVBox" id="druid-vbox3">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="orientation">vertical</property>
<property name="spacing">10</property>
<child>
<widget class="GtkLabel" id="finalAccountLabel">
<property name="visible">True</property>
<property name="xpad">1</property>
<property name="ypad">1</property>
<property name="label" translatable="yes">If you would like to change an account's name, click on the row containing the account, then click on the account name and change it.
Some accounts are marked as "Placeholder". Placeholder accounts are used to create a hierarchy of accounts and normally do not have transactions or opening balances. If you would like an account to be a placeholder account, click the checkbox for that account.
If you would like an account to have an opening balance, click on the row containing the account, then click on the opening balance field and enter the starting balance.
Note: all accounts except Equity and placeholder accounts may have an opening balance.
</property>
<property name="wrap">True</property>
<property name="width_chars">75</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">5</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkScrolledWindow" id="final_account_tree_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<property name="shadow_type">in</property>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GnomeDruidPageEdge" id="newUserDruidFinishPage">
<property name="visible">True</property>
<property name="position">GNOME_EDGE_FINISH</property>
<property name="title" translatable="yes">Finish Account Setup</property>
<property name="text" translatable="yes">Press `Apply' to create your new accounts. You will then be able to save them to a file or database.
Press `Back' to review your selections.
Press `Cancel' to close this dialog without creating any new accounts.</property>
<signal name="finish" handler="on_finish"/>
</widget>
</child>
</widget>
</child>
</widget>
<widget class="GtkDialog" id="Account Picker"> <widget class="GtkDialog" id="Account Picker">
<property name="visible">True</property> <property name="visible">True</property>
<property name="title" translatable="yes">Select Account</property> <property name="title" translatable="yes">Select Account</property>
@ -2199,380 +1790,4 @@ Press `Cancel' to close this dialog without creating any new accounts.</property
</widget> </widget>
</child> </child>
</widget> </widget>
<widget class="GtkAssistant" id="Hierarchy Assistant">
<property name="border_width">12</property>
<signal name="cancel" handler="on_cancel"/>
<signal name="close" handler="on_finish"/>
<child>
<widget class="GtkLabel" id="intro_page_label">
<property name="visible">True</property>
<property name="label" translatable="yes">This assistant will help you create a set of GnuCash accounts for your assets (such as investments, checking or savings accounts), liabilities (such as loans) and different kinds of income and expenses you might have.
Click 'Cancel' if you do not wish to create any new accounts now.</property>
<property name="wrap">True</property>
</widget>
<packing>
<property name="page_type">intro</property>
<property name="title" translatable="yes">New Account Hierarchy Setup</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="currency_page_vbox">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<widget class="GtkLabel" id="choose_currency_label">
<property name="visible">True</property>
<property name="label" translatable="yes">Please choose the currency to use for new accounts.</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<child>
<placeholder/>
</child>
<child>
<widget class="GtkVBox" id="currency_chooser_vbox">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="title" translatable="yes">Choose Currency</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="choose_account_types_vbox">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<widget class="GtkLabel" id="pickAccountsDescriptionLabel">
<property name="visible">True</property>
<property name="label" translatable="yes">Select categories that correspond to the ways that you will use GnuCash. Each category you select will cause several accounts to be created. Select the categories that are relevant to you. You can always create additional accounts by hand later.</property>
<property name="wrap">True</property>
<property name="width_chars">75</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkHPaned" id="hpaned2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="position">336</property>
<property name="position_set">True</property>
<child>
<widget class="GtkVPaned" id="vpaned2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="orientation">vertical</property>
<property name="position">150</property>
<property name="position_set">True</property>
<child>
<widget class="GtkVBox" id="vbox7">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<widget class="GtkLabel" id="label8477431">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;b&gt;Categories&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment11">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">automatic</property>
<property name="shadow_type">in</property>
<child>
<widget class="GtkTreeView" id="account_categories_tree_view">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="reorderable">True</property>
<property name="rules_hint">True</property>
</widget>
</child>
</widget>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment12">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
<widget class="GtkHButtonBox" id="hbuttonbox3">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="layout_style">spread</property>
<child>
<widget class="GtkButton" id="select_all_button">
<property name="label" translatable="yes">_Select All</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="clear_all_button">
<property name="label" translatable="yes">C_lear All</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
<signal name="clicked" handler="clear_all_clicked"/>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</widget>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="position">2</property>
</packing>
</child>
</widget>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox130">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<widget class="GtkLabel" id="label8477397">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;b&gt;Category Description&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment10">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow31">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<property name="shadow_type">in</property>
<child>
<widget class="GtkTextView" id="account_types_description">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="editable">False</property>
<property name="wrap_mode">word</property>
<property name="cursor_visible">False</property>
<property name="accepts_tab">False</property>
</widget>
</child>
</widget>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
</widget>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox131">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<widget class="GtkLabel" id="accounts_in_category_label">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label">&lt;b&gt;Accounts in %s&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment13">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
<widget class="GtkScrolledWindow" id="accounts_in_category">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<property name="shadow_type">in</property>
<child>
<placeholder/>
</child>
</widget>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="page_type">progress</property>
<property name="title" translatable="yes">Choose accounts to create</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="final_account_vbox">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<widget class="GtkLabel" id="finalAccountLabel">
<property name="visible">True</property>
<property name="xpad">1</property>
<property name="ypad">1</property>
<property name="label" translatable="yes">If you would like to change an account's name, click on the row containing the account, then click on the account name and change it.
Some accounts are marked as "Placeholder". Placeholder accounts are used to create a hierarchy of accounts and normally do not have transactions or opening balances. If you would like an account to be a placeholder account, click the checkbox for that account.
If you would like an account to have an opening balance, click on the row containing the account, then click on the opening balance field and enter the starting balance.
Note: all accounts except Equity and placeholder accounts may have an opening balance.
</property>
<property name="wrap">True</property>
<property name="width_chars">75</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">5</property>
<property name="position">0</property>
</packing>
</child>
<child>
<widget class="GtkScrolledWindow" id="final_account_tree_box">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<property name="shadow_type">in</property>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="title" translatable="yes">Setup selected accounts</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="finish_page_label">
<property name="visible">True</property>
<property name="label" translatable="yes">Press `Apply' to create your new accounts. You will then be able to save them to a file or database.
Press `Back' to review your selections.
Press `Cancel' to close this dialog without creating any new accounts.</property>
<property name="wrap">True</property>
</widget>
<packing>
<property name="page_type">confirm</property>
<property name="title" translatable="yes">Finish Account Setup</property>
</packing>
</child>
</widget>
</glade-interface> </glade-interface>

View File

@ -45,7 +45,7 @@
#include "dialog-account.h" #include "dialog-account.h"
#include "dialog-transfer.h" #include "dialog-transfer.h"
#include "dialog-utils.h" #include "dialog-utils.h"
#include "druid-hierarchy.h" #include "assistant-hierarchy.h"
#include "gnc-account-sel.h" #include "gnc-account-sel.h"
#include "gnc-component-manager.h" #include "gnc-component-manager.h"
#include "gnc-engine.h" #include "gnc-engine.h"
@ -790,7 +790,7 @@ gnc_plugin_page_account_tree_cmd_new_account (GtkAction *action, GncPluginPageAc
static void static void
gnc_plugin_page_account_tree_cmd_file_new_hierarchy (GtkAction *action, GncPluginPageAccountTree *page) gnc_plugin_page_account_tree_cmd_file_new_hierarchy (GtkAction *action, GncPluginPageAccountTree *page)
{ {
gnc_ui_hierarchy_druid(FALSE); gnc_ui_hierarchy_assistant(FALSE);
} }
static void static void

View File

@ -36,7 +36,7 @@
#include "dialog-sx-editor.h" #include "dialog-sx-editor.h"
#include "dialog-transfer.h" #include "dialog-transfer.h"
#include "dialog-totd.h" #include "dialog-totd.h"
#include "druid-hierarchy.h" #include "assistant-hierarchy.h"
#include "file-utils.h" #include "file-utils.h"
#include "gnc-component-manager.h" #include "gnc-component-manager.h"
#include "gnc-engine.h" #include "gnc-engine.h"
@ -424,7 +424,7 @@ gnc_main_gui_init (void)
Anyway... Oh, maybe... nah */ Anyway... Oh, maybe... nah */
gnc_plugin_manager_add_plugin (gnc_plugin_manager_get (), gnc_plugin_manager_add_plugin (gnc_plugin_manager_get (),
gnc_plugin_budget_new ()); gnc_plugin_budget_new ());
gnc_ui_hierarchy_druid_initialize(); gnc_ui_hierarchy_assistant_initialize();
/* Run the ui startup hooks. */ /* Run the ui startup hooks. */
gnc_hook_run(HOOK_UI_STARTUP, NULL); gnc_hook_run(HOOK_UI_STARTUP, NULL);