]> Dogcows Code - chaz/homebank/blobdiff - src/hb-preferences.c
Merge branch 'upstream'
[chaz/homebank] / src / hb-preferences.c
index db7b3ed5a2adffbf11420f18a57f87a4d7e026d0..7933e34f6ec50d2b68f4fa5ec7a1e5fb85433a26 100644 (file)
@@ -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;i<NUM_LST_DSPOPE;i++)
-               PREFS->lst_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") );
This page took 0.02579 seconds and 4 git commands to generate.