[grisbi-cvs] [SCM] grisbi branch, master, updated. bee095a83b22cd587f27daf9442df74dfd0e1749
Pierre Biava
nobody at users.sourceforge.net
Fri Jul 23 17:19:59 CEST 2010
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "grisbi".
The branch, master has been updated
via bee095a83b22cd587f27daf9442df74dfd0e1749 (commit)
via 3d4171f4ef4c319a68b144c0723c2f4a54963ff7 (commit)
via 4e9cb768b90767f7f30f1753d1286f0e6680abbe (commit)
via 1de7726c988522f6918d5b0909f3577e9b72f6a6 (commit)
via a6fe2ef17682f07067e30cdffb0bbaafe2f4f950 (commit)
via 75f7057891c7de682f6e8106253a64aa0b137feb (commit)
via 0533ffdb05d71d5089b118aa30c1e0780ebb4997 (commit)
via bcdab1ae341b436dd4d97094154853107a134333 (commit)
via 70f8b078ee8f3854477818c038fa82eedd2e5c0e (commit)
from 6ce67abc7598f72fc4fe61d32533474bd44cc2b3 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit bee095a83b22cd587f27daf9442df74dfd0e1749
Author: pbiava <pierre.biava at nerim.net>
Date: Fri Jul 23 17:13:53 2010 +0200
Editing options of gcc and and deleting gcc compilation warning
commit 3d4171f4ef4c319a68b144c0723c2f4a54963ff7
Author: pbiava <pierre.biava at nerim.net>
Date: Thu Jul 22 21:26:24 2010 +0200
Minor corrections
commit 4e9cb768b90767f7f30f1753d1286f0e6680abbe
Author: pbiava <pierre.biava at nerim.net>
Date: Thu Jul 22 20:40:20 2010 +0200
change version and add a file for the financial_ui
commit 1de7726c988522f6918d5b0909f3577e9b72f6a6
Author: pbiava <pierre.biava at nerim.net>
Date: Thu Jul 22 20:20:57 2010 +0200
Add credits simulator. WARNING:experimental
commit a6fe2ef17682f07067e30cdffb0bbaafe2f4f950
Author: pbiava <pierre.biava at nerim.net>
Date: Sun Jul 18 08:35:26 2010 +0200
Corrige un bug d'affichage des préférences
commit 75f7057891c7de682f6e8106253a64aa0b137feb
Author: pbiava <pierre.biava at nerim.net>
Date: Sun Jul 18 08:32:29 2010 +0200
Corrige un bug de calcul du solde pointé
commit 0533ffdb05d71d5089b118aa30c1e0780ebb4997
Author: pbiava <pierre.biava at nerim.net>
Date: Wed Jul 14 22:22:44 2010 +0200
nettoyage du code
commit bcdab1ae341b436dd4d97094154853107a134333
Author: pbiava <pierre.biava at nerim.net>
Date: Wed Jul 14 21:54:47 2010 +0200
add account_icon in gsb file and change management of logo
commit 70f8b078ee8f3854477818c038fa82eedd2e5c0e
Author: pbiava <pierre.biava at nerim.net>
Date: Tue Jul 13 07:35:38 2010 +0200
add files bet_finance_ui
-----------------------------------------------------------------------
Changes:
diff --git a/configure.in b/configure.in
index 70ee8f0..4ca74e3 100644
--- a/configure.in
+++ b/configure.in
@@ -1,4 +1,4 @@
-AC_INIT([grisbi],[0.7.0])
+AC_INIT([grisbi],[0.7.1])
AC_CONFIG_SRCDIR(src/main.c)
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
@@ -170,10 +170,10 @@ AC_ARG_ENABLE(werror,
enable_werror=no)
if test "x$enable_werror" = xyes ; then
if test "x$GCC" = "xyes" ; then
- CFLAGS="$CFLAGS -Wall -Werror"
- AC_MSG_WARN([Werror and Wall flags are enabled])
+ CFLAGS="$CFLAGS -Wall -Wunused -Wno-unused-parameter -Wno-unused-function"
+ AC_MSG_WARN([Wall and Wunused flags are enabled])
else
- AC_MSG_WARN([WError and WAll can be enabled only with gcc])
+ AC_MSG_WARN([Wall and Wunused can be enabled only with gcc])
fi
fi
diff --git a/pixmaps/Makefile.am b/pixmaps/Makefile.am
index 157eafb..dfe50c2 100644
--- a/pixmaps/Makefile.am
+++ b/pixmaps/Makefile.am
@@ -9,6 +9,7 @@ grisbi_pixmaps_DATA = \
ac_cash.png \
ac_home.png \
ac_liability.png \
+ ac_liability_16.png \
addresses.png \
amount.png \
archive.png \
diff --git a/pixmaps/ac_liability_16.png b/pixmaps/ac_liability_16.png
new file mode 100644
index 0000000..f1c9403
Binary files /dev/null and b/pixmaps/ac_liability_16.png differ
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 050a053..f7e69e9 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -3,6 +3,8 @@ src/affichage.c
src/affichage_liste.c
src/bet_config.c
src/bet_data.c
+src/bet_data_finance.c
+src/bet_finance_ui.c
src/bet_future.c
src/bet_hist.c
src/bet_tab.c
diff --git a/po/fr.po b/po/fr.po
index 8e8051c..9fce60a 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: fr\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-29 20:26+0200\n"
+"POT-Creation-Date: 2010-07-10 17:00+0200\n"
"PO-Revision-Date: 2010-05-02 23:26+0200\n"
"Last-Translator: Pierre Biava <pierre at pierre.biava.name>\n"
"Language-Team: GNOME French Team <gnomefr at traduc.org>\n"
@@ -92,7 +92,7 @@ msgstr "Solde pointé"
msgid "Current balance"
msgstr "Solde courant"
-#: ../src/accueil.c:1009 ../src/balance_estimate_future.c:2113
+#: ../src/accueil.c:1009 ../src/bet_future.c:2112
msgid "Partial balance"
msgstr "Solde partiel"
@@ -179,7 +179,7 @@ msgstr "Soldes partiels de la liste des comptes"
#. Financial year name
#. set the name
#. Name entry
-#: ../src/accueil.c:2067 ../src/balance_estimate_future.c:2136
+#: ../src/accueil.c:2067 ../src/bet_future.c:2135
#: ../src/categories_onglet.c:666 ../src/gsb_archive_config.c:98
#: ../src/gsb_archive_config.c:186 ../src/gsb_assistant_archive_export.c:150
#: ../src/gsb_assistant_reconcile_config.c:388
@@ -188,7 +188,7 @@ msgstr "Soldes partiels de la liste des comptes"
#: ../src/gsb_data_partial_balance.c:1553 ../src/gsb_fyear_config.c:191
#: ../src/gsb_fyear_config.c:278 ../src/gsb_payment_method_config.c:239
#: ../src/gsb_reconcile_config.c:180 ../src/gsb_transactions_list.c:1785
-#: ../src/imputation_budgetaire.c:703 ../src/tiers_onglet.c:625
+#: ../src/imputation_budgetaire.c:704 ../src/tiers_onglet.c:625
msgid "Name"
msgstr "Nom"
@@ -211,12 +211,12 @@ msgstr "Devise"
#. initialization of titles
#: ../src/accueil.c:2151 ../src/affichage.c:993 ../src/affichage.c:994
-#: ../src/gsb_assistant_file.c:564 ../src/navigation.c:1133
-#: ../src/navigation.c:1134 ../src/traitement_variables.c:305
+#: ../src/gsb_assistant_file.c:564 ../src/navigation.c:1142
+#: ../src/navigation.c:1143 ../src/traitement_variables.c:304
msgid "My accounts"
msgstr "Mes comptes"
-#: ../src/affichage.c:141 ../src/parametres.c:347
+#: ../src/affichage.c:141 ../src/parametres.c:350
msgid "Fonts & logo"
msgstr "Polices et logo"
@@ -256,7 +256,7 @@ msgstr "Choisissez une couleur"
msgid "Back to default"
msgstr "Restaurer les réglages par défaut"
-#: ../src/affichage.c:370 ../src/parametres.c:365
+#: ../src/affichage.c:370 ../src/parametres.c:368
msgid "Addresses & titles"
msgstr "Adresses et titres"
@@ -300,7 +300,7 @@ msgstr "Adresse secondaire"
msgid "Select a new logo"
msgstr "Sélectionner un nouveau logo"
-#: ../src/affichage.c:697 ../src/parametres.c:383
+#: ../src/affichage.c:697 ../src/parametres.c:386
msgid "Toolbars"
msgstr "Barres d'outils"
@@ -506,116 +506,113 @@ msgstr "Ne pas autoriser la création de nouvelles catégories/Imputations B."
msgid "Maximum items showed in drop down lists (0 for no limit)"
msgstr "Nombre maximum de lignes dans les menus déroulants (0 pas de limite)"
-#: ../src/balance_estimate_config.c:82 ../src/etats_config.c:6371
+#: ../src/bet_config.c:80 ../src/etats_config.c:6371
msgid "Month"
msgstr "Mois"
-#: ../src/balance_estimate_config.c:83 ../src/etats_config.c:6375
+#: ../src/bet_config.c:81 ../src/etats_config.c:6375
msgid "Year"
msgstr "Année"
-#: ../src/balance_estimate_config.c:103 ../src/parametres.c:543
+#: ../src/bet_config.c:101 ../src/parametres.c:545
msgid "General Options"
msgstr "Généralités"
#. Calculation of period
-#: ../src/balance_estimate_config.c:107
+#: ../src/bet_config.c:105
msgid "Common data"
msgstr "Données communes"
-#: ../src/balance_estimate_config.c:141
+#: ../src/bet_config.c:139
msgid "Beginning of period"
msgstr "Début de la période"
-#: ../src/balance_estimate_config.c:150
+#: ../src/bet_config.c:148
msgid "1st day of month"
msgstr "1er jour du mois"
-#: ../src/balance_estimate_config.c:156
+#: ../src/bet_config.c:154
msgid "date today"
msgstr "Aujourd'hui"
-#: ../src/balance_estimate_config.c:176
+#: ../src/bet_config.c:174
msgid "Note: This option is used if no starting date for forecasts."
msgstr ""
"Note : cette option est utilisée en l'absence d'une date de début pour les "
"prévisions."
-#: ../src/balance_estimate_config.c:204 ../src/parametres.c:552
+#: ../src/bet_config.c:202 ../src/parametres.c:554
msgid "Accounts data"
msgstr "Données des comptes"
#. Data for the forecast
-#: ../src/balance_estimate_config.c:224
+#: ../src/bet_config.c:222
msgid "Data for the forecast"
msgstr "Données pour le tableau des prévisions"
#. Sources of historical data
-#: ../src/balance_estimate_config.c:229
+#: ../src/bet_config.c:227
msgid "Sources of historical data"
msgstr "Sources des données historiques"
#. set the choice of account
-#: ../src/balance_estimate_config.c:270 ../src/categories_onglet.c:152
+#: ../src/bet_config.c:268 ../src/categories_onglet.c:152
#: ../src/etats_config.c:681 ../src/gsb_assistant_reconcile_config.c:399
#: ../src/gsb_assistant_reconcile_config.c:594
#: ../src/gsb_payment_method_config.c:159 ../src/gsb_reconcile_config.c:96
#: ../src/gsb_scheduler_list.c:339 ../src/imputation_budgetaire.c:164
-#: ../src/navigation.c:1154 ../src/tiers_onglet.c:231
+#: ../src/navigation.c:1163 ../src/tiers_onglet.c:231
msgid "Account"
msgstr "Compte"
-#: ../src/balance_estimate_config.c:284
+#: ../src/bet_config.c:282
msgid "Use the budget module"
msgstr "Utiliser le module budgétaire"
#. partie mensuelle
-#: ../src/balance_estimate_config.c:353
+#: ../src/bet_config.c:351
msgid "Duration estimation"
msgstr "Durée d'estimation"
-#: ../src/balance_estimate_config.c:516
+#: ../src/bet_config.c:514
msgid "Labels for transactions"
msgstr "Libellé des opérations"
-#: ../src/balance_estimate_config.c:521 ../src/balance_estimate_config.c:539
-#: ../src/balance_estimate_config.c:556
+#: ../src/bet_config.c:519 ../src/bet_config.c:537 ../src/bet_config.c:554
msgid "By default"
msgstr "Par défaut"
#. mise en place de la paddingbox des catégories
#. set the title
-#: ../src/balance_estimate_config.c:522 ../src/balance_estimate_config.c:540
-#: ../src/balance_estimate_config.c:557 ../src/balance_estimate_config.c:620
-#: ../src/balance_estimate_hist.c:157 ../src/etats_config.c:526
+#: ../src/bet_config.c:520 ../src/bet_config.c:538 ../src/bet_config.c:555
+#: ../src/bet_config.c:618 ../src/bet_hist.c:156 ../src/etats_config.c:526
#: ../src/etats_config.c:529 ../src/etats_config.c:2991
-#: ../src/etats_config.c:7057 ../src/fenetre_principale.c:273
-#: ../src/navigation.c:303 ../src/navigation.c:1212
+#: ../src/etats_config.c:7057 ../src/fenetre_principale.c:277
+#: ../src/navigation.c:316 ../src/navigation.c:1232
msgid "Categories"
msgstr "Catégories"
#. mise en place de la paddingbox des ib
#. set the title
-#: ../src/balance_estimate_config.c:523 ../src/balance_estimate_config.c:541
-#: ../src/balance_estimate_config.c:558 ../src/balance_estimate_config.c:629
-#: ../src/balance_estimate_hist.c:166 ../src/etats_config.c:535
+#: ../src/bet_config.c:521 ../src/bet_config.c:539 ../src/bet_config.c:556
+#: ../src/bet_config.c:627 ../src/bet_hist.c:165 ../src/etats_config.c:535
#: ../src/etats_config.c:538 ../src/etats_config.c:3797
#: ../src/etats_config.c:7134 ../src/export_csv.c:799
-#: ../src/fenetre_principale.c:278 ../src/import_csv.c:86
-#: ../src/navigation.c:320 ../src/navigation.c:1223
-#: ../src/traitement_variables.c:81
+#: ../src/fenetre_principale.c:282 ../src/import_csv.c:86
+#: ../src/navigation.c:332 ../src/navigation.c:1243
+#: ../src/traitement_variables.c:80
msgid "Budgetary lines"
msgstr "Imputations budgétaires"
-#: ../src/balance_estimate_config.c:534
+#: ../src/bet_config.c:532
msgid "Labels for scheduled transactions"
msgstr "Libellé des opérations planifiées"
-#: ../src/balance_estimate_config.c:551
+#: ../src/bet_config.c:549
msgid "Labels for futur data"
msgstr "Libellé des données prévisionnelles"
-#: ../src/balance_estimate_config.c:564
+#: ../src/bet_config.c:562
msgid ""
"Order by default if the data are not zero: notes, payee, category and "
"budgetary line."
@@ -623,30 +620,33 @@ msgstr ""
"Classement des données par défaut si elles existent :\n"
"\tremarques, tiers, catégories et imputations budgétaires."
-#: ../src/balance_estimate_config.c:644 ../src/balance_estimate_hist.c:186
+#: ../src/bet_config.c:642 ../src/bet_hist.c:185
msgid "Choose the financial year or 12 months rolling"
msgstr "Choix de l'exercice ou 12 mois glissants"
#. name of the div sous-div column
-#: ../src/balance_estimate_config.c:850 ../src/balance_estimate_hist.c:531
+#: ../src/bet_config.c:848 ../src/bet_hist.c:530
#: ../src/categories_onglet.c:143 ../src/etats_affiche.c:2433
#: ../src/etats_config.c:673 ../src/export_csv.c:790
#: ../src/gsb_transactions_list.c:156 ../src/import_csv.c:84
-#: ../src/meta_categories.c:65 ../src/traitement_variables.c:89
+#: ../src/meta_categories.c:65 ../src/traitement_variables.c:88
msgid "Category"
msgstr "Catégorie"
-#: ../src/balance_estimate_config.c:856 ../src/balance_estimate_future.c:817
-#: ../src/balance_estimate_future.c:2025 ../src/balance_estimate_future.c:2502
-#: ../src/etats_affiche.c:2440 ../src/etats_config.c:677
-#: ../src/gsb_form.c:1298 ../src/gsb_form_widget.c:442
-#: ../src/gsb_transactions_list.c:148 ../src/imputation_budgetaire.c:155
-#: ../src/meta_budgetary.c:62
+#: ../src/bet_config.c:854 ../src/bet_future.c:816 ../src/bet_future.c:2024
+#: ../src/bet_future.c:2501 ../src/etats_affiche.c:2440
+#: ../src/etats_config.c:677 ../src/gsb_form.c:1312
+#: ../src/gsb_form_widget.c:442 ../src/gsb_transactions_list.c:148
+#: ../src/imputation_budgetaire.c:155 ../src/meta_budgetary.c:62
msgid "Budgetary line"
msgstr "Imputation budgétaire"
-#: ../src/balance_estimate_future.c:228 ../src/balance_estimate_future.c:1774
-#: ../src/balance_estimate_future.c:1873 ../src/balance_estimate_future.c:2420
+#: ../src/bet_finance_ui.c:70
+msgid "Credit Calculator and Amortization"
+msgstr "Simulateur de crédit et d'amortissement"
+
+#: ../src/bet_future.c:227 ../src/bet_future.c:1773 ../src/bet_future.c:1872
+#: ../src/bet_future.c:2419
msgid ""
"Error: the frequency defined by the user or the amount is not specified or "
"the date is invalid."
@@ -654,82 +654,80 @@ msgstr ""
"Erreur: la périodicité définie par l'utilisateur ou le montant n'est pas "
"défini ou la date est invalide."
-#: ../src/balance_estimate_future.c:230 ../src/balance_estimate_future.c:1776
-#: ../src/balance_estimate_future.c:1875 ../src/balance_estimate_future.c:2422
-#: ../src/gsb_currency.c:740
+#: ../src/bet_future.c:229 ../src/bet_future.c:1775 ../src/bet_future.c:1874
+#: ../src/bet_future.c:2421 ../src/gsb_currency.c:740
msgid "One field is not filled in"
msgstr "Un champs n'est pas rempli !"
#. Create the dialog
-#: ../src/balance_estimate_future.c:260
+#: ../src/bet_future.c:259
msgid "Enter a budget line"
msgstr "Créer une ligne budgétaire"
-#: ../src/balance_estimate_future.c:314 ../src/balance_estimate_future.c:856
+#: ../src/bet_future.c:313 ../src/bet_future.c:855
#: ../src/gsb_form_scheduler.c:152 ../src/gsb_form_scheduler.c:874
#: ../src/gsb_scheduler_list.c:998
msgid "Once"
msgstr "Une fois"
-#: ../src/balance_estimate_future.c:314 ../src/gsb_form_scheduler.c:152
+#: ../src/bet_future.c:313 ../src/gsb_form_scheduler.c:152
#: ../src/gsb_scheduler_list.c:998
msgid "Weekly"
msgstr "Hebdomadaire"
-#: ../src/balance_estimate_future.c:314 ../src/gsb_form_scheduler.c:152
+#: ../src/bet_future.c:313 ../src/gsb_form_scheduler.c:152
msgid "Monthly"
msgstr "Mensuel"
-#: ../src/balance_estimate_future.c:314 ../src/gsb_form_scheduler.c:152
+#: ../src/bet_future.c:313 ../src/gsb_form_scheduler.c:152
#: ../src/gsb_scheduler_list.c:999
msgid "Bimonthly"
msgstr "Bimestriel"
-#: ../src/balance_estimate_future.c:315 ../src/gsb_form_scheduler.c:153
+#: ../src/bet_future.c:314 ../src/gsb_form_scheduler.c:153
#: ../src/gsb_scheduler_list.c:999
msgid "Quarterly"
msgstr "Trimestriel"
-#: ../src/balance_estimate_future.c:315 ../src/gsb_form_scheduler.c:153
+#: ../src/bet_future.c:314 ../src/gsb_form_scheduler.c:153
#: ../src/gsb_scheduler_list.c:999
msgid "Yearly"
msgstr "Annuel"
-#: ../src/balance_estimate_future.c:315 ../src/balance_estimate_future.c:870
-#: ../src/etats_config.c:179 ../src/gsb_form_scheduler.c:153
-#: ../src/gsb_form_scheduler.c:884
+#: ../src/bet_future.c:314 ../src/bet_future.c:869 ../src/etats_config.c:179
+#: ../src/gsb_form_scheduler.c:153 ../src/gsb_form_scheduler.c:884
msgid "Custom"
msgstr "Personnalisé"
-#: ../src/balance_estimate_future.c:316 ../src/gsb_form_scheduler.c:154
+#: ../src/bet_future.c:315 ../src/gsb_form_scheduler.c:154
msgid "Days"
msgstr "Jours"
-#: ../src/balance_estimate_future.c:316 ../src/gsb_form_scheduler.c:154
+#: ../src/bet_future.c:315 ../src/gsb_form_scheduler.c:154
msgid "Weeks"
msgstr "Semaines"
-#: ../src/balance_estimate_future.c:316 ../src/gsb_form_scheduler.c:154
+#: ../src/bet_future.c:315 ../src/gsb_form_scheduler.c:154
msgid "Months"
msgstr "Mois"
-#: ../src/balance_estimate_future.c:316 ../src/gsb_form_scheduler.c:154
+#: ../src/bet_future.c:315 ../src/gsb_form_scheduler.c:154
msgid "Years"
msgstr "Années"
-#: ../src/balance_estimate_future.c:329 ../src/gsb_form_scheduler.c:175
+#: ../src/bet_future.c:328 ../src/gsb_form_scheduler.c:175
#: ../src/gsb_form_scheduler.c:192 ../src/gsb_scheduler_list.c:339
msgid "Frequency"
msgstr "Périodicité"
-#: ../src/balance_estimate_future.c:337 ../src/balance_estimate_future.c:732
+#: ../src/bet_future.c:336 ../src/bet_future.c:731
#: ../src/gsb_form_scheduler.c:640 ../src/gsb_form_scheduler.c:833
#: ../src/gsb_form_scheduler.c:1095
msgid "Limit date"
msgstr "Date limite"
#. set the final date
-#: ../src/balance_estimate_future.c:350 ../src/etats_config.c:2329
+#: ../src/bet_future.c:349 ../src/etats_config.c:2329
#: ../src/gsb_archive_config.c:98 ../src/gsb_assistant_archive.c:242
#: ../src/gsb_assistant_archive_export.c:150
#: ../src/gsb_assistant_reconcile_config.c:422
@@ -739,82 +737,78 @@ msgstr "Date limite"
msgid "Final date"
msgstr "Date finale"
-#: ../src/balance_estimate_future.c:357 ../src/balance_estimate_future.c:736
+#: ../src/bet_future.c:356 ../src/bet_future.c:735
#: ../src/gsb_form_scheduler.c:205 ../src/gsb_form_scheduler.c:647
#: ../src/gsb_form_scheduler.c:839
msgid "Own frequency"
msgstr "Périodicité utilisateur"
-#: ../src/balance_estimate_future.c:367 ../src/balance_estimate_future.c:373
+#: ../src/bet_future.c:366 ../src/bet_future.c:372
#: ../src/gsb_form_scheduler.c:211
msgid "Custom frequency"
msgstr "Périodicité personnalisée"
-#: ../src/balance_estimate_future.c:528 ../src/gsb_form_widget.c:208
+#: ../src/bet_future.c:527 ../src/gsb_form_widget.c:208
msgid "Choose the financial year"
msgstr "Choix de l'exercice"
-#: ../src/balance_estimate_future.c:575 ../src/gsb_form_widget.c:263
+#: ../src/bet_future.c:574 ../src/gsb_form_widget.c:263
msgid "Choose the method of payment"
msgstr "Choix du mode de règlement"
-#: ../src/balance_estimate_future.c:771 ../src/balance_estimate_tab.c:616
-#: ../src/etats_affiche.c:2405 ../src/export_csv.c:760
-#: ../src/gsb_assistant_reconcile_config.c:594 ../src/gsb_form.c:1240
-#: ../src/gsb_form_widget.c:410 ../src/gsb_reconcile.c:155
-#: ../src/gsb_scheduler_list.c:339 ../src/gsb_transactions_list.c:145
-#: ../src/import.c:3183 ../src/import_csv.c:79
-#: ../src/traitement_variables.c:78
+#: ../src/bet_future.c:770 ../src/bet_tab.c:614 ../src/etats_affiche.c:2405
+#: ../src/export_csv.c:760 ../src/gsb_assistant_reconcile_config.c:594
+#: ../src/gsb_form.c:1267 ../src/gsb_form_widget.c:410
+#: ../src/gsb_reconcile.c:155 ../src/gsb_scheduler_list.c:339
+#: ../src/gsb_transactions_list.c:145 ../src/import.c:3183
+#: ../src/import_csv.c:79 ../src/traitement_variables.c:77
msgid "Date"
msgstr "Date"
#. mise en place de la paddingbox des tiers
-#: ../src/balance_estimate_future.c:789 ../src/etats_affiche.c:2426
+#: ../src/bet_future.c:788 ../src/etats_affiche.c:2426
#: ../src/etats_config.c:517 ../src/etats_config.c:520
#: ../src/etats_config.c:685 ../src/etats_config.c:7022
-#: ../src/export_csv.c:775 ../src/fenetre_principale.c:268
-#: ../src/gsb_assistant_reconcile_config.c:594 ../src/gsb_form.c:1267
+#: ../src/export_csv.c:775 ../src/fenetre_principale.c:266
+#: ../src/gsb_assistant_reconcile_config.c:594 ../src/gsb_form.c:1288
#: ../src/gsb_form_widget.c:430 ../src/gsb_scheduler_list.c:339
#: ../src/gsb_transactions_list.c:147 ../src/import.c:3190
#: ../src/import_csv.c:81 ../src/meta_payee.c:77
-#: ../src/traitement_variables.c:80
+#: ../src/traitement_variables.c:79
msgid "Payee"
msgstr "Tiers"
#. Debit method_ptr
-#: ../src/balance_estimate_future.c:796 ../src/balance_estimate_tab.c:642
-#: ../src/categories_onglet.c:696 ../src/export_csv.c:781
-#: ../src/gsb_form.c:1274 ../src/gsb_form_widget.c:414
+#: ../src/bet_future.c:795 ../src/bet_tab.c:640 ../src/categories_onglet.c:696
+#: ../src/export_csv.c:781 ../src/gsb_form.c:1293 ../src/gsb_form_widget.c:414
#: ../src/gsb_payment_method_config.c:316
#: ../src/gsb_payment_method_config.c:387
#: ../src/gsb_payment_method_config.c:1082 ../src/gsb_transactions_list.c:149
-#: ../src/import_csv.c:90 ../src/imputation_budgetaire.c:733
-#: ../src/traitement_variables.c:82
+#: ../src/import_csv.c:90 ../src/imputation_budgetaire.c:734
+#: ../src/traitement_variables.c:81
msgid "Debit"
msgstr "Débit"
#. Credit method_ptr
-#: ../src/balance_estimate_future.c:803 ../src/balance_estimate_tab.c:657
-#: ../src/categories_onglet.c:696 ../src/export_csv.c:778
-#: ../src/gsb_form.c:1281 ../src/gsb_form_widget.c:418
+#: ../src/bet_future.c:802 ../src/bet_tab.c:655 ../src/categories_onglet.c:696
+#: ../src/export_csv.c:778 ../src/gsb_form.c:1298 ../src/gsb_form_widget.c:418
#: ../src/gsb_payment_method_config.c:323
#: ../src/gsb_payment_method_config.c:400
#: ../src/gsb_payment_method_config.c:1078 ../src/gsb_transactions_list.c:150
-#: ../src/imputation_budgetaire.c:733 ../src/traitement_variables.c:83
+#: ../src/imputation_budgetaire.c:734 ../src/traitement_variables.c:82
msgid "Credit"
msgstr "Crédit"
-#: ../src/balance_estimate_future.c:810 ../src/balance_estimate_future.c:1998
-#: ../src/balance_estimate_future.c:2484 ../src/gsb_form.c:1288
-#: ../src/gsb_form_widget.c:434
+#: ../src/bet_future.c:809 ../src/bet_future.c:1997 ../src/bet_future.c:2483
+#: ../src/gsb_form.c:1304 ../src/gsb_form_widget.c:434
msgid "Categories : Sub-categories"
msgstr "Catégories : Sous-catégories"
#. Notes
-#: ../src/balance_estimate_future.c:824 ../src/etats_affiche.c:2447
-#: ../src/export_csv.c:796 ../src/gsb_bank.c:915 ../src/gsb_form.c:1305
-#: ../src/gsb_form_widget.c:446 ../src/gsb_transactions_list.c:159
-#: ../src/import_csv.c:82 ../src/traitement_variables.c:92
+#: ../src/bet_future.c:823 ../src/etats_affiche.c:2447 ../src/export_csv.c:796
+#: ../src/gsb_bank.c:915 ../src/gsb_form.c:1317 ../src/gsb_form_widget.c:446
+#: ../src/gsb_transactions_list.c:159 ../src/import_csv.c:82
+#: ../src/traitement_variables.c:91
msgid "Notes"
msgstr "Remarques"
@@ -822,50 +816,50 @@ msgstr "Remarques"
#. create the method of payment for a liabilities account
#. Transfer = Virement
#. Direct deposit remplacé par Transfert = Virement
-#: ../src/balance_estimate_future.c:1423 ../src/balance_estimate_future.c:1670
+#: ../src/bet_future.c:1422 ../src/bet_future.c:1669
#: ../src/etats_affiche.c:1844 ../src/export_csv.c:601 ../src/export_csv.c:713
-#: ../src/export_csv.c:725 ../src/gsb_data_category.c:1045
+#: ../src/export_csv.c:725 ../src/gsb_data_category.c:1056
#: ../src/gsb_data_payment.c:633 ../src/gsb_data_payment.c:714
-#: ../src/gsb_data_payment.c:753 ../src/gsb_form.c:2225 ../src/import.c:2631
+#: ../src/gsb_data_payment.c:753 ../src/gsb_form.c:2235 ../src/import.c:2631
#: ../src/import.c:2649 ../src/plugins/ofx/ofx.c:464
msgid "Transfer"
msgstr "Virement"
-#: ../src/balance_estimate_future.c:1864 ../src/balance_estimate_future.c:2411
+#: ../src/bet_future.c:1863 ../src/bet_future.c:2410
msgid "Error: You must select an account."
msgstr "Erreur : Vous devez sélectionner un compte."
-#: ../src/balance_estimate_future.c:1865 ../src/balance_estimate_future.c:2412
+#: ../src/bet_future.c:1864 ../src/bet_future.c:2411
msgid "Missing data"
msgstr "Données manquantes"
#. Create the dialog
-#: ../src/balance_estimate_future.c:1912
+#: ../src/bet_future.c:1911
msgid "Select an account"
msgstr "Sélectionner un compte"
#. list of accounts
-#: ../src/balance_estimate_future.c:1928
+#: ../src/bet_future.c:1927
msgid "List of accounts"
msgstr "Liste des Comptes"
-#: ../src/balance_estimate_future.c:1948
+#: ../src/bet_future.c:1947
msgid "Effective date and data for the replacement of a planned operation"
msgstr "Date d'effet et données pour le remplacement de l'opération planifiée"
-#: ../src/balance_estimate_future.c:1954
+#: ../src/bet_future.c:1953
msgid "Effective date"
msgstr "Date d'effet"
-#: ../src/balance_estimate_future.c:1961
+#: ../src/bet_future.c:1960
msgid "Monthly auto-increment"
msgstr "Incrémentation automatique mensuelle"
-#: ../src/balance_estimate_future.c:1972
+#: ../src/bet_future.c:1971
msgid "Check the box to replace a planned operation"
msgstr "Cochez la case pour remplacer l'opération planifiée"
-#: ../src/balance_estimate_future.c:2087 ../src/gsb_account_property.c:692
+#: ../src/bet_future.c:2086 ../src/gsb_account_property.c:692
#: ../src/gsb_data_partial_balance.c:214
msgid "Cash account"
msgstr "Compte de caisse"
@@ -873,34 +867,34 @@ msgstr "Compte de caisse"
#. Description entry
#. Payment method method_ptr
#. Description entry
-#: ../src/balance_estimate_future.c:2145 ../src/categories_onglet.c:691
+#: ../src/bet_future.c:2144 ../src/categories_onglet.c:691
#: ../src/gsb_payment_method_config.c:297 ../src/import.c:437
-#: ../src/imputation_budgetaire.c:728
+#: ../src/imputation_budgetaire.c:729
msgid "Type"
msgstr "Type"
-#: ../src/balance_estimate_hist.c:521 ../src/tiers_onglet.c:1111
+#: ../src/bet_hist.c:520 ../src/tiers_onglet.c:1111
msgid "Select"
msgstr "Sélectionner"
-#: ../src/balance_estimate_hist.c:548
+#: ../src/bet_hist.c:547
msgid "Period"
msgstr "Période utilisée"
-#: ../src/balance_estimate_hist.c:563 ../src/categories_onglet.c:161
+#: ../src/bet_hist.c:562 ../src/categories_onglet.c:161
#: ../src/etats_config.c:5239 ../src/export_csv.c:784
#: ../src/gsb_assistant_reconcile_config.c:594 ../src/gsb_scheduler_list.c:340
#: ../src/gsb_transactions_list.c:152 ../src/import.c:3197
#: ../src/imputation_budgetaire.c:173 ../src/tiers_onglet.c:240
-#: ../src/traitement_variables.c:85
+#: ../src/traitement_variables.c:84
msgid "Amount"
msgstr "Montant"
-#: ../src/balance_estimate_hist.c:579
+#: ../src/bet_hist.c:578
msgid "Average"
msgstr "Moyenne"
-#: ../src/balance_estimate_hist.c:596
+#: ../src/bet_hist.c:595
msgid "Amount retained"
msgstr "Montant retenu"
@@ -909,59 +903,57 @@ msgstr "Montant retenu"
#. * FYEAR_COL_NAME : the name of the fyear
#. * FYEAR_COL_NUMBER : the number of the fyear
#. * FYEAR_COL_VIEW : it tha fyear should be showed
-#: ../src/balance_estimate_hist.c:671 ../src/balance_estimate_hist.c:973
+#: ../src/bet_hist.c:670 ../src/bet_hist.c:972
msgid "12 months rolling"
msgstr "12 mois glissants"
#. Add last amount menu
-#: ../src/balance_estimate_hist.c:1373
+#: ../src/bet_hist.c:1372
msgid "Assign the amount of the last operation"
msgstr "Assigner le montant de la dernière opération"
#. Add average amount menu
-#: ../src/balance_estimate_hist.c:1396
+#: ../src/bet_hist.c:1395
msgid "Copy the average amount"
msgstr "Copier la valeur moyenne"
-#: ../src/balance_estimate_hist.c:1657
+#: ../src/bet_hist.c:1656
#, c-format
msgid "Please select the data source for the account: \"%s\""
msgstr "Sélectionnez la source des données pour le compte : %s"
-#: ../src/balance_estimate_tab.c:410
+#: ../src/bet_tab.c:408
#, c-format
msgid "Balance estimate of the account \"%s\" from %s to %s"
msgstr "Solde estimé du compte \"%s\" du %s au %s"
-#: ../src/balance_estimate_tab.c:427
+#: ../src/bet_tab.c:425
msgid "balance beginning of period"
msgstr "Solde initial de la période"
#. set the start date and the automatic change of month
-#: ../src/balance_estimate_tab.c:522
+#: ../src/bet_tab.c:520
msgid "Start date"
msgstr "Date de départ"
-#: ../src/balance_estimate_tab.c:541
+#: ../src/bet_tab.c:539
msgid "Check the box to automatically change start date"
msgstr "Cochez la case pour changer automatiquement de date de début"
#. Description entry
-#: ../src/balance_estimate_tab.c:630 ../src/etats_onglet.c:260
-#: ../src/tiers_onglet.c:638
+#: ../src/bet_tab.c:628 ../src/etats_onglet.c:260 ../src/tiers_onglet.c:638
msgid "Description"
msgstr "Description"
-#: ../src/balance_estimate_tab.c:671 ../src/export_csv.c:787
-#: ../src/gsb_reconcile.c:158 ../src/gsb_scheduler_list.c:340
-#: ../src/gsb_transactions_list.c:151 ../src/gsb_transactions_list.c:2992
-#: ../src/import_csv.c:88 ../src/traitement_variables.c:84
+#: ../src/bet_tab.c:669 ../src/export_csv.c:787 ../src/gsb_reconcile.c:158
+#: ../src/gsb_scheduler_list.c:340 ../src/gsb_transactions_list.c:151
+#: ../src/gsb_transactions_list.c:2992 ../src/import_csv.c:88
+#: ../src/traitement_variables.c:83
msgid "Balance"
msgstr "Solde"
-#: ../src/balance_estimate_tab.c:754 ../src/balance_estimate_tab.c:764
-#: ../src/balance_estimate_tab.c:951 ../src/balance_estimate_tab.c:2337
-#: ../src/balance_estimate_tab.c:2342
+#: ../src/bet_tab.c:752 ../src/bet_tab.c:762 ../src/bet_tab.c:949
+#: ../src/bet_tab.c:2335 ../src/bet_tab.c:2340
#, c-format
msgid ""
"Transfer between account: %s\n"
@@ -970,71 +962,69 @@ msgstr ""
"Virement entre le compte : %s\n"
"et le compte : %s"
-#: ../src/balance_estimate_tab.c:1273
+#: ../src/bet_tab.c:1271
msgid "Subtract to the balance"
msgstr "Soustraire au solde"
-#: ../src/balance_estimate_tab.c:1280
+#: ../src/bet_tab.c:1278
msgid "Adding to the balance"
msgstr "Ajouter au solde"
#. Insert Row
-#: ../src/balance_estimate_tab.c:1297
+#: ../src/bet_tab.c:1295
msgid "Insert Row"
msgstr "Insérer une ligne"
-#: ../src/balance_estimate_tab.c:1314 ../src/balance_estimate_tab.c:1326
-#: ../src/balance_estimate_tab.c:1347 ../src/balance_estimate_tab.c:1404
+#: ../src/bet_tab.c:1312 ../src/bet_tab.c:1324 ../src/bet_tab.c:1345
+#: ../src/bet_tab.c:1402
msgid "Delete selection"
msgstr "Supprimer la ligne"
-#: ../src/balance_estimate_tab.c:1337
+#: ../src/bet_tab.c:1335
msgid "Change selection"
msgstr "Modifier la ligne"
-#: ../src/balance_estimate_tab.c:1358
+#: ../src/bet_tab.c:1356
msgid "Delete all occurences of the selection"
msgstr "Supprimer toutes les occurences de la ligne"
-#: ../src/balance_estimate_tab.c:1373
+#: ../src/bet_tab.c:1371
msgid "Convert selection to scheduled transaction"
msgstr "Convertir la ligne en opération planifiée"
-#: ../src/balance_estimate_tab.c:1394
+#: ../src/bet_tab.c:1392
msgid "Insert the balance of a cash account"
msgstr "Insérer le solde d'un compte de caisse"
#. redo item
-#: ../src/balance_estimate_tab.c:1420
+#: ../src/bet_tab.c:1418
msgid "Reset data"
msgstr "Réinitialiser les données"
-#: ../src/balance_estimate_tab.c:1741
+#: ../src/bet_tab.c:1739
msgid " (still available)"
msgstr " (reste à utiliser)"
-#: ../src/balance_estimate_tab.c:1749
+#: ../src/bet_tab.c:1747
msgid " (yet to receive)"
msgstr " (reste à recevoir)"
-#: ../src/balance_estimate_tab.c:1760 ../src/balance_estimate_tab.c:1771
+#: ../src/bet_tab.c:1758 ../src/bet_tab.c:1769
msgid " (budget exceeded)"
msgstr " (budget dépassé)"
-#: ../src/balance_estimate_tab.c:2260 ../src/balance_estimate_tab.c:2310
-#: ../src/balance_estimate_tab.c:2370
+#: ../src/bet_tab.c:2258 ../src/bet_tab.c:2308 ../src/bet_tab.c:2368
msgid "No data by default"
msgstr "Pas de donnée disponible par défaut"
-#: ../src/balance_estimate_tab.c:2268 ../src/balance_estimate_tab.c:2318
-#: ../src/balance_estimate_tab.c:2376 ../src/etats_affiche.c:1860
-#: ../src/gsb_data_category.c:155 ../src/meta_categories.c:66
+#: ../src/bet_tab.c:2266 ../src/bet_tab.c:2316 ../src/bet_tab.c:2374
+#: ../src/etats_affiche.c:1860 ../src/gsb_data_category.c:157
+#: ../src/meta_categories.c:66
msgid "No category"
msgstr "Pas de catégorie"
-#: ../src/balance_estimate_tab.c:2276 ../src/balance_estimate_tab.c:2326
-#: ../src/balance_estimate_tab.c:2382 ../src/etats_affiche.c:2030
-#: ../src/meta_budgetary.c:63
+#: ../src/bet_tab.c:2274 ../src/bet_tab.c:2324 ../src/bet_tab.c:2380
+#: ../src/etats_affiche.c:2030 ../src/meta_budgetary.c:63
msgid "No budgetary line"
msgstr "Pas d'imputation budgétaire"
@@ -1050,7 +1040,7 @@ msgstr "Effacer le formulaire pour créer une nouvelle opération"
#: ../src/barre_outils.c:104 ../src/barre_outils.c:513
#: ../src/categories_onglet.c:526 ../src/etats_onglet.c:158
-#: ../src/imputation_budgetaire.c:562 ../src/tiers_onglet.c:321
+#: ../src/imputation_budgetaire.c:563 ../src/tiers_onglet.c:321
msgid "Delete"
msgstr "Supprimer"
@@ -1085,7 +1075,7 @@ msgid "Print the transactions list"
msgstr "Imprimer la liste des opérations"
#: ../src/barre_outils.c:150 ../src/barre_outils.c:562
-#: ../src/categories_onglet.c:545 ../src/imputation_budgetaire.c:583
+#: ../src/categories_onglet.c:545 ../src/imputation_budgetaire.c:584
#: ../src/tiers_onglet.c:340
msgid "View"
msgstr "Affichage"
@@ -1115,7 +1105,7 @@ msgid "Three lines view"
msgstr "Mode « trois lignes »"
#: ../src/barre_outils.c:235 ../src/categories_onglet.c:589
-#: ../src/imputation_budgetaire.c:627 ../src/tiers_onglet.c:437
+#: ../src/imputation_budgetaire.c:628 ../src/tiers_onglet.c:437
msgid "Complete view"
msgstr "Vue complète"
@@ -1209,13 +1199,13 @@ msgstr "Catégories.cgsb"
msgid "Import categories"
msgstr "Importer des catégories"
-#: ../src/categories_onglet.c:391 ../src/imputation_budgetaire.c:431
+#: ../src/categories_onglet.c:391 ../src/imputation_budgetaire.c:432
msgid "Grisbi category files (*.cgsb)"
msgstr "Fichier des catégories Grisbi (*.cgsb)"
#: ../src/categories_onglet.c:397 ../src/etats_onglet.c:1229
#: ../src/file_obfuscate_qif.c:105 ../src/gsb_file.c:268 ../src/import.c:812
-#: ../src/imputation_budgetaire.c:436
+#: ../src/imputation_budgetaire.c:437
msgid "All files"
msgstr "Tous les fichiers"
@@ -1244,7 +1234,7 @@ msgstr ""
"Vous pouvez également décider de remplacer les catégories existantes par les "
"catégories que vous êtes en train d'importer."
-#: ../src/categories_onglet.c:428 ../src/imputation_budgetaire.c:467
+#: ../src/categories_onglet.c:428 ../src/imputation_budgetaire.c:468
msgid "Replace existing"
msgstr "Remplacer l'existant"
@@ -1273,8 +1263,8 @@ msgid "Create a new sub-category"
msgstr "Créer une nouvelle sous-catégorie"
#: ../src/categories_onglet.c:507 ../src/etats_onglet.c:129
-#: ../src/import.c:404 ../src/import.c:3498 ../src/imputation_budgetaire.c:542
-#: ../src/parametres.c:292 ../src/utils_files.c:671
+#: ../src/import.c:404 ../src/import.c:3498 ../src/imputation_budgetaire.c:543
+#: ../src/parametres.c:295 ../src/utils_files.c:671
msgid "Import"
msgstr "Importer"
@@ -1283,7 +1273,7 @@ msgid "Import a Grisbi category file (.cgsb)"
msgstr "Importer une liste de catégories (.csgb)"
#: ../src/categories_onglet.c:517 ../src/etats_onglet.c:138
-#: ../src/export.c:161 ../src/imputation_budgetaire.c:553
+#: ../src/export.c:161 ../src/imputation_budgetaire.c:554
msgid "Export"
msgstr "Exporter"
@@ -1296,7 +1286,7 @@ msgid "Delete selected category"
msgstr "Supprimer la catégorie sélectionnée"
#: ../src/categories_onglet.c:535 ../src/etats_onglet.c:167
-#: ../src/fenetre_principale.c:253 ../src/imputation_budgetaire.c:572
+#: ../src/fenetre_principale.c:251 ../src/imputation_budgetaire.c:573
#: ../src/tiers_onglet.c:330
msgid "Properties"
msgstr "Propriétés"
@@ -1319,7 +1309,7 @@ msgid "Subcategory view"
msgstr "Vue des catégories et sous-catégories"
#: ../src/categories_onglet.c:634 ../src/categories_onglet.c:638
-#: ../src/imputation_budgetaire.c:670 ../src/imputation_budgetaire.c:675
+#: ../src/imputation_budgetaire.c:671 ../src/imputation_budgetaire.c:676
#: ../src/tiers_onglet.c:600
#, c-format
msgid "Properties for %s"
@@ -1356,7 +1346,7 @@ msgid "Category already exists"
msgstr "La catégorie existe déjà"
#. * Find a unique name for category
-#: ../src/categories_onglet.c:849 ../src/meta_categories.c:307
+#: ../src/categories_onglet.c:849 ../src/meta_categories.c:306
msgid "New sub-category"
msgstr "Nouvelle sous-catégorie"
@@ -1515,7 +1505,7 @@ msgstr ""
"N'utilisez en aucun cas votre fichier grisbi original car il ne sera plus "
"compatible avec la version précédente. "
-#: ../src/dialog.c:112 ../src/main.c:214
+#: ../src/dialog.c:112 ../src/main.c:213
#, c-format
msgid "You are running Grisbi with GTK version %s"
msgstr "Vous utilisez Grisbi avec GTK version %s"
@@ -1890,8 +1880,8 @@ msgid "General total"
msgstr "Total général"
#: ../src/etats_affiche.c:1853 ../src/export_csv.c:571
-#: ../src/gsb_data_category.c:1043 ../src/gsb_form.c:728
-#: ../src/gsb_form.c:2718 ../src/gsb_form.c:3120
+#: ../src/gsb_data_category.c:1054 ../src/gsb_form.c:726
+#: ../src/gsb_form.c:2738 ../src/gsb_form.c:3140
#: ../src/gsb_form_scheduler.c:316 ../src/gsb_transactions_list.c:3397
msgid "Split of transaction"
msgstr "Opération ventilée"
@@ -1917,28 +1907,28 @@ msgstr "Revenus"
msgid "Outgoings"
msgstr "Dépenses"
-#: ../src/etats_affiche.c:2398 ../src/traitement_variables.c:95
+#: ../src/etats_affiche.c:2398 ../src/traitement_variables.c:94
msgid "Number"
msgstr "N°"
-#: ../src/etats_affiche.c:2412 ../src/export_csv.c:763 ../src/gsb_form.c:1247
-#: ../src/gsb_form.c:2075 ../src/gsb_form.c:2098 ../src/gsb_form_widget.c:422
+#: ../src/etats_affiche.c:2412 ../src/export_csv.c:763 ../src/gsb_form.c:1272
+#: ../src/gsb_form.c:2085 ../src/gsb_form.c:2108 ../src/gsb_form_widget.c:422
#: ../src/gsb_transactions_list.c:146 ../src/import_csv.c:80
-#: ../src/traitement_variables.c:79
+#: ../src/traitement_variables.c:78
msgid "Value date"
msgstr "Date de valeur"
#: ../src/etats_affiche.c:2419 ../src/export_csv.c:769
#: ../src/gsb_archive_config.c:98 ../src/gsb_assistant_archive_export.c:150
#: ../src/gsb_form_widget.c:426 ../src/gsb_transactions_list.c:155
-#: ../src/traitement_variables.c:88
+#: ../src/traitement_variables.c:87
msgid "Financial year"
msgstr "Exercice"
#. Now we have a model, create view
#: ../src/etats_affiche.c:2454 ../src/etats_config.c:562
#: ../src/etats_config.c:565 ../src/etats_config.c:7221
-#: ../src/gsb_payment_method_config.c:117 ../src/parametres.c:519
+#: ../src/gsb_payment_method_config.c:117 ../src/parametres.c:522
msgid "Payment methods"
msgstr "Modes de règlement"
@@ -1946,15 +1936,15 @@ msgstr "Modes de règlement"
msgid "Cheque"
msgstr "Chèque"
-#: ../src/etats_affiche.c:2468 ../src/export_csv.c:805 ../src/gsb_form.c:1348
+#: ../src/etats_affiche.c:2468 ../src/export_csv.c:805 ../src/gsb_form.c:1359
#: ../src/gsb_form_widget.c:466 ../src/gsb_transactions_list.c:158
-#: ../src/traitement_variables.c:91
+#: ../src/traitement_variables.c:90
msgid "Voucher"
msgstr "Pièce comptable"
-#: ../src/etats_affiche.c:2475 ../src/export_csv.c:811 ../src/gsb_form.c:1341
+#: ../src/etats_affiche.c:2475 ../src/export_csv.c:811 ../src/gsb_form.c:1354
#: ../src/gsb_form_widget.c:470 ../src/gsb_transactions_list.c:160
-#: ../src/traitement_variables.c:93
+#: ../src/traitement_variables.c:92
msgid "Bank references"
msgstr "Infos banque/guichet"
@@ -2057,7 +2047,7 @@ msgstr "Virements"
#. mise en place de la paddingbox des comptes
#: ../src/etats_config.c:508 ../src/etats_config.c:511
-#: ../src/etats_config.c:6992 ../src/fenetre_principale.c:233
+#: ../src/etats_config.c:6992 ../src/fenetre_principale.c:234
#: ../src/navigation.c:251
msgid "Accounts"
msgstr "Comptes"
@@ -2105,14 +2095,14 @@ msgid "Generalities"
msgstr "Généralités"
#: ../src/etats_config.c:633 ../src/etats_config.c:636 ../src/export_csv.c:751
-#: ../src/fenetre_principale.c:237 ../src/parametres.c:393
+#: ../src/fenetre_principale.c:238 ../src/parametres.c:396
msgid "Transactions"
msgstr "Opérations"
#. echange line label
#: ../src/etats_config.c:642 ../src/etats_config.c:645
#: ../src/gsb_currency.c:551 ../src/gsb_currency_config.c:294
-#: ../src/parametres.c:483
+#: ../src/parametres.c:486
msgid "Currencies"
msgstr "Devises"
@@ -2344,7 +2334,7 @@ msgid "Outgoing budget lines"
msgstr "I.B. de dépenses"
#. set the title
-#: ../src/etats_config.c:3981 ../src/navigation.c:286 ../src/navigation.c:1201
+#: ../src/etats_config.c:3981 ../src/navigation.c:284 ../src/navigation.c:1210
#: ../src/tiers_onglet.c:222
msgid "Payees"
msgstr "Tiers"
@@ -2888,8 +2878,8 @@ msgstr "Cloner"
msgid "Clone selected report"
msgstr "Cloner l'état sélectionné"
-#: ../src/etats_onglet.c:212 ../src/fenetre_principale.c:283
-#: ../src/navigation.c:337 ../src/navigation.c:1239
+#: ../src/etats_onglet.c:212 ../src/fenetre_principale.c:287
+#: ../src/navigation.c:348 ../src/navigation.c:1259
msgid "Reports"
msgstr "États"
@@ -3224,7 +3214,7 @@ msgstr ""
msgid "B"
msgstr "V"
-#: ../src/export_csv.c:715 ../src/gsb_form.c:1855
+#: ../src/export_csv.c:715 ../src/gsb_form.c:1859
msgid "Deleted account"
msgstr "Compte supprimé"
@@ -3237,7 +3227,7 @@ msgid "Cheques"
msgstr "Chèques"
#: ../src/export_csv.c:772 ../src/gsb_transactions_list.c:157
-#: ../src/import_csv.c:92 ../src/traitement_variables.c:90
+#: ../src/import_csv.c:92 ../src/traitement_variables.c:89
msgid "C/R"
msgstr "P/R"
@@ -3253,7 +3243,7 @@ msgstr "Sous-imputations budgétaires"
msgid "Reconciliation number"
msgstr "N° de rapprochement"
-#: ../src/fenetre_principale.c:223 ../src/parametres.c:329
+#: ../src/fenetre_principale.c:224 ../src/parametres.c:332
msgid "Main page"
msgstr "Accueil"
@@ -3265,11 +3255,17 @@ msgstr "Prévisions"
msgid "Historical data"
msgstr "Données historiques"
-#: ../src/fenetre_principale.c:263 ../src/navigation.c:269
-#: ../src/parametres.c:320 ../src/parametres.c:1077
+#: ../src/fenetre_principale.c:261 ../src/navigation.c:268
+#: ../src/parametres.c:323 ../src/parametres.c:1077
msgid "Scheduler"
msgstr "Échéancier"
+#. set the title
+#: ../src/fenetre_principale.c:272 ../src/navigation.c:300
+#: ../src/navigation.c:1221
+msgid "Credits simulator"
+msgstr "Simulateur de crédits"
+
#: ../src/file_obfuscate.c:86
msgid "Obfuscating file..."
msgstr "Rendre anonyme le fichier..."
@@ -3884,27 +3880,27 @@ msgstr "Sens de la conversion"
msgid "This value determines which iconv test to perform."
msgstr "Cette valeur indique quel test iconv réaliser."
-#: ../src/go-optionmenu.c:240
+#: ../src/go-optionmenu.c:248
msgid "Menu"
msgstr "Menu"
-#: ../src/go-optionmenu.c:241
+#: ../src/go-optionmenu.c:249
msgid "The menu of options"
msgstr "Menu des options"
-#: ../src/go-optionmenu.c:247
+#: ../src/go-optionmenu.c:255
msgid "Indicator Size"
msgstr "Indicateur de taille"
-#: ../src/go-optionmenu.c:248
+#: ../src/go-optionmenu.c:256
msgid "Size of dropdown indicator"
msgstr "Taille de l'indicateur de liste déroulante"
-#: ../src/go-optionmenu.c:253
+#: ../src/go-optionmenu.c:261
msgid "Indicator Spacing"
msgstr "Indicateur d'espacement"
-#: ../src/go-optionmenu.c:254
+#: ../src/go-optionmenu.c:262
msgid "Spacing around indicator"
msgstr "Espacement autour de l'indicateur"
@@ -4042,7 +4038,7 @@ msgid "Your IBAN number is not correct. Please check your entry."
msgstr "Votre numéro IBAN n'est pas correct. Vérifiez votre saisie."
#. create the page
-#: ../src/gsb_archive_config.c:111 ../src/parametres.c:283
+#: ../src/gsb_archive_config.c:111 ../src/parametres.c:286
msgid "Archives"
msgstr "Archives"
@@ -4339,8 +4335,8 @@ msgid "Grisbi will archive transactions selected by a report."
msgstr ""
"Grisbi archivera toutes les transactions appartenant à l'état sélectionné"
-#: ../src/gsb_assistant_archive.c:314 ../src/gsb_data_payee.c:528
-#: ../src/gsb_form.c:2829 ../src/gsb_form.c:2830 ../src/navigation.c:1237
+#: ../src/gsb_assistant_archive.c:314 ../src/gsb_data_payee.c:541
+#: ../src/gsb_form.c:2849 ../src/gsb_form.c:2850 ../src/navigation.c:1257
msgid "Report"
msgstr "État"
@@ -4764,7 +4760,7 @@ msgid "Select/Create backup directory"
msgstr "Sélectionner/Créer un répertoire de sauvegarde"
#: ../src/gsb_assistant_first.c:329 ../src/gsb_reconcile_config.c:103
-#: ../src/parametres.c:420
+#: ../src/parametres.c:423
msgid "Reconciliation"
msgstr "Rapprochement"
@@ -5047,7 +5043,7 @@ msgstr "Ajouter une nouvelle banque"
msgid "Contact name"
msgstr "Correspondant"
-#: ../src/gsb_bank.c:519 ../src/parametres.c:501
+#: ../src/gsb_bank.c:519 ../src/parametres.c:504
msgid "Banks"
msgstr "Banques"
@@ -5130,11 +5126,11 @@ msgstr "Liste des catégories"
msgid "Display foreign category sets"
msgstr "Afficher l'ensemble des catégories"
-#: ../src/gsb_category.c:361
+#: ../src/gsb_category.c:362
msgid "Cannot open the category file."
msgstr "Impossible d'ouvrir le fichier des catégories."
-#: ../src/gsb_category.c:378
+#: ../src/gsb_category.c:379
msgid "Unnamed category list"
msgstr "Liste des catégories anonymes"
@@ -6671,8 +6667,9 @@ msgstr ""
"Nombre de lignes invalide dans gsb_data_accoutn_set_nb_rows() dans "
"data_account.c : %d\n"
-#. TODO dOm : the return value of g_strdup_printf was not used ! I add the devel_debug to print it. Is it OK to do that ?
-#: ../src/gsb_data_account.c:1208
+#. TODO dOm : the return value of g_strdup_printf was not used !
+#. I add the devel_debug to print it. Is it OK to do that ?
+#: ../src/gsb_data_account.c:1211
#, c-format
msgid ""
"Bad no column to gsb_data_account_get_element_sort () in data_account.c\n"
@@ -6682,8 +6679,9 @@ msgstr ""
"data_account.c\n"
"Numéro de colonne %d\n"
-#. TODO dOm : the value of g_strdup_printf was not used. I add the devel_debug function to print it. Is it OK ?
-#: ../src/gsb_data_account.c:1246
+#. TODO dOm : the value of g_strdup_printf was not used.
+#. I add the devel_debug function to print it. Is it OK ?
+#: ../src/gsb_data_account.c:1254
#, c-format
msgid ""
"Bad no column to gsb_data_account_set_element_sort () in data_account.c\n"
@@ -6693,11 +6691,11 @@ msgstr ""
"gsb_data_account.c\n"
"no_colonne = %d\n"
-#: ../src/gsb_data_budget.c:148
+#: ../src/gsb_data_budget.c:150
msgid "No budget line"
msgstr "Aucune imputation"
-#: ../src/gsb_data_budget.c:1289
+#: ../src/gsb_data_budget.c:1295
#, c-format
msgid ""
"The transaction %d has a budget n%d and sub-budget n%d but they don't exist."
@@ -6705,12 +6703,12 @@ msgstr ""
"L'opération %d a une imputation budgétaire %d et une sous-imputation %d "
"inexistantes."
-#: ../src/gsb_data_budget.c:1435 ../src/gsb_data_category.c:1545
+#: ../src/gsb_data_budget.c:1441 ../src/gsb_data_category.c:1556
#, c-format
msgid "In <i>%s</i>, <i>%s</i> is a duplicate of <i>%s</i>.\n"
msgstr "Dans <i>%s</i>,·<i>%s</i> est un doublon de <i>%s</i>.\n"
-#: ../src/gsb_data_category.c:1399
+#: ../src/gsb_data_category.c:1410
#, c-format
msgid ""
"The transaction %d has a category n%d and sub-category n%d but they don't "
@@ -6795,11 +6793,11 @@ msgstr "Entrez la devise du solde partiel"
msgid "Select the currency of the partial balance"
msgstr "Sélectionnez la devise du solde partiel"
-#: ../src/gsb_data_payee.c:406
+#: ../src/gsb_data_payee.c:419
msgid "No payee defined"
msgstr "Aucun tiers défini"
-#: ../src/gsb_data_payee.c:724
+#: ../src/gsb_data_payee.c:737
#, c-format
msgid "The transaction %d has a payee n%d but it doesn't exist."
msgstr "L'opération %d a un tiers N° %d qui n'existe pas."
@@ -6812,14 +6810,14 @@ msgstr "Dépôt"
#. pas trouvé de définition remplacé par carte de crédit
#. Point of sale = Point de vente remplacé par carte de crédit
-#: ../src/gsb_data_payment.c:728 ../src/gsb_form.c:2177 ../src/import.c:2619
+#: ../src/gsb_data_payment.c:728 ../src/gsb_form.c:2187 ../src/import.c:2619
#: ../src/import.c:2625
msgid "Credit card"
msgstr "Carte de crédit"
#. Electronic payment remplacé par Direct debit = Prélèvement
#. Merchant initiated debit remplacé par Direct debit = Prélèvement
-#: ../src/gsb_data_payment.c:737 ../src/gsb_form.c:2214 ../src/import.c:2637
+#: ../src/gsb_data_payment.c:737 ../src/gsb_form.c:2224 ../src/import.c:2637
#: ../src/import.c:2655
msgid "Direct debit"
msgstr "Prélèvement"
@@ -7317,12 +7315,12 @@ msgstr ""
"<b>Voulez-vous supprimer ce fichier :\n"
"%s ?</b>"
-#: ../src/gsb_file_config.c:886
+#: ../src/gsb_file_config.c:889
#, c-format
msgid "Cannot save configuration file '%s': %s"
msgstr "Impossible d'enregistrer le fichier de configuration « %s » : %s"
-#: ../src/gsb_file_config.c:927
+#: ../src/gsb_file_config.c:930
#, c-format
msgid ""
"%s doesn't seem to be a regular config file,\n"
@@ -7331,20 +7329,20 @@ msgstr ""
"%s ne semble pas être un fichier de configuration,\n"
"veuillez vérifier et réessayer."
-#: ../src/gsb_file_config.c:964
+#: ../src/gsb_file_config.c:967
#, c-format
msgid "Cannot open config file '%s': %s"
msgstr "Impossible d'ouvrir le fichier de configuration « %s » : %s"
-#: ../src/gsb_file_config.c:1395 ../src/print_config.c:51
+#: ../src/gsb_file_config.c:1398 ../src/print_config.c:51
msgid "A4"
msgstr "A4"
-#: ../src/gsb_file_config.c:1414
+#: ../src/gsb_file_config.c:1417
msgid "Delete config file from a previous version"
msgstr "Supprimer la copie du fichier de la version précédente de grisbi"
-#: ../src/gsb_file_config.c:1434
+#: ../src/gsb_file_config.c:1437
msgid ""
"Caution, you are about to delete the\n"
"configuration file of a previous version of Grisbi.\n"
@@ -7356,11 +7354,11 @@ msgstr ""
"\n"
"<b>Voulez-vous le supprimer ?</b>"
-#: ../src/gsb_file_config.c:1498
+#: ../src/gsb_file_config.c:1501
msgid "Choose a file"
msgstr "Choisir un fichier"
-#: ../src/gsb_file_config.c:1521
+#: ../src/gsb_file_config.c:1524
msgid ""
"Please Choose the name of file\n"
"of configuration.\n"
@@ -7392,7 +7390,7 @@ msgstr ""
"%s ne semble pas être un fichier normal,\n"
"veuillez vérifier et réessayer."
-#: ../src/gsb_file_load.c:363 ../src/gsb_file_save.c:403
+#: ../src/gsb_file_load.c:363 ../src/gsb_file_save.c:398
msgid ""
"Grisbi was unable to load required plugin to handle that file.\n"
"\n"
@@ -7405,15 +7403,15 @@ msgstr ""
"Vérifiez qu'il soit bien installé (i.e. vérifiez que le paquet 'grisbi-ssl' "
"est installé) et essayez à nouveau."
-#: ../src/gsb_file_load.c:368 ../src/gsb_file_save.c:408
+#: ../src/gsb_file_load.c:368 ../src/gsb_file_save.c:403
msgid "Encryption plugin not found."
msgstr "Plugin de cryptage non trouvé"
-#: ../src/gsb_file_load.c:466 ../src/gsb_file_load.c:5296
+#: ../src/gsb_file_load.c:466 ../src/gsb_file_load.c:5293
msgid "This is not a Grisbi file... Loading aborted."
msgstr "Ce n'est pas un fichier Grisbi...chargement interrompu"
-#: ../src/gsb_file_load.c:705
+#: ../src/gsb_file_load.c:702
#, c-format
msgid ""
"An error occured while parsing the file :\n"
@@ -7425,7 +7423,7 @@ msgstr ""
"%s"
#. we don't know here the release of that file, give the release needed
-#: ../src/gsb_file_load.c:8702
+#: ../src/gsb_file_load.c:8699
#, c-format
msgid ""
"Grisbi version %s is needed to open this file.\n"
@@ -7434,7 +7432,7 @@ msgstr ""
"Pour ouvrir ce fichier, il vous faut la version %s de Grisbi.\n"
"Vous utilisez la version %s."
-#: ../src/gsb_file_load.c:8741
+#: ../src/gsb_file_load.c:8738
msgid ""
"You have opened an archive.\n"
"There is no limit in Grisbi, you can do whatever you want and save it later "
@@ -7447,13 +7445,13 @@ msgstr ""
"c'est une archive avant de modifier certaines transactions ou informations "
"importantes."
-#: ../src/gsb_file_load.c:8745
+#: ../src/gsb_file_load.c:8742
msgid "Grisbi archive opened"
msgstr "Archive grisbi ouverte"
#: ../src/gsb_file_others.c:144 ../src/gsb_file_others.c:225
-#: ../src/gsb_file_others.c:308 ../src/gsb_file_save.c:428
-#: ../src/gsb_file_save.c:446
+#: ../src/gsb_file_others.c:308 ../src/gsb_file_save.c:423
+#: ../src/gsb_file_save.c:441
#, c-format
msgid "Cannot save file '%s': %s"
msgstr ""
@@ -7552,75 +7550,75 @@ msgstr ""
"Impossible d'effacer le fichier « %s »\n"
"%s"
-#: ../src/gsb_form.c:229
+#: ../src/gsb_form.c:228
msgid "Transaction/Scheduled _form"
msgstr "Formulaire de saisie des opérations"
#. create the check button to recover the children of splits
-#: ../src/gsb_form.c:323
+#: ../src/gsb_form.c:321
msgid "Recover the children"
msgstr "Restaurer les sous-opérations"
-#: ../src/gsb_form.c:741
+#: ../src/gsb_form.c:739
msgid "Transfer : Deleted account"
msgstr "Virement : Compte supprimé"
-#: ../src/gsb_form.c:760 ../src/gsb_form.c:1844 ../src/gsb_form.c:1845
+#: ../src/gsb_form.c:758 ../src/gsb_form.c:1848 ../src/gsb_form.c:1849
#: ../src/gsb_form_widget.c:1023
msgid "Transfer : "
msgstr "Virement : "
-#: ../src/gsb_form.c:909
+#: ../src/gsb_form.c:907
msgid "Auto"
msgstr "Auto"
-#: ../src/gsb_form.c:912 ../src/gsb_form_scheduler.c:151
+#: ../src/gsb_form.c:910 ../src/gsb_form_scheduler.c:151
#: ../src/gsb_scheduler_list.c:1009
msgid "Manual"
msgstr "Manuel"
-#: ../src/gsb_form.c:1323 ../src/gsb_form_widget.c:454
+#: ../src/gsb_form.c:1333 ../src/gsb_form_widget.c:454
msgid "Cheque/Transfer number"
msgstr "N° Chèque/Virement"
-#: ../src/gsb_form.c:2186 ../src/plugins/ofx/ofx.c:476
+#: ../src/gsb_form.c:2196 ../src/plugins/ofx/ofx.c:476
msgid "Direct deposit"
msgstr "Dépôt"
#. Check = Chèque
-#: ../src/gsb_form.c:2195 ../src/import.c:2424 ../src/import.c:2471
+#: ../src/gsb_form.c:2205 ../src/import.c:2424 ../src/import.c:2471
#: ../src/import.c:2594 ../src/plugins/ofx/ofx.c:432
msgid "Check"
msgstr "Chèque"
#. Cash withdrawal = retrait en liquide
-#: ../src/gsb_form.c:2204 ../src/import.c:2643
+#: ../src/gsb_form.c:2214 ../src/import.c:2643
msgid "Cash withdrawal"
msgstr "Liquide"
-#: ../src/gsb_form.c:2333
+#: ../src/gsb_form.c:2343
msgid "No payee selected for this report."
msgstr "Cet état ne comporte pas de tiers sélectionnés."
-#: ../src/gsb_form.c:2635
+#: ../src/gsb_form.c:2655
msgid "You must enter a date."
msgstr "Une date est obligatoire."
-#: ../src/gsb_form.c:2642
+#: ../src/gsb_form.c:2662
#, c-format
msgid "Invalid date %s"
msgstr "Date invalide %s"
-#: ../src/gsb_form.c:2665
+#: ../src/gsb_form.c:2685
#, c-format
msgid "Invalid value date %s"
msgstr "La date est invalide %s"
-#: ../src/gsb_form.c:2700
+#: ../src/gsb_form.c:2720
msgid "You must enter an amount."
msgstr "Un montant est obligatoire."
-#: ../src/gsb_form.c:2720
+#: ../src/gsb_form.c:2740
msgid ""
"You cannot set split of transaction in category for a daughter of a split of "
"transaction."
@@ -7628,28 +7626,28 @@ msgstr ""
"Vous ne pouvez pas choisir la catégorie « opération ventilée » pour une "
"opération fille"
-#: ../src/gsb_form.c:2754
+#: ../src/gsb_form.c:2774
msgid ""
"Cannot associate a transfer to a deleted account in a scheduled transaction."
msgstr ""
"Vous ne pouvez pas associer un virement pour un compte supprimé dans une "
"opération programmée."
-#: ../src/gsb_form.c:2761
+#: ../src/gsb_form.c:2781
msgid ""
"There is no associated account for this transfer or associated account is "
"invalid."
msgstr "Il n'y a pas de compte associé à ce virement où il est invalide"
-#: ../src/gsb_form.c:2769
+#: ../src/gsb_form.c:2789
msgid "Can't issue a transfer its own account."
msgstr "Impossible d'effectuer un virement sur son propre compte"
-#: ../src/gsb_form.c:2774
+#: ../src/gsb_form.c:2794
msgid "Can't issue a transfer on a closed account."
msgstr "Impossible d'effectuer un virement sur un compte clos"
-#: ../src/gsb_form.c:2800
+#: ../src/gsb_form.c:2820
msgid ""
"Selected method of payment has an automatic incremental number\n"
"but doesn't contain any number.\n"
@@ -7659,7 +7657,7 @@ msgstr ""
"aucun numéro.\n"
"Souhaitez-vous continuer ?"
-#: ../src/gsb_form.c:2816
+#: ../src/gsb_form.c:2836
msgid ""
"Warning: this cheque number is already used.\n"
"Continue anyway?"
@@ -7667,30 +7665,30 @@ msgstr ""
"Attention, le numéro du chèque est déjà utilisé.\n"
"Souhaitez-vous continuer ?"
-#: ../src/gsb_form.c:2837
+#: ../src/gsb_form.c:2857
msgid "A transaction with a multiple payee must be a new one."
msgstr ""
"Une opération dont le tiers est un état doit forcément être une nouvelle "
"opération."
-#: ../src/gsb_form.c:2842
+#: ../src/gsb_form.c:2862
msgid "A transaction with a multiple payee cannot be a split child."
msgstr ""
"Une opération dont le tiers est un état ne peut pas être une sous-opération."
-#: ../src/gsb_form.c:2853
+#: ../src/gsb_form.c:2873
msgid "The word \"Report\" is reserved. Please use another one."
msgstr "Le mot « État » est réservé. Veuillez en utiliser un autre."
-#: ../src/gsb_form.c:2860
+#: ../src/gsb_form.c:2880
msgid "Invalid multiple payee."
msgstr "Nom de tiers déjà utilisé."
-#: ../src/gsb_form.c:3143
+#: ../src/gsb_form.c:3163
msgid "Modifying a transaction"
msgstr "Modifier une opération"
-#: ../src/gsb_form.c:3144
+#: ../src/gsb_form.c:3164
msgid ""
"You are trying to change a split of transaction to another kind of "
"transaction.\n"
@@ -7705,11 +7703,11 @@ msgstr ""
"Etes vous certain ?"
#. propose to configure the form
-#: ../src/gsb_form.c:3444
+#: ../src/gsb_form.c:3465
msgid "Configure the form"
msgstr "Configurer le formulaire"
-#: ../src/gsb_form_config.c:116 ../src/parametres.c:439
+#: ../src/gsb_form_config.c:116 ../src/parametres.c:442
msgid "Transaction form"
msgstr "Formulaire des opérations"
@@ -7826,12 +7824,12 @@ msgid "Free"
msgstr "Libre"
#: ../src/gsb_form_widget.c:450 ../src/gsb_transactions_list.c:153
-#: ../src/traitement_variables.c:86
+#: ../src/traitement_variables.c:85
msgid "Method of payment"
msgstr "Moyen de paiement"
#: ../src/gsb_form_widget.c:478 ../src/gsb_transactions_list.c:161
-#: ../src/traitement_variables.c:94
+#: ../src/traitement_variables.c:93
msgid "Transaction number"
msgstr "N° opération"
@@ -7839,7 +7837,7 @@ msgstr "N° opération"
msgid "Automatic/Manual"
msgstr "Auto/Manuel"
-#: ../src/gsb_fyear_config.c:99 ../src/parametres.c:510
+#: ../src/gsb_fyear_config.c:99 ../src/parametres.c:513
msgid "Financial years"
msgstr "Exercices"
@@ -8125,7 +8123,7 @@ msgstr ""
msgid "Delete reconciliation"
msgstr "Supprimer un rapprochement"
-#: ../src/gsb_reconcile_sort_config.c:86 ../src/parametres.c:429
+#: ../src/gsb_reconcile_sort_config.c:86 ../src/parametres.c:432
msgid "Sort for reconciliation"
msgstr "Options de tri pour les rapprochements"
@@ -8238,7 +8236,7 @@ msgid "Only this one"
msgstr "Juste celle-ci"
#. set the title
-#: ../src/gsb_scheduler_list.c:1800 ../src/navigation.c:1177
+#: ../src/gsb_scheduler_list.c:1800 ../src/navigation.c:1186
msgid "Scheduled transactions"
msgstr "Opérations planifiées"
@@ -8525,7 +8523,7 @@ msgid "ask for the sort number %d which doesn't exist... return by date"
msgstr ""
"Demande pour un numéro de tri : %d qui n'existe pas... retour au tri par date"
-#: ../src/gtk_combofix.c:982
+#: ../src/gtk_combofix.c:992
msgid ""
"You cannot create new payee or category and subcategory without changing the "
"options in preferences"
@@ -8533,7 +8531,7 @@ msgstr ""
"Vous ne pouvez pas créer de nouveau tiers ou catégorie sous-catégorie sans "
"modifier l'option correspondante dans les préférences"
-#: ../src/gtk_combofix.c:985
+#: ../src/gtk_combofix.c:995
msgid "Warning you cannot create payee or category"
msgstr "Attention vous ne pouvez pas créer de tiers ou de catégorie"
@@ -8949,7 +8947,7 @@ msgstr "Utiliser la date de valeur ou la date de l'opération si non présente"
msgid "Manage import associations"
msgstr "Gérer les associations pour l'import"
-#: ../src/import.c:3592 ../src/parametres.c:301
+#: ../src/import.c:3592 ../src/parametres.c:304
msgid "Import associations"
msgstr "Associations pour l'import"
@@ -9000,48 +8998,48 @@ msgstr ""
"%s n'a pas été importé avec succès. Une erreur est survenue durant la "
"transaction."
-#: ../src/import.c:4397
+#: ../src/import.c:4395
msgid "Import a file with a rule"
msgstr "Importer un fichier à partir d'une règle"
#. text for paddingbox
-#: ../src/import.c:4408
+#: ../src/import.c:4406
#, c-format
msgid "Properties of the rule : %s\n"
msgstr "Propriétés de la règle : %s\n"
-#: ../src/import.c:4427
+#: ../src/import.c:4425
#, c-format
msgid "Imported transactions will be added to the account %s.\n"
msgstr "Les opérations importées seront ajoutées au compte : %s.\n"
-#: ../src/import.c:4430
+#: ../src/import.c:4428
#, c-format
msgid "Imported transactions will mark transactions in the account %s.\n"
msgstr "Les opérations importées seront marquées dans le compte %s.\n"
#. textstring 2
-#: ../src/import.c:4435
+#: ../src/import.c:4433
#, c-format
msgid "Currency to import is %s.\n"
msgstr "La devise des opérations importées est : %s.\n"
-#: ../src/import.c:4442
+#: ../src/import.c:4440
#, c-format
msgid "Amounts of the transactions will be inverted.\n"
msgstr "Le montant des opérations sera inversé.\n"
#. label filename
-#: ../src/import.c:4453
+#: ../src/import.c:4451
msgid "Name of the file to import "
msgstr "Nom du fichier à importer "
-#: ../src/import.c:4554
+#: ../src/import.c:4552
#, c-format
msgid "Unable to create tmp file: %s\n"
msgstr "Impossible de créer le fichier '%s'\n"
-#: ../src/import.c:4582
+#: ../src/import.c:4580
#, c-format
msgid "cannot unzip file '%s': %s"
msgstr "Impossible de décompresser le fichier « %s » : %s"
@@ -9127,33 +9125,33 @@ msgstr ""
msgid "Imported CSV account"
msgstr "Compte CSV importé"
-#: ../src/imputation_budgetaire.c:365
+#: ../src/imputation_budgetaire.c:366
msgid "Export the budgetary lines"
msgstr "Exporter les imputations budgétaires"
-#: ../src/imputation_budgetaire.c:372
+#: ../src/imputation_budgetaire.c:373
msgid "Budgetary-lines.igsb"
msgstr "Imputations-budgétaires.igsb"
-#: ../src/imputation_budgetaire.c:390
+#: ../src/imputation_budgetaire.c:391
msgid "Cannot save file."
msgstr "Impossible d'enregistrer le fichier."
-#: ../src/imputation_budgetaire.c:414
+#: ../src/imputation_budgetaire.c:415
msgid "Import budgetary lines"
msgstr "Importer une liste d'imputations budgétaires"
-#: ../src/imputation_budgetaire.c:425
+#: ../src/imputation_budgetaire.c:426
msgid "Grisbi budgetary lines files (*.igsb)"
msgstr "Fichier d'imputations budgétaires (.igsb)"
-#: ../src/imputation_budgetaire.c:457
+#: ../src/imputation_budgetaire.c:458
msgid "Merge imported budgetary lines with existing?"
msgstr ""
"Fusionner une liste d'imputations budgétaires importée avec la liste "
"existante"
-#: ../src/imputation_budgetaire.c:459
+#: ../src/imputation_budgetaire.c:460
msgid ""
"File already contains budgetary lines. If you decide to continue, existing "
"budgetary lines will be merged with imported ones."
@@ -9161,7 +9159,7 @@ msgstr ""
"Le fichier contient déjà des opérations, les deux listes d'imputations "
"budgétaires seront fusionnées."
-#: ../src/imputation_budgetaire.c:460
+#: ../src/imputation_budgetaire.c:461
msgid ""
"File does not contain budgetary lines. If you decide to continue, existing "
"budgetary lines will be merged with imported ones. Once performed, there is "
@@ -9174,7 +9172,7 @@ msgstr ""
"Vous pouvez également décider de remplacer les imputations budgétaires "
"existantes par les celles que vous êtes en train d'importer."
-#: ../src/imputation_budgetaire.c:518
+#: ../src/imputation_budgetaire.c:519
msgid ""
"New\n"
"budgetary line"
@@ -9182,11 +9180,11 @@ msgstr ""
"Nouvelle\n"
"imputation"
-#: ../src/imputation_budgetaire.c:522
+#: ../src/imputation_budgetaire.c:523
msgid "Create a new budgetary line"
msgstr "Créer une imputation"
-#: ../src/imputation_budgetaire.c:528
+#: ../src/imputation_budgetaire.c:529
msgid ""
"New sub\n"
"budgetary line"
@@ -9194,11 +9192,11 @@ msgstr ""
"Nouvelle\n"
"sous-imputation"
-#: ../src/imputation_budgetaire.c:535
+#: ../src/imputation_budgetaire.c:536
msgid "Create a new sub-budgetary line"
msgstr "Créer une sous-imputation"
-#: ../src/imputation_budgetaire.c:546
+#: ../src/imputation_budgetaire.c:547
msgid ""
"Import a Grisbi budgetary line file (.igsb) or create from a list of "
"categories (.cgsb)"
@@ -9206,40 +9204,40 @@ msgstr ""
"Importer une liste d'imputations budgétaires (.igsb) ou la créer à partir "
"d'une liste de catégories (.csgb)"
-#: ../src/imputation_budgetaire.c:557
+#: ../src/imputation_budgetaire.c:558
msgid "Export a Grisbi budgetary line file (.igsb)"
msgstr "Exporter une liste d'imputations budgétaires (.igsb)"
-#: ../src/imputation_budgetaire.c:567
+#: ../src/imputation_budgetaire.c:568
msgid "Delete selected budgetary line"
msgstr "Supprimer l'imputation sélectionnée"
-#: ../src/imputation_budgetaire.c:577
+#: ../src/imputation_budgetaire.c:578
msgid "Edit selected budgetary line"
msgstr "Éditer l'imputation sélectionnée"
-#: ../src/imputation_budgetaire.c:587
+#: ../src/imputation_budgetaire.c:588
msgid "Change display mode"
msgstr "Changer le mode d'affichage"
#. Edit transaction
-#: ../src/imputation_budgetaire.c:615
+#: ../src/imputation_budgetaire.c:616
msgid "Budgetary line view"
msgstr "Vue des imputation uniquement"
-#: ../src/imputation_budgetaire.c:621
+#: ../src/imputation_budgetaire.c:622
msgid "Sub-budgetary line view"
msgstr "Vue des imputations et des sous-imputations"
-#: ../src/imputation_budgetaire.c:673
+#: ../src/imputation_budgetaire.c:674
msgid "No sub-budget defined"
msgstr "Aucune sous-imputation définie"
-#: ../src/imputation_budgetaire.c:678
+#: ../src/imputation_budgetaire.c:679
msgid "No budget defined"
msgstr "Pas d'imputation définie"
-#: ../src/imputation_budgetaire.c:769
+#: ../src/imputation_budgetaire.c:770
#, c-format
msgid ""
"You tried to rename current sub-budgetary line to '%s' but this sub-"
@@ -9248,7 +9246,7 @@ msgstr ""
"Vous avez tenté de renommer la sous-imputation sélectionnée en '%s' mais "
"elle existe déjà. Veuillez choisir un autre nom."
-#: ../src/imputation_budgetaire.c:776
+#: ../src/imputation_budgetaire.c:777
#, c-format
msgid ""
"You tried to rename current budgetary line to '%s' but this budgetary line "
@@ -9257,21 +9255,21 @@ msgstr ""
"Vous avez tenté de renommer l'imputation sélectionnée en '%s' mais elle "
"existe déjà. Veuillez choisir un autre nom."
-#: ../src/imputation_budgetaire.c:781
+#: ../src/imputation_budgetaire.c:782
msgid "Budgetary line already exists"
msgstr "L'imputation existe déjà"
#. * Find a unique name for budget
-#: ../src/imputation_budgetaire.c:884 ../src/meta_budgetary.c:246
+#: ../src/imputation_budgetaire.c:885 ../src/meta_budgetary.c:245
msgid "New sub-budget"
msgstr "Nouvelle sous-imputation"
-#: ../src/main.c:162
+#: ../src/main.c:161
#, c-format
msgid "Error on sigaction: SIGSEGV won't be trapped\n"
msgstr "Erreur sur sigaction, le signal SIGSEGV ne sera pas détourné\n"
-#: ../src/main.c:217
+#: ../src/main.c:216
msgid ""
"The version of GTK you are using do not benefit from its latest features.\n"
"\n"
@@ -9474,7 +9472,7 @@ msgstr "Nouvelle imputation"
msgid "New budget #%d"
msgstr "Nouvelle imputation %d"
-#: ../src/meta_budgetary.c:252
+#: ../src/meta_budgetary.c:251
#, c-format
msgid "New sub-budget #%d"
msgstr "Nouvelle sous-imputation #%d"
@@ -9493,7 +9491,7 @@ msgstr "Nouvelle catégorie"
msgid "New category #%d"
msgstr "Nouvelle catégorie %d"
-#: ../src/meta_categories.c:313
+#: ../src/meta_categories.c:312
#, c-format
msgid "New sub-category #%d"
msgstr "Nouvelle sous-catégorie %d"
@@ -9581,85 +9579,85 @@ msgstr ""
msgid "Please enter a %s!"
msgstr "Veuillez entrer une %s !"
-#: ../src/navigation.c:1032
+#: ../src/navigation.c:1041
msgid "Last statement: "
msgstr "Dernier relevé : "
-#: ../src/navigation.c:1033
+#: ../src/navigation.c:1042
msgid "Reconciled balance: "
msgstr "Solde pointé : "
-#: ../src/navigation.c:1041
+#: ../src/navigation.c:1050
msgid "Last statement: none"
msgstr "Dernier relevé : Aucun"
#. set the title
-#: ../src/navigation.c:1057
+#: ../src/navigation.c:1066
msgid "Account transactions"
msgstr "Opérations du compte"
-#: ../src/navigation.c:1063
+#: ../src/navigation.c:1072
msgid "closed"
msgstr "fermé"
#. Create dialog
-#: ../src/parametres.c:234
+#: ../src/parametres.c:237
msgid "Grisbi preferences"
msgstr "Paramètres de Grisbi"
-#: ../src/parametres.c:264
+#: ../src/parametres.c:267
msgid "Main"
msgstr "Généralités"
-#: ../src/parametres.c:273 ../src/parametres.c:824
+#: ../src/parametres.c:276 ../src/parametres.c:824
msgid "Files"
msgstr "Fichiers"
-#: ../src/parametres.c:311 ../src/parametres.c:998
+#: ../src/parametres.c:314 ../src/parametres.c:998
msgid "Programs"
msgstr "Programmes"
-#: ../src/parametres.c:339
+#: ../src/parametres.c:342
msgid "Display"
msgstr "Affichage"
-#: ../src/parametres.c:356 ../src/parametres.c:616
+#: ../src/parametres.c:359 ../src/parametres.c:616
msgid "Messages & warnings"
msgstr "Messages et alertes"
-#: ../src/parametres.c:374 ../src/parametres.c:1155
+#: ../src/parametres.c:377 ../src/parametres.c:1155
msgid "Payees, categories and budgetaries"
msgstr "Tiers, catégories imputations budgétaires"
-#: ../src/parametres.c:401
+#: ../src/parametres.c:404
msgid "List behavior"
msgstr "Comportement de la liste"
-#: ../src/parametres.c:411 ../src/parametres.c:702
+#: ../src/parametres.c:414 ../src/parametres.c:702
msgid "Messages before deleting"
msgstr "Messages avant suppression"
-#: ../src/parametres.c:447
+#: ../src/parametres.c:450
msgid "Content"
msgstr "Contenu"
-#: ../src/parametres.c:456
+#: ../src/parametres.c:459
msgid "Behavior"
msgstr "Comportement"
-#: ../src/parametres.c:465
+#: ../src/parametres.c:468
msgid "Completion"
msgstr "Aide à la saisie"
-#: ../src/parametres.c:475
+#: ../src/parametres.c:478
msgid "Resources"
msgstr "Ressources"
-#: ../src/parametres.c:492
+#: ../src/parametres.c:495
msgid "Currencies links"
msgstr "Liens entre devises"
-#: ../src/parametres.c:535
+#: ../src/parametres.c:537
msgid "Balance estimate"
msgstr "Budget prévisionnel"
@@ -10731,7 +10729,7 @@ msgstr "Saviez-vous que..."
msgid "Display tips at next start"
msgstr "Afficher l'astuce lors du prochain démarrage"
-#: ../src/traitement_variables.c:87
+#: ../src/traitement_variables.c:86
msgid "Reconciliation ref."
msgstr "N° de rapprochement"
diff --git a/src/Makefile.am b/src/Makefile.am
index 3d83d03..9e3f56a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -143,6 +143,8 @@ libgrisbi_la_SOURCES = \
utils_str.c \
bet_config.c \
bet_data.c \
+ bet_data_finance.c \
+ bet_finance_ui.c \
bet_future.c \
bet_hist.c \
bet_tab.c \
@@ -152,6 +154,8 @@ libgrisbi_la_SOURCES = \
barre_outils.h \
bet_config.h \
bet_data.h \
+ bet_data_finance.h \
+ bet_finance_ui.h \
bet_future.h \
bet_hist.h \
bet_tab.h \
@@ -285,8 +289,7 @@ libgrisbi_la_SOURCES = \
utils_files.h \
utils_font
.h \
utils_operations.h \
- utils_str.h \
- bet_config.c
+ utils_str.h
grisbi_SOURCES = \
main.c \
diff --git a/src/accueil.c b/src/accueil.c
index 3dca98d..a89e088 100644
--- a/src/accueil.c
+++ b/src/accueil.c
@@ -174,9 +174,7 @@ GtkWidget *creation_onglet_accueil ( void )
{
logo_accueil = gtk_image_new_from_pixbuf (
gsb_select_icon_get_logo_pixbuf ( ) );
- if ( ! logo_accueil )
- logo_accueil = gtk_image_new_from_pixbuf (
- gsb_select_icon_get_default_logo_pixbuf ( ) );
+
gtk_box_pack_start ( GTK_BOX ( hbox_title ), logo_accueil, FALSE, FALSE, 20 );
gtk_widget_set_size_request ( hbox_title, -1, LOGO_HEIGHT + 20 );
}
diff --git a/src/affichage.c b/src/affichage.c
index d60e127..a45f5b3 100644
--- a/src/affichage.c
+++ b/src/affichage.c
@@ -492,18 +492,18 @@ void change_logo_accueil ( GtkWidget * file_selector )
const gchar *selected_filename;
- selected_filename = file_selection_get_filename (GTK_FILE_CHOOSER (file_selector));
+ selected_filename = file_selection_get_filename ( GTK_FILE_CHOOSER ( file_selector ) );
if ( gsb_data_account_get_accounts_amount () )
{
/* on change le logo */
gchar * chemin_logo;
- gtk_container_remove (GTK_CONTAINER(logo_button), preview);
+ gtk_container_remove ( GTK_CONTAINER ( logo_button ), preview );
chemin_logo = g_strstrip ( g_strdup ( selected_filename ) );
if ( !strlen ( chemin_logo ) )
{
- if ( logo_accueil && GTK_IS_WIDGET ( logo_accueil ))
+ if ( logo_accueil && GTK_IS_WIDGET ( logo_accueil ) )
gtk_widget_hide ( logo_accueil );
preview = gtk_image_new_from_stock ( GTK_STOCK_MISSING_IMAGE,
GTK_ICON_SIZE_BUTTON );
@@ -511,8 +511,7 @@ void change_logo_accueil ( GtkWidget * file_selector )
else
{
/* Update preview */
- pixbuf = gdk_pixbuf_new_from_file (chemin_logo, NULL);
- g_free(chemin_logo);
+ pixbuf = gdk_pixbuf_new_from_file ( chemin_logo, NULL );
if (!pixbuf)
{
if ( logo_accueil && GTK_IS_WIDGET ( logo_accueil ))
@@ -522,6 +521,26 @@ void change_logo_accueil ( GtkWidget * file_selector )
}
else
{
+ if ( g_strcmp0 ( g_path_get_dirname ( chemin_logo ), PIXMAPS_DIR ) == 0 )
+ {
+ gchar *name_logo;
+
+ etat.is_pixmaps_dir = TRUE;
+
+ name_logo = g_path_get_basename ( chemin_logo );
+ if ( g_strcmp0 ( name_logo, "grisbi-logo.png" ) != 0 )
+ etat.name_logo = name_logo;
+ else
+ etat.name_logo = NULL;
+ }
+ else
+ {
+ etat.is_pixmaps_dir = FALSE;
+ if ( etat.name_logo && strlen ( etat.name_logo ) )
+ g_free ( etat.name_logo );
+ etat.name_logo = NULL;
+ }
+
gsb_select_icon_set_logo_pixbuf ( pixbuf );
preview = gtk_image_new_from_pixbuf (
gdk_pixbuf_scale_simple (
@@ -538,9 +557,11 @@ void change_logo_accueil ( GtkWidget * file_selector )
gtk_window_set_default_icon (
gsb_select_icon_get_logo_pixbuf ( ) );
}
+
+ g_free ( chemin_logo );
}
gtk_widget_show ( preview );
- gtk_container_add ( GTK_CONTAINER(logo_button), preview );
+ gtk_container_add ( GTK_CONTAINER ( logo_button ), preview );
/* Mark file as modified */
if ( etat.modification_fichier == 0 )
@@ -562,20 +583,29 @@ gboolean modification_logo_accueil ( )
GTK_STOCK_OPEN, GTK_RESPONSE_OK,
NULL);
- gtk_file_chooser_set_current_folder ( GTK_FILE_CHOOSER ( file_selector ), gsb_file_get_last_path () );
+ if ( etat.is_pixmaps_dir )
+ gtk_file_chooser_set_current_folder ( GTK_FILE_CHOOSER (
+ file_selector ), PIXMAPS_DIR );
+ else
+ gtk_file_chooser_set_current_folder ( GTK_FILE_CHOOSER (
+ file_selector ), gsb_file_get_last_path () );
+
gtk_window_set_position ( GTK_WINDOW ( file_selector ), GTK_WIN_POS_CENTER_ON_PARENT );
/* create the preview */
preview = gtk_image_new ();
- gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (file_selector), preview);
- g_signal_connect (G_OBJECT (file_selector), "update-preview",
- G_CALLBACK (preferences_view_update_preview_logo), preview);
+ gtk_file_chooser_set_preview_widget ( GTK_FILE_CHOOSER ( file_selector ), preview );
+ g_signal_connect (G_OBJECT (file_selector),
+ "update-preview",
+ G_CALLBACK ( preferences_view_update_preview_logo ),
+ preview );
switch ( gtk_dialog_run ( GTK_DIALOG ( file_selector ) ) )
{
case GTK_RESPONSE_OK:
change_logo_accueil ( file_selector );
- gsb_file_update_last_path (file_selection_get_last_directory (GTK_FILE_CHOOSER (file_selector), TRUE));
+ gsb_file_update_last_path ( file_selection_get_last_directory (
+ GTK_FILE_CHOOSER ( file_selector ), TRUE ) );
default:
gtk_widget_destroy ( file_selector );
diff --git a/src/bet_config.c b/src/bet_config.c
index bf10ac0..209b84a 100644
--- a/src/bet_config.c
+++ b/src/bet_config.c
@@ -213,10 +213,12 @@ GtkWidget *bet_config_account_create_account_page ( void )
gtk_notebook_set_scrollable ( GTK_NOTEBOOK ( notebook ), TRUE );
gtk_box_pack_start ( GTK_BOX ( vbox_pref ), notebook, FALSE, FALSE, 0 );
g_object_set_data ( G_OBJECT ( account_page ), "config_notebook", notebook );
+ gtk_widget_show ( notebook );
/* Data for the account of type GSB_TYPE_BANK, GSB_TYPE_CASH */
vbox = gtk_vbox_new ( FALSE, 0 );
gtk_notebook_append_page ( GTK_NOTEBOOK ( notebook ), vbox, NULL );
+ gtk_widget_show ( vbox );
/* Data for the forecast */
widget = bet_config_account_get_forecast_data ( _("Data for the forecast") );
@@ -229,14 +231,12 @@ GtkWidget *bet_config_account_create_account_page ( void )
gtk_box_pack_start ( GTK_BOX ( vbox ), widget, FALSE, FALSE, 0 );
/* Data for the account of type GSB_TYPE_LIABILITIES */
- vbox = gtk_vbox_new ( FALSE, 0 );
- gtk_notebook_append_page ( GTK_NOTEBOOK ( notebook ), vbox, NULL );
+ //~ vbox = gtk_vbox_new ( FALSE, 0 );
+ //~ gtk_notebook_append_page ( GTK_NOTEBOOK ( notebook ), vbox, NULL );
widget = g_object_get_data ( G_OBJECT ( account_page ), "account_combo" );
bet_config_change_account ( widget );
- gtk_widget_show_all ( notebook );
-
return vbox_pref;
}
@@ -953,8 +953,8 @@ gboolean bet_config_change_account ( GtkWidget *combo )
bet_config_initialise_select_historical_data ( account_number, account_page );
break;
case GSB_TYPE_LIABILITIES:
- gtk_notebook_set_current_page ( GTK_NOTEBOOK ( notebook ), 1 );
- break;
+ //~ gtk_notebook_set_current_page ( GTK_NOTEBOOK ( notebook ), 1 );
+ //~ break;
case GSB_TYPE_ASSET:
break;
}
@@ -1024,7 +1024,7 @@ gboolean bet_config_select_label_changed ( GtkWidget *checkbutton,
void bet_config_sensitive_account_parameters ( gint account_number, gboolean sensitive )
{
GtkWidget *widget = NULL;
-
+printf ("account_number = %d sensitive = %d\n", account_number, sensitive);
if ( sensitive )
{
kind_account kind;
@@ -1045,17 +1045,20 @@ void bet_config_sensitive_account_parameters ( gint account_number, gboolean sen
gtk_widget_show_all ( widget );
break;
case GSB_TYPE_LIABILITIES:
- break;
case GSB_TYPE_ASSET:
+ widget = g_object_get_data ( G_OBJECT ( account_page ), "Data_for_forecast" );
+ gtk_widget_hide_all ( widget );
+ widget = g_object_get_data ( G_OBJECT ( account_page ), "Data_for_historical" );
+ gtk_widget_hide_all ( widget );
break;
}
}
else
{
- widget = g_object_get_data ( G_OBJECT ( account_page ), "Data_for_forecast" );
- gtk_widget_hide_all ( widget );
- widget = g_object_get_data ( G_OBJECT ( account_page ), "Data_for_historical" );
- gtk_widget_hide_all ( widget );
+ widget = g_object_get_data ( G_OBJECT ( account_page ), "Data_for_forecast" );
+ gtk_widget_hide_all ( widget );
+ widget = g_object_get_data ( G_OBJECT ( account_page ), "Data_for_historical" );
+ gtk_widget_hide_all ( widget );
}
}
diff --git a/src/bet_data.c b/src/bet_data.c
index 99dafea..5c690da 100644
--- a/src/bet_data.c
+++ b/src/bet_data.c
@@ -31,6 +31,7 @@
#include "bet_hist.h"
#include "bet_tab.h"
#include "dialog.h"
+#include "fenetre_principale.h"
#include "gsb_data_account.h"
#include "gsb_data_budget.h"
#include "gsb_data_category.h"
@@ -38,7 +39,6 @@
#include "gsb_data_transaction.h"
#include "utils_dates.h"
#include "navigation.h"
-#include "gsb_real.h"
#include "traitement_variables.h"
#include "gsb_file_save.h"
#include "utils_str.h"
diff --git a/src/bet_data.h b/src/bet_data.h
index 5ebd298..60c84f9 100644
--- a/src/bet_data.h
+++ b/src/bet_data.h
@@ -5,7 +5,6 @@
/* START_INCLUDE_H */
#include "gsb_real.h"
-#include "fenetre_principale.h"
/* END_INCLUDE_H */
diff --git a/src/bet_data_finance.c b/src/bet_data_finance.c
new file mode 100644
index 0000000..9b2d500
--- /dev/null
+++ b/src/bet_data_finance.c
@@ -0,0 +1,185 @@
+/* ************************************************************************** */
+/* */
+/* Copyright (C) 2010 Pierre Biava (grisbi at pierre.biava.name) */
+/* http://www.grisbi.org */
+/* */
+/* This program is free software; you can redistribute it and/or modify */
+/* it under the terms of the GNU General Public License as published by */
+/* the Free Software Foundation; either version 2 of the License, or */
+/* (at your option) any later version. */
+/* */
+/* This program is distributed in the hope that it will be useful, */
+/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
+/* GNU General Public License for more details. */
+/* */
+/* You should have received a copy of the GNU General Public License */
+/* along with this program; if not, write to the Free Software */
+/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+/* */
+/* ************************************************************************** */
+
+#include "include.h"
+#include <config.h>
+
+/*START_INCLUDE*/
+#include "bet_data_finance.h"
+#include "bet_finance_ui.h"
+#include "utils_str.h"
+#include "erreur.h"
+/*END_INCLUDE*/
+
+
+/*START_STATIC*/
+/*END_STATIC*/
+
+/*START_EXTERN*/
+/*END_EXTERN*/
+
+/**
+ *
+ *
+ *
+ *
+ * */
+gdouble bet_data_finance_get_echeance ( gdouble capital,
+ gdouble taux_periodique,
+ gint nbre_echeances )
+{
+ gdouble coeff;
+ gdouble number;
+
+ coeff = pow ( ( 1 + taux_periodique ), nbre_echeances );
+
+ if ( taux_periodique == 0 )
+ number = capital / nbre_echeances;
+ else
+ number = ( capital * taux_periodique * coeff ) / ( coeff - 1 );
+ number = bet_data_finance_troncate_number ( number, 2 );
+
+ return number;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+gdouble bet_data_finance_get_taux_periodique ( gdouble taux, gint type_taux )
+{
+ gdouble taux_periodique;
+
+ if ( type_taux )
+ taux_periodique = ( taux / 100 ) / 12;
+ else
+ //~ taux_periodique = pow ( 1 + ( taux / 100 ), (1/12) ) - 1;
+ taux_periodique = 0.004868;
+
+ return taux_periodique;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+gdouble bet_data_finance_get_frais_par_echeance ( gdouble capital,
+ gdouble taux_frais,
+ gint nbre_echeances )
+{
+ gdouble number;
+
+ number = capital * taux_frais / 100 / nbre_echeances;
+ number = bet_data_finance_troncate_number ( number, 2 );
+
+ return number;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+gdouble bet_data_finance_get_interets ( gdouble capital_du, gdouble taux_periodique )
+{
+ gdouble number;
+
+ number = capital_du * taux_periodique;
+ number = bet_data_finance_troncate_number ( number, 2 );
+
+ return number;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+gdouble bet_data_finance_get_principal ( gdouble echeance,
+ gdouble interets,
+ gdouble frais )
+{
+ gdouble number;
+
+ number = echeance - interets - frais;
+ number = bet_data_finance_troncate_number ( number, 2 );
+
+ return number;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+gdouble bet_data_finance_get_last_echeance ( gdouble capital_du,
+ gdouble interets,
+ gdouble frais )
+{
+gdouble number;
+
+ number = capital_du + interets + frais;
+ number = bet_data_finance_troncate_number ( number, 2 );
+
+ return number;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+gdouble bet_data_finance_troncate_number ( gdouble number, gint nbre_decimal )
+{
+ gchar buffer[256];
+ gchar *str_number;
+ gchar *format;
+ gint nbre_char;
+ gdouble result;
+
+ format = g_strconcat ( "%.", utils_str_itoa ( nbre_decimal ), "f", NULL );
+
+ nbre_char = g_sprintf ( buffer, format, number );
+ str_number = g_strndup ( buffer, nbre_char + 1 );
+
+ result = my_strtod ( str_number, NULL );
+
+ return result;
+}
+
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* End: */
diff --git a/src/bet_data_finance.h b/src/bet_data_finance.h
new file mode 100644
index 0000000..81bab81
--- /dev/null
+++ b/src/bet_data_finance.h
@@ -0,0 +1,30 @@
+#ifndef _BET_DATA_FINANCE_H
+#define _BET_DATA_FINANCE_H
+
+#include <gtk/gtk.h>
+
+/* START_INCLUDE_H */
+#include "gsb_real.h"
+/* END_INCLUDE_H */
+
+
+/* START_DECLARATION */
+gdouble bet_data_finance_get_last_echeance ( gdouble capital_du,
+ gdouble interets,
+ gdouble frais );
+gdouble bet_data_finance_get_echeance ( gdouble capital,
+ gdouble taux_periodique,
+ gint duree );
+gdouble bet_data_finance_get_frais_par_echeance ( gdouble capital,
+ gdouble taux_frais,
+ gint nbre_echeances );
+gdouble bet_data_finance_get_interets ( gdouble capital_du, gdouble taux_periodique );
+gdouble bet_data_finance_get_principal ( gdouble echeance,
+ gdouble interets,
+ gdouble frais );
+gdouble bet_data_finance_get_taux_periodique ( gdouble taux, gint type_taux );
+gdouble bet_data_finance_troncate_number ( gdouble number, gint nbre_decimal );
+/* END_DECLARATION */
+
+
+#endif /*_BET_DATA_FINANCE*/
diff --git a/src/bet_finance_ui.c b/src/bet_finance_ui.c
new file mode 100644
index 0000000..576e16e
--- /dev/null
+++ b/src/bet_finance_ui.c
@@ -0,0 +1,1323 @@
+/* ************************************************************************** */
+/* */
+/* Copyright (C) 2010 Pierre Biava (grisbi at pierre.biava.name) */
+/* http://www.grisbi.org */
+/* */
+/* This program is free software; you can redistribute it and/or modify */
+/* it under the terms of the GNU General Public License as published by */
+/* the Free Software Foundation; either version 2 of the License, or */
+/* (at your option) any later version. */
+/* */
+/* This program is distributed in the hope that it will be useful, */
+/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
+/* GNU General Public License for more details. */
+/* */
+/* You should have received a copy of the GNU General Public License */
+/* along with this program; if not, write to the Free Software */
+/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+/* */
+/* ************************************************************************** */
+
+#include "include.h"
+#include <config.h>
+
+/*START_INCLUDE*/
+#include "bet_finance_ui.h"
+#include "bet_data_finance.h"
+#include "dialog.h"
+#include "fenetre_principale.h"
+#include "gsb_combo_box.h"
+#include "gsb_currency.h"
+#include "gsb_form_widget.h"
+#include "gsb_real.h"
+#include "mouse.h"
+#include "structures.h"
+#include "utils.h"
+#include "erreur.h"
+/*END_INCLUDE*/
+
+/* structure échéance */
+ typedef struct {
+ gint duree;
+ gint nbre_echeances;
+ gint devise;
+ gdouble taux;
+ gdouble taux_periodique;
+ gdouble capital;
+ gdouble frais;
+ gdouble echeance;
+} struct_echeance;
+
+/* structure amortissement */
+ typedef struct {
+ gint num_echeance;
+ gint devise;
+ gdouble taux_periodique;
+ gdouble interets;
+ gdouble capital_du;
+ gdouble principal;
+ gdouble frais;
+ gdouble echeance;
+} struct_amortissement;
+
+/*START_STATIC*/
+static void bet_finance_activate_expander ( GtkWidget *expander, GtkWidget *widget );
+static void bet_finance_calculer_clicked ( GtkButton *button, GtkWidget *widget );
+static GtkWidget *bet_finance_create_amortization_page ( void );
+static GtkWidget *bet_finance_create_amortization_tree_view ( GtkWidget *container );
+static GtkWidget *bet_finance_create_data_tree_view ( GtkWidget *container );
+static GtkWidget *bet_finance_create_duration_widget ( GtkWidget *parent );
+static GtkWidget *bet_finance_create_saisie_widget ( GtkWidget *parent );
+static GtkWidget *bet_finance_create_simulator_page ( void );
+static gboolean bet_finance_data_list_button_press ( GtkWidget *tree_view,
+ GdkEventButton *ev,
+ GtkWidget *page );
+static void bet_finance_data_list_context_menu ( GtkWidget *tree_view, gint page_num );
+static gboolean bet_finance_duration_button_changed ( GtkWidget *combobox, GtkWidget *widget );
+static void bet_finance_fill_amortization_array ( GtkWidget *menu_item,
+ GtkTreeSelection *tree_selection );
+static void bet_finance_fill_amortization_ligne ( GtkTreeModel *model,
+ struct_amortissement *s_amortissement );
+static void bet_finance_fill_data_ligne ( GtkTreeModel *model, struct_echeance *s_echeance );
+static gboolean bet_finance_list_set_background_color ( GtkWidget *tree_view, gint color_column );
+static gdouble bet_finance_get_number_from_string ( GtkWidget *parent, const gchar *name );
+static void bet_finance_type_taux_changed ( GtkWidget *togglebutton, GtkWidget *widget );
+/*END_STATIC*/
+
+/*START_EXTERN*/
+extern GdkColor couleur_fond[2];
+/*END_EXTERN*/
+
+/* notebook pour la simulation de crédits */
+static GtkWidget *finance_notebook;
+
+ enum bet_finance_data_columns
+{
+ BET_FINANCE_DURATION_COLUMN,
+ BET_FINANCE_NBRE_ECHEANCE_COLUMN,
+ BET_FINANCE_DEVISE_COLUMN,
+ BET_FINANCE_CAPITAL_COLUMN,
+ BET_FINANCE_CAPITAL_DOUBLE,
+ BET_FINANCE_TAUX_COLUMN,
+ BET_FINANCE_TAUX_PERIODIQUE_DOUBLE,
+ BET_FINANCE_HORS_FRAIS_COLUMN,
+ BET_FINANCE_HORS_FRAIS_DOUBLE,
+ BET_FINANCE_FRAIS_COLUMN,
+ BET_FINANCE_FRAIS_DOUBLE,
+ BET_FINANCE_ECHEANCE_COLUMN,
+ BET_FINANCE_ECHEANCE_DOUBLE,
+ BET_FINANCE_BACKGROUND_COLOR,
+ BET_FINANCE_NBRE_COLUMNS
+};
+
+
+ enum bet_finance_amortization_columns
+{
+ BET_AMORTIZATION_NUMBER_COLUMN,
+ BET_AMORTIZATION_CAPITAL_DU_COLUMN,
+ BET_AMORTIZATION_INTERETS_COLUMN,
+ BET_AMORTIZATION_PRINCIPAL_COLUMN,
+ BET_AMORTIZATION_FRAIS_COLUMN,
+ BET_AMORTIZATION_ECHEANCE_COLUMN,
+ BET_AMORTIZATION_BACKGROUND_COLOR,
+ BET_AMORTIZATION_NBRE_COLUMNS
+};
+
+
+/**
+ * Create the finance page
+ *
+ *
+ *
+ * */
+GtkWidget *bet_finance_create_page ( void )
+{
+ GtkWidget *page;
+
+ devel_debug (NULL);
+
+ /* create a notebook for simulator and array of Amortization */
+ finance_notebook = gtk_notebook_new ( );
+ gtk_notebook_set_show_tabs ( GTK_NOTEBOOK ( finance_notebook ), FALSE );
+ gtk_widget_show ( finance_notebook );
+
+ /* create the simulator page */
+ page = bet_finance_create_simulator_page ( );
+ gtk_notebook_append_page ( GTK_NOTEBOOK ( finance_notebook ), page, NULL );
+
+ /* create the array page */
+ page = bet_finance_create_amortization_page ( );
+ gtk_notebook_append_page ( GTK_NOTEBOOK ( finance_notebook ), page, NULL );
+
+ return finance_notebook;
+}
+
+
+/**
+ * Switch to the simulator page
+ *
+ *
+ *
+ * */
+void bet_finance_switch_simulator_page ( void )
+{
+ gtk_notebook_set_current_page ( GTK_NOTEBOOK ( finance_notebook ), 0 );
+}
+
+
+/**
+ * Create the simulator page
+ *
+ *
+ *
+ * */
+GtkWidget *bet_finance_create_simulator_page ( void )
+{
+ GtkWidget *page;
+ GtkWidget *widget;
+ GtkWidget *vbox, *hbox;
+ GtkWidget *align;
+ GtkWidget *label;
+ GtkWidget *spin_button = NULL;
+ GtkWidget *button;
+ GtkWidget *tree_view;
+ GtkWidget *expander;
+
+ devel_debug (NULL);
+
+ page = gtk_vbox_new ( FALSE, 5 );
+
+ /* titre de la page */
+ align = gtk_alignment_new (0.5, 0.0, 0.0, 0.0);
+ gtk_box_pack_start ( GTK_BOX ( page ), align, FALSE, FALSE, 5);
+
+ label = gtk_label_new ( _("Credits simulator") );
+ gtk_container_add ( GTK_CONTAINER ( align ), label );
+
+ /* Choix des données sources */
+ align = gtk_alignment_new (0.5, 0.0, 0.0, 0.0);
+ gtk_box_pack_start ( GTK_BOX ( page ), align, FALSE, FALSE, 5);
+
+ hbox = gtk_hbox_new ( FALSE, 5 );
+ gtk_container_add ( GTK_CONTAINER ( align ), hbox );
+
+ /* capital */
+ label = gtk_label_new ( COLON( _("Montant emprunté") ) );
+ gtk_misc_set_alignment ( GTK_MISC ( label ), 0, 0.5);
+ gtk_label_set_justify ( GTK_LABEL ( label ), GTK_JUSTIFY_LEFT );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 5 );
+
+ widget = gtk_entry_new ( );
+ //~ gtk_entry_set_text ( GTK_ENTRY ( widget ), "10000" );
+ g_object_set_data ( G_OBJECT ( page ), "capital", widget );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), widget, FALSE, FALSE, 5 );
+ g_signal_connect ( G_OBJECT ( widget ),
+ "changed",
+ G_CALLBACK ( gsb_form_widget_amount_entry_changed ),
+ NULL );
+
+ /* Set the devises */
+ widget = gsb_currency_make_combobox ( FALSE );
+ g_object_set_data ( G_OBJECT ( page ), "devise", widget );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), widget, FALSE, FALSE, 0 );
+
+ /* taux */
+ label = gtk_label_new ( COLON( _("Taux d'intérêt annuel") ) );
+ gtk_misc_set_alignment ( GTK_MISC ( label ), 0, 0.5);
+ gtk_label_set_justify ( GTK_LABEL ( label ), GTK_JUSTIFY_LEFT );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 5 );
+
+ spin_button = gtk_spin_button_new_with_range ( 0.0, 100, 0.01);
+ //~ gtk_spin_button_set_value ( GTK_SPIN_BUTTON ( spin_button ), 5.00);
+ g_object_set_data ( G_OBJECT ( page ), "taux", spin_button );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), spin_button, FALSE, FALSE, 0 );
+
+ label = gtk_label_new ( COLON( _("%") ) );
+ gtk_label_set_justify ( GTK_LABEL ( label ), GTK_JUSTIFY_LEFT );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 5 );
+
+ /* durée */
+ label = gtk_label_new ( COLON( _("Durée") ) );
+ gtk_misc_set_alignment ( GTK_MISC ( label ), 0, 0.5);
+ gtk_label_set_justify ( GTK_LABEL ( label ), GTK_JUSTIFY_LEFT );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 5 );
+
+ widget = bet_finance_create_duration_widget ( page );
+ g_object_set_data ( G_OBJECT ( page ), "duree", widget );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), widget, FALSE, FALSE, 0 );
+
+ /* création du widget saisie détaillée */
+ vbox = gtk_vbox_new ( FALSE, 5 );
+ gtk_box_pack_start ( GTK_BOX ( page ), vbox, FALSE, FALSE, 5);
+
+ hbox = gtk_hbox_new ( FALSE, 5 );
+ gtk_box_pack_start ( GTK_BOX ( vbox ), hbox, FALSE, FALSE, 5);
+ expander = gtk_expander_new ( _("Saisie détaillée") );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), expander, TRUE, TRUE, 5 );
+
+ button = gtk_button_new_with_label ( _("Calculer") );
+ g_signal_connect ( G_OBJECT ( button ),
+ "clicked",
+ G_CALLBACK ( bet_finance_calculer_clicked ),
+ page );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), button, FALSE, FALSE, 5 );
+
+ widget = bet_finance_create_saisie_widget ( page );
+ gtk_box_pack_start ( GTK_BOX ( vbox ), widget, FALSE, FALSE, 5);
+
+ g_signal_connect_after( G_OBJECT ( expander ),
+ "activate",
+ G_CALLBACK ( bet_finance_activate_expander ),
+ widget );
+
+ /* création de la liste des données */
+ tree_view = bet_finance_create_data_tree_view ( page );
+ g_object_set_data ( G_OBJECT ( page ), "tree_view", tree_view );
+
+ gtk_widget_show_all ( page );
+ gtk_widget_hide ( widget );
+
+ return page;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+GtkWidget *bet_finance_create_duration_widget ( GtkWidget *parent )
+{
+ GtkWidget *combobox;
+ gchar *text_duration [] = {
+ _("Entre 1 et 15 ans"),
+ _("Entre 15 et 30 ans"),
+ NULL};
+
+ combobox = gsb_combo_box_new_with_index ( text_duration,
+ G_CALLBACK ( bet_finance_duration_button_changed ),
+ parent );
+ gsb_combo_box_set_index ( combobox, 0 );
+
+ return combobox;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+void bet_finance_activate_expander ( GtkWidget *expander, GtkWidget *widget )
+{
+ if ( gtk_expander_get_expanded ( GTK_EXPANDER ( expander ) ) )
+ {
+ gtk_widget_show ( widget );
+ }
+ else
+ {
+ gtk_widget_hide ( widget );
+ }
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+GtkWidget *bet_finance_create_saisie_widget ( GtkWidget *parent )
+{
+ GtkWidget *vbox;
+ GtkWidget *hbox;
+ GtkWidget *align;
+ GtkWidget *label;
+ GtkWidget *spin_button = NULL;
+ GtkWidget *button_1, *button_2;
+
+ vbox = gtk_vbox_new ( FALSE, 5 );
+
+ /* Frais */
+ align = gtk_alignment_new (0.5, 0.0, 0.0, 0.0);
+ gtk_box_pack_start ( GTK_BOX ( vbox ), align, FALSE, FALSE, 0 );
+
+ hbox = gtk_hbox_new ( FALSE, 5 );
+ gtk_container_add ( GTK_CONTAINER ( align ), hbox );
+
+ label = gtk_label_new ( COLON( _("Frais") ) );
+ gtk_misc_set_alignment ( GTK_MISC ( label ), 0, 0.5);
+ gtk_label_set_justify ( GTK_LABEL ( label ), GTK_JUSTIFY_LEFT );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 5 );
+
+ spin_button = gtk_spin_button_new_with_range ( 0.0, 100, 0.01 );
+ //~ gtk_spin_button_set_value ( GTK_SPIN_BUTTON ( spin_button ), 0.35 );
+ g_object_set_data ( G_OBJECT ( parent ), "frais", spin_button );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), spin_button, FALSE, FALSE, 0 );
+
+ label = gtk_label_new ( _("% du capital emprunté") );
+ gtk_label_set_justify ( GTK_LABEL ( label ), GTK_JUSTIFY_LEFT );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 5 );
+
+ /* Type de taux */
+ align = gtk_alignment_new (0.5, 0.0, 0.0, 0.0);
+ gtk_box_pack_start ( GTK_BOX ( vbox ), align, FALSE, FALSE, 0 );
+
+ hbox = gtk_hbox_new ( FALSE, 5 );
+ gtk_container_add ( GTK_CONTAINER ( align ), hbox );
+
+ label = gtk_label_new ( COLON( _("Type de taux") ) );
+ gtk_misc_set_alignment ( GTK_MISC ( label ), 0, 0.5);
+ gtk_label_set_justify ( GTK_LABEL ( label ), GTK_JUSTIFY_LEFT );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 5 );
+ button_1 = gtk_radio_button_new_with_label ( NULL, _("Taux actuariel") );
+ gtk_widget_set_sensitive ( button_1, FALSE );
+
+ button_2 = gtk_radio_button_new_with_label_from_widget ( GTK_RADIO_BUTTON ( button_1 ),
+ _("Taux proportionnel") );
+ gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( button_2 ), TRUE );
+ g_object_set_data ( G_OBJECT ( parent ), "type_taux", button_2 );
+ gtk_widget_set_sensitive ( button_2, FALSE );
+
+ gtk_box_pack_start ( GTK_BOX ( hbox ), button_1, FALSE, FALSE, 5) ;
+ gtk_box_pack_start ( GTK_BOX ( hbox ), button_2, FALSE, FALSE, 5) ;
+ g_signal_connect ( button_1,
+ "released",
+ G_CALLBACK ( bet_finance_type_taux_changed ),
+ parent );
+ g_signal_connect ( button_2,
+ "released",
+ G_CALLBACK ( bet_finance_type_taux_changed ),
+ parent );
+
+ gtk_widget_show_all ( align );
+
+ return vbox;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+GtkWidget *bet_finance_create_data_tree_view ( GtkWidget *container )
+{
+ GtkWidget *scrolled_window;
+ GtkWidget *tree_view;
+ GtkTreeStore *tree_model;
+ GtkCellRenderer *cell;
+ GtkTreeViewColumn *column;
+ gchar *title;
+
+ tree_view = gtk_tree_view_new ( );
+ gtk_tree_view_set_rules_hint ( GTK_TREE_VIEW ( tree_view ), TRUE );
+
+ /* Create the tree store */
+ tree_model = gtk_tree_store_new ( BET_FINANCE_NBRE_COLUMNS,
+ G_TYPE_STRING, /* BET_FINANCE_DURATION_COLUMN */
+ G_TYPE_INT, /* BET_FINANCE_NBRE_ECHEANCE_COLUMN */
+ G_TYPE_INT, /* BET_FINANCE_DEVISE_COLUMN */
+ G_TYPE_STRING, /* BET_FINANCE_CAPITAL_COLUMN */
+ G_TYPE_DOUBLE, /* BET_FINANCE_CAPITAL_DOUBLE */
+ G_TYPE_STRING, /* BET_FINANCE_TAUX_COLUMN */
+ G_TYPE_DOUBLE, /* BET_FINANCE_TAUX_DOUBLE */
+ G_TYPE_STRING, /* BET_FINANCE_HORS_FRAIS_COLUMN */
+ G_TYPE_DOUBLE, /* BET_FINANCE_HORS_FRAIS_DOUBLE */
+ G_TYPE_STRING, /* BET_FINANCE_FRAIS_COLUMN */
+ G_TYPE_DOUBLE, /* BET_FINANCE_FRAIS_DOUBLE */
+ G_TYPE_STRING, /* BET_FINANCE_ECHEANCE_COLUMN */
+ G_TYPE_DOUBLE, /* BET_FINANCE_ECHEANCE_DOUBLE */
+ GDK_TYPE_COLOR ); /* BET_FINANCE_BACKGROUND_COLOR */
+ gtk_tree_view_set_model ( GTK_TREE_VIEW ( tree_view ), GTK_TREE_MODEL ( tree_model ) );
+ g_object_unref ( G_OBJECT ( tree_model ) );
+
+ /* create columns */
+ /* durée */
+ title = g_strdup ( _("Durée") );
+ cell = gtk_cell_renderer_text_new ( );
+ g_object_set ( G_OBJECT ( cell ), "xalign", 0.5, NULL );
+
+ column = gtk_tree_view_column_new_with_attributes ( title,
+ cell,
+ "text", BET_FINANCE_DURATION_COLUMN,
+ "cell-background-gdk", BET_FINANCE_BACKGROUND_COLOR,
+ NULL);
+ gtk_tree_view_append_column ( GTK_TREE_VIEW ( tree_view ),
+ GTK_TREE_VIEW_COLUMN ( column ) );
+ gtk_tree_view_column_set_expand ( GTK_TREE_VIEW_COLUMN ( column ), TRUE );
+ gtk_tree_view_column_set_resizable ( column, TRUE );
+ gtk_tree_view_column_set_alignment ( column, 0.5 );
+ g_free ( title );
+
+ /* Nombre d'échéances */
+ title = g_strdup ( _("Nombre\nd'échéances") );
+ cell = gtk_cell_renderer_text_new ( );
+ g_object_set ( G_OBJECT ( cell ), "xalign", 0.5, NULL );
+
+ column = gtk_tree_view_column_new_with_attributes ( title,
+ cell,
+ "text", BET_FINANCE_NBRE_ECHEANCE_COLUMN,
+ "cell-background-gdk", BET_FINANCE_BACKGROUND_COLOR,
+ NULL);
+ gtk_tree_view_append_column ( GTK_TREE_VIEW ( tree_view ),
+ GTK_TREE_VIEW_COLUMN ( column ) );
+ gtk_tree_view_column_set_expand ( GTK_TREE_VIEW_COLUMN ( column ), TRUE );
+ gtk_tree_view_column_set_resizable ( column, TRUE );
+ gtk_tree_view_column_set_alignment ( column, 0.5 );
+ g_free ( title );
+
+ /* Capital emprunté */
+ title = g_strdup ( _("Capital\nemprunté") );
+ cell = gtk_cell_renderer_text_new ( );
+ g_object_set ( G_OBJECT ( cell ), "xalign", 0.5, NULL );
+
+ column = gtk_tree_view_column_new_with_attributes ( title,
+ cell,
+ "text", BET_FINANCE_CAPITAL_COLUMN,
+ "cell-background-gdk", BET_FINANCE_BACKGROUND_COLOR,
+ NULL);
+ gtk_tree_view_append_column ( GTK_TREE_VIEW ( tree_view ),
+ GTK_TREE_VIEW_COLUMN ( column ) );
+ gtk_tree_view_column_set_expand ( GTK_TREE_VIEW_COLUMN ( column ), TRUE );
+ gtk_tree_view_column_set_resizable ( column, TRUE );
+ gtk_tree_view_column_set_alignment ( column, 0.5 );
+ g_free ( title );
+
+ /* Taux d'emprunt */
+ title = g_strdup ( _("Taux\nd'emprunt") );
+ cell = gtk_cell_renderer_text_new ( );
+ g_object_set ( G_OBJECT ( cell ), "xalign", 0.5, NULL );
+
+ column = gtk_tree_view_column_new_with_attributes ( title,
+ cell,
+ "text", BET_FINANCE_TAUX_COLUMN,
+ "cell-background-gdk", BET_FINANCE_BACKGROUND_COLOR,
+ NULL);
+ gtk_tree_view_append_column ( GTK_TREE_VIEW ( tree_view ),
+ GTK_TREE_VIEW_COLUMN ( column ) );
+ gtk_tree_view_column_set_expand ( GTK_TREE_VIEW_COLUMN ( column ), TRUE );
+ gtk_tree_view_column_set_resizable ( column, TRUE );
+ gtk_tree_view_column_set_alignment ( column, 0.5 );
+ g_free ( title );
+
+ /* Echéance hors frais*/
+ title = g_strdup ( _("Echéance\nhors frais") );
+ cell = gtk_cell_renderer_text_new ( );
+ g_object_set ( G_OBJECT ( cell ), "xalign", 0.5, NULL );
+
+ column = gtk_tree_view_column_new_with_attributes ( title,
+ cell,
+ "text", BET_FINANCE_HORS_FRAIS_COLUMN,
+ "cell-background-gdk", BET_FINANCE_BACKGROUND_COLOR,
+ NULL);
+ gtk_tree_view_append_column ( GTK_TREE_VIEW ( tree_view ),
+ GTK_TREE_VIEW_COLUMN ( column ) );
+ gtk_tree_view_column_set_expand ( GTK_TREE_VIEW_COLUMN ( column ), TRUE );
+ gtk_tree_view_column_set_resizable ( column, TRUE );
+ gtk_tree_view_column_set_alignment ( column, 0.5 );
+ g_free ( title );
+
+ /* Frais */
+ title = g_strdup ( _("Frais") );
+ cell = gtk_cell_renderer_text_new ( );
+ g_object_set ( G_OBJECT ( cell ), "xalign", 0.5, NULL );
+
+ column = gtk_tree_view_column_new_with_attributes ( title,
+ cell,
+ "text", BET_FINANCE_FRAIS_COLUMN,
+ "cell-background-gdk", BET_FINANCE_BACKGROUND_COLOR,
+ NULL);
+ gtk_tree_view_append_column ( GTK_TREE_VIEW ( tree_view ),
+ GTK_TREE_VIEW_COLUMN ( column ) );
+ gtk_tree_view_column_set_expand ( GTK_TREE_VIEW_COLUMN ( column ), TRUE );
+ gtk_tree_view_column_set_resizable ( column, TRUE );
+ gtk_tree_view_column_set_alignment ( column, 0.5 );
+ g_free ( title );
+
+ /* Montant de l'échéance */
+ title = g_strdup ( _("Echéance\ntotale") );
+ cell = gtk_cell_renderer_text_new ( );
+ g_object_set ( G_OBJECT ( cell ), "xalign", 0.5, NULL );
+
+ column = gtk_tree_view_column_new_with_attributes ( title,
+ cell,
+ "text", BET_FINANCE_ECHEANCE_COLUMN,
+ "cell-background-gdk", BET_FINANCE_BACKGROUND_COLOR,
+ NULL);
+ gtk_tree_view_append_column ( GTK_TREE_VIEW ( tree_view ),
+ GTK_TREE_VIEW_COLUMN ( column ) );
+ gtk_tree_view_column_set_expand ( GTK_TREE_VIEW_COLUMN ( column ), TRUE );
+ gtk_tree_view_column_set_resizable ( column, TRUE );
+ gtk_tree_view_column_set_alignment ( column, 0.5 );
+ g_free ( title );
+
+ g_signal_connect ( G_OBJECT ( tree_view ),
+ "button-press-event",
+ G_CALLBACK ( bet_finance_data_list_button_press ),
+ container );
+
+ scrolled_window = gtk_scrolled_window_new ( NULL, NULL );
+ gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW ( scrolled_window ),
+ GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC );
+ gtk_widget_set_size_request ( scrolled_window, -1, 250 );
+ gtk_container_add ( GTK_CONTAINER ( scrolled_window ), tree_view );
+ gtk_box_pack_start ( GTK_BOX ( container ), scrolled_window, TRUE, TRUE, 15 );
+
+ gtk_widget_show_all ( scrolled_window );
+
+ return tree_view;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+void bet_finance_calculer_clicked ( GtkButton *button, GtkWidget *widget )
+{
+ GtkWidget *combobox;
+ GtkWidget *bouton;
+ GtkWidget *tree_view;
+ GtkTreeModel *model;
+ gdouble taux_frais;
+ gint duree_min, duree_max;
+ gint type_taux;
+ gint index = 0;
+ struct_echeance *s_echeance;
+
+ tree_view = g_object_get_data ( G_OBJECT ( widget ), "tree_view" );
+ if ( !GTK_IS_TREE_VIEW ( tree_view ) )
+ return;
+
+ s_echeance = g_malloc0 ( sizeof ( struct_echeance ) );
+
+ /* devise */
+ combobox = g_object_get_data ( G_OBJECT ( widget ), "devise" );
+ if ( combobox )
+ s_echeance -> devise = gsb_currency_get_currency_from_combobox ( combobox );
+
+ /* capital */
+ s_echeance -> capital = bet_finance_get_number_from_string ( widget, "capital" );
+
+ if ( s_echeance -> capital == 0 )
+ {
+ gchar *tmp_str;
+
+ tmp_str = g_strdup ( _(" Vous devez au moins entrer une valeur pour le capital") );
+ dialogue_error ( tmp_str );
+ g_free ( tmp_str );
+ return;
+ }
+
+ /* taux */
+ s_echeance -> taux = bet_finance_get_number_from_string ( widget, "taux" );
+
+ /* durée */
+ combobox = g_object_get_data ( G_OBJECT ( widget ), "duree" );
+ if ( combobox )
+ index = gsb_combo_box_get_index ( combobox );
+
+ switch ( index )
+ {
+ case 0:
+ duree_min = 1;
+ duree_max = 15;
+ break;
+ case 1:
+ duree_min = 15;
+ duree_max = 30;
+ break;
+ default :
+ duree_min = 1;
+ duree_max = 15;
+ break;
+ }
+
+ /* frais */
+ taux_frais = bet_finance_get_number_from_string ( widget, "frais" );
+
+ /* type de taux */
+ bouton = g_object_get_data ( G_OBJECT ( widget ), "type_taux" );
+ type_taux = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( bouton ) );
+
+ /* taux periodique */
+ s_echeance -> taux_periodique = bet_data_finance_get_taux_periodique (
+ s_echeance -> taux,
+ type_taux );
+
+ /* réinitialisation du model */
+ model = gtk_tree_view_get_model ( GTK_TREE_VIEW ( tree_view ) );
+ gtk_tree_store_clear ( GTK_TREE_STORE ( model ) );
+
+ for ( index = duree_min; index <= duree_max; index++ )
+ {
+ s_echeance -> duree = index;
+ s_echeance -> nbre_echeances = index * 12;
+ s_echeance -> frais = bet_data_finance_get_frais_par_echeance ( s_echeance -> capital,
+ taux_frais,
+ s_echeance -> nbre_echeances );
+
+ s_echeance -> echeance = bet_data_finance_get_echeance ( s_echeance -> capital,
+ s_echeance -> taux_periodique,
+ s_echeance -> nbre_echeances );
+
+ bet_finance_fill_data_ligne ( model, s_echeance );
+
+ s_echeance -> duree = 0;
+ s_echeance -> nbre_echeances = 0;
+ s_echeance -> echeance = 0;
+ }
+
+ bet_finance_list_set_background_color ( tree_view, BET_FINANCE_BACKGROUND_COLOR );
+
+ g_free ( s_echeance );
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+gdouble bet_finance_get_number_from_string ( GtkWidget *parent, const gchar *name )
+{
+ GtkWidget *widget;
+ gdouble number = 0;
+
+ widget = g_object_get_data ( G_OBJECT ( parent ), name );
+ if ( GTK_IS_ENTRY ( widget ) )
+ {
+ GtkWidget *combobox;
+ const gchar *entry;
+ gchar *tmp_str;
+ gint devise = 0;
+
+ entry = gtk_entry_get_text ( GTK_ENTRY ( widget ) );
+ if ( entry && strlen ( entry ) > 0 )
+ {
+ number = my_strtod ( entry, NULL );
+ number = bet_data_finance_troncate_number ( number, 2 );
+
+ combobox = g_object_get_data ( G_OBJECT ( parent ), "devise" );
+ if ( combobox )
+ devise = gsb_currency_get_currency_from_combobox ( combobox );
+ tmp_str = gsb_real_get_string_with_currency (
+ gsb_real_double_to_real ( number ), devise, FALSE );
+ gtk_entry_set_text ( GTK_ENTRY ( widget ), tmp_str );
+ g_free ( tmp_str );
+ }
+ }
+ else if ( GTK_IS_SPIN_BUTTON ( widget ) )
+ number = gtk_spin_button_get_value ( GTK_SPIN_BUTTON ( widget ) );
+
+ return number;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+void bet_finance_fill_data_ligne ( GtkTreeModel *model, struct_echeance *s_echeance )
+{
+ GtkTreeIter iter;
+ gchar *str_duree;
+ gchar *str_capital;
+ gchar *str_taux;
+ gchar *str_frais;
+ gchar *str_echeance;
+ gchar *str_totale;
+ gchar buffer[256];
+ gdouble echeance_totale;
+ gint nbre_char;
+
+ if ( s_echeance -> duree == 1 )
+ str_duree = g_strconcat ( utils_str_itoa ( s_echeance -> duree ), " an", NULL );
+ else
+ str_duree = g_strconcat ( utils_str_itoa ( s_echeance -> duree ), " ans", NULL );
+
+ str_capital = gsb_real_get_string_with_currency (
+ gsb_real_double_to_real ( s_echeance -> capital ),
+ s_echeance -> devise, TRUE );
+
+ nbre_char = g_sprintf ( buffer, "%.2f", s_echeance -> taux );
+ str_taux = g_strndup ( buffer, nbre_char + 1 );
+
+ str_frais = gsb_real_get_string_with_currency (
+ gsb_real_double_to_real ( s_echeance -> frais ),
+ s_echeance -> devise, TRUE );
+
+ str_echeance = gsb_real_get_string_with_currency (
+ gsb_real_double_to_real ( s_echeance -> echeance ),
+ s_echeance -> devise, TRUE );
+
+ echeance_totale = s_echeance -> echeance + s_echeance -> frais;
+ str_totale = gsb_real_get_string_with_currency (
+ gsb_real_double_to_real ( echeance_totale ),
+ s_echeance -> devise, TRUE );
+
+
+ gtk_tree_store_append ( GTK_TREE_STORE ( model ), &iter, NULL );
+ gtk_tree_store_set ( GTK_TREE_STORE ( model ),
+ &iter,
+ BET_FINANCE_DURATION_COLUMN, str_duree,
+ BET_FINANCE_NBRE_ECHEANCE_COLUMN, s_echeance -> nbre_echeances,
+ BET_FINANCE_DEVISE_COLUMN, s_echeance -> devise,
+ BET_FINANCE_CAPITAL_COLUMN, str_capital,
+ BET_FINANCE_CAPITAL_DOUBLE, s_echeance -> capital,
+ BET_FINANCE_TAUX_COLUMN, str_taux,
+ BET_FINANCE_TAUX_PERIODIQUE_DOUBLE, s_echeance -> taux_periodique,
+ BET_FINANCE_HORS_FRAIS_COLUMN, str_echeance,
+ BET_FINANCE_HORS_FRAIS_DOUBLE, s_echeance -> echeance,
+ BET_FINANCE_FRAIS_COLUMN, str_frais,
+ BET_FINANCE_FRAIS_DOUBLE, s_echeance -> frais,
+ BET_FINANCE_ECHEANCE_COLUMN, str_totale,
+ BET_FINANCE_ECHEANCE_DOUBLE, echeance_totale,
+ - 1 );
+
+ g_free ( str_duree );
+ g_free ( str_capital );
+ g_free ( str_taux );
+ g_free ( str_frais );
+ g_free ( str_echeance );
+ g_free ( str_totale );
+}
+
+
+/**
+ * set the background colors of the list
+ *
+ * \param tree_view
+ *
+ * \return FALSE
+ * */
+gboolean bet_finance_list_set_background_color ( GtkWidget *tree_view, gint color_column )
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ if ( !tree_view )
+ return FALSE;
+
+ model = gtk_tree_view_get_model ( GTK_TREE_VIEW ( tree_view ));
+
+ if ( gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( model ), &iter ) )
+ {
+ gint current_color = 0;
+
+ do
+ {
+ gtk_tree_store_set ( GTK_TREE_STORE ( model ),
+ &iter,
+ color_column, &couleur_fond[current_color],
+ -1 );
+
+ current_color = !current_color;
+ }
+ while ( gtk_tree_model_iter_next ( GTK_TREE_MODEL ( model ), &iter ) );
+ }
+
+ return FALSE;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+gboolean bet_finance_duration_button_changed ( GtkWidget *combobox, GtkWidget *widget )
+{
+ bet_finance_calculer_clicked ( NULL, widget );
+
+ return FALSE;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+void bet_finance_type_taux_changed ( GtkWidget *togglebutton, GtkWidget *widget )
+{
+ bet_finance_calculer_clicked ( NULL, widget );
+}
+
+
+/**
+ * called when we press a button on the list
+ *
+ * \param tree_view
+ * \param ev
+ *
+ * \return FALSE
+ * */
+gboolean bet_finance_data_list_button_press ( GtkWidget *tree_view,
+ GdkEventButton *ev,
+ GtkWidget *page )
+{
+ /* show the popup */
+ if ( ev -> button == RIGHT_BUTTON )
+ {
+ gint page_num;
+
+ page_num = gtk_notebook_page_num ( GTK_NOTEBOOK ( finance_notebook ), page );
+ bet_finance_data_list_context_menu ( tree_view, page_num );
+ }
+
+ return FALSE;
+}
+
+
+/**
+ * Pop up a menu with several actions to apply to data_list.
+ *
+ * \param tree_view
+ *
+ */
+void bet_finance_data_list_context_menu ( GtkWidget *tree_view, gint page_num )
+{
+ GtkWidget *menu, *menu_item;
+ GtkWidget *image;
+ GtkTreeModel *model;
+ GtkTreeSelection *tree_selection;
+ GtkTreeIter iter;
+ gchar *tmp_str;
+
+ tree_selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW ( tree_view ) );
+
+ if ( !gtk_tree_selection_get_selected ( GTK_TREE_SELECTION ( tree_selection ),
+ &model, &iter ) )
+ return;
+
+ menu = gtk_menu_new ();
+
+ tmp_str = g_build_filename ( PIXMAPS_DIR, "ac_liability_16.png", NULL);
+ image = gtk_image_new_from_file ( tmp_str );
+ gtk_image_set_pixel_size ( GTK_IMAGE ( image ), GTK_ICON_SIZE_MENU );
+ g_free ( tmp_str );
+
+ if ( page_num == 0 )
+ {
+ menu_item = gtk_image_menu_item_new_with_label ( _("Afficher le tableau d'amortissement") );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( bet_finance_fill_amortization_array ),
+ tree_selection );
+ }
+ else
+ {
+ menu_item = gtk_image_menu_item_new_with_label ( _("Afficher le simulateur de crédits") );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( bet_finance_switch_simulator_page ),
+ NULL );
+ }
+
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ), image );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ /* Finish all. */
+ gtk_widget_show_all ( menu );
+ gtk_menu_popup ( GTK_MENU( menu ), NULL, NULL, NULL, NULL, 3,
+ gtk_get_current_event_time ( ) );
+}
+
+
+/**
+ * Create the array page
+ *
+ *
+ *
+ * */
+GtkWidget *bet_finance_create_amortization_page ( void )
+{
+ GtkWidget *page;
+ GtkWidget *hbox;
+ GtkWidget *align;
+ GtkWidget *label;
+ GtkWidget *tree_view;
+
+ devel_debug (NULL);
+
+ page = gtk_vbox_new ( FALSE, 5 );
+
+ /* titre de la page */
+ align = gtk_alignment_new (0.5, 0.0, 0.0, 0.0);
+ gtk_box_pack_start ( GTK_BOX ( page ), align, FALSE, FALSE, 5);
+
+ label = gtk_label_new ( _("Tableau d'ammortissement") );
+ gtk_container_add ( GTK_CONTAINER ( align ), label );
+
+ /* Choix des données sources */
+ align = gtk_alignment_new (0.5, 0.0, 0.0, 0.0);
+ gtk_box_pack_start ( GTK_BOX ( page ), align, FALSE, FALSE, 5);
+
+ hbox = gtk_hbox_new ( FALSE, 5 );
+ gtk_container_add ( GTK_CONTAINER ( align ), hbox );
+
+ /* capital */
+ label = gtk_label_new ( COLON( _("Montant emprunté") ) );
+ gtk_misc_set_alignment ( GTK_MISC ( label ), 0, 0.5);
+ gtk_label_set_justify ( GTK_LABEL ( label ), GTK_JUSTIFY_LEFT );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 5 );
+
+ label = gtk_label_new ( NULL );
+ g_object_set_data ( G_OBJECT ( page ), "capital", label );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 5 );
+
+ /* taux */
+ label = gtk_label_new ( COLON( _("Taux d'intérêt annuel") ) );
+ gtk_misc_set_alignment ( GTK_MISC ( label ), 0, 0.5);
+ gtk_label_set_justify ( GTK_LABEL ( label ), GTK_JUSTIFY_LEFT );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 5 );
+
+ label = gtk_label_new ( NULL );
+ g_object_set_data ( G_OBJECT ( page ), "taux", label );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 0 );
+
+ label = gtk_label_new ( COLON( _("%") ) );
+ gtk_label_set_justify ( GTK_LABEL ( label ), GTK_JUSTIFY_LEFT );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 5 );
+
+ /* durée */
+ label = gtk_label_new ( COLON( _("Durée") ) );
+ gtk_misc_set_alignment ( GTK_MISC ( label ), 0, 0.5);
+ gtk_label_set_justify ( GTK_LABEL ( label ), GTK_JUSTIFY_LEFT );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 5 );
+
+ label = gtk_label_new ( NULL );
+ g_object_set_data ( G_OBJECT ( page ), "duree", label );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 0 );
+
+ /* création de la liste des données */
+ tree_view = bet_finance_create_amortization_tree_view ( page );
+ g_object_set_data ( G_OBJECT ( page ), "tree_view", tree_view );
+
+ gtk_widget_show_all ( page );
+
+ return page;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+GtkWidget *bet_finance_create_amortization_tree_view ( GtkWidget *container )
+{
+ GtkWidget *scrolled_window;
+ GtkWidget *tree_view;
+ GtkTreeStore *tree_model;
+ GtkCellRenderer *cell;
+ GtkTreeViewColumn *column;
+ gchar *title;
+
+ devel_debug ( NULL);
+ tree_view = gtk_tree_view_new ( );
+ gtk_tree_view_set_rules_hint ( GTK_TREE_VIEW ( tree_view ), TRUE );
+
+ /* Create the tree store */
+ tree_model = gtk_tree_store_new ( BET_AMORTIZATION_NBRE_COLUMNS,
+ G_TYPE_INT, /* BET_AMORTIZATION_NUMBER_COLUMN */
+ G_TYPE_STRING, /* BET_AMORTIZATION_CAPITAL_DU_COLUMN, */
+ G_TYPE_STRING, /* BET_AMORTIZATION_INTERETS_COLUMN */
+ G_TYPE_STRING, /* BET_AMORTIZATION_PRINCIPAL_COLUMN */
+ G_TYPE_STRING, /* BET_AMORTIZATION_FRAIS_COLUMN */
+ G_TYPE_STRING, /* BET_AMORTIZATION_ECHEANCE_COLUMN */
+ GDK_TYPE_COLOR ); /* BET_AMORTIZATION_BACKGROUND_COLOR */
+ gtk_tree_view_set_model ( GTK_TREE_VIEW ( tree_view ), GTK_TREE_MODEL ( tree_model ) );
+ g_object_unref ( G_OBJECT ( tree_model ) );
+
+ /* create columns */
+ /* numéro de l'échéance */
+ title = g_strdup ( _("Numéro") );
+ cell = gtk_cell_renderer_text_new ( );
+ g_object_set ( G_OBJECT ( cell ), "xalign", 0.5, NULL );
+
+ column = gtk_tree_view_column_new_with_attributes ( title,
+ cell,
+ "text", BET_AMORTIZATION_NUMBER_COLUMN,
+ "cell-background-gdk", BET_AMORTIZATION_BACKGROUND_COLOR,
+ NULL);
+ gtk_tree_view_append_column ( GTK_TREE_VIEW ( tree_view ),
+ GTK_TREE_VIEW_COLUMN ( column ) );
+ gtk_tree_view_column_set_expand ( GTK_TREE_VIEW_COLUMN ( column ), TRUE );
+ gtk_tree_view_column_set_resizable ( column, TRUE );
+ gtk_tree_view_column_set_alignment ( column, 0.5 );
+ g_free ( title );
+
+ /* Capital restant dû */
+ title = g_strdup ( _("Capital restant dû") );
+ cell = gtk_cell_renderer_text_new ( );
+ g_object_set ( G_OBJECT ( cell ), "xalign", 0.5, NULL );
+
+ column = gtk_tree_view_column_new_with_attributes ( title,
+ cell,
+ "text", BET_AMORTIZATION_CAPITAL_DU_COLUMN,
+ "cell-background-gdk", BET_AMORTIZATION_BACKGROUND_COLOR,
+ NULL);
+ gtk_tree_view_append_column ( GTK_TREE_VIEW ( tree_view ),
+ GTK_TREE_VIEW_COLUMN ( column ) );
+ gtk_tree_view_column_set_expand ( GTK_TREE_VIEW_COLUMN ( column ), TRUE );
+ gtk_tree_view_column_set_resizable ( column, TRUE );
+ gtk_tree_view_column_set_alignment ( column, 0.5 );
+ g_free ( title );
+
+ /* Capital emprunté */
+ title = g_strdup ( _("Intérêts") );
+ cell = gtk_cell_renderer_text_new ( );
+ g_object_set ( G_OBJECT ( cell ), "xalign", 0.5, NULL );
+
+ column = gtk_tree_view_column_new_with_attributes ( title,
+ cell,
+ "text", BET_AMORTIZATION_INTERETS_COLUMN,
+ "cell-background-gdk", BET_AMORTIZATION_BACKGROUND_COLOR,
+ NULL);
+ gtk_tree_view_append_column ( GTK_TREE_VIEW ( tree_view ),
+ GTK_TREE_VIEW_COLUMN ( column ) );
+ gtk_tree_view_column_set_expand ( GTK_TREE_VIEW_COLUMN ( column ), TRUE );
+ gtk_tree_view_column_set_resizable ( column, TRUE );
+ gtk_tree_view_column_set_alignment ( column, 0.5 );
+ g_free ( title );
+
+ /* Capital remboursé */
+ title = g_strdup ( _("Principal") );
+ cell = gtk_cell_renderer_text_new ( );
+ g_object_set ( G_OBJECT ( cell ), "xalign", 0.5, NULL );
+
+ column = gtk_tree_view_column_new_with_attributes ( title,
+ cell,
+ "text", BET_AMORTIZATION_PRINCIPAL_COLUMN,
+ "cell-background-gdk", BET_AMORTIZATION_BACKGROUND_COLOR,
+ NULL);
+ gtk_tree_view_append_column ( GTK_TREE_VIEW ( tree_view ),
+ GTK_TREE_VIEW_COLUMN ( column ) );
+ gtk_tree_view_column_set_expand ( GTK_TREE_VIEW_COLUMN ( column ), TRUE );
+ gtk_tree_view_column_set_resizable ( column, TRUE );
+ gtk_tree_view_column_set_alignment ( column, 0.5 );
+ g_free ( title );
+
+ /* Frais*/
+ title = g_strdup ( _("Frais") );
+ cell = gtk_cell_renderer_text_new ( );
+ g_object_set ( G_OBJECT ( cell ), "xalign", 0.5, NULL );
+
+ column = gtk_tree_view_column_new_with_attributes ( title,
+ cell,
+ "text", BET_AMORTIZATION_FRAIS_COLUMN,
+ "cell-background-gdk", BET_AMORTIZATION_BACKGROUND_COLOR,
+ NULL);
+ gtk_tree_view_append_column ( GTK_TREE_VIEW ( tree_view ),
+ GTK_TREE_VIEW_COLUMN ( column ) );
+ gtk_tree_view_column_set_expand ( GTK_TREE_VIEW_COLUMN ( column ), TRUE );
+ gtk_tree_view_column_set_resizable ( column, TRUE );
+ gtk_tree_view_column_set_alignment ( column, 0.5 );
+ g_free ( title );
+
+ /* Montant de l'échéance */
+ title = g_strdup ( _("Echéance") );
+ cell = gtk_cell_renderer_text_new ( );
+ g_object_set ( G_OBJECT ( cell ), "xalign", 0.5, NULL );
+
+ column = gtk_tree_view_column_new_with_attributes ( title,
+ cell,
+ "text", BET_AMORTIZATION_ECHEANCE_COLUMN,
+ "cell-background-gdk", BET_AMORTIZATION_BACKGROUND_COLOR,
+ NULL);
+ gtk_tree_view_append_column ( GTK_TREE_VIEW ( tree_view ),
+ GTK_TREE_VIEW_COLUMN ( column ) );
+ gtk_tree_view_column_set_expand ( GTK_TREE_VIEW_COLUMN ( column ), TRUE );
+ gtk_tree_view_column_set_resizable ( column, TRUE );
+ gtk_tree_view_column_set_alignment ( column, 0.5 );
+ g_free ( title );
+
+ g_signal_connect ( G_OBJECT ( tree_view ),
+ "button-press-event",
+ G_CALLBACK ( bet_finance_data_list_button_press ),
+ container );
+
+ /* create the scrolled window */
+ scrolled_window = gtk_scrolled_window_new ( NULL, NULL );
+ gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW ( scrolled_window ),
+ GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC );
+ gtk_widget_set_size_request ( scrolled_window, -1, 250 );
+ gtk_container_add ( GTK_CONTAINER ( scrolled_window ), tree_view );
+ gtk_box_pack_start ( GTK_BOX ( container ), scrolled_window, TRUE, TRUE, 15 );
+
+ gtk_widget_show_all ( scrolled_window );
+
+ return tree_view;
+}
+
+
+/**
+ * remplit le tableau d'amortissement
+ *
+ * /param menu item
+ * /param row selected
+ *
+ * */
+void bet_finance_fill_amortization_array ( GtkWidget *menu_item,
+ GtkTreeSelection *tree_selection )
+{
+ GtkWidget *page;
+ GtkWidget *label;
+ GtkWidget *tree_view;
+ GtkTreeModel *store;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gchar *str_duree;
+ gchar *str_capital;
+ gchar *str_taux;
+ gint index = 0;
+ gint nbre_echeances;
+ gdouble taux_periodique;
+ struct_amortissement *s_amortissement;
+
+ devel_debug ( NULL );
+ if ( !gtk_tree_selection_get_selected ( GTK_TREE_SELECTION ( tree_selection ),
+ &model, &iter ) )
+ return;
+
+ gtk_notebook_next_page ( GTK_NOTEBOOK ( finance_notebook ) );
+
+ /* initialise les données utiles */
+ s_amortissement = g_malloc0 ( sizeof ( struct_amortissement ) );
+ gtk_tree_model_get ( model,
+ &iter,
+ BET_FINANCE_DURATION_COLUMN, &str_duree,
+ BET_FINANCE_NBRE_ECHEANCE_COLUMN, &nbre_echeances,
+ BET_FINANCE_DEVISE_COLUMN, &s_amortissement -> devise,
+ BET_FINANCE_CAPITAL_COLUMN, &str_capital,
+ BET_FINANCE_CAPITAL_DOUBLE, &s_amortissement -> capital_du,
+ BET_FINANCE_TAUX_COLUMN, &str_taux,
+ BET_FINANCE_TAUX_PERIODIQUE_DOUBLE, &taux_periodique,
+ BET_FINANCE_FRAIS_DOUBLE, &s_amortissement -> frais,
+ BET_FINANCE_ECHEANCE_DOUBLE, &s_amortissement -> echeance,
+ -1 );
+
+ /* met à jour le titre du tableau d'amortissement */
+ page = gtk_notebook_get_nth_page ( GTK_NOTEBOOK ( finance_notebook ), 1 );
+ label = g_object_get_data ( G_OBJECT ( page ), "capital" );
+ gtk_label_set_label ( GTK_LABEL ( label ), str_capital );
+ label = g_object_get_data ( G_OBJECT ( page ), "taux" );
+ gtk_label_set_label ( GTK_LABEL ( label ), str_taux );
+ label = g_object_get_data ( G_OBJECT ( page ), "duree" );
+ gtk_label_set_label ( GTK_LABEL ( label ), str_duree );
+
+ g_free ( str_duree );
+ g_free ( str_capital );
+ g_free ( str_taux );
+
+ /* remplit le tableau d'amortissement */
+ tree_view = g_object_get_data ( G_OBJECT ( page ), "tree_view" );
+ store = gtk_tree_view_get_model ( GTK_TREE_VIEW ( tree_view ) );
+ gtk_tree_store_clear ( GTK_TREE_STORE ( store ) );
+
+ for ( index = 1; index <= nbre_echeances; index++ )
+ {
+ s_amortissement -> num_echeance = index;
+ s_amortissement -> interets = bet_data_finance_get_interets ( s_amortissement -> capital_du,
+ taux_periodique );
+
+ if ( index == nbre_echeances )
+ {
+ s_amortissement -> echeance = bet_data_finance_get_last_echeance (
+ s_amortissement -> capital_du,
+ s_amortissement -> interets,
+ s_amortissement -> frais );
+ s_amortissement -> principal = s_amortissement -> capital_du;
+ }
+ else
+ s_amortissement -> principal = bet_data_finance_get_principal (
+ s_amortissement -> echeance,
+ s_amortissement -> interets,
+ s_amortissement -> frais );
+
+ bet_finance_fill_amortization_ligne ( store, s_amortissement );
+ s_amortissement -> capital_du -= s_amortissement -> principal;
+ }
+
+ g_free ( s_amortissement );
+ bet_finance_list_set_background_color ( tree_view, BET_AMORTIZATION_BACKGROUND_COLOR );
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+void bet_finance_fill_amortization_ligne ( GtkTreeModel *model,
+ struct_amortissement *s_amortissement )
+{
+ GtkTreeIter iter;
+ gchar *str_capital_du = NULL;
+ gchar *str_interets = NULL;
+ gchar *str_principal = NULL;
+ gchar *str_frais = NULL;
+ gchar *str_echeance = NULL;
+
+ str_capital_du = gsb_real_get_string_with_currency (
+ gsb_real_double_to_real ( s_amortissement -> capital_du ),
+ s_amortissement -> devise, TRUE );
+
+ str_interets = gsb_real_get_string_with_currency (
+ gsb_real_double_to_real ( s_amortissement -> interets ),
+ s_amortissement -> devise, TRUE );
+
+ str_principal = gsb_real_get_string_with_currency (
+ gsb_real_double_to_real ( s_amortissement -> principal ),
+ s_amortissement -> devise, TRUE );
+
+ str_frais = gsb_real_get_string_with_currency (
+ gsb_real_double_to_real ( s_amortissement -> frais ),
+ s_amortissement -> devise, TRUE );
+
+ str_echeance = gsb_real_get_string_with_currency (
+ gsb_real_double_to_real ( s_amortissement -> echeance ),
+ s_amortissement -> devise, TRUE );
+
+ gtk_tree_store_append ( GTK_TREE_STORE ( model ), &iter, NULL );
+ gtk_tree_store_set ( GTK_TREE_STORE ( model ),
+ &iter,
+ BET_AMORTIZATION_NUMBER_COLUMN, s_amortissement -> num_echeance,
+ BET_AMORTIZATION_CAPITAL_DU_COLUMN, str_capital_du,
+ BET_AMORTIZATION_INTERETS_COLUMN, str_interets,
+ BET_AMORTIZATION_PRINCIPAL_COLUMN, str_principal,
+ BET_AMORTIZATION_FRAIS_COLUMN, str_frais,
+ BET_AMORTIZATION_ECHEANCE_COLUMN, str_echeance,
+ - 1 );
+
+ g_free ( str_capital_du );
+ g_free ( str_interets );
+ g_free ( str_principal );
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* End: */
diff --git a/src/bet_finance_ui.h b/src/bet_finance_ui.h
new file mode 100644
index 0000000..0ddaaf4
--- /dev/null
+++ b/src/bet_finance_ui.h
@@ -0,0 +1,17 @@
+#ifndef _BET_FINANCE_UI_H
+#define _BET_FINANCE_UI_H
+
+#include <gtk/gtk.h>
+
+/* START_INCLUDE_H */
+/* END_INCLUDE_H */
+
+
+
+/* START_DECLARATION */
+GtkWidget *bet_finance_create_page ( void );
+void bet_finance_switch_simulator_page ( void );
+/* END_DECLARATION */
+
+
+#endif /*_BET_FINANCE_UI_H*/
diff --git a/src/bet_future.c b/src/bet_future.c
index 5652747..a71969f 100644
--- a/src/bet_future.c
+++ b/src/bet_future.c
@@ -31,6 +31,7 @@
#include "bet_data.h"
#include "bet_tab.h"
#include "dialog.h"
+#include "fenetre_principale.h"
#include "utils_dates.h"
#include "gsb_calendar_entry.h"
#include "gsb_combo_box.h"
diff --git a/src/bet_hist.c b/src/bet_hist.c
index e21a31d..6cc6b0e 100644
--- a/src/bet_hist.c
+++ b/src/bet_hist.c
@@ -31,6 +31,7 @@
#include "bet_tab.h"
#include "bet_config.h"
#include "bet_data.h"
+#include "fenetre_principale.h"
#include "utils_dates.h"
#include "gsb_data_account.h"
#include "gsb_data_fyear.h"
@@ -966,7 +967,7 @@ gboolean bet_historical_fyear_create_combobox_store ( void )
/* the fyear list store, contains 3 columns :
* FYEAR_COL_NAME : the name of the fyear
* FYEAR_COL_NUMBER : the number of the fyear
- * FYEAR_COL_VIEW : it tha fyear should be showed */
+ * FYEAR_COL_VIEW : it the fyear should be showed */
titre = g_strdup ( _("12 months rolling") );
bet_fyear_model = GTK_TREE_MODEL ( gtk_list_store_new ( 3,
diff --git a/src/fenetre_principale.c b/src/fenetre_principale.c
index 70d5d6e..47afbd4 100644
--- a/src/fenetre_principale.c
+++ b/src/fenetre_principale.c
@@ -27,6 +27,7 @@
#include "fenetre_principale.h"
#include "bet_tab.h"
#include "bet_data.h"
+#include "bet_finance_ui.h"
#include "bet_hist.h"
#include "navigation.h"
#include "gsb_transactions_list.h"
@@ -261,9 +262,15 @@ gboolean gsb_gui_fill_main_notebook ( GtkWidget *notebook )
/* append the payee page */
gtk_notebook_append_page ( GTK_NOTEBOOK ( notebook ),
- onglet_tiers(),
+ onglet_tiers (),
gtk_label_new (SPACIFY(_("Payee"))) );
+
+ /* append the financial page */
+ gtk_notebook_append_page ( GTK_NOTEBOOK ( notebook ),
+ bet_finance_create_page (),
+ gtk_label_new (SPACIFY(_("Credits simulator"))) );
+
/* append the categories page */
gtk_notebook_append_page ( GTK_NOTEBOOK ( notebook ),
onglet_categories (),
diff --git a/src/fenetre_principale.h b/src/fenetre_principale.h
index b1ce5fc..38963dd 100644
--- a/src/fenetre_principale.h
+++ b/src/fenetre_principale.h
@@ -6,6 +6,7 @@ typedef enum GSB_GENERAL_NOTEBOOK_PAGES {
GSB_ACCOUNT_PAGE,
GSB_SCHEDULER_PAGE,
GSB_PAYEES_PAGE,
+ GSB_GENERAL_FINANCIAL_PAGE,
GSB_CATEGORIES_PAGE,
GSB_BUDGETARY_LINES_PAGE,
GSB_REPORTS_PAGE,
diff --git a/src/gsb_assistant.c b/src/gsb_assistant.c
index 322fe4f..b1c7fa4 100644
--- a/src/gsb_assistant.c
+++ b/src/gsb_assistant.c
@@ -107,7 +107,7 @@ GtkWidget * gsb_assistant_new ( const gchar * title, const gchar * explanation,
gtk_box_pack_start ( GTK_BOX(hbox), label, TRUE, TRUE, 0 );
if (!image_filename)
- image_filename = "grisbi.png";
+ image_filename = "grisbi-logo.png";
tmpstr = g_build_filename ( PIXMAPS_DIR, image_filename, NULL);
image = gtk_image_new_from_file ( tmpstr );
diff --git a/src/gsb_assistant_file.c b/src/gsb_assistant_file.c
index a21aad4..ff25806 100644
--- a/src/gsb_assistant_file.c
+++ b/src/gsb_assistant_file.c
@@ -147,7 +147,7 @@ GtkResponseType gsb_assistant_file_run ( gboolean first_opening,
}
assistant = gsb_assistant_new (text_1, text_2,
- "grisbi.png", NULL);
+ "grisbi-logo.png", NULL);
gsb_assistant_add_page ( assistant,
gsb_assistant_file_page_2 (assistant),
diff --git a/src/gsb_assistant_first.c b/src/gsb_assistant_first.c
index 330f25d..bc5e323 100644
--- a/src/gsb_assistant_first.c
+++ b/src/gsb_assistant_first.c
@@ -84,7 +84,7 @@ GtkResponseType gsb_assistant_first_run ( void )
"You can change any option later in the configuration window, "
"where many other options are available.\n\n"
"Thanks for using Grisbi, enjoy!" ),
- "grisbi.png",
+ "grisbi-logo.png",
NULL );
gsb_assistant_add_page ( assistant,
gsb_assistant_first_page_2 (assistant),
@@ -149,7 +149,7 @@ GtkResponseType gsb_assistant_first_come_to_0_6 ( void )
"If you want to make backups of your Grisbi file in case you want to revert "
"to old version of Grisbi, we would advise you to do that right now.\n\n"
"You can find out other improvements on http://www.grisbi.org/."),
- "grisbi.png",
+ "grisbi-logo.png",
NULL );
gsb_assistant_add_page ( assistant,
gsb_assistant_first_page_2 (assistant),
diff --git a/src/gsb_data_account.c b/src/gsb_data_account.c
index 60409cb..2ea80c0 100644
--- a/src/gsb_data_account.c
+++ b/src/gsb_data_account.c
@@ -62,19 +62,22 @@ typedef struct
kind_account account_kind;
gchar *account_name;
gint currency;
- gchar *name_icon; /* path for not standard icon ajout pbiava 31/12/2008 */
gint closed_account; /**< if 1 => closed */
gchar *comment;
gchar *holder_name;
gchar *holder_address;
+ /** @name account_icon */
+ gchar *name_icon; /* path for not standard icon */
+ GdkPixbuf *pixbuf; /* pixbuf for the account */
+
/** @name method of payment */
gint default_debit;
gint default_credit;
/** @name showed list stuff */
- gint show_r; /**< 1 : reconciled transactions are showed */
- gint nb_rows_by_transaction; /**< 1, 2, 3, 4 */
+ gint show_r; /**< 1 : reconciled transactions are showed */
+ gint nb_rows_by_transaction; /**< 1, 2, 3, 4 */
gint show_l; /** 1 archived lines are showed */
/** @name remaining of the balances */
@@ -134,6 +137,7 @@ typedef struct
/*START_STATIC*/
static void _gsb_data_account_free ( struct_account* account );
static void gsb_data_account_delete_all_accounts (void);
+static gchar *gsb_data_account_get_account_standard_pixbuf_filename ( kind_account account_kind );
static struct_account *gsb_data_account_get_structure ( gint no );
static gint gsb_data_account_max_number ( void );
static gboolean gsb_data_account_set_default_sort_values ( gint account_number );
@@ -186,7 +190,9 @@ void gsb_data_account_delete_all_accounts (void)
* */
gboolean gsb_data_account_init_variables ( void )
{
- gsb_data_account_delete_all_accounts();
+ gsb_data_account_delete_all_accounts ();
+ gsb_select_icon_init_account_variables ();
+
return FALSE;
}
@@ -312,9 +318,11 @@ static void _gsb_data_account_free ( struct_account* account )
g_free ( account -> form_organization );
if ( account -> bet_start_date )
g_date_free ( account -> bet_start_date );
+ if ( account -> pixbuf )
+ g_object_unref ( account -> pixbuf );
g_free ( account );
if ( account_buffer == account )
- account_buffer = NULL;
+ account_buffer = NULL;
}
@@ -2509,8 +2517,8 @@ gchar *gsb_data_account_get_name_icon (gint account_number)
account = gsb_data_account_get_structure ( account_number );
- if (!account )
- return NULL;
+ if ( !account )
+ return NULL;
return account -> name_icon;
}
@@ -2532,8 +2540,8 @@ gboolean gsb_data_account_set_name_icon ( gint account_number,
account = gsb_data_account_get_structure ( account_number );
- if (!account )
- return FALSE;
+ if ( !account )
+ return FALSE;
if ( account -> name_icon )
g_free ( account -> name_icon );
@@ -2551,6 +2559,7 @@ gboolean gsb_data_account_set_name_icon ( gint account_number,
return TRUE;
}
+
/**
* get the image icon of the account
*
@@ -2578,33 +2587,45 @@ GtkWidget *gsb_data_account_get_account_icon_image ( gint account_number )
* */
GdkPixbuf *gsb_data_account_get_account_icon_pixbuf ( gint account_number )
{
- GdkPixbuf * pixbuf = NULL;
- gchar * account_icon;
- GError *error = NULL;
+ struct_account *account;
- account_icon = gsb_data_account_get_name_icon ( account_number );
- if ( account_icon && strlen ( account_icon ) > 0 )
- {
- pixbuf = gdk_pixbuf_new_from_file_at_size ( account_icon , 32, 32, &error );
- g_object_set_data ( G_OBJECT ( pixbuf ), "name_icon", account_icon );
- }
+ account = gsb_data_account_get_structure ( account_number );
+
+ if ( !account )
+ return NULL;
- if ( ! pixbuf )
+ if ( account -> pixbuf )
+ return account -> pixbuf;
+ else
{
- if ( account_icon && strlen ( account_icon ) > 0 )
- {
- gchar* tmpstr = g_strconcat( "Erreur de pixbuf : " ,
- error -> message, " image ",
- account_icon, NULL );
- devel_debug (tmpstr);
- dialogue_error ( tmpstr );
- g_free ( tmpstr );
- }
- pixbuf = gsb_data_account_get_account_standard_pixbuf (
- gsb_data_account_get_kind ( account_number ) );
+ GdkPixbuf *pixbuf = NULL;
+
+ pixbuf = gsb_data_account_get_account_standard_pixbuf ( account -> account_kind );
+
+ return pixbuf;
}
+}
- return pixbuf;
+
+gboolean gsb_data_account_set_account_icon_pixbuf ( gint account_number,
+ GdkPixbuf *pixbuf )
+{
+ struct_account *account;
+
+ account = gsb_data_account_get_structure ( account_number );
+
+ if ( !account )
+ return FALSE;
+
+ if ( account -> pixbuf )
+ g_object_unref ( account -> pixbuf );
+
+ if ( pixbuf )
+ account -> pixbuf = g_object_ref ( pixbuf );
+ else
+ account -> pixbuf = NULL;
+
+ return TRUE;
}
@@ -2619,9 +2640,37 @@ GdkPixbuf *gsb_data_account_get_account_icon_pixbuf ( gint account_number )
GdkPixbuf *gsb_data_account_get_account_standard_pixbuf ( kind_account account_kind )
{
GdkPixbuf * pixbuf = NULL;
- gchar * account_icon;
+ gchar *filename;
GError *error = NULL;
+ filename = gsb_data_account_get_account_standard_pixbuf_filename ( account_kind );
+
+ pixbuf = gdk_pixbuf_new_from_file ( filename, &error );
+ if ( pixbuf )
+ g_object_set_data ( G_OBJECT ( pixbuf ), "name_icon", filename );
+ else
+ devel_debug ( error -> message );
+
+ if ( filename )
+ g_free ( filename );
+
+ return pixbuf;
+}
+
+
+/**
+ * get the filename of the default pixbuf icon for the kind_account
+ *
+ * \param kind_account
+ *
+ * \return filename
+ * */
+
+gchar *gsb_data_account_get_account_standard_pixbuf_filename ( kind_account account_kind )
+{
+ gchar *account_icon;
+ gchar *filename;
+
switch ( account_kind )
{
case GSB_TYPE_BANK:
@@ -2640,16 +2689,10 @@ GdkPixbuf *gsb_data_account_get_account_standard_pixbuf ( kind_account account_k
account_icon = "ac_bank.png";
break;
}
- pixbuf = gdk_pixbuf_new_from_file ( g_build_filename (PIXMAPS_DIR,
- account_icon, NULL), &error );
- if ( pixbuf )
- g_object_set_data ( G_OBJECT ( pixbuf ), "name_icon",
- g_build_filename (PIXMAPS_DIR,
- account_icon, NULL) );
- else
- devel_debug ( error -> message );
- return pixbuf;
+ filename = g_build_filename ( PIXMAPS_DIR, account_icon, NULL );
+
+ return filename;
}
@@ -2661,29 +2704,47 @@ GdkPixbuf *gsb_data_account_get_account_standard_pixbuf ( kind_account account_k
* */
void gsb_data_account_change_account_icon ( GtkWidget *button, gpointer data )
{
- GdkPixbuf * pixbuf;
+ GdkPixbuf *pixbuf;
GtkWidget *image;
- gchar * name_icon;
- gchar * new_icon;
+ gchar *name_icon;
+ gchar *new_icon;
gint current_account;
devel_debug ( NULL );
- image = gtk_button_get_image ( GTK_BUTTON ( button ) );
- pixbuf = gtk_image_get_pixbuf ( GTK_IMAGE ( image ) );
- if ( pixbuf )
- name_icon = g_object_get_data ( G_OBJECT ( pixbuf ), "name_icon" );
- else
- name_icon = g_build_filename (PIXMAPS_DIR, "ac_bank.png", NULL);
+ current_account = gsb_gui_navigation_get_current_account ();
+
+ name_icon = gsb_data_account_get_name_icon ( current_account );
+ if ( name_icon == NULL || g_file_test ( name_icon, G_FILE_TEST_EXISTS ) == FALSE )
+ name_icon = gsb_data_account_get_account_standard_pixbuf_filename (
+ gsb_data_account_get_kind ( current_account ) );
new_icon = gsb_select_icon_create_window ( name_icon );
if
( new_icon )
{
- current_account = gsb_gui_navigation_get_current_account ();
- gsb_data_account_set_name_icon ( current_account, new_icon );
+ if ( strcmp ( new_icon, name_icon ) == 0 )
+ return;
+ else if ( strcmp ( new_icon, gsb_data_account_get_account_standard_pixbuf_filename (
+ gsb_data_account_get_kind ( current_account ) ) ) == 0 )
+ {
+ printf ("new_icon est une icone standard\n");
+ gsb_data_account_set_name_icon ( current_account, NULL );
+ gsb_data_account_set_account_icon_pixbuf ( current_account, NULL );
+ gsb_select_icon_remove_account_pixbuf ( current_account );
+ }
+ else
+ {
+ gsb_data_account_set_name_icon ( current_account, new_icon );
+ pixbuf = gsb_select_icon_change_account_pixbuf ( current_account, new_icon );
+ gsb_data_account_set_account_icon_pixbuf ( current_account, pixbuf );
+ }
+
image = gsb_data_account_get_account_icon_image ( current_account );
gtk_button_set_image ( GTK_BUTTON ( button ), image );
gsb_gui_navigation_update_account ( current_account );
+
+ if ( etat.modification_fichier == 0 )
+ modification_fichier ( TRUE );
}
}
@@ -3203,9 +3264,11 @@ gint gsb_data_account_get_bet_use_budget ( gint account_number )
{
case GSB_TYPE_BANK:
case GSB_TYPE_CASH:
- case GSB_TYPE_LIABILITIES:
return account -> bet_use_budget;
break;
+ case GSB_TYPE_LIABILITIES:
+ return -1;
+ break;
case GSB_TYPE_ASSET:
return -1;
break;
diff --git a/src/gsb_data_account.h b/src/gsb_data_account.h
index 53ca84c..4efb0e5 100644
--- a/src/gsb_data_account.h
+++ b/src/gsb_data_account.h
@@ -92,6 +92,8 @@ gboolean gsb_data_account_move_account ( gint account_number,
gint dest_account_number );
gint gsb_data_account_new ( kind_account account_kind );
gboolean gsb_data_account_reorder ( GSList *new_order );
+gboolean gsb_data_account_set_account_icon_pixbuf ( gint account_number,
+ GdkPixbuf * pixbuf );
gint gsb_data_account_set_account_number ( gint account_number,
gint new_no );
gboolean gsb_data_account_set_balances_are_dirty ( gint account_number );
diff --git a/src/gsb_file_load.c b/src/gsb_file_load.c
index a4c87b5..58a9cba 100644
--- a/src/gsb_file_load.c
+++ b/src/gsb_file_load.c
@@ -82,6 +82,8 @@
/*END_INCLUDE*/
/*START_STATIC*/
+static void gsb_file_load_account_icon_part ( const gchar **attribute_names,
+ const gchar **attribute_values );
static void gsb_file_load_account_part ( const gchar **attribute_names,
const gchar **attribute_values );
static void gsb_file_load_account_part_before_0_6 ( GMarkupParseContext *context,
@@ -679,20 +681,21 @@ void gsb_file_load_start_element ( GMarkupParseContext *context,
attribute_values);
return;
}
- if ( !strcmp ( element_name,
- "Logo" ))
+ if ( !strcmp ( element_name, "Logo" ) )
{
if ( etat.utilise_logo )
- gsb_file_load_logo_accueil ( attribute_names,
- attribute_values );
- return;
+ gsb_file_load_logo_accueil ( attribute_names, attribute_values );
+ return;
+ }
+ if ( !strcmp ( element_name, "Account_icon" ) )
+ {
+ gsb_file_load_account_icon_part ( attribute_names, attribute_values );
+ return;
}
/* the first time we come here, we check if it's a grisbi file */
}
-
-
void gsb_file_load_error ( GMarkupParseContext *context,
GError *error,
gpointer user_data )
@@ -856,21 +859,35 @@ void gsb_file_load_general_part ( const gchar **attribute_names,
etat.utilise_logo = utils_str_atoi ( attribute_values[i]);
}
- else if ( !strcmp ( attribute_names[i],
- "Path_logo" ))
+ else if ( !strcmp ( attribute_names[i], "Is_pixmaps_dir" ) )
{
- GdkPixbuf *pixbuf;
- gchar *chemin_logo;
+ etat.is_pixmaps_dir = utils_str_atoi ( attribute_values[i] );
+ }
- chemin_logo = my_strdup (attribute_values[i]);
- pixbuf = gdk_pixbuf_new_from_file ( chemin_logo, NULL );
+ else if ( !strcmp ( attribute_names[i], "Name_logo" ) )
+ {
+ GdkPixbuf *pixbuf = NULL;
+
+ etat.name_logo = my_strdup ( attribute_values[i] );
+ if ( etat.is_pixmaps_dir )
+ {
+ gchar *chemin_logo = NULL;
+
+ if ( etat.name_logo )
+ chemin_logo = g_build_filename ( PIXMAPS_DIR, etat.name_logo, NULL );
+ else
+ chemin_logo = g_build_filename ( PIXMAPS_DIR, "grisbi-logo.png", NULL );
+ if ( chemin_logo )
+ pixbuf = gdk_pixbuf_new_from_file ( chemin_logo, NULL );
+ if ( chemin_logo && strlen ( chemin_logo ) > 0 )
+ g_free ( chemin_logo );
+
+ }
if ( pixbuf )
{
gtk_window_set_default_icon ( pixbuf );
gsb_select_icon_set_logo_pixbuf ( pixbuf );
}
- if ( chemin_logo && strlen (chemin_logo) > 0 )
- g_free ( chemin_logo );
}
else if ( !strcmp ( attribute_names[i],
@@ -916,14 +933,6 @@ void gsb_file_load_general_part ( const gchar **attribute_names,
}
else if ( !strcmp ( attribute_names[i],
- "Remind_form_per_account" ))
- {
- //~ etat.formulaire_distinct_par_compte = utils_str_atoi( attribute_values[i]);
- etat.formulaire_distinct_par_compte = 0;
-
- }
-
- else if ( !strcmp ( attribute_names[i],
"Transaction_column_width" ))
{
gchar **pointeur_char;
@@ -975,12 +984,6 @@ void gsb_file_load_general_part ( const gchar **attribute_names,
etat.combofix_case_sensitive = utils_str_atoi( attribute_values[i]);
}
- //~ else if ( !strcmp ( attribute_names[i],
- //~ "Combofix_enter_select_completion" ))
- //~ {
- //~ etat.combofix_enter_select_completion = utils_str_atoi( attribute_values[i]);
- //~ }
-
else if ( !strcmp ( attribute_names[i],
"Combofix_force_payee" ))
{
@@ -1506,11 +1509,10 @@ void gsb_file_load_account_part ( const gchar **attribute_names,
continue;
}
- if ( !strcmp ( attribute_names[i],
- "Path_icon" ))
+ if ( !strcmp ( attribute_names[i], "Path_icon" ) )
{
gsb_data_account_set_name_icon ( account_number,
- attribute_values[i]);
+ attribute_values[i] );
i++;
continue;
}
@@ -5260,13 +5262,14 @@ void gsb_file_load_logo_accueil ( const gchar **attribute_names,
i++;
continue;
}
- if ( !strcmp ( attribute_names[i],
- "Image" ))
+ if ( !strcmp ( attribute_names[i], "Image" ) )
{
GdkPixbuf *pixbuf = NULL;
pixbuf = gsb_select_icon_create_pixbuf_from_chaine_base64 (
(gchar *) attribute_values[i] );
+ etat.is_pixmaps_dir = FALSE;
+
gtk_window_set_default_icon ( pixbuf );
gsb_select_icon_set_logo_pixbuf ( pixbuf );
i++;
@@ -5275,6 +5278,57 @@ void gsb_file_load_logo_accueil ( const gchar **attribute_names,
}
while ( attribute_names[i] );
}
+
+
+/**
+ * charge les icones pour les comptes
+ *
+ * \param attribute_names
+ * \param attribute_values
+ *
+ * */
+void gsb_file_load_account_icon_part ( const gchar **attribute_names,
+ const gchar **attribute_values )
+{
+ gint i=0;
+ gint account_number = -1;
+ GdkPixbuf *pixbuf = NULL;
+
+ do
+ {
+ /* we test at the beginning if the attribute_value is NULL, if yes, */
+ /* go to the next */
+
+ if ( !strcmp (attribute_values[i], "(null)"))
+ {
+ i++;
+ continue;
+ }
+ if ( !strcmp ( attribute_names[i], "Account_number" ) )
+ {
+ account_number = utils_str_atoi ( attribute_values[i] );
+ i++;
+ continue;
+ }
+
+ if ( !strcmp ( attribute_names[i], "Image" ) )
+ {
+ pixbuf = gsb_select_icon_create_pixbuf_from_chaine_base64 (
+ (gchar *) attribute_values[i] );
+ i++;
+ continue;
+ }
+ }
+ while ( attribute_names[i] );
+
+ if ( account_number != -1 && pixbuf )
+ {
+ gsb_select_icon_new_account_icon ( account_number, pixbuf );
+ gsb_data_account_set_account_icon_pixbuf ( account_number, pixbuf );
+ }
+}
+
+
void gsb_file_load_start_element_before_0_6 ( GMarkupParseContext *context,
const gchar *element_name,
const gchar **attribute_names,
@@ -6635,14 +6689,6 @@ void gsb_file_load_general_part_before_0_6 ( GMarkupParseContext *context,
}
if ( !strcmp ( element_name,
- "Formulaire_distinct_par_compte" ))
- {
- //~ etat.formulaire_distinct_par_compte = utils_str_atoi( text);
- etat.formulaire_distinct_par_compte = 0;
- return;
- }
-
- if ( !strcmp ( element_name,
"Rapport_largeur_col_echeancier" ))
{
/* here do nothing because it was a ration before, and now it's fixed width,
diff --git a/src/gsb_file_save.c b/src/gsb_file_save.c
index b5895fd..6d1a71c 100644
--- a/src/gsb_file_save.c
+++ b/src/gsb_file_save.c
@@ -75,6 +75,9 @@
/*END_INCLUDE*/
/*START_STATIC*/
+static gulong gsb_file_save_account_icon_part ( gulong iterator,
+ gulong *length_calculated,
+ gchar **file_content );
static gulong gsb_file_save_account_part ( gulong iterator,
gulong *length_calculated,
gchar **file_content );
@@ -205,6 +208,7 @@ gboolean gsb_file_save_save_file ( const gchar *filename,
gint import_rule_part;
gint partial_balance_part;
gint logo_part;
+ gint account_icon_part;
gint bet_part;
struct stat buf;
@@ -252,6 +256,7 @@ gboolean gsb_file_save_save_file ( const gchar *filename,
import_rule_part = 50;
partial_balance_part = 50;
logo_part = 65536;
+ account_icon_part = 4048;
bet_part = 250;
length_calculated = general_part
@@ -270,6 +275,7 @@ gboolean gsb_file_save_save_file ( const gchar *filename,
+ import_rule_part * g_slist_length ( gsb_data_import_rule_get_list ())
+ partial_balance_part * g_slist_length ( gsb_data_partial_balance_get_list ())
+ logo_part
+ + account_icon_part * g_slist_length ( gsb_select_icon_list_accounts_icon () )
+ bet_part;
iterator = 0;
@@ -370,8 +376,13 @@ gboolean gsb_file_save_save_file ( const gchar *filename,
&file_content,
FALSE );
- if ( etat.utilise_logo )
- iterator = gsb_file_save_logo_part ( iterator,
+ if ( etat.utilise_logo && etat.is_pixmaps_dir == FALSE )
+ iterator = gsb_file_save_logo_part ( iterator,
+ &length_calculated,
+ &file_content );
+
+ if ( g_slist_length ( gsb_select_icon_list_accounts_icon () ) > 0 )
+ iterator = gsb_file_save_account_icon_part ( iterator,
&length_calculated,
&file_content );
@@ -672,6 +683,8 @@ gulong gsb_file_save_general_part ( gulong iterator,
"\t\tImport_categorie_for_payee=\"%d\"\n"
"\t\tImport_fyear_by_value_date=\"%d\"\n"
"\t\tUse_logo=\"%d\"\n"
+ "\t\tIs_pixmaps_dir=\"%d\"\n"
+ "\t\tName_logo=\"%s\"\n"
"\t\tRemind_display_per_account=\"%d\"\n"
"\t\tTransactions_view=\"%s\"\n"
"\t\tOne_line_showed=\"%d\"\n"
@@ -683,7 +696,6 @@ gulong gsb_file_save_general_part ( gulong iterator,
"\t\tCombofix_mixed_sort=\"%d\"\n"
"\t\tCombofix_max_item=\"%d\"\n"
"\t\tCombofix_case_sensitive=\"%d\"\n"
- //~ "\t\tCombofix_enter_select_completion=\"%d\"\n"
"\t\tCombofix_force_payee=\"%d\"\n"
"\t\tCombofix_force_category=\"%d\"\n"
"\t\tAutomatic_amount_separator=\"%d\"\n"
@@ -710,19 +722,19 @@ gulong gsb_file_save_general_part ( gulong iterator,
etat.get_categorie_for_payee,
etat.get_fyear_by_value_date,
etat.utilise_logo,
+ etat.is_pixmaps_dir,
+ my_safe_null_str( etat.name_logo ),
etat.retient_affichage_par_compte,
my_safe_null_str(transactions_view),
display_one_line,
display_two_lines,
display_three_lines,
- //~ etat.formulaire_distinct_par_compte,
0,
my_safe_null_str(transaction_column_width_write),
my_safe_null_str(scheduler_column_width_write),
etat.combofix_mixed_sort,
etat.combofix_max_item,
etat.combofix_case_sensitive,
- //~ etat.combofix_enter_select_completion,
etat.combofix_force_payee,
etat.combofix_force_category,
etat.automatic_separator,
@@ -2648,22 +2660,72 @@ gulong gsb_file_save_logo_part ( gulong iterator,
gchar * str64;
pixbuf = gsb_select_icon_get_logo_pixbuf ( );
- if ( ! pixbuf )
- pixbuf = gsb_select_icon_get_default_logo_pixbuf ( );
+ if ( !pixbuf )
+ return 0;
+
+ str64 = gsb_select_icon_create_chaine_base64_from_pixbuf ( pixbuf );
+
+ new_string = g_markup_printf_escaped ( "\t<Logo\n"
+ "\t\tImage=\"%s\" />\n",
+ my_safe_null_str(str64) );
+
+ iterator = gsb_file_save_append_part ( iterator,
+ length_calculated,
+ file_content,
+ new_string );
+
+ return iterator;
+}
+
+
+/**
+ * save the accounts_icon
+ *
+ * \param iterator the current iterator
+ * \param length_calculated a pointer to the variable lengh_calculated
+ * \param file_content a pointer to the variable file_content
+ *
+ * \return the new iterator
+ * */
+gulong gsb_file_save_account_icon_part ( gulong iterator,
+ gulong *length_calculated,
+ gchar **file_content )
+{
+ GSList *list_tmp;
+
+ list_tmp = gsb_select_icon_list_accounts_icon ();
- if ( pixbuf )
+ while ( list_tmp )
{
+ GdkPixbuf *pixbuf = NULL;
+ gchar *new_string = NULL;
+ gchar *str64;
+ gint account_number;
+
+ account_number = gsb_select_icon_get_no_account_by_ptr ( list_tmp -> data );
+
+ if ( account_number == -1 )
+ {
+ list_tmp = list_tmp -> next;
+ continue;
+ }
+
+ pixbuf = gsb_select_icon_get_account_pixbuf_by_ptr ( list_tmp -> data );
str64 = gsb_select_icon_create_chaine_base64_from_pixbuf ( pixbuf );
- new_string = g_markup_printf_escaped ( "\t<Logo\n"
- "\t\tImage=\"%s\" />\n",
+ new_string = g_markup_printf_escaped ( "\t<Account_icon\n"
+ "\t\tAccount_number=\"%d\"\n"
+ "\t\tImage=\"%s\" />\n",
+ account_number,
my_safe_null_str(str64) );
- }
- iterator = gsb_file_save_append_part ( iterator,
- length_calculated,
- file_content,
- new_string );
+ iterator = gsb_file_save_append_part ( iterator,
+ length_calculated,
+ file_content,
+ new_string );
+
+ list_tmp = list_tmp -> next;
+ }
return iterator;
}
diff --git a/src/gsb_form_config.c b/src/gsb_form_config.c
index 885c4e0..5b66c99 100644
--- a/src/gsb_form_config.c
+++ b/src/gsb_form_config.c
@@ -154,32 +154,8 @@ void gsb_form_config_make_configuration_box ( GtkWidget *vbox_parent )
hbox = gtk_hbox_new ( FALSE, 5 );
gtk_box_pack_start ( GTK_BOX (paddingbox), hbox, FALSE, FALSE, 0 );
- /* the button to choose the configuration for all/one account */
- //~ button = gsb_automem_checkbutton_new ( _("Each account has his own form"),
- //~ &etat.formulaire_distinct_par_compte,
- //~ G_CALLBACK ( gsb_form_config_switch_general_to_several_form ),
- //~ NULL);
- //~ gtk_box_pack_start ( GTK_BOX (hbox ), button, FALSE, FALSE, 0 );
-
/* the accounts option_menu */
accounts_combobox = gsb_account_create_combo_list ((GtkSignalFunc) gsb_form_config_change_account_choice, NULL, FALSE );
- //~ gtk_widget_set_sensitive ( accounts_combobox, etat.formulaire_distinct_par_compte );
- //~ gtk_box_pack_start ( GTK_BOX (hbox ), accounts_combobox, FALSE, FALSE, 0 );
-
- /* add the update-form button */
- //~ hbox = gtk_hbox_new ( FALSE, 5 );
- //~ gtk_box_pack_start ( GTK_BOX (paddingbox), hbox, FALSE, FALSE, 0 );
-
- //~ update_button = gtk_button_new_with_label (_("Update"));
- //~ gtk_widget_set_sensitive ( update_button, etat.formulaire_distinct_par_compte );
- //~ g_signal_connect ( G_OBJECT (update_button),
- //~ "clicked",
- //~ G_CALLBACK (gsb_form_config_update_accounts),
- //~ accounts_combobox );
- //~ gtk_box_pack_start ( GTK_BOX (hbox), update_button, FALSE, FALSE, 0 );
-
- //~ label = gtk_label_new ( _(" : Duplicate the selected form for all accounts") );
- //~ gtk_box_pack_start ( GTK_BOX (hbox), label, FALSE, FALSE, 0 );
/*create the scolled window for tree_view */
sw = gtk_scrolled_window_new ( NULL, NULL);
@@ -548,39 +524,6 @@ gboolean gsb_form_config_update_form_config ( gint account_number )
/**
- * called when click on the button "each account has his form",
- * unsensitive/sensitive the accounts option_menu,
- * if unsensitive, set the menu to the first account
- *
- * \param
- *
- * \return FALSE*/
-//~ gboolean gsb_form_config_switch_general_to_several_form ( void )
-//~ {
- //~ if ( etat.formulaire_distinct_par_compte )
- //~ {
- //~ gtk_widget_set_sensitive ( accounts_combobox,
- //~ TRUE );
- //~ gtk_widget_set_sensitive ( update_button,
- //~ TRUE );
- //~ }
- //~ else
- //~ {
- //~ gtk_combo_box_set_active ( GTK_COMBO_BOX (accounts_combobox),
- //~ 0 );
- //~ /* just in case we were already on the first choice */
- //~ gsb_form_config_change_account_choice (accounts_combobox, NULL);
-
- //~ gtk_widget_set_sensitive ( accounts_combobox,
- //~ FALSE );
- //~ gtk_widget_set_sensitive ( update_button,
- //~ FALSE );
- //~ }
- //~ return FALSE;
-//~ }
-
-
-/**
* called if we change the account in the option menu of the accounts
*
* \param combobox the combobox of the list of accounts
@@ -908,9 +851,6 @@ gboolean gsb_form_config_change_column_size ( GtkWidget *tree_view,
for (i=0 ; i<gsb_data_account_get_accounts_amount () ; i++)
{
- if (!etat.formulaire_distinct_par_compte
- ||
- i == account_number)
for ( column=0 ; column < gsb_data_form_get_nb_columns (i) ; column++ )
{
gint size_column;
@@ -927,13 +867,8 @@ gboolean gsb_form_config_change_column_size ( GtkWidget *tree_view,
modification_fichier ( TRUE );
/* update the form if needed */
- if ( !etat.formulaire_distinct_par_compte
- ||
- gsb_account_get_combo_account_number ( accounts_combobox ) == gsb_gui_navigation_get_current_account ())
- {
saved_allocation_size = 0;
gsb_form_allocate_size ( NULL, &(form_transaction_part -> allocation), NULL );
- }
return FALSE;
}
diff --git a/src/gsb_select_icon.c b/src/gsb_select_icon.c
index 7112f16..53e1e26 100644
--- a/src/gsb_select_icon.c
+++ b/src/gsb_select_icon.c
@@ -61,6 +61,17 @@ static GtkListStore *store = NULL;
static gchar * path_icon;
static gchar * new_icon;
+/* variables for account_icon */
+static GSList *list_accounts_icon = NULL;
+
+typedef struct
+{
+ gint account_number;
+ GdkPixbuf *pixbuf;
+} struct_account_icon;
+
+static struct_account_icon *icon_buffer;
+
enum {
PIXBUF_COLUMN,
@@ -70,13 +81,61 @@ enum {
/**
+ *
+ *
+ *
+ *
+ * */
+gboolean gsb_select_icon_init_account_variables ( void )
+{
+ if ( list_accounts_icon )
+ {
+ GSList* tmp_list = list_accounts_icon;
+
+ while ( tmp_list )
+ {
+ struct_account_icon *icon;
+
+ icon = tmp_list -> data;
+ tmp_list = tmp_list -> next;
+ if ( icon -> pixbuf )
+ g_object_unref ( icon -> pixbuf );
+
+ g_free ( icon );
+ }
+ g_slist_free ( list_accounts_icon );
+ }
+ list_accounts_icon = NULL;
+ icon_buffer = NULL;
+
+ return FALSE;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+gboolean gsb_select_icon_init_logo_variables ( void )
+{
+ if ( pixbuf_logo )
+ g_object_unref ( pixbuf_logo );
+ pixbuf_logo = NULL;
+
+ return FALSE;
+}
+
+
+/**
* crée la boite de dialogue initiale avec le GtkIconView
*
* \param nom de l'icône
*
* \return le nouveau nom de l'icône ou NULL
* */
-gchar * gsb_select_icon_create_window ( gchar * name_icon )
+gchar * gsb_select_icon_create_window ( gchar *name_icon )
{
GtkWidget *content_area;
GtkWidget *hbox;
@@ -86,6 +145,12 @@ gchar * gsb_select_icon_create_window ( gchar * name_icon )
gint result;
devel_debug ( name_icon );
+
+ if ( new_icon && strlen ( new_icon ) > 0 )
+ g_free ( new_icon );
+
+ new_icon = g_strdup ( name_icon );
+
path_icon = g_path_get_dirname ( name_icon );
dialog = gtk_dialog_new_with_buttons ( _("Browse icons"),
GTK_WINDOW ( window ),
@@ -127,19 +192,19 @@ gchar * gsb_select_icon_create_window ( gchar * name_icon )
/* gestion des signaux */
g_signal_connect ( G_OBJECT ( icon_view ),
- "selection-changed",
- G_CALLBACK( gsb_select_icon_selection_changed ),
- NULL );
+ "selection-changed",
+ G_CALLBACK( gsb_select_icon_selection_changed ),
+ NULL );
g_signal_connect ( G_OBJECT ( chooser_button ),
- "pressed",
- G_CALLBACK(gsb_select_icon_create_file_chooser),
- NULL );
+ "pressed",
+ G_CALLBACK(gsb_select_icon_create_file_chooser),
+ NULL );
g_signal_connect ( G_OBJECT( entry_text ),
- "changed",
- G_CALLBACK( gsb_select_icon_entry_text_changed ),
- NULL );
+ "changed",
+ G_CALLBACK( gsb_select_icon_entry_text_changed ),
+ NULL );
gtk_widget_show_all ( dialog );
@@ -147,10 +212,10 @@ gchar * gsb_select_icon_create_window ( gchar * name_icon )
switch (result)
{
case GTK_RESPONSE_ACCEPT:
- devel_debug ( "réponse OK\n" );
+ devel_debug ( "réponse OK" );
break;
default:
- devel_debug ( "réponse Non OK\n" );
+ devel_debug ( "réponse Non OK" );
if ( new_icon && strlen ( new_icon ) > 0 )
g_free ( new_icon );
new_icon = NULL;
@@ -543,6 +608,7 @@ gchar * gsb_select_icon_create_chaine_base64_from_pixbuf ( GdkPixbuf *pixbuf )
*
* \param str_base64
*
+ * return a new pixbuf
* */
GdkPixbuf *gsb_select_icon_create_pixbuf_from_chaine_base64 ( gchar *str_base64 )
{
@@ -552,19 +618,31 @@ GdkPixbuf *gsb_select_icon_create_pixbuf_from_chaine_base64 ( gchar *str_base64
GdkPixbuf *pixbuf = NULL;
data = g_base64_decode ( str_base64, &longueur );
- gdk_pixdata_deserialize( &pixdata, longueur, data, NULL );
- pixbuf = gdk_pixbuf_from_pixdata( &pixdata, TRUE, NULL );
+ gdk_pixdata_deserialize ( &pixdata, longueur, data, NULL );
+ pixbuf = gdk_pixbuf_from_pixdata ( &pixdata, TRUE, NULL );
return pixbuf;
}
+/**
+ *
+ *
+ *
+ *
+ * */
GdkPixbuf *gsb_select_icon_get_logo_pixbuf ( void )
{
return pixbuf_logo;
}
+/**
+ * retourne le logo par défaut de grisbi
+ *
+ *
+ * return a new pixbuf
+ * */
GdkPixbuf *gsb_select_icon_get_default_logo_pixbuf ( void )
{
GdkPixbuf *pixbuf = NULL;
@@ -586,6 +664,12 @@ GdkPixbuf *gsb_select_icon_get_default_logo_pixbuf ( void )
}
+/**
+ *
+ *
+ * \param pixbuf
+ *
+ * */
void gsb_select_icon_set_logo_pixbuf ( GdkPixbuf *pixbuf )
{
if ( pixbuf_logo != NULL )
@@ -601,6 +685,13 @@ void gsb_select_icon_set_logo_pixbuf ( GdkPixbuf *pixbuf )
}
+/**
+ * redimmensionne le logo
+ *
+ * \param pixbuf à redimmensionner
+ *
+ * return a new pixbuf
+ * */
GdkPixbuf *gsb_select_icon_resize_logo_pixbuf ( GdkPixbuf *pixbuf )
{
GdkPixbuf * tmp;
@@ -627,3 +718,282 @@ GdkPixbuf *gsb_select_icon_resize_logo_pixbuf ( GdkPixbuf *pixbuf )
return tmp;
}
+
+
+/**
+ * retourne la liste des icones pour les comptes
+ *
+ *
+ * return list_accounts_icon
+ * */
+GSList *gsb_select_icon_list_accounts_icon ( void )
+{
+ return list_accounts_icon;
+}
+
+
+/**
+ * find and return the number of the account which the struct account_icon is the param
+ *
+ * \param the struct of the account_icon
+ *
+ * \return the number of account, -1 if pb
+ * */
+gint gsb_select_icon_get_no_account_by_ptr ( gpointer account_icon_ptr )
+{
+ struct_account_icon *icon;
+
+ if ( !account_icon_ptr )
+ return -1;
+
+ icon = account_icon_ptr;
+ icon_buffer = icon;
+
+ return icon -> account_number;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+GdkPixbuf *gsb_select_icon_get_account_pixbuf ( gint account_number )
+{
+ GSList *list_tmp;
+
+ if ( icon_buffer
+ &&
+ icon_buffer -> account_number == account_number )
+ return icon_buffer -> pixbuf;
+
+ list_tmp = list_accounts_icon;
+
+ while ( list_tmp )
+ {
+ struct_account_icon *icon;
+
+ icon = list_tmp -> data;
+
+ if ( icon -> account_number == account_number )
+ return icon -> pixbuf;
+
+ list_tmp = list_tmp -> next;
+ }
+
+ return NULL;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+GdkPixbuf *gsb_select_icon_get_account_pixbuf_by_ptr ( gpointer account_icon_ptr )
+{
+ struct_account_icon *icon;
+
+ if ( !account_icon_ptr )
+ return NULL;
+
+ icon = account_icon_ptr;
+ icon_buffer = icon;
+
+ return icon -> pixbuf;
+}
+
+
+/**
+ * ajoute une nouvelle icone pour le compte passé en paramètre
+ *
+ *
+ * return TRUE if OK else FALSE
+ * */
+gboolean gsb_select_icon_new_account_icon ( gint account_number,
+ GdkPixbuf *pixbuf )
+{
+ struct_account_icon *icon;
+
+ icon = g_malloc0 ( sizeof ( struct_account_icon ) );
+ icon_buffer = icon;
+
+ if ( !icon )
+ {
+ dialogue_error_memory ();
+ return FALSE;
+ }
+
+ icon -> account_number = account_number;
+ icon -> pixbuf = pixbuf;
+
+ list_accounts_icon = g_slist_prepend ( list_accounts_icon, icon );
+
+ return TRUE;
+}
+
+/**
+ * ajoute une nouvelle icone pour le compte passé en paramètre
+ *
+ * /param la chaine codée de l'icone
+ * return TRUE if OK else FALSE
+ * */
+gboolean gsb_select_icon_new_account_icon_from_file ( gint account_number,
+ const gchar *filename )
+{
+ struct_account_icon *icon;
+ GdkPixbuf *pixbuf;
+ GError *error = NULL;
+
+ if ( !filename || !strlen ( filename ) )
+ return FALSE;
+ else
+ {
+ if ( !g_file_test ( filename, G_FILE_TEST_EXISTS ) )
+ return FALSE;
+ }
+
+ icon = g_malloc0 ( sizeof ( struct_account_icon ) );
+ icon_buffer = icon;
+
+ if ( !icon )
+ {
+ dialogue_error_memory ();
+
+ return FALSE;
+ }
+
+ icon -> account_number = account_number;
+
+ pixbuf = gdk_pixbuf_new_from_file_at_size ( filename , 32, 32, &error );
+
+ if ( pixbuf )
+ {
+ icon -> pixbuf = pixbuf;
+ list_accounts_icon = g_slist_prepend ( list_accounts_icon, icon );
+
+ return TRUE;
+ }
+ else
+ {
+ gchar* tmp_str;
+
+ tmp_str = g_strconcat( "Erreur de pixbuf : ",
+ error -> message, " image ",
+ filename, NULL );
+ devel_debug ( tmp_str );
+ dialogue_error ( tmp_str );
+ g_free ( tmp_str );
+ g_free ( icon );
+
+ return FALSE;
+ }
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+GdkPixbuf *gsb_select_icon_change_account_pixbuf ( gint account_number,
+ gchar *filename )
+{
+ GSList *list_tmp;
+ GdkPixbuf *pixbuf;
+ GError *error = NULL;
+
+ if ( icon_buffer
+ &&
+ icon_buffer -> account_number == account_number )
+ {
+ pixbuf = gdk_pixbuf_new_from_file_at_size ( filename , 32, 32, &error );
+ if ( pixbuf )
+ {
+ g_object_unref ( icon_buffer -> pixbuf );
+ icon_buffer -> pixbuf = pixbuf;
+
+ return icon_buffer -> pixbuf;
+ }
+ else
+ return NULL;
+ }
+
+ list_tmp = list_accounts_icon;
+
+ while ( list_tmp )
+ {
+ struct_account_icon *icon;
+
+ icon = list_tmp -> data;
+
+ if ( icon -> account_number == account_number )
+ {
+ pixbuf = gdk_pixbuf_new_from_file_at_size ( filename , 32, 32, &error );
+ if ( pixbuf )
+ {
+ g_object_unref ( icon -> pixbuf );
+ icon -> pixbuf = pixbuf;
+
+ return icon -> pixbuf;
+ }
+ else
+ return NULL;
+ }
+
+ list_tmp = list_tmp -> next;
+ }
+
+ if ( gsb_select_icon_new_account_icon_from_file ( account_number, filename ) )
+ return gsb_select_icon_get_account_pixbuf ( account_number );
+ else
+ return NULL;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+gboolean gsb_select_icon_remove_account_pixbuf ( gint account_number )
+{
+ GSList *list_tmp;
+ GdkPixbuf *pixbuf;
+ GError *error = NULL;
+
+ list_tmp = list_accounts_icon;
+
+ while ( list_tmp )
+ {
+ struct_account_icon *icon;
+
+ icon = list_tmp -> data;
+
+ if ( icon -> account_number == account_number )
+ {
+
+ if ( icon -> pixbuf )
+ {
+ g_object_unref ( icon -> pixbuf );
+ list_tmp = g_slist_remove ( list_accounts_icon, icon );
+ g_free ( icon );
+ icon_buffer = NULL;
+
+ return TRUE;
+ }
+ }
+
+ list_tmp = list_tmp -> next;
+ }
+
+ return FALSE;
+}
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* End: */
diff --git a/src/gsb_select_icon.h b/src/gsb_select_icon.h
index 42dc10d..789ea3f 100644
--- a/src/gsb_select_icon.h
+++ b/src/gsb_select_icon.h
@@ -9,11 +9,24 @@
#define LOGO_HEIGHT 100
/* START_DECLARATION */
+GdkPixbuf *gsb_select_icon_change_account_pixbuf ( gint account_number,
+ gchar *filename );
gchar * gsb_select_icon_create_chaine_base64_from_pixbuf ( GdkPixbuf *pixbuf );
GdkPixbuf *gsb_select_icon_create_pixbuf_from_chaine_base64 ( gchar *str_base64 );
-gchar * gsb_select_icon_create_window ( gchar * name_icon );
+gchar * gsb_select_icon_create_window ( gchar *name_icon );
+GdkPixbuf *gsb_select_icon_get_account_pixbuf ( gint account_number );
+GdkPixbuf *gsb_select_icon_get_account_pixbuf_by_ptr ( gpointer account_icon_ptr );
GdkPixbuf *gsb_select_icon_get_default_logo_pixbuf ( void );
GdkPixbuf *gsb_select_icon_get_logo_pixbuf ( void );
+gboolean gsb_select_icon_init_account_variables ( void );
+gint gsb_select_icon_get_no_account_by_ptr ( gpointer account_icon_ptr );
+GSList *gsb_select_icon_list_accounts_icon ( void );
+gboolean gsb_select_icon_init_logo_variables ( void );
+gboolean gsb_select_icon_new_account_icon ( gint account_number,
+ GdkPixbuf *pixbuf );
+gboolean gsb_select_icon_new_account_icon_from_file ( gint account_number,
+ const gchar *filename );
+gboolean gsb_select_icon_remove_account_pixbuf ( gint account_number );
void gsb_select_icon_set_logo_pixbuf ( GdkPixbuf *pixbuf );
/* END_DECLARATION */
#endif
diff --git a/src/main.c b/src/main.c
index 7eac3e7..45c79f1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -175,7 +175,7 @@ int main (int argc, char **argv)
#endif
/* create the icon of grisbi (set in the panel of gnome or other) */
- string = g_build_filename ( PIXMAPS_DIR, "grisbi.png", NULL );
+ string = g_build_filename ( PIXMAPS_DIR, "grisbi-logo.png", NULL );
if ( g_file_test ( string, G_FILE_TEST_EXISTS ) )
gtk_window_set_default_icon_from_file ( string, NULL );
g_free (string);
diff --git a/src/navigation.c b/src/navigation.c
index 604c136..d570322 100644
--- a/src/navigation.c
+++ b/src/navigation.c
@@ -37,6 +37,7 @@
#include "gsb_form.h"
#include "gsb_form_scheduler.h"
#include "fenetre_principale.h"
+#include "bet_finance_ui.h"
#include "menu.h"
#include "etats_onglet.h"
#include "accueil.h"
@@ -241,8 +242,7 @@ GtkWidget * create_navigation_pane ( void )
gtk_tree_view_append_column ( GTK_TREE_VIEW ( navigation_tree_view ),
GTK_TREE_VIEW_COLUMN ( column ) );
/* Account list */
- tmpstr = g_build_filename ( PIXMAPS_DIR,
- "ac_home.png", NULL );
+ tmpstr = g_build_filename ( PIXMAPS_DIR, "ac_home.png", NULL );
pixbuf = gdk_pixbuf_new_from_file ( tmpstr , NULL );
g_free ( tmpstr );
gtk_tree_store_append(GTK_TREE_STORE(navigation_model), &account_iter, NULL);
@@ -259,8 +259,7 @@ GtkWidget * create_navigation_pane ( void )
create_account_list ( GTK_TREE_MODEL(navigation_model) );
/* Scheduler */
- tmpstr = g_build_filename( PIXMAPS_DIR,
- "scheduler.png", NULL );
+ tmpstr = g_build_filename( PIXMAPS_DIR, "scheduler.png", NULL );
pixbuf = gdk_pixbuf_new_from_file ( tmpstr , NULL );
g_free ( tmpstr );
gtk_tree_store_append(GTK_TREE_STORE(navigation_model), &iter, NULL);
@@ -276,8 +275,7 @@ GtkWidget * create_navigation_pane ( void )
-1 );
/* Payees */
- tmpstr = g_build_filename( PIXMAPS_DIR,
- "payees.png", NULL );
+ tmpstr = g_build_filename( PIXMAPS_DIR, "payees.png", NULL );
pixbuf = gdk_pixbuf_new_from_file ( tmpstr , NULL );
g_free ( tmpstr );
gtk_tree_store_append(GTK_TREE_STORE(navigation_model), &iter, NULL);
@@ -292,9 +290,24 @@ GtkWidget * create_navigation_pane ( void )
NAVIGATION_SENSITIVE, 1,
-1 );
+ /* Balance estimate */
+ tmpstr = g_build_filename( PIXMAPS_DIR, "ac_liability.png", NULL );
+ pixbuf = gdk_pixbuf_new_from_file ( tmpstr , NULL );
+ g_free ( tmpstr );
+ gtk_tree_store_append(GTK_TREE_STORE(navigation_model), &iter, NULL);
+ gtk_tree_store_set(GTK_TREE_STORE(navigation_model), &iter,
+ NAVIGATION_PIX, pixbuf,
+ NAVIGATION_TEXT, _("Credits simulator"),
+ NAVIGATION_PIX_VISIBLE, TRUE,
+ NAVIGATION_FONT, 800,
+ NAVIGATION_PAGE, GSB_GENERAL_FINANCIAL_PAGE,
+ NAVIGATION_ACCOUNT, -1,
+ NAVIGATION_REPORT, -1,
+ NAVIGATION_SENSITIVE, 1,
+ -1 );
+
/* Categories */
- tmpstr = g_build_filename( PIXMAPS_DIR,
- "categories.png", NULL );
+ tmpstr = g_build_filename( PIXMAPS_DIR, "categories.png", NULL );
pixbuf = gdk_pixbuf_new_from_file ( tmpstr , NULL );
g_free ( tmpstr );
gtk_tree_store_append(GTK_TREE_STORE(navigation_model), &iter, NULL);
@@ -310,8 +323,7 @@ GtkWidget * create_navigation_pane ( void )
-1 );
/* Budgetary lines */
- tmpstr = g_build_filename( PIXMAPS_DIR,
- "budgetary_lines.png", NULL );
+ tmpstr = g_build_filename( PIXMAPS_DIR, "budgetary_lines.png", NULL );
pixbuf = gdk_pixbuf_new_from_file ( tmpstr , NULL );
g_free ( tmpstr );
gtk_tree_store_append(GTK_TREE_STORE(navigation_model), &iter, NULL);
@@ -327,8 +339,7 @@ GtkWidget * create_navigation_pane ( void )
-1 );
/* Reports */
- tmpstr = g_build_filename( PIXMAPS_DIR,
- "reports.png", NULL );
+ tmpstr = g_build_filename( PIXMAPS_DIR, "reports.png", NULL );
pixbuf = gdk_pixbuf_new_from_file ( tmpstr , NULL );
g_free ( tmpstr );
gtk_tree_store_append(GTK_TREE_STORE(navigation_model), &reports_iter, NULL);
@@ -1017,14 +1028,15 @@ void gsb_navigation_update_statement_label ( gint account_number )
gchar* tmp_str;
gchar* tmp_str1;
gchar* tmp_str2;
+ gsb_real amount;
reconcile_number = gsb_data_reconcile_get_account_last_number ( account_number );
+ amount = gsb_data_account_get_marked_balance ( account_number );
if ( reconcile_number )
{
tmp_str1 = gsb_format_gdate ( gsb_data_reconcile_get_final_date (
reconcile_number ) );
- tmp_str2 = gsb_real_get_string_with_currency (
- gsb_data_account_get_marked_balance ( account_number ),
+ tmp_str2 = gsb_real_get_string_with_currency ( amount,
gsb_data_account_get_currency ( account_number ), TRUE );
tmp_str = g_strconcat ( _("Last statement: "), tmp_str1, " - ",
@@ -1034,6 +1046,17 @@ void gsb_navigation_update_statement_label ( gint account_number )
g_free ( tmp_str1 );
g_free ( tmp_str2 );
}
+ else if ( amount.mantissa != 0 )
+ {
+ tmp_str2 = gsb_real_get_string_with_currency (amount,
+ gsb_data_account_get_currency ( account_number ), TRUE );
+
+ tmp_str = g_strconcat ( _("Last statement: none"), " - ",
+ _("Reconciled balance: "), tmp_str2, NULL );
+ gtk_label_set_text ( GTK_LABEL ( label_last_statement ), tmp_str);
+ g_free ( tmp_str );
+ g_free ( tmp_str2 );
+ }
else
gtk_label_set_text ( GTK_LABEL ( label_last_statement ),
_("Last statement: none") );
@@ -1203,6 +1226,17 @@ gboolean gsb_gui_navigation_select_line ( GtkTreeSelection *selection,
payee_fill_tree ();
break;
+ case GSB_GENERAL_FINANCIAL_PAGE:
+ notice_debug ("Credits simulator page selected");
+
+ /* set the title */
+ title = g_strdup(_("Credits simulator"));
+
+ /* what to be done if switch to that page */
+ gsb_form_set_expander_visible (FALSE, FALSE);
+ bet_finance_switch_simulator_page ( );
+ break;
+
case GSB_CATEGORIES_PAGE:
notice_debug ("Category page selected");
diff --git a/src/structures.h b/src/structures.h
index 745f028..0641f90 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -53,13 +53,16 @@ struct gsb_etat_t
gint affichage_exercice_automatique; /* automatic fyear :0 to set according to the date, 2 according to value date */
gint automatic_completion_payee; /* 1 pour autoriser la completion automatique des opérations */
gboolean limit_completion_to_current_account; /* Limit payee completion to current account or do a full search. */
- gint formulaire_distinct_par_compte; /* à 1 si le formulaire est différent pour chaque compte */
gint affiche_nb_ecritures_listes;
gint largeur_auto_colonnes;
gint retient_affichage_par_compte; /* à 1 si les caractéristiques de l'affichage (R, non R ...) diffèrent par compte */
gint en_train_de_sauvegarder;
gint en_train_de_charger;
+
+ /* Fonts & logo */
gint utilise_logo;
+ gboolean is_pixmaps_dir; /* TRUE if path_icon == PIXMAPS_DIR */
+ gchar *name_logo;
gint display_grisbi_title; /* selection du titre principal de grisbi */
gint display_toolbar; /** Display mode of toolbar. */
diff --git a/src/traitement_variables.c b/src/traitement_variables.c
index df54c39..6b87abf 100644
--- a/src/traitement_variables.c
+++ b/src/traitement_variables.c
@@ -30,6 +30,7 @@
/*START_INCLUDE*/
#include "traitement_variables.h"
#include "bet_data.h"
+#include "bet_future.h"
#include "gsb_currency.h"
#include "gsb_data_account.h"
#include "gsb_data_archive.h"
@@ -52,6 +53,7 @@
#include "gsb_data_scheduled.h"
#include "gsb_data_transaction.h"
#include "gsb_form_scheduler.h"
+#include "gsb_select_icon.h"
#include "gsb_form_widget.h"
#include "gsb_fyear.h"
#include "menu.h"
@@ -295,12 +297,11 @@ void init_variables ( void )
affichage_echeances_perso_nb_libre = 0;
affichage_echeances_perso_j_m_a = PERIODICITY_DAYS;
-
no_devise_totaux_tiers = 1;
no_devise_totaux_categ = 1;
no_devise_totaux_ib = 1;
- /* initialization of titles */
+ /* initialization of titles and logo part */
titre_fichier = g_strdup( _("My accounts") );
if ( initial_file_title && strlen ( initial_file_title ) )
g_free ( initial_file_title );
@@ -310,6 +311,13 @@ void init_variables ( void )
g_free ( initial_holder_title );
initial_holder_title = NULL;
+ etat.is_pixmaps_dir = TRUE;
+ if ( etat.name_logo && strlen ( etat.name_logo ) )
+ g_free ( etat.name_logo );
+ etat.name_logo = NULL;
+ gsb_select_icon_init_logo_variables ();
+
+
adresse_commune = NULL;
adresse_secondaire = NULL;
hooks/post-receive
--
grisbi
More information about the cvs
mailing list