X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fui-pref.c;h=322358e36cc30722e32a84d7445fb4894146159e;hb=ee5038e6ccae412295b44be762d3445419042d59;hp=fa7f906142dcf5722c66e625d3cc3e499ba4b2bc;hpb=613fd4014fa5814bf2adce50574d520df8927ce1;p=chaz%2Fhomebank diff --git a/src/ui-pref.c b/src/ui-pref.c index fa7f906..322358e 100644 --- a/src/ui-pref.c +++ b/src/ui-pref.c @@ -1,5 +1,5 @@ /* HomeBank -- Free, easy, personal accounting for everyone. - * Copyright (C) 1995-2016 Maxime DOYEN + * Copyright (C) 1995-2019 Maxime DOYEN * * This file is part of HomeBank. * @@ -21,7 +21,7 @@ #include "homebank.h" #include "ui-pref.h" -#include "dsp_mainwindow.h" +#include "dsp-mainwindow.h" #include "gtk-chart-colors.h" #include "ext.h" @@ -52,13 +52,6 @@ enum { LST_PREF_MAX }; -enum -{ - COLUMN_VISIBLE, - COLUMN_NAME, - COLUMN_ID, - NUM_COLUMNS -}; enum { @@ -73,10 +66,13 @@ enum static gchar *pref_iconname[PREF_MAX] = { "prf-general", "prf-interface", +"prf-locale", "prf-columns", -"prf-display", +//"prf-display", "prf-import", "prf-report", +"prf-backup", +"prf-folder", "prf-euro", // to be renamed "prf-plugins", //"prf_charts.svg" @@ -85,10 +81,12 @@ static gchar *pref_iconname[PREF_MAX] = { static gchar *pref_name[PREF_MAX] = { N_("General"), N_("Interface"), +N_("Locale"), N_("Transactions"), -N_("Display format"), N_("Import/Export"), N_("Report"), +N_("Backup"), +N_("Folders"), N_("Euro minor"), N_("Plugins") // @@ -131,6 +129,7 @@ gchar *CYA_IMPORT_OFXNAME[] = { N_("Ignore"), N_("Memo"), N_("Payee"), +N_("Info"), NULL }; @@ -142,23 +141,20 @@ N_("Append to Payee"), NULL }; +gchar *CYA_IMPORT_CSVSEPARATOR[] = { +N_("Tab"), +N_("Comma"), +N_("Semicolon"), +N_("Space"), +NULL +}; + + extern gchar *CYA_CHART_COLORSCHEME[]; extern gchar *CYA_MONTHS[]; -typedef struct -{ - gchar *iso; - gchar *name; - gdouble value; - //gchar *prefix_symbol; /* max symbol is 3 digits in unicode */ - //gchar *suffix_symbol; /* but mostly is 1 digit */ - gchar *symbol; - gboolean sym_prefix; - gchar *decimal_char; - gchar *grouping_char; - gshort frac_digits; -} EuroParams; + /* @@ -170,71 +166,52 @@ source: */ static EuroParams euro_params[] = { -// , rate , symb , prfx , dec, grp, frac +// , rate , symb , prfx , dec, grp, frac // --------------------------------------------------------------------- - { "" , "--------" , 1.0 , "" , FALSE, ",", ".", 2 }, - { "ATS", "Austria" , 13.7603 , "S" , TRUE , ",", ".", 2 }, // -S 1.234.567,89 - { "BEF", "Belgium" , 40.3399 , "BF" , TRUE , ",", ".", 2 }, // BF 1.234.567,89 - - { "FIM", "Finland" , 5.94573 , "mk" , FALSE, ",", " ", 2 }, // -1 234 567,89 mk - { "FRF", "France" , 6.55957 , "F" , FALSE, ",", " ", 2 }, // -1 234 567,89 F - { "DEM", "Germany" , 1.95583 , "DM" , FALSE, ",", ".", 2 }, // -1.234.567,89 DM - { "GRD", "Greece" , 340.750 , "d" , TRUE , ".", ",", 2 }, // ?? - { "IEP", "Ireland" , 0.787564 , "£" , TRUE , ".", ",", 2 }, // -£1,234,567.89 - { "ITL", "Italy" , 1936.27 , "L" , TRUE , "" , ".", 0 }, // L -1.234.567 - { "LUF", "Luxembourg" , 40.3399 , "LU" , TRUE , ",", ".", 2 }, // LU 1.234.567,89 - - { "NLG", "Netherlands" , 2.20371 , "F" , TRUE , ",", ".", 2 }, // F 1.234.567,89- - { "PTE", "Portugal" , 200.482 , "Esc.", FALSE, "$", ".", 2 }, // -1.234.567$89 Esc. - { "ESP", "Spain" , 166.386 , "Pts" , TRUE , "" , ".", 0 }, // -Pts 1.234.567 -/* 2007 */ - { "SIT", "Slovenia" , 239.640 , "tol" , TRUE , ",", ".", 2 }, // -/* 2008 */ - { "CYP", "Cyprus" , 0.585274 , "£" , TRUE , ",", "" , 2 }, // - { "MTL", "Malta" , 0.429300 , "Lm" , TRUE , ",", "" , 2 }, // -/* 2009 */ - { "SKK", "Slovaquia" , 30.12600 , "Sk" , FALSE, ",", " ", 2 }, // -/* 2011 */ - { "EEK", "Estonia" , 15.6466 , "kr" , FALSE, ",", " ", 2 }, // -/* 2014 */ - { "LVL", "Latvia" , 0.702804 , "lat.", FALSE, ",", "" , 2 }, // jan. 2014 -/* 2016 */ - { "LTL", "Lithuania" , 3.45280 , "Lt." , TRUE , ",", "" , 2 }, // jan. 2015 - -/* future */ - { "BGN", "Bulgaria" , 1.95583 , "лв." , TRUE , ",", " ", 2 }, // non-fixé - 2014 target for euro - { "HUF", "Hungary" , 261.51 , "Ft" , TRUE , ",", " ", 2 }, // non-fixé - No current target for euro - { "RON", "Romania" , 3.5155 , "Leu" , FALSE, ",", ".", 2 }, // non-fixé - 2015 target for euro earliest - { "CZK", "Czech republic", 28.36 , "Kč" , FALSE, ",", " ", 2 }, // non-fixé - 2015 earliest - { "HRK", "Croatia" , 1.0000 , "kn" , FALSE, "" , ".", 0 }, // non-fixé - 2015 target for euro earliest - { "PLN", "Poland" , 0.25 , "zł" , FALSE, ",", "" , 2 }, // non-fixé - No current target for euro - + { 0, "" , "--------" , 1.0 , "" , FALSE, ",", ".", 2 }, + { 1, "ATS", "Austria" , 13.7603 , "S" , TRUE , ",", ".", 2 }, // -S 1.234.567,89 + { 2, "BEF", "Belgium" , 40.3399 , "BF" , TRUE , ",", ".", 2 }, // BF 1.234.567,89 - + { 20, "BGN", "Bulgaria" , 1.95583 , "лв." , TRUE , ",", " ", 2 }, // non-fixé - 2014 target for euro + { 24, "HRK", "Croatia" , 1.0000 , "kn" , FALSE, "" , ".", 0 }, // non-fixé - 2015 target for euro earliest + { 14, "CYP", "Cyprus" , 0.585274 , "£" , TRUE , ",", "" , 2 }, // + { 23, "CZK", "Czech Republic" , 28.36 , "Kč" , FALSE, ",", " ", 2 }, // non-fixé - 2015 earliest + // Denmark + { 17, "EEK", "Estonia" , 15.6466 , "kr" , FALSE, ",", " ", 2 }, // + { 3, "FIM", "Finland" , 5.94573 , "mk" , FALSE, ",", " ", 2 }, // -1 234 567,89 mk + { 4, "FRF", "France" , 6.55957 , "F" , FALSE, ",", " ", 2 }, // -1 234 567,89 F + { 5, "DEM", "Germany" , 1.95583 , "DM" , FALSE, ",", ".", 2 }, // -1.234.567,89 DM + { 6, "GRD", "Greece" , 340.750 , "d" , TRUE , ".", ",", 2 }, // ?? + { 21, "HUF", "Hungary" , 261.51 , "Ft" , TRUE , ",", " ", 2 }, // non-fixé - No current target for euro + { 7, "IEP", "Ireland" , 0.787564 , "£" , TRUE , ".", ",", 2 }, // -£1,234,567.89 + { 8, "ITL", "Italy" , 1936.27 , "L" , TRUE , "" , ".", 0 }, // L -1.234.567 + { 18, "LVL", "Latvia" , 0.702804 , "lat.", FALSE, ",", "" , 2 }, // jan. 2014 + { 19, "LTL", "Lithuania" , 3.45280 , "Lt" , FALSE, ",", "" , 2 }, // jan. 2015 + { 9, "LUF", "Luxembourg" , 40.3399 , "LU" , TRUE , ",", ".", 2 }, // LU 1.234.567,89 - + { 15, "MTL", "Malta" , 0.429300 , "Lm" , TRUE , ",", "" , 2 }, // + { 10, "NLG", "Netherlands" , 2.20371 , "F" , TRUE , ",", ".", 2 }, // F 1.234.567,89- + { 25, "PLN", "Poland" , 0.25 , "zł" , FALSE, ",", "" , 2 }, // non-fixé - No current target for euro + { 11, "PTE", "Portugal" , 200.482 , "Esc.", FALSE, "$", ".", 2 }, // -1.234.567$89 Esc. + { 22, "RON", "Romania" , 3.5155 , "Leu" , FALSE, ",", ".", 2 }, // non-fixé - 2015 target for euro earliest + { 16, "SKK", "Slovak Republic", 30.12600 , "Sk" , FALSE, ",", " ", 2 }, // + { 13, "SIT", "Slovenia" , 239.640 , "tol" , TRUE , ",", ".", 2 }, // + { 12, "ESP", "Spain" , 166.386 , "Pts" , TRUE , "" , ".", 0 }, // -Pts 1.234.567 + //Sweden + //United Kingdom // { " ", "" , 1.00000 , "" , "" , FALSE, ",", "", 2 }, - }; -GtkWidget *pref_list_create(void); -GtkWidget *list_txn_colprefcreate(void); - -static void list_txn_colpref_get(GtkTreeView *treeview, gboolean *columns); - static void list_ext_colpref_get(GtkTreeView *treeview, GList **columns); - - /* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =*/ -typedef struct -{ - gchar *locale; - gchar *name; - -} LangName; + static LangName languagenames[] = { -// af ar ast be bg ca cs cy da de el en_AU en_CA en_GB es et eu fa fi fr ga gl he hr hu id is it +// af ar ast be bg ca cs cy da de el en_AU en_CA en_GB es et eu fa fi fr ga gl he hr hu id is it //ja ka ko lt lv ms nb nds nl oc pl pt_BR pt pt_PT ro ru si sk sl sr sv tr uk vi zh_CN zh_TW - + { "aa", "Afar" }, { "ab", "Abkhazian" }, { "ae", "Avestan" }, @@ -244,7 +221,7 @@ static LangName languagenames[] = { "an", "Aragonese" }, { "ar", "Arabic" }, { "as", "Assamese" }, - { "ast", "Asturian, Bable, Leonese, Asturleonese" }, + { "ast", "Asturian, Bable, Leonese, Asturleonese" }, { "av", "Avaric" }, { "ay", "Aymara" }, { "az", "Azerbaijani" }, @@ -350,7 +327,7 @@ static LangName languagenames[] = { "na", "Nauru" }, { "nb", "Norwegian Bokmål" }, { "nd", "North Ndebele" }, - { "nds", "Low German, Low Saxon" }, + { "nds", "Low German, Low Saxon" }, { "ne", "Nepali" }, { "ng", "Ndonga" }, { "nl", "Dutch" }, @@ -426,6 +403,9 @@ static LangName languagenames[] = }; +static GtkWidget *pref_list_create(void); + + static gint ui_language_combobox_compare_func (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer userdata) { @@ -439,7 +419,7 @@ gchar *name1, *name2; //keep system laguage on top if(code1 == NULL) name1 = NULL; if(code2 == NULL) name2 = NULL; - + retval = hb_string_utf8_compare(name1, name2); g_free(name2); @@ -488,7 +468,7 @@ const gchar *lang; g_warning(" locale name not found '%s'", locale); lang = locale; } - + } return lang; @@ -503,7 +483,7 @@ GtkTreeIter iter; model = gtk_combo_box_get_model(GTK_COMBO_BOX(combobox)); gtk_list_store_append (GTK_LIST_STORE(model), &iter); - gtk_list_store_set (GTK_LIST_STORE(model), &iter, + gtk_list_store_set (GTK_LIST_STORE(model), &iter, 0, NULL, 1, _("System Language"), -1); @@ -526,13 +506,13 @@ const gchar *dirname; { const gchar *lang; gchar *label; - + gtk_list_store_append (GTK_LIST_STORE(model), &iter); lang = ui_language_combobox_get_name(dirname); label = g_strdup_printf ("%s [%s]", lang, dirname); - gtk_list_store_set (GTK_LIST_STORE(model), &iter, + gtk_list_store_set (GTK_LIST_STORE(model), &iter, 0, dirname, 1, label, -1); @@ -569,7 +549,7 @@ GtkCellRenderer *renderer; gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "text", 1, NULL); gtk_combo_box_set_id_column( GTK_COMBO_BOX(combobox), 0); - + g_object_unref(store); if(label) @@ -578,7 +558,7 @@ GtkCellRenderer *renderer; ui_language_combobox_populate(combobox); gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), 0); - + return combobox; } @@ -587,11 +567,47 @@ GtkCellRenderer *renderer; /* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =*/ /* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =*/ +static gint ui_euro_combobox_id_to_active(gint id) +{ +guint i, retval; -/* -** -*/ -static GtkWidget *make_euro_presets(GtkWidget *label) + DB( g_print("\n[ui-pref] ui_euro_combobox_id_to_active\n") ); + + retval = 0; + for (i = 0; i < G_N_ELEMENTS (euro_params); i++) + { + if( euro_params[i].id == id ) + { + retval = i; + DB( g_print("- id (country)=%d => %d - %s\n", id, i, euro_params[i].name) ); + break; + } + } + + return retval; +} + + + +static gint ui_euro_combobox_active_to_id(gint active) +{ +gint id; + + DB( g_print("\n[ui-pref] ui_euro_combobox_active_to_id\n") ); + + DB( g_print("- to %d\n", active) ); + + id = 0; + if( active < (gint)G_N_ELEMENTS (euro_params) ) + { + id = euro_params[active].id; + DB( g_print("- id (country)=%d '%s'\n", id, euro_params[active].name) ); + } + return id; +} + + +static GtkWidget *ui_euro_combobox_new(GtkWidget *label) { GtkWidget *combobox; guint i; @@ -627,17 +643,17 @@ gboolean r; switch( type ) { - case 1: + case PRF_PATH_WALLET: path = &PREFS->path_hbfile; entry = data->ST_path_hbfile; title = _("Choose a default HomeBank files folder"); break; - case 2: + case PRF_PATH_IMPORT: path = &PREFS->path_import; entry = data->ST_path_import; title = _("Choose a default import folder"); break; - case 3: + case PRF_PATH_EXPORT: path = &PREFS->path_export; entry = data->ST_path_export; title = _("Choose a default export folder"); @@ -710,7 +726,7 @@ gchar buf[128]; cur.frac_digits = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->NB_euro_fracdigits)); da_cur_initformat (&cur); - + DB( g_print("fmt: %s\n", cur.format) ); g_ascii_formatd(formatd_buf, sizeof (formatd_buf), cur.format, HB_NUMBER_SAMPLE); @@ -744,51 +760,50 @@ gboolean sensitive; /* ** set euro value widget from a country */ -static void defpref_eurosetcurrency(GtkWidget *widget, gpointer user_data) +static void defpref_eurosetcurrency(GtkWidget *widget, gint country) { struct defpref_data *data; -EuroParams *euro = user_data; +EuroParams *euro; gchar *buf; +gint active; - DB( g_print("\n[ui-pref] eurosetcurrency\n") ); data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data"); - - buf = g_strdup_printf("%s - %s", euro->iso, euro->name); + active = ui_euro_combobox_id_to_active(country); + euro = &euro_params[active]; + buf = g_strdup_printf("%s - %s", euro->iso, euro->name); gtk_label_set_markup(GTK_LABEL(data->ST_euro_country), buf); - g_free(buf); } - /* ** set euro value widget from a country */ static void defpref_europreset(GtkWidget *widget, gpointer user_data) { struct defpref_data *data; -gint country; +gint active; DB( g_print("\n[ui-pref] euro preset\n") ); data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data"); - country = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_euro_preset)); - data->country = country; + active = gtk_combo_box_get_active (GTK_COMBO_BOX(data->CY_euro_preset)); + data->country = ui_euro_combobox_active_to_id (active);; - defpref_eurosetcurrency(widget, &euro_params[country]); + defpref_eurosetcurrency(widget, data->country); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->NB_euro_value), euro_params[country].value); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->NB_euro_value), euro_params[active].value); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->NB_euro_fracdigits), euro_params[country].frac_digits); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->NB_euro_fracdigits), euro_params[active].frac_digits); - gtk_entry_set_text(GTK_ENTRY(data->ST_euro_symbol) , euro_params[country].symbol); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_euro_isprefix), euro_params[country].sym_prefix); - gtk_entry_set_text(GTK_ENTRY(data->ST_euro_decimalchar) , euro_params[country].decimal_char); - gtk_entry_set_text(GTK_ENTRY(data->ST_euro_groupingchar), euro_params[country].grouping_char); + gtk_entry_set_text(GTK_ENTRY(data->ST_euro_symbol) , euro_params[active].symbol); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_euro_isprefix), euro_params[active].sym_prefix); + gtk_entry_set_text(GTK_ENTRY(data->ST_euro_decimalchar) , euro_params[active].decimal_char); + gtk_entry_set_text(GTK_ENTRY(data->ST_euro_groupingchar), euro_params[active].grouping_char); } @@ -804,8 +819,26 @@ gboolean sensitive; sensitive = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_custom_colors)); + gtk_widget_set_sensitive(data->LB_colors , sensitive); + gtk_widget_set_sensitive(data->CY_colors , sensitive); + gtk_widget_set_sensitive(data->LB_exp_color , sensitive); gtk_widget_set_sensitive(data->GR_colors , sensitive); +} + + +static void defpref_backuptoggle(GtkWidget *widget, gpointer user_data) +{ +struct defpref_data *data; +gboolean sensitive; + + DB( g_print("\n[ui-pref] backup toggle\n") ); + data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data"); + + sensitive = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_bak_is_automatic)); + gtk_widget_set_sensitive(data->LB_bak_max_num_copies, sensitive); + gtk_widget_set_sensitive(data->NB_bak_max_num_copies, sensitive); + gtk_widget_set_sensitive(data->GR_bak_freq , sensitive); } @@ -870,7 +903,7 @@ struct defpref_data *data; data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data"); gtk_widget_queue_draw (data->DA_colors); - + } @@ -903,98 +936,92 @@ GdkRGBA rgba; DB( g_print("\n[ui-pref] set\n") ); + // general + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_show_splash), PREFS->showsplash); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_load_last), PREFS->loadlast); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_append_scheduled), PREFS->appendscheduled); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_do_update_currency), PREFS->do_update_currency); + hbtk_combo_box_set_active_id(GTK_COMBO_BOX_TEXT(data->CY_daterange_wal), PREFS->date_range_wal); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->NB_fiscyearday), PREFS->fisc_year_day ); + gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_fiscyearmonth), PREFS->fisc_year_month - 1); + + // files/backup + gtk_entry_set_text(GTK_ENTRY(data->ST_path_hbfile), PREFS->path_hbfile); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_bak_is_automatic), PREFS->bak_is_automatic); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->NB_bak_max_num_copies), PREFS->bak_max_num_copies); + + // interface if(PREFS->language != NULL) gtk_combo_box_set_active_id(GTK_COMBO_BOX(data->CY_language), PREFS->language); else gtk_combo_box_set_active (GTK_COMBO_BOX(data->CY_language), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_toolbar), PREFS->toolbar_style); //gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->NB_image_size), PREFS->image_size); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_custom_colors), PREFS->custom_colors); - gdk_rgba_parse(&rgba, PREFS->color_exp); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(data->CP_exp_color), &rgba); - gdk_rgba_parse(&rgba, PREFS->color_inc); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(data->CP_inc_color), &rgba); - gdk_rgba_parse(&rgba, PREFS->color_warn); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(data->CP_warn_color), &rgba); - //gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_ruleshint), PREFS->rules_hint); gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_gridlines), PREFS->grid_lines); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->NB_fiscyearday), PREFS->fisc_year_day ); - gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_fiscyearmonth), PREFS->fisc_year_month - 1); - - gtk_entry_set_text(GTK_ENTRY(data->ST_path_hbfile), PREFS->path_hbfile); - gtk_entry_set_text(GTK_ENTRY(data->ST_path_import), PREFS->path_import); - gtk_entry_set_text(GTK_ENTRY(data->ST_path_export), PREFS->path_export); - //gtk_entry_set_text(GTK_ENTRY(data->ST_path_navigator), PREFS->path_navigator); - - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_load_last), PREFS->loadlast); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_append_scheduled), PREFS->appendscheduled); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_do_update_currency), PREFS->do_update_currency); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_show_splash), PREFS->showsplash); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_herit_date), PREFS->heritdate); + // transactions + hbtk_combo_box_set_active_id(GTK_COMBO_BOX_TEXT(data->CY_daterange_txn), PREFS->date_range_txn); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->ST_datefuture_nbdays), PREFS->date_future_nbdays); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_hide_reconciled), PREFS->hidereconciled); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_show_remind), PREFS->showremind); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_herit_date), PREFS->heritdate); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_memoacp), PREFS->txn_memoacp); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->ST_memoacp_days), PREFS->txn_memoacp_days); - /* display */ + // display format gtk_entry_set_text(GTK_ENTRY(data->ST_datefmt), PREFS->date_format); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_unitismile), PREFS->vehicle_unit_ismile); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_unitisgal), PREFS->vehicle_unit_isgal); - gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_daterange_wal), PREFS->date_range_wal); - gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_daterange_txn), PREFS->date_range_txn); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->ST_datefuture_nbdays), PREFS->date_future_nbdays); - gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_daterange_rep), PREFS->date_range_rep); + // import/export + gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_dtex_datefmt), PREFS->dtex_datefmt); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_dtex_ucfirst), PREFS->dtex_ucfirst); + gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_dtex_ofxname), PREFS->dtex_ofxname); + gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_dtex_ofxmemo), PREFS->dtex_ofxmemo); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_dtex_qifmemo), PREFS->dtex_qifmemo); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_dtex_qifswap), PREFS->dtex_qifswap); + gtk_entry_set_text(GTK_ENTRY(data->ST_path_import), PREFS->path_import); + gtk_entry_set_text(GTK_ENTRY(data->ST_path_export), PREFS->path_export); + gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_dtex_csvsep), PREFS->dtex_csvsep); + + // report + hbtk_combo_box_set_active_id(GTK_COMBO_BOX_TEXT(data->CY_daterange_rep), PREFS->date_range_rep); + gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_color_scheme), PREFS->report_color_scheme); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_stat_byamount), PREFS->stat_byamount); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_stat_showrate), PREFS->stat_showrate); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_stat_showdetail), PREFS->stat_showdetail); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_budg_showdetail), PREFS->budg_showdetail); /* euro */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_euro_enable), PREFS->euro_active); //gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_euro_preset), PREFS->euro_country); - data->country = PREFS->euro_country; - defpref_eurosetcurrency(data->window, &euro_params[PREFS->euro_country]); - + defpref_eurosetcurrency(data->window, data->country); gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->NB_euro_value), PREFS->euro_value); - ui_gtk_entry_set_text(data->ST_euro_symbol, PREFS->minor_cur.symbol); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_euro_isprefix), PREFS->minor_cur.sym_prefix); ui_gtk_entry_set_text(data->ST_euro_decimalchar, PREFS->minor_cur.decimal_char); ui_gtk_entry_set_text(data->ST_euro_groupingchar, PREFS->minor_cur.grouping_char); gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->NB_euro_fracdigits), PREFS->minor_cur.frac_digits); - //gtk_entry_set_text(GTK_ENTRY(data->ST_euro_symbol), PREFS->euro_symbol); //gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->NB_euro_nbdec), PREFS->euro_nbdec); //gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_euro_thsep), PREFS->euro_thsep); - - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_stat_byamount), PREFS->stat_byamount); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_stat_showrate), PREFS->stat_showrate); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_stat_showdetail), PREFS->stat_showdetail); - - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_budg_showdetail), PREFS->budg_showdetail); - - gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_color_scheme), PREFS->report_color_scheme); - - /* import */ - gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_dtex_datefmt), PREFS->dtex_datefmt); - gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_dtex_ofxname), PREFS->dtex_ofxname); - gtk_combo_box_set_active(GTK_COMBO_BOX(data->CY_dtex_ofxmemo), PREFS->dtex_ofxmemo); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_dtex_qifmemo), PREFS->dtex_qifmemo); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_dtex_qifswap), PREFS->dtex_qifswap); - - } /* ** get :: fill PREFS structure from widgets */ - #define RGBA_TO_INT(x) (int)(x*255) static gchar *gdk_rgba_to_hex(GdkRGBA *rgba) @@ -1010,6 +1037,21 @@ const gchar *lang; DB( g_print("\n[ui-pref] get\n") ); + // general + PREFS->showsplash = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_show_splash)); + PREFS->loadlast = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_load_last)); + PREFS->appendscheduled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_append_scheduled)); + PREFS->do_update_currency = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_do_update_currency)); + PREFS->date_range_wal = hbtk_combo_box_get_active_id(GTK_COMBO_BOX_TEXT(data->CY_daterange_wal)); + PREFS->fisc_year_day = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->NB_fiscyearday)); + PREFS->fisc_year_month = 1 + gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_fiscyearmonth)); + + // files/backup + ui_gtk_entry_replace_text(data->ST_path_hbfile, &PREFS->path_hbfile); + + PREFS->bak_is_automatic = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_bak_is_automatic)); + PREFS->bak_max_num_copies = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->NB_bak_max_num_copies)); + g_free(PREFS->language); PREFS->language = NULL; lang = gtk_combo_box_get_active_id(GTK_COMBO_BOX(data->CY_language)); @@ -1017,91 +1059,70 @@ const gchar *lang; { PREFS->language = g_strdup(lang); } - + PREFS->toolbar_style = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_toolbar)); //PREFS->image_size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->NB_image_size)); PREFS->custom_colors = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_custom_colors)); - gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(data->CP_exp_color), &rgba); g_free(PREFS->color_exp); PREFS->color_exp = gdk_rgba_to_hex(&rgba); - gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(data->CP_inc_color), &rgba); g_free(PREFS->color_inc); PREFS->color_inc = gdk_rgba_to_hex(&rgba); - gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(data->CP_warn_color), &rgba); g_free(PREFS->color_warn); PREFS->color_warn = gdk_rgba_to_hex(&rgba); - //PREFS->rules_hint = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_ruleshint)); PREFS->grid_lines = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_gridlines)); + //list_txn_colpref_get(GTK_TREE_VIEW(data->LV_opecolumns), PREFS->lst_ope_columns); - PREFS->fisc_year_day = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->NB_fiscyearday)); - PREFS->fisc_year_month = 1 + gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_fiscyearmonth)); - - list_txn_colpref_get(GTK_TREE_VIEW(data->LV_opecolumns), PREFS->lst_ope_columns); - - g_free(PREFS->path_hbfile); - PREFS->path_hbfile = g_strdup(gtk_entry_get_text(GTK_ENTRY(data->ST_path_hbfile))); - - ui_gtk_entry_replace_text(data->ST_path_import, &PREFS->path_import); - - ui_gtk_entry_replace_text(data->ST_path_export, &PREFS->path_export); - - PREFS->loadlast = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_load_last)); - PREFS->appendscheduled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_append_scheduled)); - PREFS->do_update_currency = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_do_update_currency)); - - PREFS->showsplash = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_show_splash)); - PREFS->heritdate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_herit_date)); + // transaction + PREFS->date_range_txn = hbtk_combo_box_get_active_id(GTK_COMBO_BOX_TEXT(data->CY_daterange_txn)); + PREFS->date_future_nbdays = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_datefuture_nbdays)); PREFS->hidereconciled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_hide_reconciled)); PREFS->showremind = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_show_remind)); + PREFS->heritdate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_herit_date)); + PREFS->txn_memoacp = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_memoacp)); + PREFS->txn_memoacp_days = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_memoacp_days)); - //g_free(PREFS->path_navigator); - //PREFS->path_navigator = g_strdup(gtk_entry_get_text(GTK_ENTRY(data->ST_path_navigator))); - + // display format g_free(PREFS->date_format); PREFS->date_format = g_strdup(gtk_entry_get_text(GTK_ENTRY(data->ST_datefmt))); - PREFS->vehicle_unit_ismile = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_unitismile)); PREFS->vehicle_unit_isgal = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_unitisgal)); - PREFS->date_range_wal = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_daterange_wal)); - PREFS->date_range_txn = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_daterange_txn)); - PREFS->date_future_nbdays = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_datefuture_nbdays)); - PREFS->date_range_rep = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_daterange_rep)); + // import/export + PREFS->dtex_datefmt = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_dtex_datefmt)); + PREFS->dtex_ucfirst = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_dtex_ucfirst)); + PREFS->dtex_ofxname = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_dtex_ofxname)); + PREFS->dtex_ofxmemo = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_dtex_ofxmemo)); + PREFS->dtex_qifmemo = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_dtex_qifmemo)); + PREFS->dtex_qifswap = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_dtex_qifswap)); + ui_gtk_entry_replace_text(data->ST_path_import, &PREFS->path_import); + ui_gtk_entry_replace_text(data->ST_path_export, &PREFS->path_export); + PREFS->dtex_csvsep = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_dtex_csvsep)); - PREFS->euro_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_euro_enable)); + // report + PREFS->date_range_rep = hbtk_combo_box_get_active_id(GTK_COMBO_BOX_TEXT(data->CY_daterange_rep)); + PREFS->report_color_scheme = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_color_scheme)); + PREFS->stat_byamount = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_stat_byamount)); + PREFS->stat_showrate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_stat_showrate)); + PREFS->stat_showdetail = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_stat_showdetail)); + PREFS->budg_showdetail = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_budg_showdetail)); + // euro minor + PREFS->euro_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_euro_enable)); PREFS->euro_country = data->country; PREFS->euro_value = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->NB_euro_value)); //strcpy(PREFS->euro_symbol, gtk_entry_get_text(GTK_ENTRY(data->ST_euro_symbol))); //PREFS->euro_nbdec = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->NB_euro_nbdec)); //PREFS->euro_thsep = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_euro_thsep)); - ui_gtk_entry_replace_text(data->ST_euro_symbol, &PREFS->minor_cur.symbol); PREFS->minor_cur.sym_prefix = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_euro_isprefix)); ui_gtk_entry_replace_text(data->ST_euro_decimalchar, &PREFS->minor_cur.decimal_char); ui_gtk_entry_replace_text(data->ST_euro_groupingchar, &PREFS->minor_cur.grouping_char); PREFS->minor_cur.frac_digits = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->NB_euro_fracdigits)); - - PREFS->stat_byamount = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_stat_byamount)); - PREFS->stat_showrate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_stat_showrate)); - PREFS->stat_showdetail = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_stat_showdetail)); - - PREFS->budg_showdetail = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_budg_showdetail)); - - PREFS->report_color_scheme = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_color_scheme)); - - /* import */ - PREFS->dtex_datefmt = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_dtex_datefmt)); - PREFS->dtex_ofxname = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_dtex_ofxname)); - PREFS->dtex_ofxmemo = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_dtex_ofxmemo)); - PREFS->dtex_qifmemo = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_dtex_qifmemo)); - PREFS->dtex_qifswap = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_dtex_qifswap)); - //PREFS->chart_legend = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_chartlegend)); list_ext_colpref_get(GTK_TREE_VIEW(data->PI_plugin_columns), &(PREFS->ext_whitelist)); @@ -1110,7 +1131,7 @@ const gchar *lang; static GtkWidget *defpref_page_import (struct defpref_data *data) { -GtkWidget *content_grid, *group_grid, *hbox, *label, *widget; +GtkWidget *content_grid, *group_grid, *label, *widget; gint crow, row; content_grid = gtk_grid_new(); @@ -1123,10 +1144,10 @@ gint crow, row; gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - - label = make_label_group(_("Date options")); + + label = make_label_group(_("General options")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); - + row = 1; label = make_label_widget(_("Date order:")); //----------------------------------------- l, r, t, b @@ -1136,18 +1157,23 @@ gint crow, row; //gtk_grid_attach (GTK_GRID (group_grid), data->CY_option[FILTER_DATE], 1, 2, row, row+1); gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); + row++; + widget = gtk_check_button_new_with_mnemonic (_("Sentence _case memo/payee")); + data->CM_dtex_ucfirst = widget; + gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1); + // group :: OFX/QFX options group_grid = gtk_grid_new (); gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - + label = make_label_group(_("OFX/QFX options")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); - + row = 1; - label = make_label_widget(_("_Name field:")); + label = make_label_widget(_("OFX _Name:")); //----------------------------------------- l, r, t, b gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); widget = make_cycle(label, CYA_IMPORT_OFXNAME); @@ -1156,7 +1182,7 @@ gint crow, row; gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); row++; - label = make_label_widget(_("_Memo field:")); + label = make_label_widget(_("OFX _Memo:")); //----------------------------------------- l, r, t, b gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); widget = make_cycle(label, CYA_IMPORT_OFXMEMO); @@ -1169,67 +1195,38 @@ gint crow, row; gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - + label = make_label_group(_("QIF options")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); - + row = 1; - label = make_label_widget(_("Memos:")); - gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); - widget = gtk_check_button_new_with_mnemonic (_("_Import")); + widget = gtk_check_button_new_with_mnemonic (_("_Import memos")); data->CM_dtex_qifmemo = widget; - gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); - widget = gtk_check_button_new_with_mnemonic (_("_Swap with payees")); + gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 1, 1); + widget = gtk_check_button_new_with_mnemonic (_("_Swap memos with payees")); data->CM_dtex_qifswap = widget; - gtk_grid_attach (GTK_GRID (group_grid), widget, 3, row, 1, 1); - + gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); - // group :: Files folder + // group :: other options group_grid = gtk_grid_new (); gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - - label = make_label_group(_("Files folder")); - gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); - - row = 1; - label = make_label_widget(_("_Import:")); - //----------------------------------------- l, r, t, b - gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); - - hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); - gtk_widget_set_hexpand (hbox, TRUE); - gtk_grid_attach (GTK_GRID (group_grid), hbox, 2, row, 1, 1); - widget = make_string(label); - data->ST_path_import = widget; - gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET(widget)), GTK_STYLE_CLASS_LINKED); - gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0); + label = make_label_group(_("CSV options")); + gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); - //widget = gtk_button_new_with_label("..."); - widget = gtk_button_new_from_icon_name(ICONNAME_FOLDER, GTK_ICON_SIZE_BUTTON); - data->BT_path_import = widget; - gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); + row = 1; + label = make_label(_("(transaction import only)"), 0.0, 0.5); + gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 2, 1); row++; - label = make_label_widget(_("_Export:")); + label = make_label_widget(_("Separator:")); //----------------------------------------- l, r, t, b gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); - - hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); - gtk_widget_set_hexpand (hbox, TRUE); - gtk_grid_attach (GTK_GRID (group_grid), hbox, 2, row, 1, 1); - - widget = make_string(label); - data->ST_path_export = widget; - gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET(widget)), GTK_STYLE_CLASS_LINKED); - gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0); - - //widget = gtk_button_new_with_label("..."); - widget = gtk_button_new_from_icon_name(ICONNAME_FOLDER, GTK_ICON_SIZE_BUTTON); - data->BT_path_export = widget; - gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); + widget = make_cycle(label, CYA_IMPORT_CSVSEPARATOR); + data->CY_dtex_csvsep = widget; + gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); return content_grid; } @@ -1250,7 +1247,7 @@ gint i, x, y; index = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_color_scheme)); colorscheme_init(&scheme, index); - + gtk_widget_get_size_request (widget, &w, &h); x = y = 0; for(i=0;iCY_daterange_rep = widget; //gtk_grid_attach (GTK_GRID (group_grid), data->CY_option[FILTER_DATE], 1, 2, row, row+1); gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); @@ -1301,10 +1298,10 @@ gint crow, row; gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - + label = make_label_group(_("Charts options")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); - + row = 1; label = make_label_widget(_("Color scheme:")); //----------------------------------------- l, r, t, b @@ -1327,10 +1324,10 @@ gint crow, row; gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - + label = make_label_group(_("Statistics options")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); - + row = 1; widget = gtk_check_button_new_with_mnemonic (_("Show by _amount")); data->CM_stat_byamount = widget; @@ -1351,10 +1348,10 @@ gint crow, row; gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - + label = make_label_group(_("Budget options")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); - + row = 1; widget = gtk_check_button_new_with_mnemonic (_("Show _details")); data->CM_budg_showdetail = widget; @@ -1379,7 +1376,7 @@ gint crow, row; gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - + label = make_label_group(_("General")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); @@ -1394,7 +1391,7 @@ gint crow, row; gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - + label = make_label_group(_("Currency")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 4, 1); @@ -1408,13 +1405,13 @@ gint crow, row; label = make_label_widget(_("_Preset:")); //----------------------------------------- l, r, t, b gtk_grid_attach (GTK_GRID (group_grid), label, 2, row, 1, 1); - widget = make_euro_presets(label); + widget = ui_euro_combobox_new (label); data->CY_euro_preset = widget; gtk_widget_set_margin_left (label, 2*SPACING_LARGE); //gtk_grid_attach (GTK_GRID (group_grid), data->CY_option[FILTER_DATE], 1, 2, row, row+1); gtk_grid_attach (GTK_GRID (group_grid), widget, 3, row, 1, 1); - + // group :: Exchange rate group_grid = gtk_grid_new (); data->GRP_rate = group_grid; @@ -1439,7 +1436,7 @@ gint crow, row; gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - + label = make_label_group(_("Format")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); @@ -1456,7 +1453,7 @@ gint crow, row; gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_container_add (GTK_CONTAINER (expander), group_grid); - + row = 0; label = make_label_widget(_("_Symbol:")); gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); @@ -1496,7 +1493,7 @@ gint crow, row; static GtkWidget *defpref_page_display (struct defpref_data *data) { -GtkWidget *content_grid, *group_grid, *label, *widget, *expander; +GtkWidget *content_grid, *group_grid, *label, *widget, *expander, *hbox; gint crow, row; content_grid = gtk_grid_new(); @@ -1504,30 +1501,40 @@ gint crow, row; gtk_orientable_set_orientation(GTK_ORIENTABLE(content_grid), GTK_ORIENTATION_VERTICAL); crow = 0; - // group :: Date options + // group :: General group_grid = gtk_grid_new (); gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - - label = make_label_group(_("Date")); + + label = make_label_group(_("User interface")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); row = 1; + label = make_label(_("_Language:"), 0, 0.5); + gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); + widget = ui_language_combobox_new(label); + data->CY_language = widget; + gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); + + row++; + row++; + label = make_label(_("_Date display:"), 0, 0.5); + gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); widget = make_label(NULL, 0, 0.5); data->LB_date = widget; - gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1); + gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); row++; expander = gtk_expander_new_with_mnemonic(_("_Customize")); - gtk_grid_attach (GTK_GRID (group_grid), expander, 1, row, 1, 1); + gtk_grid_attach (GTK_GRID (group_grid), expander, 2, row, 1, 1); group_grid = gtk_grid_new (); gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_container_add (GTK_CONTAINER (expander), group_grid); - row = 1; + row++; label = make_label_widget(_("_Format:")); //----------------------------------------- l, r, t, b gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); @@ -1539,7 +1546,7 @@ gint crow, row; widget = gtk_image_new_from_icon_name (ICONNAME_INFO, GTK_ICON_SIZE_BUTTON); gtk_grid_attach (GTK_GRID (group_grid), widget, 3, row, 1, 1); - + gtk_widget_set_tooltip_text(widget, _("%a locale's abbreviated weekday name.\n" "%A locale's full weekday name. \n" @@ -1554,7 +1561,7 @@ gint crow, row; "%m month as a decimal number [01,12]. \n" "%p locale's appropriate date representation. \n" "%y year without century as a decimal number [00,99]. \n" -"%Y year with century as a decimal number. \n") +"%Y year with century as a decimal number.") ); row++; @@ -1562,12 +1569,40 @@ gint crow, row; gtk_label_set_markup (GTK_LABEL(widget), "online reference"); gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); + + + + // group :: Fiscal year + group_grid = gtk_grid_new (); + gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); + gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); + gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); + + label = make_label_group(_("Fiscal year")); + gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); + + row = 1; + //TRANSLATORS: (fiscal year) starts on + label = make_label_widget(_("Starts _on:")); + gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); + + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL); + gtk_grid_attach (GTK_GRID (group_grid), hbox, 2, row, 1, 1); + widget = make_numeric (label, 1, 28); + data->NB_fiscyearday = widget; + gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); + widget = make_cycle (NULL, CYA_MONTHS); + data->CY_fiscyearmonth = widget; + gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); + + + // group :: Measurement units group_grid = gtk_grid_new (); gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - + label = make_label_group(_("Measurement units")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); @@ -1587,7 +1622,7 @@ gint crow, row; static GtkWidget *defpref_page_transactions (struct defpref_data *data) { -GtkWidget *content_grid, *group_grid, *sw, *label, *widget; +GtkWidget *content_grid, *group_grid, *label, *widget; gint crow, row; content_grid = gtk_grid_new(); @@ -1600,47 +1635,47 @@ gint crow, row; gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - + label = make_label_group(_("Transaction window")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); row = 1; - label = make_label_widget(_("Date _range:")); + label = make_label(_("_Range:"), 0, 0.5); //----------------------------------------- l, r, t, b gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); - widget = make_daterange(label, FALSE); + widget = make_daterange(label, DATE_RANGE_CUSTOM_HIDE); data->CY_daterange_txn = widget; gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); row++; - label = make_label_widget(_("_Show:")); + label = make_label(_("_Show future:"), 0, 0.5); //----------------------------------------- l, r, t, b gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); widget = make_numeric(NULL, 0, 366); - + data->ST_datefuture_nbdays = widget; gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); //TRANSLATORS: there is a spinner on the left of this label, and so you have 0....x days in advance the current date - label = make_label(_("days in advance the current date"), 0, 0.5); + label = make_label(_("days ahead"), 0, 0.5); gtk_grid_attach (GTK_GRID (group_grid), label, 3, row, 1, 1); row++; widget = gtk_check_button_new_with_mnemonic (_("Hide reconciled transactions")); data->CM_hide_reconciled = widget; - gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 2, 1); + gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 3, 1); row++; widget = gtk_check_button_new_with_mnemonic (_("Always show remind transactions")); data->CM_show_remind = widget; - gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 2, 1); + gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 3, 1); // group :: Multiple add group_grid = gtk_grid_new (); gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - + label = make_label_group(_("Multiple add")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); @@ -1649,12 +1684,34 @@ gint crow, row; data->CM_herit_date = widget; gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1); + // group :: Memo autocomplete + group_grid = gtk_grid_new (); + gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); + gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); + gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); + + label = make_label_group(_("Memo autocomplete")); + gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); + + row = 1; + widget = gtk_check_button_new_with_mnemonic (_("Active")); + data->CM_memoacp = widget; + gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1); + + row++; + widget = make_numeric(NULL, 0, 1460); + data->ST_memoacp_days = widget; + gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); + label = make_label(_("rolling days"), 0, 0.5); + gtk_grid_attach (GTK_GRID (group_grid), label, 3, row, 1, 1); + // group :: Column list + /* group_grid = gtk_grid_new (); gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - + label = make_label_group(_("Column list")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); @@ -1669,6 +1726,7 @@ gint crow, row; gtk_widget_set_vexpand (sw, TRUE); gtk_grid_attach (GTK_GRID (group_grid), sw, 1, row, 2, 1); gtk_widget_set_tooltip_text(widget, _("Drag & drop to change the order")); + */ return content_grid; } @@ -1690,29 +1748,28 @@ gint crow, row; gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - + label = make_label_group(_("General")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); row = 1; - label = make_label_widget(_("_Language:")); - gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); - widget = ui_language_combobox_new(label); - data->CY_language = widget; - gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); - - row++; - label = make_label_widget(_("_Toolbar:")); + label = make_label(_("_Toolbar:"), 0, 0.5); gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); widget = make_cycle(label, CYA_TOOLBAR_STYLE); data->CY_toolbar = widget; gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); + + + + + + row++; //widget = gtk_check_button_new_with_mnemonic (_("Enable rows in alternating colors")); //data->CM_ruleshint = widget; - label = make_label_widget(_("_Grid line:")); + label = make_label(_("_Grid line:"), 0, 0.5); gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); widget = make_cycle(label, CYA_GRID_LINES); data->CY_gridlines = widget; @@ -1723,23 +1780,18 @@ gint crow, row; gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - + label = make_label_group(_("Amount colors")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); row = 1; widget = gtk_check_button_new_with_mnemonic (_("Uses custom colors")); data->CM_custom_colors = widget; - gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); - - group_grid = gtk_grid_new (); - data->GR_colors = group_grid; - gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); - gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); - gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); + gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1); row++; - label = make_label_widget(_("_Preset:")); + label = make_label(_("_Preset:"), 0, 0.5); + data->LB_colors = label; //----------------------------------------- l, r, t, b gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); widget = make_cycle(label, CYA_TANGO_COLORS); @@ -1748,16 +1800,18 @@ gint crow, row; gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); row++; - label = make_label_widget(_("_Expense:")); + label = make_label(_("_Expense:"), 0, 0.5); + data->LB_exp_color = label; //----------------------------------------- l, r, t, b gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL); + data->GR_colors = hbox; gtk_grid_attach (GTK_GRID (group_grid), hbox, 2, row, 1, 1); - + widget = gtk_color_button_new (); data->CP_exp_color = widget; gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); - + label = make_label_widget(_("_Income:")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); @@ -1776,7 +1830,7 @@ gint crow, row; } -static GtkWidget *defpref_page_general (struct defpref_data *data) +static GtkWidget *defpref_page_filebackup (struct defpref_data *data) { GtkWidget *content_grid, *group_grid, *hbox, *label, *widget; gint crow, row; @@ -1786,85 +1840,113 @@ gint crow, row; gtk_orientable_set_orientation(GTK_ORIENTABLE(content_grid), GTK_ORIENTATION_VERTICAL); crow = 0; - // group :: Program start + // group :: Backup group_grid = gtk_grid_new (); gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - - label = make_label_group(_("Program start")); + + label = make_label_group(_("Backup")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); row = 1; - widget = gtk_check_button_new_with_mnemonic (_("Show splash screen")); - data->CM_show_splash = widget; + widget = gtk_check_button_new_with_mnemonic (_("_Enable automatic backups")); + data->CM_bak_is_automatic = widget; gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1); row++; - widget = gtk_check_button_new_with_mnemonic (_("Load last opened file")); - data->CM_load_last = widget; - gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1); + label = make_label_widget(_("_Number of backups to keep:")); + data->LB_bak_max_num_copies = label; + gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); + widget = make_numeric (label, 1, 99); + data->NB_bak_max_num_copies = widget; + gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); row++; - widget = gtk_check_button_new_with_mnemonic (_("Post pending scheduled transactions")); - data->CM_append_scheduled = widget; - gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL); + data->GR_bak_freq = hbox; + //gtk_widget_set_hexpand (hbox, TRUE); + gtk_grid_attach (GTK_GRID (group_grid), hbox, 1, row, 2, 1); - row++; - widget = gtk_check_button_new_with_mnemonic (_("Update currencies online")); - data->CM_do_update_currency = widget; - gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1); + widget = gtk_image_new_from_icon_name (ICONNAME_INFO, GTK_ICON_SIZE_BUTTON); + gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); + label = make_label_widget(_("Backup frequency is once a day")); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); - // group :: Fiscal year + + return content_grid; +} + + +static GtkWidget *defpref_page_folders (struct defpref_data *data) +{ +GtkWidget *content_grid, *group_grid, *hbox, *label, *widget; +gint crow, row; + + content_grid = gtk_grid_new(); + gtk_grid_set_row_spacing (GTK_GRID (content_grid), SPACING_LARGE); + gtk_orientable_set_orientation(GTK_ORIENTABLE(content_grid), GTK_ORIENTATION_VERTICAL); + + crow = 0; + // group :: Files folder group_grid = gtk_grid_new (); gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - label = make_label_group(_("Fiscal year")); + label = make_label_group(_("HomeBank files")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); row = 1; - //TRANSLATORS: (fiscal year) starts on - label = make_label_widget(_("Starts _on:")); + label = make_label_widget(_("_Wallets:")); gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); - hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + gtk_widget_set_hexpand (hbox, TRUE); gtk_grid_attach (GTK_GRID (group_grid), hbox, 2, row, 1, 1); - widget = make_numeric (label, 1, 28); - data->NB_fiscyearday = widget; - gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); - widget = make_cycle (NULL, CYA_MONTHS); - data->CY_fiscyearmonth = widget; + + widget = make_string(label); + data->ST_path_hbfile = widget; + gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET(widget)), GTK_STYLE_CLASS_LINKED); + gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0); + + //widget = gtk_button_new_with_label("..."); + widget = gtk_button_new_from_icon_name(ICONNAME_FOLDER, GTK_ICON_SIZE_BUTTON); + data->BT_path_hbfile = widget; gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); - // group :: Main window reports + + // group :: Files folder group_grid = gtk_grid_new (); gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - - label = make_label_group(_("Main window reports")); + + label = make_label_group(_("Exchange files")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); row = 1; - label = make_label_widget(_("Date _range:")); + label = make_label_widget(_("_Import:")); + //----------------------------------------- l, r, t, b gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); - widget = make_daterange(label, FALSE); - data->CY_daterange_wal = widget; - gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); - // group :: Files folder - group_grid = gtk_grid_new (); - gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); - gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); - gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); - - label = make_label_group(_("Files folder")); - gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + gtk_widget_set_hexpand (hbox, TRUE); + gtk_grid_attach (GTK_GRID (group_grid), hbox, 2, row, 1, 1); - row = 1; - label = make_label_widget(_("_Default:")); + widget = make_string(label); + data->ST_path_import = widget; + gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET(widget)), GTK_STYLE_CLASS_LINKED); + gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0); + + //widget = gtk_button_new_with_label("..."); + widget = gtk_button_new_from_icon_name(ICONNAME_FOLDER, GTK_ICON_SIZE_BUTTON); + data->BT_path_import = widget; + gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); + + row++; + label = make_label_widget(_("_Export:")); + //----------------------------------------- l, r, t, b gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); @@ -1872,15 +1954,77 @@ gint crow, row; gtk_grid_attach (GTK_GRID (group_grid), hbox, 2, row, 1, 1); widget = make_string(label); - data->ST_path_hbfile = widget; + data->ST_path_export = widget; gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET(widget)), GTK_STYLE_CLASS_LINKED); gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0); //widget = gtk_button_new_with_label("..."); widget = gtk_button_new_from_icon_name(ICONNAME_FOLDER, GTK_ICON_SIZE_BUTTON); - data->BT_path_hbfile = widget; + data->BT_path_export = widget; gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); + + + return content_grid; +} + + +static GtkWidget *defpref_page_general (struct defpref_data *data) +{ +GtkWidget *content_grid, *group_grid, *label, *widget; +gint crow, row; + + content_grid = gtk_grid_new(); + gtk_grid_set_row_spacing (GTK_GRID (content_grid), SPACING_LARGE); + gtk_orientable_set_orientation(GTK_ORIENTABLE(content_grid), GTK_ORIENTATION_VERTICAL); + + crow = 0; + // group :: Program start + group_grid = gtk_grid_new (); + gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); + gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); + gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); + + label = make_label_group(_("Program start")); + gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); + + row = 1; + widget = gtk_check_button_new_with_mnemonic (_("Show splash screen")); + data->CM_show_splash = widget; + gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1); + + row++; + widget = gtk_check_button_new_with_mnemonic (_("Load last opened file")); + data->CM_load_last = widget; + gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1); + + row++; + widget = gtk_check_button_new_with_mnemonic (_("Post pending scheduled transactions")); + data->CM_append_scheduled = widget; + gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1); + + row++; + widget = gtk_check_button_new_with_mnemonic (_("Update currencies online")); + data->CM_do_update_currency = widget; + gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 2, 1); + + + // group :: Main window reports + group_grid = gtk_grid_new (); + gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL); + gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM); + gtk_grid_attach (GTK_GRID (content_grid), group_grid, 0, crow++, 1, 1); + + label = make_label_group(_("Main window reports")); + gtk_grid_attach (GTK_GRID (group_grid), label, 0, 0, 3, 1); + + row = 1; + label = make_label(_("_Range:"), 0, 0.5); + gtk_grid_attach (GTK_GRID (group_grid), label, 1, row, 1, 1); + widget = make_daterange(label, DATE_RANGE_CUSTOM_HIDE); + data->CY_daterange_wal = widget; + gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); + return content_grid; } @@ -2155,26 +2299,26 @@ GtkTreeModel *model; /* ** add an empty new account to our temp GList and treeview */ -static void defpref_clear(GtkWidget *widget, gpointer user_data) +static void defpref_reset(GtkWidget *widget, gpointer user_data) { struct defpref_data *data; gint result; data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data"); - DB( g_print("\n(defpref_clear) (data=%p)\n", data) ); + DB( g_print("\n(defpref_reset) (data=%p)\n", data) ); result = ui_dialog_msg_confirm_alert( GTK_WINDOW(data->window), - _("Reset all preferences"), - _("Do you really want to reset all\npreferences to default values?"), - _("Reset") + _("Reset All Preferences"), + _("Do you really want to reset\nall preferences to default\nvalues?"), + _("_Reset") ); if( result == GTK_RESPONSE_OK ) { homebank_pref_setdefault(); defpref_set(data); } - + } @@ -2188,6 +2332,8 @@ GtkWidget *hbox, *vbox, *sw, *widget, *notebook, *page, *ebox, *image, *label; window = gtk_dialog_new_with_buttons (_("Preferences"), GTK_WINDOW(GLOBALS->mainwindow), 0, + _("_Reset"), + 55, _("_Cancel"), GTK_RESPONSE_REJECT, _("_OK"), @@ -2195,7 +2341,7 @@ GtkWidget *hbox, *vbox, *sw, *widget, *notebook, *page, *ebox, *image, *label; NULL); data.window = window; - + //store our window private data g_object_set_data(G_OBJECT(window), "inst_data", (gpointer)&data); @@ -2213,7 +2359,7 @@ GtkWidget *hbox, *vbox, *sw, *widget, *notebook, *page, *ebox, *image, *label; //left part vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL); gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0); - + //list sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_ETCHED_IN); @@ -2223,11 +2369,7 @@ GtkWidget *hbox, *vbox, *sw, *widget, *notebook, *page, *ebox, *image, *label; data.LV_page = widget; gtk_container_add (GTK_CONTAINER (sw), widget); - // clear button - data.BT_clear = gtk_button_new_with_mnemonic(_("_Reset")); - gtk_box_pack_start (GTK_BOX (vbox), data.BT_clear, FALSE, TRUE, 0); - //right part : notebook vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, SPACING_MEDIUM); gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); @@ -2242,11 +2384,11 @@ GtkWidget *hbox, *vbox, *sw, *widget, *notebook, *page, *ebox, *image, *label; #else GtkCssProvider *provider; provider = gtk_css_provider_new (); - gtk_css_provider_load_from_data (provider, + gtk_css_provider_load_from_data (provider, "#hbebox { color: @theme_selected_fg_color; background-color: @theme_selected_bg_color; }" , -1, NULL); gtk_style_context_add_provider (context, GTK_STYLE_PROVIDER(provider), G_MAXUINT); - + // gtk_style_context_set_state(context, GTK_STATE_FLAG_SELECTED); #endif @@ -2285,12 +2427,16 @@ GtkWidget *hbox, *vbox, *sw, *widget, *notebook, *page, *ebox, *image, *label; gtk_box_pack_start (GTK_BOX (vbox), notebook, TRUE, TRUE, 0); /* -"general", -"interface", -"display", -"help", -"euro", -"report" + PREF_GENERAL, + PREF_INTERFACE, + PREF_LOCALE, //old DISPLAY + PREF_TXN, //old COLUMNS + PREF_IMPORT, + PREF_REPORT, + PREF_BACKUP, + PREF_FOLDERS, + PREF_EURO, + PREF_MAX */ //general @@ -2301,12 +2447,12 @@ GtkWidget *hbox, *vbox, *sw, *widget, *notebook, *page, *ebox, *image, *label; page = defpref_page_interface(&data); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, NULL); - //columns - page = defpref_page_transactions(&data); + //locale + page = defpref_page_display(&data); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, NULL); - //display - page = defpref_page_display(&data); + //transaction + page = defpref_page_transactions(&data); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, NULL); //import @@ -2317,6 +2463,14 @@ GtkWidget *hbox, *vbox, *sw, *widget, *notebook, *page, *ebox, *image, *label; page = defpref_page_reports(&data); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, NULL); + //backup + page = defpref_page_filebackup(&data); + gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, NULL); + + //folders + page = defpref_page_folders(&data); + gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, NULL); + //euro page = defpref_page_euro(&data); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, NULL); @@ -2332,18 +2486,19 @@ GtkWidget *hbox, *vbox, *sw, *widget, *notebook, *page, *ebox, *image, *label; //connect all our signals g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window); - g_signal_connect (G_OBJECT (data.BT_clear), "clicked", G_CALLBACK (defpref_clear), NULL); - + g_signal_connect (data.CM_bak_is_automatic, "toggled", G_CALLBACK (defpref_backuptoggle), NULL); + + //path selector - g_signal_connect (data.BT_path_hbfile, "pressed", G_CALLBACK (defpref_pathselect), GINT_TO_POINTER(1)); - g_signal_connect (data.BT_path_import, "pressed", G_CALLBACK (defpref_pathselect), GINT_TO_POINTER(2)); - g_signal_connect (data.BT_path_export, "pressed", G_CALLBACK (defpref_pathselect), GINT_TO_POINTER(3)); + g_signal_connect (data.BT_path_hbfile, "pressed", G_CALLBACK (defpref_pathselect), GINT_TO_POINTER(PRF_PATH_WALLET)); + g_signal_connect (data.BT_path_import, "pressed", G_CALLBACK (defpref_pathselect), GINT_TO_POINTER(PRF_PATH_IMPORT)); + g_signal_connect (data.BT_path_export, "pressed", G_CALLBACK (defpref_pathselect), GINT_TO_POINTER(PRF_PATH_EXPORT)); g_signal_connect (data.CM_custom_colors, "toggled", G_CALLBACK (defpref_colortoggle), NULL); g_signal_connect (data.CY_colors, "changed", G_CALLBACK (defpref_colorpreset), NULL); - + g_signal_connect (gtk_tree_view_get_selection(GTK_TREE_VIEW(data.LV_page)), "changed", G_CALLBACK (defpref_selection), notebook); g_signal_connect (data.CM_euro_enable, "toggled", G_CALLBACK (defpref_eurotoggle), NULL); @@ -2408,20 +2563,24 @@ GtkWidget *hbox, *vbox, *sw, *widget, *notebook, *page, *ebox, *image, *label; ui_mainwindow_update(GLOBALS->mainwindow, GINT_TO_POINTER(UF_BALANCE+UF_VISUAL)); DB( g_print("old='%s' new='%s'\n", old_lang, PREFS->language) ); - + if(g_ascii_strncasecmp(old_lang == NULL ? "" : old_lang, PREFS->language == NULL ? "" : PREFS->language, -1) != 0) { ui_dialog_msg_infoerror(GTK_WINDOW(window), GTK_MESSAGE_INFO, _("Info"), _("You will have to restart HomeBank\nfor the language change to take effect.") ); - + } g_free(old_lang); break; + + case 55: + defpref_reset (window, NULL); + break; } - + // cleanup and destroy //defhbfile_cleanup(&data, result); @@ -2433,7 +2592,7 @@ GtkWidget *hbox, *vbox, *sw, *widget, *notebook, *page, *ebox, *image, *label; // ------------------------------- -GtkWidget *pref_list_create(void) +static GtkWidget *pref_list_create(void) { GtkListStore *store; GtkWidget *view; @@ -2488,7 +2647,7 @@ gint i; /* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =*/ - +/* extern gchar *list_txn_column_label[]; @@ -2502,17 +2661,17 @@ GtkTreeIter iter; GtkTreePath *path = gtk_tree_path_new_from_string (path_str); gboolean fixed; - /* get toggled iter */ + // get toggled iter gtk_tree_model_get_iter (model, &iter, path); gtk_tree_model_get (model, &iter, COLUMN_VISIBLE, &fixed, -1); - /* do something with the value */ + // do something with the value fixed ^= 1; - /* set new value */ + // set new value gtk_list_store_set (GTK_LIST_STORE (model), &iter, COLUMN_VISIBLE, fixed, -1); - /* clean up */ + // clean up gtk_tree_path_free (path); } @@ -2527,7 +2686,6 @@ gint i, id; DB( g_print("[lst_txn-colpref] store column order \n") ); - model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview)); valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter); i = 0; @@ -2542,13 +2700,10 @@ gint i, id; // start at index 2 (status, date always displayed columns[i+2] = visible == TRUE ? id : -id; - /* Make iter point to the next row in the list store */ + // Make iter point to the next row in the list store valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); i++; } - - - } @@ -2564,7 +2719,7 @@ gint i; DB( g_print("[lst_txn-colpref] create\n") ); - /* create list store */ + // create list store store = gtk_list_store_new( 3, G_TYPE_BOOLEAN, @@ -2572,23 +2727,23 @@ gint i; G_TYPE_UINT ); - /* populate */ + // populate for(i=0 ; i < NUM_LST_DSPOPE-1; i++ ) //-1 cause account column avoid { gint id; gboolean visible; DB( g_print("eval %d, %s\n", i, list_txn_column_label[i]) ); - + if(i <= LST_DSPOPE_DATE) // status, date always displayed continue; - //[i-1] here because lst_ope_columns[] do not store LST_DSPOPE_DATAS - id = ABS(PREFS->lst_ope_columns[i-1]); + //[i-1] here because lst_ope_columns[] do not store MODEL_TXN_POINTER + id = ABS(PREFS->lst_ope_columns[i-1]); if(id == 0) id = i; //if we pass here, new column or weird into pref file visible = (PREFS->lst_ope_columns[i-1] > 0) ? TRUE : FALSE; - + DB( g_print(" - pos=%2d, id=%2d - %d '%s'\n", i, id, visible, list_txn_column_label[id]) ); gtk_list_store_append (store, &iter); @@ -2597,7 +2752,7 @@ gint i; COLUMN_NAME, _(list_txn_column_label[id]), COLUMN_ID , id, -1); - + } //treeview @@ -2616,7 +2771,7 @@ gint i; g_signal_connect (renderer, "toggled", G_CALLBACK (list_txn_colpref_toggled_cell_data_function), store); - + renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (_("Column"), renderer, @@ -2629,6 +2784,7 @@ gint i; return(view); } +*/ static void list_ext_colpref_get(GtkTreeView *treeview, GList **columns)