X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fhomebank;a=blobdiff_plain;f=src%2Fhb-preferences.c;fp=src%2Fhb-preferences.c;h=7933e34f6ec50d2b68f4fa5ec7a1e5fb85433a26;hp=db7b3ed5a2adffbf11420f18a57f87a4d7e026d0;hb=236cb5e47660876f46488ea8f76ecd5bebfa1fac;hpb=8892e90b335f94c296462a91534334b674226cd9 diff --git a/src/hb-preferences.c b/src/hb-preferences.c index db7b3ed..7933e34 100644 --- a/src/hb-preferences.c +++ b/src/hb-preferences.c @@ -1,5 +1,5 @@ /* HomeBank -- Free, easy, personal accounting for everyone. - * Copyright (C) 1995-2018 Maxime DOYEN + * Copyright (C) 1995-2019 Maxime DOYEN * * This file is part of HomeBank. * @@ -289,6 +289,7 @@ void homebank_pref_free(void) g_free(PREFS->language); + g_free(PREFS->pnl_list_tab); g_free(PREFS->minor_cur.symbol); g_free(PREFS->minor_cur.decimal_char); @@ -320,9 +321,15 @@ gint i; PREFS->appendscheduled = FALSE; PREFS->do_update_currency = FALSE; + PREFS->bak_is_automatic = TRUE; + PREFS->bak_max_num_copies = 5; + PREFS->heritdate = FALSE; PREFS->hidereconciled = FALSE; PREFS->showremind = TRUE; + //#1673048 + PREFS->txn_memoacp = TRUE; + PREFS->txn_memoacp_days = 365; PREFS->toolbar_style = 4; //text beside icons PREFS->custom_colors = TRUE; @@ -359,20 +366,22 @@ gint i; PREFS->pnl_upc_col_pay_width = -1; PREFS->pnl_upc_col_mem_width = -1; + i = 0; + PREFS->lst_impope_columns[i++] = LST_DSPOPE_DATE; //always displayed + PREFS->lst_impope_columns[i++] = LST_DSPOPE_MEMO; + PREFS->lst_impope_columns[i++] = LST_DSPOPE_AMOUNT; + PREFS->lst_impope_columns[i++] = LST_DSPOPE_INFO; + PREFS->lst_impope_columns[i++] = LST_DSPOPE_PAYEE; + PREFS->lst_impope_columns[i++] = LST_DSPOPE_CATEGORY; + PREFS->lst_impope_columns[i++] = -LST_DSPOPE_TAGS; + PREFS->lst_impope_columns[i++] = -LST_DSPOPE_CLR; + PREFS->lst_impope_columns[i++] = -LST_DSPOPE_STATUS; //always displayed + PREFS->lst_impope_columns[i++] = -LST_DSPOPE_EXPENSE; + PREFS->lst_impope_columns[i++] = -LST_DSPOPE_INCOME; + PREFS->lst_impope_columns[i++] = -LST_DSPOPE_BALANCE; + PREFS->lst_impope_columns[i++] = -LST_DSPOPE_ACCOUNT; i = 0; - /* prior v4.5 - PREFS->lst_ope_columns[i++] = LST_DSPOPE_STATUS; - PREFS->lst_ope_columns[i++] = LST_DSPOPE_DATE; - PREFS->lst_ope_columns[i++] = LST_DSPOPE_INFO; - PREFS->lst_ope_columns[i++] = LST_DSPOPE_PAYEE; - PREFS->lst_ope_columns[i++] = LST_DSPOPE_MEMO; - PREFS->lst_ope_columns[i++] = -LST_DSPOPE_AMOUNT; - PREFS->lst_ope_columns[i++] = LST_DSPOPE_EXPENSE; - PREFS->lst_ope_columns[i++] = LST_DSPOPE_INCOME; - PREFS->lst_ope_columns[i++] = LST_DSPOPE_CATEGORY; - PREFS->lst_ope_columns[i++] = LST_DSPOPE_TAGS; - */ PREFS->lst_ope_columns[i++] = LST_DSPOPE_STATUS; //always displayed PREFS->lst_ope_columns[i++] = LST_DSPOPE_DATE; //always displayed PREFS->lst_ope_columns[i++] = LST_DSPOPE_INFO; @@ -385,23 +394,30 @@ gint i; PREFS->lst_ope_columns[i++] = LST_DSPOPE_INCOME; PREFS->lst_ope_columns[i++] = LST_DSPOPE_BALANCE; PREFS->lst_ope_columns[i++] = LST_DSPOPE_MEMO; + PREFS->lst_ope_columns[i++] = -LST_DSPOPE_ACCOUNT; PREFS->lst_ope_sort_id = LST_DSPOPE_DATE; PREFS->lst_ope_sort_order = GTK_SORT_ASCENDING; for( i=0;ilst_ope_col_size[i] = -1; + PREFS->lst_ope_col_width[i] = -1; //PREFS->base_cur.nbdecimal = 2; //PREFS->base_cur.separator = TRUE; - PREFS->date_range_wal = FLT_RANGE_LASTMONTH; - PREFS->date_range_txn = FLT_RANGE_LAST12MONTHS; + //PREFS->date_range_wal = FLT_RANGE_LASTMONTH; + //PREFS->date_range_txn = FLT_RANGE_LAST12MONTHS; + //PREFS->date_range_rep = FLT_RANGE_THISYEAR; + + //v5.2 change to let the example file show things + PREFS->date_range_wal = FLT_RANGE_ALLDATE; + PREFS->date_range_txn = FLT_RANGE_ALLDATE; + PREFS->date_range_rep = FLT_RANGE_ALLDATE; PREFS->date_future_nbdays = 0; - PREFS->date_range_rep = FLT_RANGE_THISYEAR; //import/export PREFS->dtex_nointro = TRUE; + PREFS->dtex_ucfirst = FALSE; //PREFS->dtex_datefmt PREFS->dtex_ofxname = 1; PREFS->dtex_ofxmemo = 2; @@ -471,10 +487,12 @@ static void homebank_pref_get_boolean( const gchar *key, gboolean *storage) { + DB( g_print(" search %s in %s\n", key, group_name) ); if( g_key_file_has_key(key_file, group_name, key, NULL) ) { *storage = g_key_file_get_boolean(key_file, group_name, key, NULL); + DB( g_print(" stored boolean %d for %s at %x\n", *storage, key, *storage) ); } } @@ -484,15 +502,12 @@ static void homebank_pref_get_integer( const gchar *key, gint *storage) { - DB( g_print(" search %s in %s\n", key, group_name) ); - if( g_key_file_has_key(key_file, group_name, key, NULL) ) { *storage = g_key_file_get_integer(key_file, group_name, key, NULL); - - DB( g_print(" store integer %d for %s at %x\n", *storage, key, *storage) ); + DB( g_print(" stored integer %d for %s at %x\n", *storage, key, *storage) ); } } @@ -502,10 +517,12 @@ static void homebank_pref_get_guint32( const gchar *key, guint32 *storage) { + DB( g_print(" search %s in %s\n", key, group_name) ); if( g_key_file_has_key(key_file, group_name, key, NULL) ) { *storage = g_key_file_get_integer(key_file, group_name, key, NULL); + DB( g_print(" stored guint32 %d for %s at %x\n", *storage, key, *storage) ); } } @@ -515,10 +532,12 @@ static void homebank_pref_get_short( const gchar *key, gshort *storage) { + DB( g_print(" search %s in %s\n", key, group_name) ); if( g_key_file_has_key(key_file, group_name, key, NULL) ) { *storage = (gshort)g_key_file_get_integer(key_file, group_name, key, NULL); + DB( g_print(" stored short %d for %s at %x\n", *storage, key, *storage) ); } } @@ -588,6 +607,7 @@ GKeyFile *keyfile; gboolean retval = FALSE; gchar *group, *filename; guint32 version; +gboolean loaded; GError *error = NULL; DB( g_print("\n[preferences] pref load\n") ); @@ -599,8 +619,15 @@ GError *error = NULL; DB( g_print(" - filename: %s\n", filename) ); - - if(g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, NULL)) + error = NULL; + loaded = g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, &error); + if( error ) + { + g_warning("unable to load file %s: %s", filename, error->message); + g_error_free (error); + } + + if( loaded == TRUE ) { group = "General"; @@ -676,9 +703,15 @@ GError *error = NULL; homebank_pref_get_boolean(keyfile, group, "AppendScheduled", &PREFS->appendscheduled); homebank_pref_get_boolean(keyfile, group, "UpdateCurrency", &PREFS->do_update_currency); + homebank_pref_get_boolean(keyfile, group, "BakIsAutomatic", &PREFS->bak_is_automatic); + homebank_pref_get_short(keyfile, group, "BakMaxNumCopies", &PREFS->bak_max_num_copies); + homebank_pref_get_boolean(keyfile, group, "HeritDate", &PREFS->heritdate); homebank_pref_get_boolean(keyfile, group, "HideReconciled", &PREFS->hidereconciled); homebank_pref_get_boolean(keyfile, group, "ShowRemind", &PREFS->showremind); + homebank_pref_get_boolean(keyfile, group, "TxnMemoAcp", &PREFS->txn_memoacp); + homebank_pref_get_short(keyfile, group, "TxnMemoAcpDays", &PREFS->txn_memoacp_days); + if( g_key_file_has_key(keyfile, group, "ColumnsOpe", NULL) ) { @@ -688,7 +721,7 @@ GError *error = NULL; if(version <= 2) //retrieve old 0.1 or 0.2 visibility boolean { - bsrc = g_key_file_get_boolean_list(keyfile, group, "ColumnsOpe", &length, &error); + bsrc = g_key_file_get_boolean_list(keyfile, group, "ColumnsOpe", &length, NULL); if( length == NUM_LST_DSPOPE-1 ) { //and convert @@ -701,11 +734,11 @@ GError *error = NULL; } else { - src = g_key_file_get_integer_list(keyfile, group, "ColumnsOpe", &length, &error); + src = g_key_file_get_integer_list(keyfile, group, "ColumnsOpe", &length, NULL); DB( g_print(" - length %d (max=%d)\n", length, NUM_LST_DSPOPE) ); - if( length == NUM_LST_DSPOPE-1 ) + if( length == NUM_LST_DSPOPE ) { DB( g_print(" - copying column order from pref file\n") ); memcpy(PREFS->lst_ope_columns, src, length*sizeof(gint)); @@ -758,14 +791,14 @@ GError *error = NULL; gint *src; gsize length; - src = g_key_file_get_integer_list(keyfile, group, "ColumnsOpeWidth", &length, &error); + src = g_key_file_get_integer_list(keyfile, group, "ColumnsOpeWidth", &length, NULL); DB( g_print(" - length %d (max=%d)\n", length, NUM_LST_DSPOPE) ); - if( length == NUM_LST_DSPOPE-1 ) + if( length == NUM_LST_DSPOPE ) { DB( g_print(" - copying column width from pref file\n") ); - memcpy(PREFS->lst_ope_col_size, src, length*sizeof(gint)); + memcpy(PREFS->lst_ope_col_width, src, length*sizeof(gint)); } //leak @@ -824,6 +857,7 @@ GError *error = NULL; homebank_pref_get_short(keyfile, group, "UpcColPayW", &PREFS->pnl_upc_col_pay_width); homebank_pref_get_short(keyfile, group, "UpcColMemW", &PREFS->pnl_upc_col_mem_width); + homebank_pref_get_string(keyfile, group, "PnlLstTab", &PREFS->pnl_list_tab); group = "Format"; @@ -934,8 +968,8 @@ GError *error = NULL; DB( g_print(" -> ** Exchange\n") ); - //homebank_pref_get_boolean(keyfile, group, "DoIntro", &PREFS->dtex_nointro); - + homebank_pref_get_boolean(keyfile, group, "DoIntro", &PREFS->dtex_nointro); + homebank_pref_get_boolean(keyfile, group, "UcFirst", &PREFS->dtex_ucfirst); homebank_pref_get_integer(keyfile, group, "DateFmt", &PREFS->dtex_datefmt); homebank_pref_get_integer(keyfile, group, "OfxName", &PREFS->dtex_ofxname); homebank_pref_get_integer(keyfile, group, "OfxMemo", &PREFS->dtex_ofxmemo); @@ -966,6 +1000,7 @@ GError *error = NULL; return retval; } + static void homebank_pref_set_string( GKeyFile *key_file, const gchar *group_name, @@ -992,6 +1027,7 @@ GKeyFile *keyfile; gboolean retval = FALSE; gchar *group, *filename; gsize length; +GError *error = NULL; DB( g_print("\n[preferences] pref save\n") ); @@ -1024,8 +1060,8 @@ gsize length; homebank_pref_set_string (keyfile, group, "ExportPath" , PREFS->path_export); //g_key_file_set_string (keyfile, group, "NavigatorPath", PREFS->path_navigator); - - + g_key_file_set_boolean (keyfile, group, "BakIsAutomatic", PREFS->bak_is_automatic); + g_key_file_set_integer (keyfile, group, "BakMaxNumCopies", PREFS->bak_max_num_copies); g_key_file_set_boolean (keyfile, group, "ShowSplash", PREFS->showsplash); g_key_file_set_boolean (keyfile, group, "LoadLast", PREFS->loadlast); @@ -1035,9 +1071,11 @@ gsize length; g_key_file_set_boolean (keyfile, group, "HeritDate", PREFS->heritdate); g_key_file_set_boolean (keyfile, group, "HideReconciled", PREFS->hidereconciled); g_key_file_set_boolean (keyfile, group, "ShowRemind", PREFS->showremind); + g_key_file_set_boolean (keyfile, group, "TxnMemoAcp", PREFS->txn_memoacp); + g_key_file_set_integer (keyfile, group, "TxnMemoAcpDays" , PREFS->txn_memoacp_days); - g_key_file_set_integer_list(keyfile, group, "ColumnsOpe", PREFS->lst_ope_columns, NUM_LST_DSPOPE-1); - g_key_file_set_integer_list(keyfile, group, "ColumnsOpeWidth", PREFS->lst_ope_col_size, NUM_LST_DSPOPE-1); + g_key_file_set_integer_list(keyfile, group, "ColumnsOpe", PREFS->lst_ope_columns, NUM_LST_DSPOPE); + g_key_file_set_integer_list(keyfile, group, "ColumnsOpeWidth", PREFS->lst_ope_col_width, NUM_LST_DSPOPE); g_key_file_set_integer (keyfile, group, "OpeSortId" , PREFS->lst_ope_sort_id); g_key_file_set_integer (keyfile, group, "OpeSortOrder" , PREFS->lst_ope_sort_order); @@ -1074,6 +1112,7 @@ gsize length; g_key_file_set_integer(keyfile, group, "UpcColPayW", PREFS->pnl_upc_col_pay_width); g_key_file_set_integer(keyfile, group, "UpcColMemW", PREFS->pnl_upc_col_mem_width); + homebank_pref_set_string (keyfile, group, "PnlLstTab", PREFS->pnl_list_tab); DB( g_print(" -> ** format\n") ); @@ -1126,8 +1165,8 @@ gsize length; group = "Exchange"; - //g_key_file_set_boolean (keyfile, group, "DoIntro", PREFS->dtex_nointro); - + g_key_file_set_boolean (keyfile, group, "DoIntro", PREFS->dtex_nointro); + g_key_file_set_boolean (keyfile, group, "UcFirst", PREFS->dtex_ucfirst); g_key_file_set_integer (keyfile, group, "DateFmt", PREFS->dtex_datefmt); g_key_file_set_integer (keyfile, group, "OfxName", PREFS->dtex_ofxname); g_key_file_set_integer (keyfile, group, "OfxMemo", PREFS->dtex_ofxmemo); @@ -1152,8 +1191,14 @@ gsize length; DB( g_print(" -> filename: %s\n", filename) ); - g_file_set_contents(filename, contents, length, NULL); - + g_file_set_contents(filename, contents, length, &error); + if( error ) + { + g_warning("unable to save file %s: %s", filename, error->message); + g_error_free (error); + error = NULL; + } + DB( g_print(" -> contents: %s\n", contents) ); DB( g_print(" -> freeing filename\n") );