* src/gnome/dialog-tax-info.c: more work

* src/guile/gnc.gwp: wrap more of pricedb api

	* src/engine/gnc-pricedb.c (gnc_pricedb_get_prices): new func


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@3849 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Dave Peticolas 2001-03-29 01:01:02 +00:00
parent 6cc1792964
commit 3ab1dc57d0
6 changed files with 153 additions and 14 deletions

View File

@ -1,3 +1,11 @@
2001-03-28 Dave Peticolas <dave@krondo.com>
* src/gnome/dialog-tax-info.c: more work
* src/guile/gnc.gwp: wrap more of pricedb api
* src/engine/gnc-pricedb.c (gnc_pricedb_get_prices): new func
2001-03-28 Bill Gribble <grib@billgribble.com>
* src/gnome/dialog-column-view.c: set the view dirty on edit

View File

@ -448,6 +448,31 @@ gnc_pricedb_lookup_latest(GNCPriceDB *db,
return result;
}
GList *
gnc_pricedb_get_prices(GNCPriceDB *db,
gnc_commodity *commodity,
gnc_commodity *currency)
{
GList *price_list;
GList *result;
GList *node;
GHashTable *currency_hash;
if(!db || !commodity || !currency) return NULL;
currency_hash = g_hash_table_lookup(db->commodity_hash, commodity);
if(!currency_hash) return NULL;
price_list = g_hash_table_lookup(currency_hash, currency);
if(!price_list) return NULL;
result = g_list_copy (price_list);
for (node = result; node; node = node->next)
gnc_price_ref (node->data);
return result;
}
GList *
gnc_pricedb_lookup_at_time(GNCPriceDB *db,
gnc_commodity *c,
@ -690,7 +715,7 @@ gnc_pricedb_substitute_commodity(GNCPriceDB *db,
/* Semi-lame debugging code */
static void
void
gnc_price_print(GNCPrice *p, FILE *f, int indent)
{
gnc_commodity *commodity;
@ -728,7 +753,7 @@ gnc_price_print(GNCPrice *p, FILE *f, int indent)
g_free(istr);
}
void
static void
gnc_price_print_stdout(GNCPrice *p, int indent)
{
gnc_price_print(p, stdout, indent);
@ -752,5 +777,3 @@ gnc_pricedb_print_contents(GNCPriceDB *db, FILE *f)
gnc_pricedb_foreach_price(db, print_pricedb_adapter, f, FALSE);
fprintf(f, "</gnc:pricedb>\n");
}

View File

@ -141,6 +141,10 @@ GNCPrice * gnc_pricedb_lookup_latest(GNCPriceDB *db,
gnc_commodity *commodity,
gnc_commodity *currency);
GList * gnc_pricedb_get_prices(GNCPriceDB *db,
gnc_commodity *commodity,
gnc_commodity *currency);
/* Return all prices that match the given commodity, currency, and
timespec. Prices will be returned as a price_list (see above) */
GList * gnc_pricedb_lookup_at_time(GNCPriceDB *db,

View File

@ -216,7 +216,7 @@ load_txf_info (gboolean income)
}
static GList *
gnc_tax_info_current_codes (TaxInfoDialog *ti_dialog)
tax_infos (TaxInfoDialog *ti_dialog)
{
return
ti_dialog->income ?
@ -233,7 +233,7 @@ load_category_list (TaxInfoDialog *ti_dialog)
gtk_clist_freeze (clist);
gtk_clist_clear (clist);
codes = gnc_tax_info_current_codes (ti_dialog);
codes = tax_infos (ti_dialog);
for ( ; codes; codes = codes->next)
{
@ -259,10 +259,28 @@ clear_gui (TaxInfoDialog *ti_dialog)
(GTK_TOGGLE_BUTTON (ti_dialog->current_account_button), TRUE);
}
static TXFInfo *
txf_infos_find_code (GList *infos, const char *code)
{
for (; infos; infos = infos->next)
{
TXFInfo *info = infos->data;
if (safe_strcmp (code, info->code) == 0)
return info;
}
return NULL;
}
static void
account_to_gui (TaxInfoDialog *ti_dialog, Account *account)
{
gboolean tax_related;
const char *str;
TXFInfo *info;
GList *infos;
gint index;
if (!account)
{
@ -273,6 +291,78 @@ account_to_gui (TaxInfoDialog *ti_dialog, Account *account)
tax_related = xaccAccountGetTaxRelated (account);
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON (ti_dialog->tax_related_button), tax_related);
infos = tax_infos (ti_dialog);
str = xaccAccountGetTaxUSCode (account);
info = txf_infos_find_code (infos, str);
if (info)
index = g_list_index (infos, info);
else
index = 0;
if (index < 0)
index = 0;
gtk_clist_select_row (GTK_CLIST (ti_dialog->txf_category_clist), index, 0);
str = xaccAccountGetTaxUSPayerNameSource (account);
if (safe_strcmp (str, "parent") == 0)
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON (ti_dialog->parent_account_button), TRUE);
else
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON (ti_dialog->current_account_button), TRUE);
}
static void
gui_to_accounts (TaxInfoDialog *ti_dialog)
{
gboolean tax_related;
const char *code;
const char *pns;
GList *accounts;
TXFInfo *info;
GList *infos;
GList *node;
tax_related = gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON (ti_dialog->tax_related_button));
infos = tax_infos (ti_dialog);
info = g_list_nth_data
(infos, GTK_CLIST (ti_dialog->txf_category_clist)->focus_row);
g_return_if_fail (info != NULL);
code = tax_related ? info->code : NULL;
if (tax_related && info->payer_name_source)
{
gboolean current;
current = gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON (ti_dialog->current_account_button));
pns = current ? "current" : "parent";
}
else
pns = NULL;
accounts = gnc_account_tree_get_current_accounts
(GNC_ACCOUNT_TREE (ti_dialog->account_tree));
for (node = accounts; node; node = node->next)
{
Account *account = node->data;
xaccAccountBeginEdit (account);
xaccAccountSetTaxRelated (account, tax_related);
xaccAccountSetTaxUSCode (account, code);
xaccAccountSetTaxUSPayerNameSource (account, pns);
xaccAccountCommitEdit (account);
}
}
static void
@ -314,6 +404,9 @@ tax_info_ok_clicked (GtkWidget *widget, gpointer data)
{
TaxInfoDialog *ti_dialog = data;
if (ti_dialog->changed)
gui_to_accounts (ti_dialog);
gnc_close_gui_component_by_data (DIALOG_TAX_INFO_CM_CLASS, ti_dialog);
}
@ -322,7 +415,8 @@ tax_info_apply_clicked (GtkWidget *widget, gpointer data)
{
TaxInfoDialog *ti_dialog = data;
return;
gui_to_accounts (ti_dialog);
gnc_tax_info_set_changed (ti_dialog, FALSE);
}
static void
@ -409,9 +503,13 @@ gnc_tax_info_select_account_cb (GNCAccountTree *tree,
TaxInfoDialog *ti_dialog = data;
if (gnc_tax_info_update_accounts (ti_dialog) != 1)
{
gnc_tax_info_set_changed (ti_dialog, TRUE);
return;
}
account_to_gui (ti_dialog, account);
gnc_tax_info_set_changed (ti_dialog, FALSE);
}
static void
@ -423,7 +521,11 @@ gnc_tax_info_unselect_account_cb (GNCAccountTree *tree,
accounts = gnc_account_tree_get_current_accounts (tree);
gnc_tax_info_update_accounts (ti_dialog);
if (gnc_tax_info_update_accounts (ti_dialog) != 0)
return;
clear_gui (ti_dialog);
gnc_tax_info_set_changed (ti_dialog, FALSE);
}
static void
@ -440,7 +542,7 @@ txf_code_select_row_cb (GtkCList *clist,
const char *text;
gint pos = 0;
txf_info = g_list_nth_data (gnc_tax_info_current_codes (ti_dialog), row);
txf_info = g_list_nth_data (tax_infos (ti_dialog), row);
ge = GTK_EDITABLE (ti_dialog->txf_help_text);
@ -618,8 +720,8 @@ gnc_tax_info_dialog_create (GtkWidget * parent, TaxInfoDialog *ti_dialog)
}
gnc_tax_info_update_accounts (ti_dialog);
gnc_tax_info_set_changed (ti_dialog, FALSE);
clear_gui (ti_dialog);
gnc_tax_info_set_changed (ti_dialog, FALSE);
}
static void

View File

@ -5964,7 +5964,7 @@ create_Tax_Information_Dialog (void)
gtk_widget_show (apply_button);
GTK_WIDGET_SET_FLAGS (apply_button, GTK_CAN_DEFAULT);
gnome_dialog_append_button (GNOME_DIALOG (Tax_Information_Dialog), GNOME_STOCK_BUTTON_CANCEL);
gnome_dialog_append_button (GNOME_DIALOG (Tax_Information_Dialog), GNOME_STOCK_BUTTON_CLOSE);
button75 = GTK_WIDGET (g_list_last (GNOME_DIALOG (Tax_Information_Dialog)->buttons)->data);
gtk_widget_ref (button75);
gtk_object_set_data_full (GTK_OBJECT (Tax_Information_Dialog), "button75", button75,
@ -6821,6 +6821,7 @@ create_Edit_Column_View_Page (void)
gtk_widget_show (available_list);
gtk_container_add (GTK_CONTAINER (scrolledwindow26), available_list);
gtk_clist_set_column_width (GTK_CLIST (available_list), 0, 80);
gtk_clist_set_selection_mode (GTK_CLIST (available_list), GTK_SELECTION_BROWSE);
gtk_clist_column_titles_show (GTK_CLIST (available_list));
label847720 = gtk_label_new (_("Available reports"));
@ -6917,6 +6918,7 @@ create_Edit_Column_View_Page (void)
gtk_clist_set_column_width (GTK_CLIST (contents_list), 0, 150);
gtk_clist_set_column_width (GTK_CLIST (contents_list), 1, 34);
gtk_clist_set_column_width (GTK_CLIST (contents_list), 2, 25);
gtk_clist_set_selection_mode (GTK_CLIST (contents_list), GTK_SELECTION_BROWSE);
gtk_clist_column_titles_show (GTK_CLIST (contents_list));
label847725 = gtk_label_new (_("Report"));

View File

@ -8492,7 +8492,7 @@ words.
<name>button75</name>
<can_default>True</can_default>
<can_focus>True</can_focus>
<stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
<stock_button>GNOME_STOCK_BUTTON_CLOSE</stock_button>
</widget>
</widget>
@ -10054,7 +10054,7 @@ quit without making any changes.</text>
<can_focus>True</can_focus>
<columns>1</columns>
<column_widths>80</column_widths>
<selection_mode>GTK_SELECTION_SINGLE</selection_mode>
<selection_mode>GTK_SELECTION_BROWSE</selection_mode>
<show_titles>True</show_titles>
<shadow_type>GTK_SHADOW_IN</shadow_type>
@ -10267,7 +10267,7 @@ quit without making any changes.</text>
<can_focus>True</can_focus>
<columns>3</columns>
<column_widths>150,34,25</column_widths>
<selection_mode>GTK_SELECTION_SINGLE</selection_mode>
<selection_mode>GTK_SELECTION_BROWSE</selection_mode>
<show_titles>True</show_titles>
<shadow_type>GTK_SHADOW_IN</shadow_type>