/* HomeBank -- Free, easy, personal accounting for everyone.
- * Copyright (C) 1995-2017 Maxime DOYEN
+ * Copyright (C) 1995-2019 Maxime DOYEN
*
* This file is part of HomeBank.
*
extern struct Preferences *PREFS;
+extern gchar *CYA_ABMONTHS[];
-gchar *months[] = {
-"Jan",
-"Feb",
-"Mar",
-"Apr",
-"May",
-"Jun",
-"Jul",
-"Aug",
-"Sep",
-"Oct",
-"Nov",
-"Dec"
-};
-
static gchar *ui_bud_manage_getcsvbudgetstr(Category *item);
static void ui_bud_manage_update(GtkWidget *treeview, gpointer user_data);
static void ui_bud_manage_set(GtkWidget *widget, gpointer user_data);
else
name = entry->name;
-type = (entry->flags & GF_INCOME) ? '+' : '-';
+ type = category_get_type_char(entry);
#if MYDEBUG
string = g_markup_printf_escaped("%s ::(f=%d, %c)", name, entry->flags, type );
treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
g_object_unref(store);
+ gtk_tree_view_set_grid_lines (GTK_TREE_VIEW (treeview), PREFS->grid_lines);
+ gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW (treeview), TRUE);
+
/* column 1 */
renderer = gtk_cell_renderer_text_new ();
g_object_set(renderer,
{
if( item->budget[0] )
{
- g_ascii_dtostr (buf, sizeof (buf), item->budget[0]);
+ //g_ascii_dtostr (buf, sizeof (buf), item->budget[0]);
+ //#1750257 use locale numdigit
+ g_snprintf(buf, sizeof (buf), "%.2f", item->budget[0]);
retval = g_strdup(buf);
//DB( g_print(" => %d: %s\n", 0, retval) );
//{
gchar *tmp = retval;
- g_ascii_dtostr (buf, sizeof (buf), item->budget[i]);
+ //g_ascii_dtostr (buf, sizeof (buf), item->budget[i]);
+ //#1750257 use locale numdigit
+ g_snprintf(buf, sizeof (buf), "%.2f", item->budget[i]);
if(retval != NULL)
{
tmpitem->flags &= ~(GF_CUSTOM); //delete flag
if( *str_array[1] == '*' )
{
- tmpitem->budget[0] = g_ascii_strtod(str_array[3], NULL);
+ //tmpitem->budget[0] = g_ascii_strtod(str_array[3], NULL);
+ //#1750257 use locale numdigit
+ tmpitem->budget[0] = g_strtod(str_array[3], NULL);
DB( g_print(" monthly '%.2f'\n", tmpitem->budget[0]) );
}
for(i=1;i<=12;i++)
{
- tmpitem->budget[i] = g_ascii_strtod(str_array[2+i], NULL);
+ //tmpitem->budget[i] = g_ascii_strtod(str_array[2+i], NULL);
+ //#1750257 use locale numdigit
+ tmpitem->budget[i] = g_strtod(str_array[2+i], NULL);
DB( g_print(" month %d '%.2f'\n", i, tmpitem->budget[i]) );
}
}
}
data->cat->flags &= ~(GF_BUDGET); //delete flag
-
+ data->change++;
+
gtk_widget_queue_draw (data->LV_cat);
}
if(budget == TRUE || active == 1)
item->flags |= GF_BUDGET;
- // compute chnages
+ // compute changes
if( (old_flags != item->flags) || change )
data->change++;
{
gint type;
- type = radio_get_active(GTK_CONTAINER(data->RA_type)) == 1 ? CAT_TYPE_INCOME : CAT_TYPE_EXPENSE;
+ type = hbtk_radio_button_get_active(GTK_CONTAINER(data->RA_type)) == 1 ? CAT_TYPE_INCOME : CAT_TYPE_EXPENSE;
ui_cat_listview_populate(data->LV_cat, type);
gtk_tree_view_expand_all (GTK_TREE_VIEW(data->LV_cat));
GtkWidget *treeview, *hpaned, *bbox, *vbox, *hbox;
GtkWidget *menu, *menuitem, *widget, *image, *tbar;
GtkToolItem *toolitem;
+GList *fchain;
guint i;
gint w, h;
gint crow, row;
gtk_box_pack_start (GTK_BOX (content_area), table, TRUE, TRUE, 0);
crow = 0;
- bbox = make_radio(CYA_CAT_TYPE, TRUE, GTK_ORIENTATION_HORIZONTAL);
+ bbox = hbtk_radio_button_new(CYA_CAT_TYPE, TRUE);
data.RA_type = bbox;
gtk_widget_set_halign (bbox, GTK_ALIGN_CENTER);
gtk_grid_attach (GTK_GRID (table), bbox, 0, crow, 1, 1);
- widget = radio_get_nth_widget(GTK_CONTAINER(bbox), 1);
- if(widget)
- g_signal_connect (widget, "toggled", G_CALLBACK (ui_bud_manage_type_changed_cb), &data);
+ hbtk_radio_button_connect (GTK_CONTAINER(bbox), "toggled", G_CALLBACK (ui_bud_manage_type_changed_cb), &data);
menu = gtk_menu_new ();
gtk_widget_set_halign (menu, GTK_ALIGN_END);
//list
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_widget_set_margin_right(vbox, SPACING_SMALL);
- gtk_paned_pack1 (GTK_PANED(hpaned), vbox, TRUE, FALSE);
+ gtk_paned_pack1 (GTK_PANED(hpaned), vbox, FALSE, FALSE);
scrollwin = gtk_scrolled_window_new(NULL,NULL);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), GTK_SHADOW_ETCHED_IN);
data.LV_cat = treeview;
gtk_widget_set_size_request(treeview, HB_MINWIDTH_LIST, -1);
gtk_container_add(GTK_CONTAINER(scrollwin), treeview);
+ gtk_widget_set_hexpand (scrollwin, TRUE);
+ gtk_widget_set_vexpand (scrollwin, TRUE);
gtk_box_pack_start (GTK_BOX(vbox), scrollwin, TRUE, TRUE, 0);
//list toolbar
label = make_label_group(_("Budget for each month"));
data.label_budget = label;
gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1);
+
+ fchain = NULL;
row = 1;
widget = gtk_radio_button_new_with_label (NULL, _("is the same"));
data.CM_type[0] = widget;
gtk_widget_set_hexpand (widget, TRUE);
gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 4, 1);
+ fchain = g_list_append(fchain, widget);
row++;
widget = make_amount(label);
data.spinner[0] = widget;
gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1);
+ fchain = g_list_append(fchain, widget);
g_signal_connect (G_OBJECT (data.spinner[0]), "value-changed", G_CALLBACK (ui_bud_manage_has_budget), NULL);
gtk_widget_set_hexpand (widget, TRUE);
gtk_widget_set_halign(widget, GTK_ALIGN_START);
gtk_grid_attach (GTK_GRID (group_grid), widget, 4, row, 1, 1);
+ fchain = g_list_append(fchain, widget);
// propagate button
data.CM_type[1] = widget;
gtk_widget_set_hexpand (widget, TRUE);
gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 4, 1);
+ fchain = g_list_append(fchain, widget);
row++;
for(i=0;i<12;i++)
l = ((i<6) ? 1 : 3);
t = row + ((i<6) ? i : i-6);
- label = make_label_widget(months[i]);
+ //#1826659 budget dialog month widget label decay by one
+ label = make_label_widget(_(CYA_ABMONTHS[i+1]));
data.label[i+1] = label;
gtk_grid_attach (GTK_GRID (group_grid), label, l, t, 1, 1);
widget = make_amount(label);
data.spinner[i+1] = widget;
+ fchain = g_list_append(fchain, widget);
gtk_widget_set_hexpand (widget, TRUE);
gtk_grid_attach (GTK_GRID (group_grid), widget, l+1, t, 1, 1);
g_signal_connect (G_OBJECT (data.spinner[i+1]), "value-changed", G_CALLBACK (ui_bud_manage_has_budget), NULL);
- //DB( g_print("(ui_bud_manage) %s, col=%d, row=%d", months[i], col, row) );
+ //DB( g_print("(ui_bud_manage) %s, col=%d, row=%d", CYA_ABMONTHS[i], col, row) );
}
+ gtk_container_set_focus_chain(GTK_CONTAINER(group_grid), fchain);
+ g_list_free(fchain);
+
// group :: Options
group_grid = gtk_grid_new ();
gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL);