/* HomeBank -- Free, easy, personal accounting for everyone.
- * Copyright (C) 1995-2014 Maxime DOYEN
+ * Copyright (C) 1995-2018 Maxime DOYEN
*
* This file is part of HomeBank.
*
#include "ui-assist-start.h"
#include "dsp_mainwindow.h"
+#include "ui-currency.h"
#define MYDEBUG 0
Account *item;
gdouble value;
+ DB( g_print("\n[ui-start] apply\n") );
+
+
/* set owner */
gchar *owner = (gchar *)gtk_entry_get_text(GTK_ENTRY(data->ST_owner));
if (owner && *owner)
GLOBALS->changes_count++;
}
+ if( data->curfmt != NULL )
+ {
+ hbfile_replace_basecurrency(data->curfmt);
+ }
/* load preset categories */
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_load)))
item->name = g_strdup(txt);
}
+ item->kcur = GLOBALS->kcur;
+
item->type = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_type));
item->number = g_strdup(gtk_entry_get_text(GTK_ENTRY(data->ST_number)));
GLOBALS->changes_count++;
//our global list has changed, so update the treeview
+ //todo: #1693998 crappy to do this here
+ account_compute_balances ();
ui_mainwindow_update(GLOBALS->mainwindow, GINT_TO_POINTER(UF_TITLE+UF_SENSITIVE+UF_BALANCE+UF_REFRESHALL));
}
{
struct assist_start_data *data = user_data;
+ DB( g_print("\n[ui-start] close/cancel\n") );
+
+
//data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
- gtk_widget_destroy (data->assistant);
+ gtk_widget_destroy (data->window);
g_free(data->pathfilename);
gint current_page, n_pages;
gchar *title;
+ DB( g_print("\n[ui-start] prepare\n") );
+
+
current_page = gtk_assistant_get_current_page (GTK_ASSISTANT (widget));
n_pages = gtk_assistant_get_n_pages (GTK_ASSISTANT (widget));
gtk_assistant_set_page_complete (assistant, current_page, FALSE);
}
+
+static void ui_start_assistant_property_change_action(GtkWidget *widget, gpointer user_data)
+{
+struct assist_start_data *data;
+struct curSelectContext selectCtx;
+
+ DB( g_print("\n[ui-start] property_change_action\n") );
+
+ data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
+
+ data->curfmt = NULL;
+ ui_cur_select_dialog_new(GTK_WINDOW(data->window), CUR_SELECT_MODE_BASE, &selectCtx);
+ if( selectCtx.cur_4217 != NULL )
+ {
+ Currency4217 *curfmt;
+ gchar label[128];
+ gchar *name;
+
+ curfmt = selectCtx.cur_4217;
+
+ DB( g_printf("- user selected: '%s' '%s'\n", curfmt->curr_iso_code, curfmt->name) );
+
+ data->curfmt = curfmt;
+
+ name = curfmt->name;
+
+ g_snprintf(label, 127, "%s - %s", curfmt->curr_iso_code, name);
+ gtk_label_set_text (GTK_LABEL(data->LB_currency), label);
+ }
+}
+
+
static void
-ui_start_assistant_create_page1 (GtkWidget *assistant, struct assist_start_data *data)
+ui_start_assistant_property_fill (GtkWidget *assistant, struct assist_start_data *data)
{
- GtkWidget *box, *label, *entry;
- GdkPixbuf *pixbuf;
+Currency *cur;
+gchar label[128];
- box = gtk_hbox_new (FALSE, HB_BOX_SPACING);
- gtk_container_set_border_width (GTK_CONTAINER (box), HB_MAINBOX_SPACING);
+ DB( g_print("\n[ui-start] property_fill\n") );
- label = gtk_label_new (_("Owner:"));
- gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
+ gtk_entry_set_text(GTK_ENTRY(data->ST_owner), g_get_real_name ());
- entry = gtk_entry_new ();
- data->ST_owner = entry;
- gtk_box_pack_start (GTK_BOX (box), entry, TRUE, TRUE, 0);
- g_signal_connect (G_OBJECT (entry), "changed",
- G_CALLBACK (on_entry_changed), assistant);
+ cur = da_cur_get (GLOBALS->kcur);
+
+ g_snprintf(label, 127, "%s - %s", cur->iso_code, cur->name);
+ gtk_label_set_text (GTK_LABEL(data->LB_currency), label);
+
+}
- gtk_widget_show_all (box);
- gtk_assistant_append_page (GTK_ASSISTANT (assistant), box);
- gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, _("File properties"));
- gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), box, GTK_ASSISTANT_PAGE_INTRO);
+static void
+ui_start_assistant_property_create (GtkWidget *assistant, struct assist_start_data *data)
+{
+GtkWidget *table, *label, *widget;
+gint row;
+
+ table = gtk_grid_new ();
+ gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
+ gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
+ //gtk_container_set_border_width (GTK_CONTAINER (table), SPACING_MEDIUM);
+ gtk_widget_set_valign (table, GTK_ALIGN_CENTER);
+
+ row = 0;
+ label = make_label_widget(_("_Owner:"));
+ gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
+ widget = make_string(label);
+ data->ST_owner = widget;
+ gtk_widget_set_hexpand(widget, TRUE);
+ gtk_grid_attach (GTK_GRID (table), widget, 2, row, 2, 1);
+
+ row++;
+ label = make_label_widget(_("Currency:"));
+ gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
+ widget = make_label (NULL, 0, 0.5);
+ data->LB_currency = widget;
+ gtk_grid_attach (GTK_GRID (table), widget, 2, row, 1, 1);
+ widget = gtk_button_new_with_mnemonic (_("_Change"));
+ data->BT_change = widget;
+ gtk_grid_attach (GTK_GRID (table), widget, 3, row, 1, 1);
+
+ g_signal_connect (G_OBJECT (data->ST_owner), "changed", G_CALLBACK (on_entry_changed), assistant);
+ g_signal_connect (G_OBJECT (data->BT_change), "clicked", G_CALLBACK (ui_start_assistant_property_change_action), data);
+
+
+ gtk_widget_show_all (table);
+ gtk_assistant_append_page (GTK_ASSISTANT (assistant), table);
+
+ gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), table, _("File properties"));
+ gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), table, GTK_ASSISTANT_PAGE_INTRO);
- pixbuf = gtk_widget_render_icon (assistant, GTK_STOCK_FILE, GTK_ICON_SIZE_DIALOG, NULL);
- gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), box, pixbuf);
- g_object_unref (pixbuf);
}
static void
ui_start_assistant_create_page2 (GtkWidget *assistant, struct assist_start_data *data)
{
- GtkWidget *box, *hbox, *label, *table, *widget, *alignment;
- GdkPixbuf *pixbuf;
+GtkWidget *box, *hbox, *label, *table, *widget;
gint row;
- box = gtk_vbox_new (FALSE, HB_BOX_SPACING);
- gtk_container_set_border_width (GTK_CONTAINER (box), HB_MAINBOX_SPACING);
+ box = gtk_box_new (GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
+ gtk_container_set_border_width (GTK_CONTAINER (box), SPACING_MEDIUM);
- table = gtk_table_new (12, 3, FALSE);
+ table = gtk_grid_new ();
//gtk_container_set_border_width (GTK_CONTAINER (table), SP_BORDER);
- gtk_table_set_row_spacings (GTK_TABLE (table), HB_TABROW_SPACING*2);
- gtk_table_set_col_spacings (GTK_TABLE (table), HB_TABCOL_SPACING*2);
+ gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL*2);
+ gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM*2);
- // gtk_alignment_new(xalign, yalign, xscale, yscale)
- alignment = gtk_alignment_new(0.5, 0.5, 1.0, 0.0);
- gtk_container_add(GTK_CONTAINER(alignment), table);
- gtk_box_pack_start (GTK_BOX (box), alignment, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (box), table, TRUE, TRUE, 0);
row = 0;
- label = make_label(_("System detection"), 0.0, 0.5);
- gimp_label_set_attributes(GTK_LABEL(label), PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 3, row, row+1);
+ label = make_label_group(_("System detection"));
+ gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1);
row++;
- label = make_label("", 0.0, 0.5);
- gtk_misc_set_padding (GTK_MISC (label), HB_BOX_SPACING, 0);
- gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
-
- label = make_label(_("Languages:"), 0.0, 0.5);
- gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ label = make_label_widget(_("Languages:"));
+ gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
widget = make_label(NULL, 0.0, 0.5);
data->TX_lang = widget;
- gtk_table_attach (GTK_TABLE (table), widget, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ gtk_grid_attach (GTK_GRID (table), widget, 2, row, 1, 1);
row++;
- label = make_label(_("Preset file:"), 0.0, 0.5);
- gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
- hbox = gtk_hbox_new (FALSE, HB_BOX_SPACING);
- gtk_table_attach (GTK_TABLE (table), hbox, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ label = make_label_widget(_("Preset file:"));
+ gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
+ gtk_grid_attach (GTK_GRID (table), hbox, 2, row, 1, 1);
- widget = gtk_image_new_from_stock(GTK_STOCK_YES, GTK_ICON_SIZE_BUTTON);
+ widget = gtk_image_new_from_icon_name(ICONNAME_HB_FILE_VALID, GTK_ICON_SIZE_LARGE_TOOLBAR);
data->ok_image = widget;
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
- widget = gtk_image_new_from_stock(GTK_STOCK_NO, GTK_ICON_SIZE_BUTTON);
+ widget = gtk_image_new_from_icon_name(ICONNAME_HB_FILE_INVALID, GTK_ICON_SIZE_LARGE_TOOLBAR);
data->ko_image = widget;
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
widget = gtk_check_button_new_with_mnemonic (_("Initialize my categories with this file"));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
data->CM_load = widget;
- gtk_table_attach (GTK_TABLE (table), widget, 1, 3, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ gtk_grid_attach (GTK_GRID (table), widget, 1, row, 3, 1);
- gtk_widget_show_all (box);
+ gtk_widget_show_all (box);
gtk_widget_hide(data->ok_image);
gtk_widget_hide(data->ko_image);
- gtk_assistant_append_page (GTK_ASSISTANT (assistant), box);
- gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), box, TRUE);
- gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, _("Preset categories"));
+ gtk_assistant_append_page (GTK_ASSISTANT (assistant), box);
+ gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), box, TRUE);
+ gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, _("Preset categories"));
- pixbuf = gtk_widget_render_icon (assistant, GTK_STOCK_FILE, GTK_ICON_SIZE_DIALOG, NULL);
- gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), box, pixbuf);
- g_object_unref (pixbuf);
}
static void
ui_start_assistant_create_page3 (GtkWidget *assistant, struct assist_start_data *data)
{
- GtkWidget *box, *label, *widget, *table, *alignment;
- GdkPixbuf *pixbuf;
+GtkWidget *box, *label, *widget, *table;
gint row;
- box = gtk_vbox_new (FALSE, HB_BOX_SPACING);
- gtk_container_set_border_width (GTK_CONTAINER (box), HB_MAINBOX_SPACING);
+ box = gtk_box_new (GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
+ gtk_container_set_border_width (GTK_CONTAINER (box), SPACING_MEDIUM);
- table = gtk_table_new (12, 3, FALSE);
+ table = gtk_grid_new ();
//gtk_container_set_border_width (GTK_CONTAINER (table), SP_BORDER);
- gtk_table_set_row_spacings (GTK_TABLE (table), HB_TABROW_SPACING);
- gtk_table_set_col_spacings (GTK_TABLE (table), HB_TABCOL_SPACING);
-
- // gtk_alignment_new(xalign, yalign, xscale, yscale)
- alignment = gtk_alignment_new(0.5, 0.5, 1.0, 0.0);
- gtk_container_add(GTK_CONTAINER(alignment), table);
- gtk_box_pack_start (GTK_BOX (box), alignment, TRUE, TRUE, 0);
+ gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
+ gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
+ gtk_box_pack_start (GTK_BOX (box), table, TRUE, TRUE, 0);
row = 0;
- label = make_label(_("Informations"), 0.0, 0.5);
- gimp_label_set_attributes(GTK_LABEL(label), PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 3, row, row+1);
+ label = make_label_group(_("Informations"));
+ gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1);
row++;
- label = make_label("", 0.0, 0.5);
- gtk_misc_set_padding (GTK_MISC (label), HB_BOX_SPACING, 0);
- gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
-
- label = make_label(_("_Name:"), 0.0, 0.5);
- gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ label = make_label_widget(_("_Name:"));
+ gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
widget = make_string(label);
data->ST_name = widget;
- gtk_table_attach (GTK_TABLE (table), widget, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_set_hexpand(widget, TRUE);
+ gtk_grid_attach (GTK_GRID (table), widget, 2, row, 1, 1);
g_signal_connect (G_OBJECT (widget), "changed",
G_CALLBACK (on_entry_changed), assistant);
row++;
- label = make_label(_("_Type:"), 0.0, 0.5);
- gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ label = make_label_widget(_("_Type:"));
+ gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
widget = make_cycle(label, CYA_ACC_TYPE);
data->CY_type = widget;
- gtk_table_attach (GTK_TABLE (table), widget, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ gtk_widget_set_hexpand(widget, TRUE);
+ gtk_grid_attach (GTK_GRID (table), widget, 2, row, 1, 1);
row++;
- label = make_label(_("N_umber:"), 0.0, 0.5);
- gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ label = make_label_widget(_("N_umber:"));
+ gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
widget = make_string(label);
data->ST_number = widget;
- gtk_table_attach (GTK_TABLE (table), widget, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0);
-
+ gtk_widget_set_hexpand(widget, TRUE);
+ gtk_grid_attach (GTK_GRID (table), widget, 2, row, 1, 1);
//other
-
//row = 0;
row++;
- label = make_label(_("Balances"), 0.0, 0.5);
- gimp_label_set_attributes(GTK_LABEL(label), PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1);
- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 3, row, row+1);
+ label = make_label_group(_("Balances"));
+ gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1);
row++;
- label = gtk_label_new_with_mnemonic (_("_Initial:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
+ label = make_label_widget(_("_Initial:"));
+ gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
widget = make_amount(label);
data->ST_initial = widget;
-
- // gtk_alignment_new(xalign, yalign, xscale, yscale)
- alignment = gtk_alignment_new(0.0, 0.5, 0.33, 0.0);
- gtk_container_add(GTK_CONTAINER(alignment), widget);
- gtk_table_attach (GTK_TABLE (table), alignment, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ gtk_grid_attach (GTK_GRID (table), widget, 2, row, 1, 1);
row++;
- label = gtk_label_new_with_mnemonic (_("_Overdrawn at:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
+ label = make_label_widget(_("_Overdrawn at:"));
+ gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
widget = make_amount(label);
data->ST_minimum = widget;
+ gtk_grid_attach (GTK_GRID (table), widget, 2, row, 1, 1);
- // gtk_alignment_new(xalign, yalign, xscale, yscale)
- alignment = gtk_alignment_new(0.0, 0.5, 0.33, 0.0);
- gtk_container_add(GTK_CONTAINER(alignment), widget);
- gtk_table_attach (GTK_TABLE (table), alignment, 2, 3, row, row+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0);
-
-
-
-
- gtk_widget_show_all (box);
- gtk_assistant_append_page (GTK_ASSISTANT (assistant), box);
+ gtk_widget_show_all (box);
+ gtk_assistant_append_page (GTK_ASSISTANT (assistant), box);
gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, _("Create an account"));
-
- pixbuf = gtk_widget_render_icon (assistant, GTK_STOCK_FILE, GTK_ICON_SIZE_DIALOG, NULL);
- gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), box, pixbuf);
- g_object_unref (pixbuf);
}
-
-
-
static void
ui_start_assistant_create_page4 (GtkWidget *assistant, struct assist_start_data *data)
{
GtkWidget *label;
- GdkPixbuf *pixbuf;
+
label = gtk_label_new (_("This is a confirmation page, press 'Apply' to apply changes"));
gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), label, TRUE);
gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), label, _("Confirmation"));
- pixbuf = gtk_widget_render_icon (assistant, GTK_STOCK_FILE, GTK_ICON_SIZE_DIALOG, NULL);
- gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), label, pixbuf);
- g_object_unref (pixbuf);
+
}
struct assist_start_data *data;
GtkWidget *assistant, *page;
+ DB( g_print("\n[ui-start] new\n") );
+
+
data = g_malloc0(sizeof(struct assist_start_data));
if(!data) return NULL;
assistant = gtk_assistant_new ();
- data->assistant = assistant;
+ data->window = assistant;
//store our window private data
g_object_set_data(G_OBJECT(assistant), "inst_data", (gpointer)data);
gtk_window_set_modal(GTK_WINDOW (assistant), TRUE);
gtk_window_set_transient_for(GTK_WINDOW(assistant), GTK_WINDOW(GLOBALS->mainwindow));
- ui_start_assistant_create_page1 (assistant, data);
+ ui_start_assistant_property_create (assistant, data);
ui_start_assistant_create_page2 (assistant, data);
ui_start_assistant_create_page3 (assistant, data);
ui_start_assistant_create_page4 (assistant, data);
- gtk_entry_set_text(GTK_ENTRY(data->ST_owner), g_get_real_name ());
+ ui_start_assistant_property_fill(assistant, data);
+
page = gtk_assistant_get_nth_page(GTK_ASSISTANT (assistant), 0);
gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE);