[grisbi-cvs] [SCM] grisbi branch, master, updated. 35d0852a97a3014c9b0aabc82d9a79c71f17c0cd
Pierre Biava
nobody at users.sourceforge.net
Tue Aug 24 19:10:52 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 35d0852a97a3014c9b0aabc82d9a79c71f17c0cd (commit)
via 7997fa6a0f9c0a486a9a24e729334879a41db0e8 (commit)
via c8c5eeb55c57c2f56f2419c70be58618e8338e23 (commit)
via 96c2bc7b596a48cbf4f0c2c0fdf641a815554aee (commit)
via b887b0e885723e41d7455bac8897bf980a564c32 (commit)
via 37a070d32a16d6805cee62f6a7c67794763d1c1e (commit)
via 149745d2f34fbf393c11e458a2a7f6dbe4cf1276 (commit)
from f6c711e10af8b33df6dd86fcc5e615b0776c8222 (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 35d0852a97a3014c9b0aabc82d9a79c71f17c0cd
Merge: f6c711e10af8b33df6dd86fcc5e615b0776c8222 7997fa6a0f9c0a486a9a24e729334879a41db0e8
Author: pbiava <pierre.biava at nerim.net>
Date: Tue Aug 24 19:09:12 2010 +0200
Merge branch 'pbiava_print_api'
commit 7997fa6a0f9c0a486a9a24e729334879a41db0e8
Author: pbiava <pierre.biava at nerim.net>
Date: Tue Aug 24 18:57:38 2010 +0200
Adding printing of the tables of credits and amortization
commit c8c5eeb55c57c2f56f2419c70be58618e8338e23
Author: pbiava <pierre.biava at nerim.net>
Date: Tue Aug 24 18:33:01 2010 +0200
update strings fr
commit 96c2bc7b596a48cbf4f0c2c0fdf641a815554aee
Author: pbiava <pierre.biava at nerim.net>
Date: Tue Aug 24 18:32:28 2010 +0200
update icon ac_liability_16.png
commit b887b0e885723e41d7455bac8897bf980a564c32
Author: pbiava <pierre.biava at nerim.net>
Date: Mon Aug 23 18:34:55 2010 +0200
update strings fr
commit 37a070d32a16d6805cee62f6a7c67794763d1c1e
Author: pbiava <pierre.biava at nerim.net>
Date: Sun Aug 22 19:59:49 2010 +0200
Fixed a bug in the column headings of table transactions when printing
commit 149745d2f34fbf393c11e458a2a7f6dbe4cf1276
Author: pbiava <pierre.biava at nerim.net>
Date: Thu Aug 19 20:49:54 2010 +0200
add print_tree_view_list
-----------------------------------------------------------------------
Changes:
diff --git a/pixmaps/ac_liability_16.png b/pixmaps/ac_liability_16.png
index f1c9403..f820f9c 100644
Binary files a/pixmaps/ac_liability_16.png and b/pixmaps/ac_liability_16.png differ
diff --git a/po/POTFILES.in b/po/POTFILES.in
index f7e69e9..81e7e93 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -123,6 +123,7 @@ src/print_config.c
src/print_dialog_config.c
src/print_report.c
src/print_transactions_list.c
+src/print_tree_view_list.c
src/qif.c
src/tiers_onglet.c
src/tip.c
diff --git a/po/fr.po b/po/fr.po
index 4e36030..35ff22d 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-08-15 14:35+0200\n"
+"POT-Creation-Date: 2010-08-23 22:59+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"
@@ -60,7 +60,7 @@ msgid "Account balances in %s"
msgstr "Solde des comptes en %s"
#: ../src/accueil.c:481 ../src/accueil.c:559 ../src/accueil.c:636
-#: ../src/accueil.c:705
+#: ../src/accueil.c:705 ../src/bet_finance_ui.c:1621
msgid " at "
msgstr " au "
@@ -234,8 +234,8 @@ msgid "Click on preview to change logo"
msgstr "Cliquer sur la prévisualisation pour modifier le logo"
#. Change fonts
-#: ../src/affichage.c:202 ../src/print_report.c:105 ../src/print_report.c:405
-#: ../src/print_transactions_list.c:261
+#: ../src/affichage.c:202 ../src/print_report.c:105 ../src/print_report.c:406
+#: ../src/print_transactions_list.c:258 ../src/print_tree_view_list.c:924
msgid "Fonts"
msgstr "Polices"
@@ -653,9 +653,9 @@ msgstr "Capital emprunté"
#. Duration
#. create columns
#. Duration
-#: ../src/bet_config.c:1196 ../src/bet_finance_ui.c:258
-#: ../src/bet_finance_ui.c:461 ../src/bet_finance_ui.c:1047
-#: ../src/bet_finance_ui.c:1452
+#: ../src/bet_config.c:1196 ../src/bet_finance_ui.c:263
+#: ../src/bet_finance_ui.c:465 ../src/bet_finance_ui.c:1103
+#: ../src/bet_finance_ui.c:1537
msgid "Duration"
msgstr "Durée"
@@ -669,13 +669,13 @@ msgstr "Date de la première échéance"
#. taux
#. Annuel rate interest
-#: ../src/bet_config.c:1227 ../src/bet_finance_ui.c:1033
-#: ../src/bet_finance_ui.c:1438
+#: ../src/bet_config.c:1227 ../src/bet_finance_ui.c:1089
+#: ../src/bet_finance_ui.c:1523
msgid "Annuel rate interest"
msgstr "Taux d'intérêt annuel"
-#: ../src/bet_config.c:1236 ../src/bet_finance_ui.c:253
-#: ../src/bet_finance_ui.c:1042 ../src/bet_finance_ui.c:1447
+#: ../src/bet_config.c:1236 ../src/bet_finance_ui.c:258
+#: ../src/bet_finance_ui.c:1098 ../src/bet_finance_ui.c:1532
msgid "%"
msgstr "%"
@@ -683,15 +683,15 @@ msgstr "%"
msgid "Fees per month"
msgstr "Frais par échéance"
-#: ../src/bet_config.c:1267 ../src/bet_finance_ui.c:389
+#: ../src/bet_config.c:1267 ../src/bet_finance_ui.c:393
msgid "Rate Type"
msgstr "Type de taux"
-#: ../src/bet_config.c:1271 ../src/bet_finance_ui.c:393
+#: ../src/bet_config.c:1271 ../src/bet_finance_ui.c:397
msgid "CAGR"
msgstr "Taux actuariel"
-#: ../src/bet_config.c:1275 ../src/bet_finance_ui.c:397
+#: ../src/bet_config.c:1275 ../src/bet_finance_ui.c:401
msgid "Proportional rate"
msgstr "Taux proportionnel"
@@ -699,64 +699,64 @@ msgstr "Taux proportionnel"
msgid "Apply"
msgstr "Appliquer"
-#: ../src/bet_config.c:1336 ../src/bet_finance_ui.c:791
-#: ../src/bet_finance_ui.c:1541
+#: ../src/bet_config.c:1336 ../src/bet_finance_ui.c:827
+#: ../src/bet_finance_ui.c:1648
msgid " year "
msgstr " an "
-#: ../src/bet_config.c:1338 ../src/bet_finance_ui.c:793
-#: ../src/bet_finance_ui.c:1543
+#: ../src/bet_config.c:1338 ../src/bet_finance_ui.c:829
+#: ../src/bet_finance_ui.c:1650
msgid " years "
msgstr " ans "
-#: ../src/bet_config.c:1388 ../src/bet_finance_ui.c:652
+#: ../src/bet_config.c:1388 ../src/bet_finance_ui.c:673
msgid "You must enter at least one value for the capital"
msgstr "Vous devez entrer au moins une valeur pour le capital"
#. set the title
-#: ../src/bet_finance_ui.c:208 ../src/fenetre_principale.c:277
+#: ../src/bet_finance_ui.c:213 ../src/fenetre_principale.c:277
#: ../src/navigation.c:300 ../src/navigation.c:1233
msgid "Credits simulator"
msgstr "Simulateur de crédits"
#. capital
-#: ../src/bet_finance_ui.c:219 ../src/bet_finance_ui.c:1428
+#: ../src/bet_finance_ui.c:224 ../src/bet_finance_ui.c:1513
msgid "Loan capital"
msgstr "Capital emprunté"
#. taux
-#: ../src/bet_finance_ui.c:243
+#: ../src/bet_finance_ui.c:248
msgid "Annual interest"
msgstr "Intérêt annuel"
-#: ../src/bet_finance_ui.c:273
+#: ../src/bet_finance_ui.c:278
msgid "Entering Detailed"
msgstr "Saisie détaillée"
-#: ../src/bet_finance_ui.c:276
-msgid "Calculate"
-msgstr "Calculer"
+#: ../src/bet_finance_ui.c:315
+msgid "Between 3 and 18 months"
+msgstr "Entre 3 et 18 mois"
-#: ../src/bet_finance_ui.c:312
+#: ../src/bet_finance_ui.c:316
msgid "Between 1 and 15 years"
msgstr "Entre 1 et 15 ans"
-#: ../src/bet_finance_ui.c:313
+#: ../src/bet_finance_ui.c:317
msgid "Between 15 and 30 years"
msgstr "Entre 15 et 30 ans"
#. Fees
-#: ../src/bet_finance_ui.c:368 ../src/bet_finance_ui.c:546
+#: ../src/bet_finance_ui.c:372 ../src/bet_finance_ui.c:560
msgid "Fees"
msgstr "Frais"
-#: ../src/bet_finance_ui.c:378
+#: ../src/bet_finance_ui.c:382
#, c-format
msgid "% of borrowed capital"
msgstr "% du capital emprunté"
#. Number of periods
-#: ../src/bet_finance_ui.c:478
+#: ../src/bet_finance_ui.c:484
msgid ""
"Number\n"
"of periods"
@@ -765,7 +765,7 @@ msgstr ""
"d'échéances"
#. Loan capital
-#: ../src/bet_finance_ui.c:495
+#: ../src/bet_finance_ui.c:503
msgid ""
"Loan\n"
"capital"
@@ -774,7 +774,7 @@ msgstr ""
"emprunté"
#. Annuel rate interest
-#: ../src/bet_finance_ui.c:512
+#: ../src/bet_finance_ui.c:522
msgid ""
"Annuel\n"
"rate interest"
@@ -783,7 +783,7 @@ msgstr ""
"annuel"
#. Amount without fees
-#: ../src/bet_finance_ui.c:529
+#: ../src/bet_finance_ui.c:541
msgid ""
"Amount\n"
"without fees"
@@ -792,72 +792,100 @@ msgstr ""
"hors frais"
#. Monthly paid
-#: ../src/bet_finance_ui.c:563 ../src/bet_finance_ui.c:1200
+#: ../src/bet_finance_ui.c:579 ../src/bet_finance_ui.c:1274
msgid "Monthly paid"
msgstr "Mensualité"
#. Total cost
-#: ../src/bet_finance_ui.c:580
+#: ../src/bet_finance_ui.c:598
msgid "Total cost"
msgstr "Coût total"
-#: ../src/bet_finance_ui.c:592
+#: ../src/bet_finance_ui.c:610
msgid "Approximate cost"
msgstr "Coût approximatif"
-#: ../src/bet_finance_ui.c:965
+#: ../src/bet_finance_ui.c:1001 ../src/bet_finance_ui.c:1778
msgid "View amortization table"
msgstr "Afficher le tableau d'amortissement"
-#: ../src/bet_finance_ui.c:973
+#: ../src/bet_finance_ui.c:1007 ../src/bet_finance_ui.c:1562
+#: ../src/bet_finance_ui.c:1793 ../src/bet_finance_ui.c:1847
+msgid "Print the array"
+msgstr "Imprimer le tableau"
+
+#: ../src/bet_finance_ui.c:1011 ../src/bet_finance_ui.c:1834
msgid "View credits simulator"
msgstr "Afficher le simulateur de crédits"
-#: ../src/bet_finance_ui.c:1012 ../src/bet_finance_ui.c:1416
-#: ../src/bet_finance_ui.c:1514
+#: ../src/bet_finance_ui.c:1017
+msgid "Print amortization table"
+msgstr "Imprimer le tableau d'amortissement"
+
+#: ../src/bet_finance_ui.c:1068 ../src/bet_finance_ui.c:1501
+#: ../src/bet_finance_ui.c:1621
msgid "Amortization Table"
msgstr "Tableau d'amortissement"
#. capital
-#: ../src/bet_finance_ui.c:1023
+#: ../src/bet_finance_ui.c:1079
msgid "Loan amount"
msgstr "Montant emprunté"
-#: ../src/bet_finance_ui.c:1105 ../src/bet_future.c:770 ../src/bet_tab.c:615
+#: ../src/bet_finance_ui.c:1167 ../src/bet_future.c:770 ../src/bet_tab.c:615
#: ../src/etats_affiche.c:2405 ../src/export_csv.c:760
#: ../src/gsb_assistant_reconcile_config.c:594 ../src/gsb_form.c:1283
-#: ../src/gsb_form_widget.c:412 ../src/gsb_reconcile.c:155
+#: ../src/gsb_form_widget.c:412 ../src/gsb_reconcile.c:158
#: ../src/gsb_scheduler_list.c:339 ../src/gsb_transactions_list.c:146
#: ../src/import.c:3238 ../src/import_csv.c:79
#: ../src/traitement_variables.c:79
msgid "Date"
msgstr "Date"
-#: ../src/bet_finance_ui.c:1115 ../src/etats_affiche.c:2398
+#: ../src/bet_finance_ui.c:1179 ../src/etats_affiche.c:2398
#: ../src/traitement_variables.c:96
msgid "Number"
msgstr "N°"
#. Capital restant dû
-#: ../src/bet_finance_ui.c:1132
+#: ../src/bet_finance_ui.c:1198
msgid "Capital remaining"
msgstr "Capital restant dû"
#. Interests
-#: ../src/bet_finance_ui.c:1149
+#: ../src/bet_finance_ui.c:1217
msgid "Interests"
msgstr "Intérêts"
#. Capital repaid
-#: ../src/bet_finance_ui.c:1166
+#: ../src/bet_finance_ui.c:1236
msgid "Capital repaid"
msgstr "Capital remboursé"
#. Fees
-#: ../src/bet_finance_ui.c:1183
+#: ../src/bet_finance_ui.c:1255
msgid "Insurance"
msgstr "Frais"
+#. Set up dialog
+#: ../src/bet_finance_ui.c:1559 ../src/bet_finance_ui.c:1790
+#: ../src/bet_finance_ui.c:1844 ../src/barre_outils.c:139
+#: ../src/etats_onglet.c:148 ../src/print_config.c:80
+msgid "Print"
+msgstr "Imprimer"
+
+#: ../src/bet_finance_ui.c:1760 ../src/bet_finance_ui.c:1763
+msgid "Calculate"
+msgstr "Calculer"
+
+#: ../src/bet_finance_ui.c:1774
+msgid "Amortization"
+msgstr "Amortissement"
+
+#: ../src/bet_finance_ui.c:1830
+msgid "Credits"
+msgstr "Crédits"
+
#: ../src/bet_future.c:227 ../src/bet_future.c:1773 ../src/bet_future.c:1872
#: ../src/bet_future.c:2419
msgid ""
@@ -1150,9 +1178,9 @@ msgstr "Cochez la case pour changer automatiquement de date de début"
msgid "Description"
msgstr "Description"
-#: ../src/bet_tab.c:670 ../src/export_csv.c:787 ../src/gsb_reconcile.c:158
+#: ../src/bet_tab.c:670 ../src/export_csv.c:787 ../src/gsb_reconcile.c:161
#: ../src/gsb_scheduler_list.c:340 ../src/gsb_transactions_list.c:152
-#: ../src/gsb_transactions_list.c:3013 ../src/import_csv.c:88
+#: ../src/gsb_transactions_list.c:3019 ../src/import_csv.c:88
#: ../src/traitement_variables.c:85
msgid "Balance"
msgstr "Solde"
@@ -1269,12 +1297,6 @@ msgstr "Rapprocher"
msgid "Start account reconciliation"
msgstr "Commencer à effectuer un rapprochement sur le compte"
-#. Set up dialog
-#: ../src/barre_outils.c:139 ../src/etats_onglet.c:148
-#: ../src/print_config.c:80
-msgid "Print"
-msgstr "Imprimer"
-
#: ../src/barre_outils.c:144
msgid "Print the transactions list"
msgstr "Imprimer la liste des opérations"
@@ -2031,13 +2053,13 @@ msgid "Result without financial year"
msgstr "Resultat sans exercice"
#: ../src/etats_affiche.c:1399 ../src/gsb_scheduler_list.c:950
-#: ../src/gsb_transactions_list.c:3440
+#: ../src/gsb_transactions_list.c:3446
#, c-format
msgid "Transfer to %s"
msgstr "Virement vers %s"
#: ../src/etats_affiche.c:1401 ../src/gsb_scheduler_list.c:953
-#: ../src/gsb_transactions_list.c:3443
+#: ../src/gsb_transactions_list.c:3449
#, c-format
msgid "Transfer from %s"
msgstr "Virement de %s"
@@ -2087,7 +2109,7 @@ msgstr "Total général"
#: ../src/etats_affiche.c:1853 ../src/export_csv.c:571
#: ../src/gsb_data_category.c:1054 ../src/gsb_form.c:727
#: ../src/gsb_form.c:2757 ../src/gsb_form.c:3159
-#: ../src/gsb_form_scheduler.c:316 ../src/gsb_transactions_list.c:3418
+#: ../src/gsb_form_scheduler.c:316 ../src/gsb_transactions_list.c:3424
msgid "Split of transaction"
msgstr "Opération ventilée"
@@ -3397,7 +3419,7 @@ msgstr "Format CSV"
#. set the initial balance
#: ../src/export_csv.c:277 ../src/gsb_account_property.c:520
-#: ../src/gsb_assistant_reconcile_config.c:433 ../src/gsb_reconcile.c:209
+#: ../src/gsb_assistant_reconcile_config.c:433 ../src/gsb_reconcile.c:212
#: ../src/gsb_reconcile_config.c:232
msgid "Initial balance"
msgstr "Solde initial"
@@ -5112,7 +5134,7 @@ msgstr ""
"rapprochement\""
#. set the final balance
-#: ../src/gsb_assistant_reconcile_config.c:444 ../src/gsb_reconcile.c:217
+#: ../src/gsb_assistant_reconcile_config.c:444 ../src/gsb_reconcile.c:220
#: ../src/gsb_reconcile_config.c:97 ../src/gsb_reconcile_config.c:246
msgid "Final balance"
msgstr "Solde final"
@@ -5230,7 +5252,7 @@ msgstr "Sélectionnez le rapprochement à associer aux opérations sélectionné
msgid "No selection found, the transactions are not modified."
msgstr "Aucune opération sélectionnée, elles ne sont pas modifiées."
-#: ../src/gsb_bank.c:386 ../src/gsb_reconcile.c:417
+#: ../src/gsb_bank.c:386 ../src/gsb_reconcile.c:420
msgid "None"
msgstr "Aucun"
@@ -8201,11 +8223,11 @@ msgstr "Associer ces opérations avec"
msgid "with plugins"
msgstr "avec les greffons"
-#: ../src/gsb_reconcile.c:127 ../src/gsb_transactions_list.c:155
+#: ../src/gsb_reconcile.c:130 ../src/gsb_transactions_list.c:155
msgid "Reconciliation reference"
msgstr "N° rapprochement"
-#: ../src/gsb_reconcile.c:132
+#: ../src/gsb_reconcile.c:135
msgid ""
"If reconciliation reference ends in a digit, it is automatically incremented "
"at each reconciliation.\n"
@@ -8216,25 +8238,25 @@ msgstr ""
"Vous pouvez le laisser vide si vous ne voulez pas garder une trace du "
"rapprochement."
-#: ../src/gsb_reconcile.c:225
+#: ../src/gsb_reconcile.c:228
msgid "Checking"
msgstr "Pointage"
-#: ../src/gsb_reconcile.c:236
+#: ../src/gsb_reconcile.c:239
msgid "Variance"
msgstr "Écart"
-#: ../src/gsb_reconcile.c:251
+#: ../src/gsb_reconcile.c:254
msgid "Sort by method of payment"
msgstr "Tri par mode de règlement"
#. set the title
-#: ../src/gsb_reconcile.c:438
+#: ../src/gsb_reconcile.c:441
#, c-format
msgid " <b>%s reconciliation</b> "
msgstr " <b>%s rapprochement</b> "
-#: ../src/gsb_reconcile.c:511
+#: ../src/gsb_reconcile.c:514
msgid ""
"There is a variance in balances, check that both final balance and initial "
"balance minus marked transactions are equal."
@@ -8242,12 +8264,12 @@ msgstr ""
"Il y a une inconsistance dans les soldes, vérifiez que le solde de départ "
"moins les opérations marquées donnent bien le solde final."
-#: ../src/gsb_reconcile.c:512 ../src/gsb_reconcile.c:521
-#: ../src/gsb_reconcile.c:533 ../src/gsb_reconcile.c:541
+#: ../src/gsb_reconcile.c:515 ../src/gsb_reconcile.c:524
+#: ../src/gsb_reconcile.c:536 ../src/gsb_reconcile.c:544
msgid "Reconciliation can't be completed."
msgstr "La réconciliation ne peux pas être terminée."
-#: ../src/gsb_reconcile.c:520
+#: ../src/gsb_reconcile.c:523
msgid ""
"There is already a reconcile with that name, you must use another name or "
"let it free.\n"
@@ -8259,12 +8281,12 @@ msgstr ""
" Si le nom du rapprochement se termine par un chiffre,\n"
"il sera automatiquement incrémenté."
-#: ../src/gsb_reconcile.c:530
+#: ../src/gsb_reconcile.c:533
#, c-format
msgid "Invalid date: '%s'"
msgstr "Date invalide: '%s'"
-#: ../src/gsb_reconcile.c:540
+#: ../src/gsb_reconcile.c:543
msgid ""
"You need to set a name to the reconciliation ; at least, set a number,\n"
"it will be automatically incremented later"
@@ -8272,7 +8294,7 @@ msgstr ""
"Vous devez définir un nom pour le rapprochement ou au moins, un numéro,\n"
"il sera automatiquement incrémenté plus tard"
-#: ../src/gsb_reconcile.c:553
+#: ../src/gsb_reconcile.c:556
#, c-format
msgid "Last statement: %s"
msgstr "Dernier relevé : %s"
@@ -8520,7 +8542,7 @@ msgstr "Supprimer une opération planifiée."
msgid "Delete one or all occurences of scheduled transaction."
msgstr "Supprimer cette occurence ou toutes, de l'opération sélectionnée"
-#: ../src/gsb_transactions_list.c:573 ../src/gsb_transactions_list.c:3555
+#: ../src/gsb_transactions_list.c:573 ../src/gsb_transactions_list.c:3561
msgid ""
"Some children didn't find their mother in the list, this shouldn't happen "
"and there is probably a bug behind that. Please contact the Grisbi team.\n"
@@ -8690,19 +8712,19 @@ msgid "Cannot move a transfer on his contra-account"
msgstr "Impossible de déplacer un virement vers son compte de destination"
#. sort by line
-#: ../src/gsb_transactions_list.c:2967
+#: ../src/gsb_transactions_list.c:2973
msgid "Sort list by :"
msgstr "Tri par :"
-#: ../src/gsb_transactions_list.c:3427
+#: ../src/gsb_transactions_list.c:3433
msgid "Transfer to a deleted account"
msgstr "Virement vers un compte supprimé"
-#: ../src/gsb_transactions_list.c:3429
+#: ../src/gsb_transactions_list.c:3435
msgid "Transfer from a deleted account"
msgstr "Virement d'un compte supprimé"
-#: ../src/gsb_transactions_list.c:3584
+#: ../src/gsb_transactions_list.c:3590
msgid ""
"You have just recovered an archive, if you don't see any new transaction, "
"remember that the R transactions are not showed so the archived transactions "
@@ -10305,74 +10327,75 @@ msgstr "S'il vous plaît sélectionnez un état avant d'essayer de l'imprimer."
msgid "No report selected"
msgstr "Aucun état sélectionné"
-#: ../src/print_report.c:416
+#: ../src/print_report.c:417
msgid "Lines font"
msgstr "Police des lignes"
-#: ../src/print_report.c:425 ../src/print_report.c:445
-#: ../src/print_transactions_list.c:282 ../src/print_transactions_list.c:305
+#: ../src/print_report.c:426 ../src/print_report.c:446
+#: ../src/print_transactions_list.c:279 ../src/print_transactions_list.c:302
+#: ../src/print_tree_view_list.c:941 ../src/print_tree_view_list.c:958
#: ../src/utils_font.c:121
msgid "Choosing font"
msgstr "Choisissez une police"
-#: ../src/print_report.c:436
+#: ../src/print_report.c:437
msgid "Title's font"
msgstr "Police des titres"
-#: ../src/print_transactions_list.c:145
+#: ../src/print_transactions_list.c:142 ../src/print_tree_view_list.c:883
msgid "Layout"
msgstr "Mise en page"
-#: ../src/print_transactions_list.c:156
+#: ../src/print_transactions_list.c:153 ../src/print_tree_view_list.c:892
msgid "Print a title : "
msgstr "Imprimer un titre : "
-#: ../src/print_transactions_list.c:172
+#: ../src/print_transactions_list.c:169
msgid "Select dates interval : "
msgstr "Sélectionner l'intervalle des dates : "
-#: ../src/print_transactions_list.c:185
+#: ../src/print_transactions_list.c:182
msgid "Initial date : "
msgstr "Date initiale"
-#: ../src/print_transactions_list.c:197
+#: ../src/print_transactions_list.c:194
msgid "Final date : "
msgstr "Date finale"
-#: ../src/print_transactions_list.c:209
+#: ../src/print_transactions_list.c:206
msgid "Use value date"
msgstr "Utiliser la date de valeur"
#. set up all the checkbuttons
-#: ../src/print_transactions_list.c:222
+#: ../src/print_transactions_list.c:219 ../src/print_tree_view_list.c:903
msgid "Draw the lines between transactions"
msgstr "Bordures : séparer les lignes par un trait"
-#: ../src/print_transactions_list.c:229
+#: ../src/print_transactions_list.c:226 ../src/print_tree_view_list.c:910
msgid "Draw the lines between the columns"
msgstr "Bordures : séparer les colonnes par un trait"
-#: ../src/print_transactions_list.c:237
+#: ../src/print_transactions_list.c:234
msgid "Fill the background as the transactions list"
msgstr "Utiliser le même fond d'écran que la liste des transactions."
-#: ../src/print_transactions_list.c:245
+#: ../src/print_transactions_list.c:242
msgid "Print the archives lines"
msgstr "Imprimer les opérations archivées"
-#: ../src/print_transactions_list.c:253
+#: ../src/print_transactions_list.c:250 ../src/print_tree_view_list.c:917
msgid "Print the names of the columns"
msgstr "Imprimer le nom des colonnes"
-#: ../src/print_transactions_list.c:270
+#: ../src/print_transactions_list.c:267 ../src/print_tree_view_list.c:931
msgid "Transactions font"
msgstr "Police de la liste des opérations"
-#: ../src/print_transactions_list.c:293
+#: ../src/print_transactions_list.c:290 ../src/print_tree_view_list.c:948
msgid "Title font"
msgstr "Police du titre"
-#: ../src/print_transactions_list.c:369
+#: ../src/print_transactions_list.c:366 ../src/print_tree_view_list.c:141
msgid "Fonts & layout"
msgstr "Polices et mise en page"
diff --git a/src/Makefile.am b/src/Makefile.am
index 9e3f56a..4784a78 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -124,6 +124,7 @@ libgrisbi_la_SOURCES = \
print_dialog_config.c \
print_report.c \
print_transactions_list.c \
+ print_tree_view_list.c \
qif.c \
tiers_onglet.c \
tip.c \
@@ -272,6 +273,7 @@ libgrisbi_la_SOURCES = \
print_dialog_config.h \
print_report.h \
print_transactions_list.h \
+ print_tree_view_list.h \
qif.h \
tip.h \
structures.h \
diff --git a/src/bet_finance_ui.c b/src/bet_finance_ui.c
index 403d8dd..1ec7db2 100644
--- a/src/bet_finance_ui.c
+++ b/src/bet_finance_ui.c
@@ -27,6 +27,7 @@
#include "bet_data_finance.h"
#include "dialog.h"
#include "fenetre_principale.h"
+#include "gsb_automem.h"
#include "gsb_combo_box.h"
#include "gsb_currency.h"
#include "gsb_data_account.h"
@@ -34,6 +35,7 @@
#include "gsb_real.h"
#include "mouse.h"
#include "navigation.h"
+#include "print_tree_view_list.h"
#include "structures.h"
#include "utils_dates.h"
#include "erreur.h"
@@ -73,11 +75,13 @@
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_toolbar ( GtkWidget *parent, GtkWidget *tree_view );
static GtkWidget *bet_finance_create_amortization_tree_view ( GtkWidget *container, gint origin );
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 GtkWidget *bet_finance_create_simulator_toolbar ( GtkWidget *parent, GtkWidget *tree_view );
static gboolean bet_finance_data_list_button_press ( GtkWidget *tree_view,
GdkEventButton *ev,
GtkWidget *page );
@@ -190,12 +194,13 @@ GtkWidget *bet_finance_create_simulator_page ( void )
GtkWidget *widget;
GtkWidget *vbox, *hbox;
GtkWidget *align;
+ GtkWidget *label_title;
GtkWidget *label;
GtkWidget *spin_button = NULL;
- GtkWidget *button;
GtkWidget *tree_view;
GtkWidget *expander;
- GtkEntryCompletion *completion;
+ GtkWidget *toolbar;
+/* GtkEntryCompletion *completion; */
devel_debug (NULL);
@@ -205,8 +210,8 @@ GtkWidget *bet_finance_create_simulator_page ( void )
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 );
+ label_title = gtk_label_new ( _("Credits simulator") );
+ gtk_container_add ( GTK_CONTAINER ( align ), label_title );
/* Choix des données sources */
align = gtk_alignment_new (0.5, 0.0, 0.0, 0.0);
@@ -221,9 +226,9 @@ GtkWidget *bet_finance_create_simulator_page ( void )
gtk_label_set_justify ( GTK_LABEL ( label ), GTK_JUSTIFY_LEFT );
gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 5 );
- completion = gtk_entry_completion_new ( );
+/* completion = gtk_entry_completion_new ( ); */
widget = gtk_entry_new ( );
- gtk_entry_set_completion ( GTK_ENTRY ( widget ), completion );
+/* gtk_entry_set_completion ( GTK_ENTRY ( widget ), completion ); */
/* printf ("nbre de caractères avant completion =%d\n",
gtk_entry_completion_get_minimum_key_length ( completion ) ); */
gtk_entry_set_text ( GTK_ENTRY ( widget ), "10000" );
@@ -273,16 +278,8 @@ GtkWidget *bet_finance_create_simulator_page ( void )
expander = gtk_expander_new ( _("Entering Detailed") );
gtk_box_pack_start ( GTK_BOX ( hbox ), expander, TRUE, TRUE, 5 );
- button = gtk_button_new_with_label ( _("Calculate") );
- 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 ),
@@ -291,6 +288,12 @@ GtkWidget *bet_finance_create_simulator_page ( void )
/* 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 );
+ g_object_set_data ( G_OBJECT ( tree_view ), "label_title", label_title );
+
+ /* on y ajoute la barre d'outils */
+ toolbar = bet_finance_create_simulator_toolbar ( page, tree_view );
+ gtk_box_pack_start ( GTK_BOX ( page ), toolbar, FALSE, FALSE, 0 );
+ gtk_box_reorder_child ( GTK_BOX ( page ), toolbar, 0 );
gtk_widget_show_all ( page );
gtk_widget_hide ( widget );
@@ -472,6 +475,8 @@ GtkWidget *bet_finance_create_data_tree_view ( GtkWidget *container )
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_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_FINANCE_DURATION_COLUMN ) );
g_free ( title );
/* Number of periods */
@@ -489,6 +494,8 @@ GtkWidget *bet_finance_create_data_tree_view ( GtkWidget *container )
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_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_FINANCE_NBRE_ECHEANCE_COLUMN ) );
g_free ( title );
/* Loan capital */
@@ -506,6 +513,8 @@ GtkWidget *bet_finance_create_data_tree_view ( GtkWidget *container )
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_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_FINANCE_CAPITAL_COLUMN ) );
g_free ( title );
/* Annuel rate interest */
@@ -523,6 +532,8 @@ GtkWidget *bet_finance_create_data_tree_view ( GtkWidget *container )
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_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_FINANCE_TAUX_COLUMN ) );
g_free ( title );
/* Amount without fees */
@@ -540,6 +551,8 @@ GtkWidget *bet_finance_create_data_tree_view ( GtkWidget *container )
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_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_FINANCE_HORS_FRAIS_COLUMN ) );
g_free ( title );
/* Fees */
@@ -557,6 +570,8 @@ GtkWidget *bet_finance_create_data_tree_view ( GtkWidget *container )
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_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_FINANCE_FRAIS_COLUMN ) );
g_free ( title );
/* Monthly paid */
@@ -574,6 +589,8 @@ GtkWidget *bet_finance_create_data_tree_view ( GtkWidget *container )
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_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_FINANCE_ECHEANCE_COLUMN ) );
g_free ( title );
/* Total cost */
@@ -593,6 +610,8 @@ GtkWidget *bet_finance_create_data_tree_view ( GtkWidget *container )
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_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_FINANCE_COUT_COLUMN ) );
g_free ( title );
g_signal_connect ( G_OBJECT ( tree_view ),
@@ -625,6 +644,7 @@ void bet_finance_calculer_clicked ( GtkButton *button, GtkWidget *widget )
GtkWidget *bouton;
GtkWidget *tree_view;
GtkTreeModel *model;
+ GtkTreePath *path;
gdouble taux_frais;
gint duree_min, duree_max;
gint type_taux;
@@ -720,7 +740,16 @@ void bet_finance_calculer_clicked ( GtkButton *button, GtkWidget *widget )
}
bet_finance_list_set_background_color ( tree_view, BET_FINANCE_BACKGROUND_COLOR );
+ path = gtk_tree_path_new_first ( );
+ gtk_tree_view_scroll_to_cell ( GTK_TREE_VIEW ( tree_view ), path, NULL, TRUE, 0.0, 0.0 );
+ gtk_tree_selection_select_path ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( tree_view ) ), path );
+
+ bouton = g_object_get_data ( G_OBJECT ( widget ), "amortization_button" );
+ gtk_widget_set_sensitive ( bouton, TRUE );
+ bouton = g_object_get_data ( G_OBJECT ( widget ), "print_button" );
+ gtk_widget_set_sensitive ( bouton, TRUE );
+ gtk_tree_path_free ( path );
g_free ( s_echeance );
}
@@ -967,6 +996,8 @@ void bet_finance_data_list_context_menu ( GtkWidget *tree_view, gint page_num )
"activate",
G_CALLBACK ( bet_finance_fill_amortization_array ),
tree_selection );
+
+ tmp_str = g_strdup ( _("Print the array") );
}
else
{
@@ -975,11 +1006,27 @@ void bet_finance_data_list_context_menu ( GtkWidget *tree_view, gint page_num )
"activate",
G_CALLBACK ( bet_finance_switch_simulator_page ),
NULL );
+
+ tmp_str = g_strdup ( _("Print amortization table") );
}
gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ), image );
gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+ /* Separator */
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), gtk_separator_menu_item_new() );
+
+ /* Print list */
+ menu_item = gtk_image_menu_item_new_with_label ( tmp_str );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_PRINT, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( print_tree_view_list ),
+ tree_view );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+ g_free ( tmp_str );
+
/* Finish all. */
gtk_widget_show_all ( menu );
gtk_menu_popup ( GTK_MENU( menu ), NULL, NULL, NULL, NULL, 3,
@@ -998,8 +1045,10 @@ GtkWidget *bet_finance_create_amortization_page ( void )
GtkWidget *page;
GtkWidget *hbox;
GtkWidget *align;
+ GtkWidget *label_title;
GtkWidget *label;
GtkWidget *tree_view;
+ GtkWidget *toolbar;
devel_debug (NULL);
@@ -1009,8 +1058,8 @@ GtkWidget *bet_finance_create_amortization_page ( void )
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 ( _("Amortization Table") );
- gtk_container_add ( GTK_CONTAINER ( align ), label );
+ label_title = gtk_label_new ( _("Amortization Table") );
+ gtk_container_add ( GTK_CONTAINER ( align ), label_title );
/* Choix des données sources */
align = gtk_alignment_new (0.5, 0.0, 0.0, 0.0);
@@ -1056,6 +1105,12 @@ GtkWidget *bet_finance_create_amortization_page ( void )
/* création de la liste des données */
tree_view = bet_finance_create_amortization_tree_view ( page, 0 );
g_object_set_data ( G_OBJECT ( page ), "tree_view", tree_view );
+ g_object_set_data ( G_OBJECT ( tree_view ), "label_title", label_title );
+
+ /* on y ajoute la barre d'outils */
+ toolbar = bet_finance_create_amortization_toolbar ( page, tree_view );
+ gtk_box_pack_start ( GTK_BOX ( page ), toolbar, FALSE, FALSE, 0 );
+ gtk_box_reorder_child ( GTK_BOX ( page ), toolbar, 0 );
gtk_widget_show_all ( page );
@@ -1109,6 +1164,8 @@ GtkWidget *bet_finance_create_amortization_tree_view ( GtkWidget *container, gin
"text", BET_AMORTIZATION_DATE_COLUMN,
"cell-background-gdk", BET_AMORTIZATION_BACKGROUND_COLOR,
NULL);
+ g_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_AMORTIZATION_DATE_COLUMN ) );
}
else
{
@@ -1119,6 +1176,8 @@ GtkWidget *bet_finance_create_amortization_tree_view ( GtkWidget *container, gin
"text", BET_AMORTIZATION_NUMBER_COLUMN,
"cell-background-gdk", BET_AMORTIZATION_BACKGROUND_COLOR,
NULL);
+ g_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_AMORTIZATION_NUMBER_COLUMN ) );
}
gtk_tree_view_append_column ( GTK_TREE_VIEW ( tree_view ),
@@ -1143,6 +1202,8 @@ GtkWidget *bet_finance_create_amortization_tree_view ( GtkWidget *container, gin
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_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_AMORTIZATION_CAPITAL_DU_COLUMN ) );
g_free ( title );
/* Interests */
@@ -1160,6 +1221,8 @@ GtkWidget *bet_finance_create_amortization_tree_view ( GtkWidget *container, gin
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_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_AMORTIZATION_INTERETS_COLUMN ) );
g_free ( title );
/* Capital repaid */
@@ -1177,6 +1240,8 @@ GtkWidget *bet_finance_create_amortization_tree_view ( GtkWidget *container, gin
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_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_AMORTIZATION_PRINCIPAL_COLUMN ) );
g_free ( title );
/* Fees*/
@@ -1194,6 +1259,8 @@ GtkWidget *bet_finance_create_amortization_tree_view ( GtkWidget *container, gin
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_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_AMORTIZATION_FRAIS_COLUMN ) );
g_free ( title );
/* Monthly paid */
@@ -1211,6 +1278,8 @@ GtkWidget *bet_finance_create_amortization_tree_view ( GtkWidget *container, gin
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_object_set_data ( G_OBJECT ( column ), "num_col_model",
+ GINT_TO_POINTER ( BET_AMORTIZATION_ECHEANCE_COLUMN ) );
g_free ( title );
if ( origin != SPP_ORIGIN_FINANCE )
@@ -1249,6 +1318,7 @@ void bet_finance_fill_amortization_array ( GtkWidget *menu_item,
GtkTreeModel *store;
GtkTreeModel *model;
GtkTreeIter iter;
+ GtkTreePath *path;
gchar *str_duree;
gchar *str_capital;
gchar *str_taux;
@@ -1327,8 +1397,13 @@ void bet_finance_fill_amortization_array ( GtkWidget *menu_item,
s_amortissement -> capital_du -= s_amortissement -> principal;
}
- g_free ( s_amortissement );
bet_finance_list_set_background_color ( tree_view, BET_AMORTIZATION_BACKGROUND_COLOR );
+ path = gtk_tree_path_new_first ( );
+ gtk_tree_view_scroll_to_cell ( GTK_TREE_VIEW ( tree_view ), path, NULL, TRUE, 0.0, 0.0 );
+ gtk_tree_selection_select_path ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( tree_view ) ), path );
+
+ gtk_tree_path_free ( path );
+ g_free ( s_amortissement );
}
@@ -1402,8 +1477,11 @@ GtkWidget *bet_finance_create_account_page ( void )
GtkWidget *page;
GtkWidget *hbox;
GtkWidget *align;
+ GtkWidget *label_title;
GtkWidget *label;
GtkWidget *tree_view;
+ GtkWidget *handlebox;
+ GtkWidget *button;
devel_debug (NULL);
@@ -1413,9 +1491,9 @@ GtkWidget *bet_finance_create_account_page ( void )
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 ( _("Amortization Table") );
- g_object_set_data ( G_OBJECT ( account_page ), "bet_finance_amortization_title", label );
- gtk_container_add ( GTK_CONTAINER ( align ), label );
+ label_title = gtk_label_new ( _("Amortization Table") );
+ g_object_set_data ( G_OBJECT ( account_page ), "bet_finance_amortization_title", label_title );
+ gtk_container_add ( GTK_CONTAINER ( align ), label_title );
/* Choix des données sources */
align = gtk_alignment_new (0.5, 0.0, 0.0, 0.0);
@@ -1461,6 +1539,27 @@ GtkWidget *bet_finance_create_account_page ( void )
/* création de la liste des données */
tree_view = bet_finance_create_amortization_tree_view ( page, SPP_ORIGIN_FINANCE );
g_object_set_data ( G_OBJECT ( account_page ), "bet_finance_tree_view", tree_view );
+ g_object_set_data ( G_OBJECT ( tree_view ), "label_title", label_title );
+
+
+ /* création du bouton print */
+ handlebox = gtk_handle_box_new ( );
+ hbox = gtk_hbox_new ( FALSE, 0 );
+ gtk_container_add ( GTK_CONTAINER ( handlebox ), hbox );
+
+ button = gsb_automem_stock_button_new ( etat.display_toolbar,
+ GTK_STOCK_PRINT,
+ _("Print"),
+ NULL,
+ NULL );
+ gtk_widget_set_tooltip_text ( GTK_WIDGET ( button ), _("Print the array") );
+ g_signal_connect ( G_OBJECT ( button ),
+ "clicked",
+ G_CALLBACK ( print_tree_view_list ),
+ tree_view );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), button, FALSE, FALSE, 5 );
+ gtk_box_pack_start ( GTK_BOX ( page ), handlebox, FALSE, FALSE, 0 );
+ gtk_box_reorder_child ( GTK_BOX ( page ), handlebox, 0 );
gtk_widget_show_all ( page );
@@ -1480,6 +1579,7 @@ void bet_finance_ui_update_amortization_tab ( gint account_number )
GtkWidget *label;
GtkWidget *tree_view;
GtkTreeModel *store;
+ GtkTreePath *path;
gchar *tmp_str;
gchar *tmp_str_2;
gint index = 0;
@@ -1511,7 +1611,7 @@ void bet_finance_ui_update_amortization_tab ( gint account_number )
/* met à jour le titre du tableau */
label = g_object_get_data ( G_OBJECT ( account_page ), "bet_finance_amortization_title" );
- tmp_str = g_strconcat ( _("Amortization Table"), " at ",
+ tmp_str = g_strconcat ( _("Amortization Table"), _(" at "),
gsb_format_gdate ( last_paid_date ), NULL );
gtk_label_set_label ( GTK_LABEL ( label ), tmp_str );
g_free ( tmp_str );
@@ -1600,6 +1700,11 @@ void bet_finance_ui_update_amortization_tab ( gint account_number )
g_date_free ( last_paid_date );
bet_finance_list_set_background_color ( tree_view, BET_AMORTIZATION_BACKGROUND_COLOR );
+ path = gtk_tree_path_new_first ( );
+ gtk_tree_view_scroll_to_cell ( GTK_TREE_VIEW ( tree_view ), path, NULL, TRUE, 0.0, 0.0 );
+ gtk_tree_selection_select_path ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( tree_view ) ), path );
+
+ gtk_tree_path_free ( path );
}
@@ -1628,6 +1733,130 @@ void bet_finance_ui_struct_amortization_free ( struct_amortissement *s_amortisse
*
*
* */
+GtkWidget *bet_finance_create_simulator_toolbar ( GtkWidget *parent, GtkWidget *tree_view )
+{
+ GtkWidget *handlebox;
+ GtkWidget *hbox;
+ GtkWidget *button;
+ GtkTreeSelection *selection;
+
+ /* HandleBox */
+ handlebox = gtk_handle_box_new ( );
+
+ /* Hbox */
+ hbox = gtk_hbox_new ( FALSE, 0 );
+ gtk_container_add ( GTK_CONTAINER ( handlebox ), hbox );
+
+ /* création du bouton calculer */
+ button = gsb_automem_stock_button_new ( etat.display_toolbar,
+ GTK_STOCK_EXECUTE,
+ _("Calculate"),
+ NULL,
+ NULL );
+ gtk_widget_set_tooltip_text ( GTK_WIDGET ( button ), _("Calculate") );
+ g_signal_connect ( G_OBJECT ( button ),
+ "clicked",
+ G_CALLBACK ( bet_finance_calculer_clicked ),
+ parent );
+ g_object_set_data ( G_OBJECT ( parent ), "calculate_button", button );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), button, FALSE, FALSE, 5 );
+
+ /* création du bouton afficher le tableau d'amortissement */
+ selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW ( tree_view ) );
+ button = gsb_automem_imagefile_button_new ( etat.display_toolbar,
+ _("Amortization"),
+ "ac_liability_16.png",
+ NULL,
+ NULL );
+ gtk_widget_set_tooltip_text ( GTK_WIDGET ( button ), _("View amortization table") );
+ g_signal_connect ( G_OBJECT ( button ),
+ "clicked",
+ G_CALLBACK ( bet_finance_fill_amortization_array ),
+ selection );
+ gtk_widget_set_sensitive ( button, FALSE );
+ g_object_set_data ( G_OBJECT ( parent ), "amortization_button", button );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), button, FALSE, FALSE, 5 );
+
+ /* création du bouton print */
+ button = gsb_automem_stock_button_new ( etat.display_toolbar,
+ GTK_STOCK_PRINT,
+ _("Print"),
+ NULL,
+ NULL );
+ gtk_widget_set_tooltip_text ( GTK_WIDGET ( button ), _("Print the array") );
+ g_signal_connect ( G_OBJECT ( button ),
+ "clicked",
+ G_CALLBACK ( print_tree_view_list ),
+ tree_view );
+ gtk_widget_set_sensitive ( button, FALSE );
+ g_object_set_data ( G_OBJECT ( parent ), "print_button", button );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), button, FALSE, FALSE, 5 );
+
+ gtk_widget_show_all ( handlebox );
+
+ return ( handlebox );
+
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+GtkWidget *bet_finance_create_amortization_toolbar ( GtkWidget *parent, GtkWidget *tree_view )
+{
+ GtkWidget *handlebox;
+ GtkWidget *hbox;
+ GtkWidget *button;
+
+ /* HandleBox */
+ handlebox = gtk_handle_box_new ( );
+
+ /* Hbox */
+ hbox = gtk_hbox_new ( FALSE, 0 );
+ gtk_container_add ( GTK_CONTAINER ( handlebox ), hbox );
+
+ /* création du bouton afficher le simulateur de crédits */
+ button = gsb_automem_imagefile_button_new ( etat.display_toolbar,
+ _("Credits"),
+ "ac_liability_16.png",
+ NULL,
+ NULL );
+ gtk_widget_set_tooltip_text ( GTK_WIDGET ( button ), _("View credits simulator") );
+ g_signal_connect ( G_OBJECT ( button ),
+ "clicked",
+ G_CALLBACK ( bet_finance_switch_simulator_page ),
+ NULL );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), button, FALSE, FALSE, 5 );
+
+ /* création du bouton print */
+ button = gsb_automem_stock_button_new ( etat.display_toolbar,
+ GTK_STOCK_PRINT,
+ _("Print"),
+ NULL,
+ NULL );
+ gtk_widget_set_tooltip_text ( GTK_WIDGET ( button ), _("Print the array") );
+ g_signal_connect ( G_OBJECT ( button ),
+ "clicked",
+ G_CALLBACK ( print_tree_view_list ),
+ tree_view );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), button, FALSE, FALSE, 5 );
+
+ gtk_widget_show_all ( handlebox );
+
+ return ( handlebox );
+
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
/* Local Variables: */
/* c-basic-offset: 4 */
/* End: */
diff --git a/src/gsb_data_account.c b/src/gsb_data_account.c
index 0064f9f..f2d4bbb 100644
--- a/src/gsb_data_account.c
+++ b/src/gsb_data_account.c
@@ -3021,7 +3021,7 @@ gint gsb_data_account_get_bet_months ( gint account_number )
gboolean gsb_data_account_set_bet_months ( gint account_number, gint months )
{
struct_account *account;
-devel_debug_int ( months );
+
account = gsb_data_account_get_structure ( account_number );
if (!account )
diff --git a/src/print_dialog_config.c b/src/print_dialog_config.c
index 8f9c342..785b942 100644
--- a/src/print_dialog_config.c
+++ b/src/print_dialog_config.c
@@ -29,6 +29,7 @@
/*START_INCLUDE*/
#include "print_dialog_config.h"
+#include "erreur.h"
/*END_INCLUDE*/
/*START_STATIC*/
@@ -50,12 +51,15 @@ static GtkPrintSettings *settings = NULL;
* \param custom_tab_label Tab title for an optional custom config tab
* \param custom_tab_callback Callback that creates an optional config tab
* \param custom_apply_callback Callback called when user validate config
+ * \param data data for callback
+ *
*/
void print_dialog_config ( GCallback begin_callback,
- GCallback draw_callback,
- gchar * custom_tab_label,
- GCallback custom_tab_callback,
- GCallback custom_apply_callback )
+ GCallback draw_callback,
+ gchar *custom_tab_label,
+ GCallback custom_tab_callback,
+ GCallback custom_apply_callback,
+ gpointer data )
{
GtkPrintOperation *print;
GtkPrintOperationResult res;
@@ -70,12 +74,12 @@ void print_dialog_config ( GCallback begin_callback,
if ( custom_tab_label )
gtk_print_operation_set_custom_tab_label ( print, custom_tab_label );
if ( custom_tab_callback )
- g_signal_connect (print, "create-custom-widget", custom_tab_callback, NULL);
+ g_signal_connect (print, "create-custom-widget", custom_tab_callback, data );
if ( custom_apply_callback )
- g_signal_connect (print, "custom-widget-apply", custom_apply_callback, NULL);
+ g_signal_connect (print, "custom-widget-apply", custom_apply_callback, data );
- g_signal_connect (print, "begin_print", G_CALLBACK (begin_callback), NULL);
- g_signal_connect (print, "draw_page", G_CALLBACK (draw_callback), NULL);
+ g_signal_connect (print, "begin_print", G_CALLBACK (begin_callback), data );
+ g_signal_connect (print, "draw_page", G_CALLBACK (draw_callback), data );
res = gtk_print_operation_run (print, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
diff --git a/src/print_dialog_config.h b/src/print_dialog_config.h
index 58cb359..b62ffe2 100644
--- a/src/print_dialog_config.h
+++ b/src/print_dialog_config.h
@@ -7,9 +7,10 @@
/* START_DECLARATION */
void print_dialog_config ( GCallback begin_callback,
- GCallback draw_callback,
- gchar * custom_tab_label,
- GCallback custom_tab_callback,
- GCallback custom_apply_callback );
+ GCallback draw_callback,
+ gchar * custom_tab_label,
+ GCallback custom_tab_callback,
+ GCallback custom_apply_callback,
+ gpointer data );
/* END_DECLARATION */
#endif
diff --git a/src/print_report.c b/src/print_report.c
index db149e0..47714bf 100644
--- a/src/print_report.c
+++ b/src/print_report.c
@@ -104,7 +104,8 @@ gboolean print_report ( GtkWidget *button,
G_CALLBACK (print_report_draw_page),
_("Fonts"),
G_CALLBACK (print_config_show_config),
- G_CALLBACK (print_config_show_config_apply) );
+ G_CALLBACK (print_config_show_config_apply),
+ NULL );
return FALSE;
}
diff --git a/src/print_transactions_list.c b/src/print_transactions_list.c
index 0aabc62..ffe9cf6 100644
--- a/src/print_transactions_list.c
+++ b/src/print_transactions_list.c
@@ -45,9 +45,6 @@
#if GTK_CHECK_VERSION(2,12,0)
/*START_STATIC*/
-static gboolean print_transactions_list_apply ( GtkPrintOperation * operation,
- GtkWidget * widget,
- gpointer null );
static gboolean print_transactions_list_begin ( GtkPrintOperation *operation,
GtkPrintContext *context,
gpointer null );
@@ -368,7 +365,8 @@ gboolean print_transactions_list ( GtkWidget * button,
G_CALLBACK (print_transactions_list_draw_page),
_("Fonts & layout"),
G_CALLBACK (print_transactions_list_layout_config),
- G_CALLBACK (print_transactions_list_apply) );
+ G_CALLBACK (print_transactions_list_apply),
+ NULL );
return FALSE;
}
@@ -730,7 +728,7 @@ static gint print_transactions_list_draw_columns_title ( GtkPrintContext *contex
{
gint column;
- if (!gsb_data_print_config_get_draw_column ())
+ if (!gsb_data_print_config_get_draw_columns_name ())
return line_position;
for (column=0 ; column<CUSTOM_MODEL_VISIBLE_COLUMNS ; column++)
diff --git a/src/print_transactions_list.h b/src/print_transactions_list.h
index f58951b..8068e85 100644
--- a/src/print_transactions_list.h
+++ b/src/print_transactions_list.h
@@ -6,7 +6,9 @@
/* END_INCLUDE_H */
/* START_DECLARATION */
-gboolean print_transactions_list ( GtkWidget * button,
- gpointer null );
+gboolean print_transactions_list_apply ( GtkPrintOperation * operation,
+ GtkWidget * widget,
+ gpointer null );
+gboolean print_transactions_list ( GtkWidget * button, gpointer null );
/* END_DECLARATION */
#endif
diff --git a/src/print_tree_view_list.c b/src/print_tree_view_list.c
new file mode 100644
index 0000000..1bd79f7
--- /dev/null
+++ b/src/print_tree_view_list.c
@@ -0,0 +1,985 @@
+/* ************************************************************************** */
+/* */
+/* Copyright (C) 2000-2008 Cédric Auger (cedric at grisbi.org) */
+/* 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 "print_tree_view_list.h"
+#include "gsb_autofunc.h"
+#include "gsb_automem.h"
+#include "gsb_data_print_config.h"
+#include "print_config.h"
+#include "print_dialog_config.h"
+#include "print_transactions_list.h"
+#include "utils.h"
+#include "utils_str.h"
+#include "erreur.h"
+/*END_INCLUDE*/
+
+
+/*START_STATIC*/
+static gboolean print_tree_view_list_begin ( GtkPrintOperation *operation,
+ GtkPrintContext *context,
+ gpointer data );
+static void print_tree_view_list_calculate_columns_width ( GtkTreeView *tree_view, gdouble page_width );
+static gint print_tree_view_list_draw_cell ( GtkPrintContext *context,
+ gint line_position,
+ gint column_position,
+ gint column,
+ const gchar *text );
+static gint print_tree_view_list_draw_column ( gint column_position, gint line_position );
+static gint print_tree_view_list_draw_columns_title ( GtkPrintContext *context,
+ gint line_position,
+ GtkTreeView *tree_view );
+static gboolean print_tree_view_list_draw_page ( GtkPrintOperation *operation,
+ GtkPrintContext *context,
+ gint page,
+ gpointer data );
+static gint print_tree_view_list_draw_row ( GtkPrintContext *context,
+ GtkTreeView *tree_view,
+ gint line_position );
+static gint print_tree_view_list_draw_rows_data ( GtkPrintContext *context,
+ gint line_position,
+ GtkTreeView *tree_view,
+ gint page );
+static gint print_tree_view_list_draw_title ( GtkPrintContext *context,
+ gint line_position );
+static gboolean print_tree_view_list_foreach_callback ( GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer data );
+static gint print_tree_view_list_get_columns_title_nbre_lines ( GtkTreeView *tree_view );
+static gint print_tree_view_list_get_columns_title_size ( gint nbre_lines );
+static gint print_tree_view_list_get_title_size ( void );
+static gint print_tree_view_list_set_rows_to_print ( GtkTreeView *tree_view );
+static void print_tree_view_list_init_tree_view_data ( GtkTreeView *tree_view );
+static GtkWidget *print_tree_view_list_layout_config ( GtkPrintOperation *operation, gpointer data );
+/*END_STATIC*/
+
+/*START_EXTERN*/
+/*END_EXTERN*/
+
+#define MAX_COLS 32
+
+/*tree_view_data */
+static gint nbre_cols;
+static gint *tree_view_cols_width;
+static gint *alignment;
+static gint total_lines_to_print = 0;
+
+
+static gint lines_per_page;
+static gint lines_in_first_page;
+
+/* nb of lines already printed */
+static gint total_lines_printed;
+
+/* current row of page to print */
+static gint current_row_to_print;
+
+/* current row of model to print */
+static GtkTreePath *tree_path_to_print = NULL;
+
+/* title of page */
+static gchar *title_string;
+
+/* size and pos of the columns calculated when begin the print */
+static gdouble columns_position[MAX_COLS];
+static gint columns_width[MAX_COLS];
+static gint size_title = 0;
+static gint size_columns_title = 0;
+static gint size_row = 0;
+static gint nbre_lines_col_title;
+static cairo_t *cr = NULL;
+static gdouble page_width = 0.0;
+static gdouble page_height = 0.0;
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+gboolean print_tree_view_list ( GtkWidget *menu_item, GtkTreeView *tree_view )
+{
+ GtkWidget *label_title;
+ GtkTreeSelection *tree_selection;
+
+ devel_debug (NULL);
+ tree_selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW ( tree_view ) );
+
+ if ( !gtk_tree_selection_get_selected ( GTK_TREE_SELECTION ( tree_selection ), NULL, NULL ) )
+ return FALSE;
+
+ label_title = g_object_get_data ( G_OBJECT ( tree_view ), "label_title" );
+ title_string = g_strdup ( gtk_label_get_text ( GTK_LABEL ( label_title ) ) );
+
+ print_dialog_config ( G_CALLBACK ( print_tree_view_list_begin ),
+ G_CALLBACK ( print_tree_view_list_draw_page ),
+ _("Fonts & layout"),
+ G_CALLBACK ( print_tree_view_list_layout_config ),
+ G_CALLBACK ( print_transactions_list_apply ),
+ ( gpointer ) tree_view );
+
+ return TRUE;
+}
+
+
+/**
+ * Function called first when try to print the list
+ * initialize the variables and calculate the number of pages
+ *
+ * \param operation GtkPrintOperation
+ * \param context GtkPrintContext
+ * \param null
+ *
+ * \return FALSE
+ * */
+gboolean print_tree_view_list_begin ( GtkPrintOperation *operation,
+ GtkPrintContext *context,
+ gpointer data )
+{
+ GtkTreeView *tree_view = ( GtkTreeView * ) data;
+ gint size_line;
+ gdouble lines_per_page_double;
+ gint nbre_pages;
+
+ devel_debug (NULL);
+
+ /* we need to calculate the number of pages */
+ cr = gtk_print_context_get_cairo_context ( context );
+
+ /* get the size of the title */
+ if ( title_string && strlen ( title_string ) )
+ size_title = print_tree_view_list_get_title_size ( );
+ else
+ size_title = 0;
+
+ /* get the size of a row */
+ size_row = pango_font_description_get_size ( gsb_data_print_config_get_font_transactions () ) / PANGO_SCALE;
+ size_line = size_row + gsb_data_print_config_get_draw_lines ( );
+
+ /* get the size of the titles of columns */
+ if ( gsb_data_print_config_get_draw_columns_name () )
+ {
+ nbre_lines_col_title = print_tree_view_list_get_columns_title_nbre_lines ( tree_view );
+ size_columns_title = print_tree_view_list_get_columns_title_size ( nbre_lines_col_title );
+ }
+ else
+ size_columns_title = 0;
+
+ /* the heigh of a page decrease size_columns_title */
+ page_height = gtk_print_context_get_height ( context );
+
+ /* get total lines to print */
+ total_lines_to_print = 0;
+ total_lines_to_print = print_tree_view_list_set_rows_to_print ( tree_view );
+
+ /* how much transactions we can show in a page : */
+ lines_per_page_double = page_height / size_line;
+ /* on enlève les lignes des titres des colonnes */
+ lines_per_page_double -= nbre_lines_col_title;
+
+ if ( !size_title ) /* no title */
+ {
+ nbre_pages = ceil ( total_lines_to_print / lines_per_page_double );
+ lines_in_first_page = floor ( lines_per_page_double );
+ }
+ else
+ {
+ gint first_page_height;
+
+ first_page_height = page_height - size_title;
+
+ lines_in_first_page = floor ( first_page_height / size_line ) - nbre_lines_col_title;
+ nbre_pages = 1 + ceil ( ( total_lines_to_print - lines_in_first_page ) /
+ lines_per_page_double );
+ }
+
+ /* set the number of page */
+ gtk_print_operation_set_n_pages ( GTK_PRINT_OPERATION ( operation ), nbre_pages );
+ /* save the nb of rows per page */
+ lines_per_page = floor ( lines_per_page_double );
+
+ /* calculate the size and position of the columns */
+ page_width = gtk_print_context_get_width ( context );
+ print_tree_view_list_calculate_columns_width ( tree_view, page_width );
+
+ if ( tree_path_to_print )
+ gtk_tree_path_free ( tree_path_to_print );
+ tree_path_to_print = gtk_tree_path_new_first ( );
+ total_lines_printed = 0;
+ current_row_to_print = 0;
+
+ return FALSE;
+}
+
+
+/**
+ * print the page
+ *
+ * \param operation GtkPrintOperation
+ * \param context GtkPrintContext
+ * \param page page to print
+ * \param null
+ *
+ * \return FALSE
+ * */
+ gboolean print_tree_view_list_draw_page ( GtkPrintOperation *operation,
+ GtkPrintContext *context,
+ gint page,
+ gpointer data )
+{
+ GtkTreeView *tree_view = ( GtkTreeView * ) data;
+ gint line_position = 0;
+
+ devel_debug_int (page);
+
+ /* draw the title */
+ if ( !page && title_string && strlen ( title_string ) )
+ line_position = print_tree_view_list_draw_title ( context, line_position );
+
+ /* draw the columns titles */
+ if ( gsb_data_print_config_get_draw_columns_name () )
+ line_position = print_tree_view_list_draw_columns_title ( context, line_position, tree_view );
+
+ /* draw the transactions lines */
+ line_position = print_tree_view_list_draw_rows_data ( context, line_position, tree_view, page );
+
+ return FALSE;
+}
+
+
+/**
+ * draw a line of a model
+ *
+ * \param context the GtkPrintContext
+ * \param line_position the position to insert the titles
+ * \param
+ *
+ * \return the new line_position
+ * */
+static gint print_tree_view_list_draw_row ( GtkPrintContext *context,
+ GtkTreeView *tree_view,
+ gint line_position )
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gint column = 0;
+ GList *list_tmp;
+
+ model = gtk_tree_view_get_model ( tree_view );
+ if ( !gtk_tree_model_get_iter ( model, &iter, tree_path_to_print ) )
+ return line_position;
+
+
+ list_tmp = gtk_tree_view_get_columns ( tree_view );
+ while ( list_tmp )
+ {
+ GtkTreeViewColumn *col;
+ gchar *text;
+ gint column_position;
+ gint col_num_model;
+ GType col_type_model;
+
+ col = list_tmp -> data;
+ col_num_model = GPOINTER_TO_INT ( g_object_get_data ( G_OBJECT ( col ), "num_col_model" ) );
+ col_type_model = gtk_tree_model_get_column_type ( model, col_num_model );
+ column_position = columns_position[column];
+
+ /* get the text */
+ if ( col_type_model == G_TYPE_STRING )
+ gtk_tree_model_get ( model, &iter, col_num_model, &text, -1 );
+ else if ( col_type_model == G_TYPE_INT )
+ {
+ gint number;
+
+ gtk_tree_model_get ( model, &iter, col_num_model, &number, -1 );
+ text = utils_str_itoa ( number );
+ }
+ else
+ text = NULL;
+
+ if ( !text )
+ {
+ /* draw first the column */
+ column_position = print_tree_view_list_draw_column ( column_position, line_position );
+
+ list_tmp = list_tmp -> next;
+ column++;
+ continue;
+ }
+
+ print_tree_view_list_draw_cell ( context, line_position, column_position, column, text );
+ list_tmp = list_tmp -> next;
+ column++;
+ g_free ( text );
+ }
+
+ /* go to the next row */
+ line_position = line_position + size_row;
+
+ return line_position;
+}
+
+
+/**
+ * draw a column line
+ *
+ * \param column_position column position
+ * \param line_position line position
+ *
+ * \return the new column position
+ * */
+static gint print_tree_view_list_draw_column ( gint column_position, gint line_position )
+{
+ if ( !gsb_data_print_config_get_draw_column () )
+ return column_position;
+
+ cairo_move_to ( cr, column_position, line_position );
+ cairo_set_line_width ( cr, 0.5 );
+ cairo_line_to ( cr, column_position, line_position + size_row + 2*gsb_data_print_config_get_draw_lines () );
+ cairo_stroke ( cr );
+
+ /* add a space with the next column */
+ column_position++;
+
+ return column_position;
+}
+
+
+/**
+ * draw the line before the row data
+ *
+ * \param line_position position where drawing the line
+ *
+ * \return the new line position
+ * */
+static gint print_tree_view_list_draw_line ( gint line_position )
+{
+ if ( !gsb_data_print_config_get_draw_lines () )
+ return line_position;
+
+ /* add a space with the last transaction */
+ line_position++;
+ cairo_move_to ( cr, 0, line_position );
+ cairo_set_line_width ( cr, 0.5 );
+ cairo_line_to ( cr, page_width, line_position );
+ cairo_stroke ( cr );
+
+ return line_position;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+static gint print_tree_view_list_draw_rows_data ( GtkPrintContext *context,
+ gint line_position,
+ GtkTreeView *tree_view,
+ gint page )
+{
+ gint lines_to_draw;
+ devel_debug_int (line_position);
+
+ /* calcul du nombre de lignes à éditer */
+ if (page)
+ lines_to_draw = lines_per_page;
+ else
+ lines_to_draw = lines_in_first_page;
+ if ( lines_to_draw > ( total_lines_to_print - total_lines_printed ) )
+ lines_to_draw = total_lines_to_print - total_lines_printed;
+
+ while ( lines_to_draw )
+ {
+ /* begin a row : fill the line before the row */
+ line_position = print_tree_view_list_draw_line ( line_position );
+
+ /* draw the last column */
+ print_tree_view_list_draw_column ( page_width, line_position );
+
+ /* draw the row */
+ line_position = print_tree_view_list_draw_row ( context, tree_view, line_position );
+
+ gtk_tree_path_next ( tree_path_to_print );
+ lines_to_draw--;
+ total_lines_printed++;
+ }
+
+ /* draw the last line */
+ print_tree_view_list_draw_line ( line_position );
+
+ return line_position;
+}
+
+
+/**
+ * draw a cell of a model
+ *
+ * \param context the GtkPrintContext
+ * \param line_position the position to insert the column
+ * \param column_position the position to insert the data
+ *
+ * \return the new column_position
+ * */
+static gint print_tree_view_list_draw_cell ( GtkPrintContext *context,
+ gint line_position,
+ gint column_position,
+ gint column,
+ const gchar *text )
+{
+ PangoLayout *layout;
+
+ /* draw first the column */
+ column_position = print_tree_view_list_draw_column ( column_position, line_position );
+
+ cairo_move_to (cr, column_position, line_position);
+
+ /* create the new layout */
+ layout = gtk_print_context_create_pango_layout (context);
+ pango_layout_set_text ( layout, text, -1 );
+ pango_layout_set_font_description ( layout, gsb_data_print_config_get_font_transactions () );
+ pango_layout_set_width ( layout,columns_width[column] );
+ pango_layout_set_alignment ( layout, alignment[column] );
+ pango_layout_set_ellipsize ( layout, PANGO_ELLIPSIZE_END );
+
+ pango_cairo_show_layout ( cr, layout );
+ g_object_unref ( layout );
+
+ return column_position;
+}
+
+
+/**
+ * draw the title of the columns
+ *
+ * \param context the GtkPrintContext
+ * \param line_position the position to insert the titles
+ *
+ * \return the new line_position to continue to fill the page
+ * */
+static gint print_tree_view_list_draw_columns_title ( GtkPrintContext *context,
+ gint line_position,
+ GtkTreeView *tree_view )
+{
+ GList *list;
+ GList *list_tmp;
+ gint column = 0;
+ gint column_position;
+
+ devel_debug_int ( line_position );
+
+ if ( !gsb_data_print_config_get_draw_columns_name () )
+ return line_position;
+
+ /* begin a row : fill the line before the row */
+ line_position = print_tree_view_list_draw_line ( line_position );
+
+ list = gtk_tree_view_get_columns ( tree_view );
+
+ if ( nbre_lines_col_title == 1 )
+ {
+ /* draw the last column */
+ print_tree_view_list_draw_column ( page_width, line_position );
+ list_tmp = list;
+
+ while ( list_tmp )
+ {
+ GtkTreeViewColumn *col;
+ const gchar *text;
+
+ col = ( GtkTreeViewColumn * ) list_tmp -> data;
+ column_position = columns_position[column];
+
+ /* get the text */
+ text = gtk_tree_view_column_get_title ( col );
+ if (!text)
+ {
+ list_tmp = list_tmp -> next;
+ column++;
+ continue;
+ }
+
+ print_tree_view_list_draw_cell ( context, line_position, column_position, column, text );
+
+ list_tmp = list_tmp -> next;
+ column++;
+ }
+ line_position = line_position + size_columns_title;
+ }
+ else
+ {
+ gchar **tab;
+ gchar *str_tmp;
+ gint i = 0;
+
+ for ( i = 0; i < nbre_lines_col_title; i ++ )
+ {
+ /* draw the last column */
+ print_tree_view_list_draw_column ( page_width, line_position );
+ list_tmp = list;
+
+ while ( list_tmp )
+ {
+ GtkTreeViewColumn *col;
+ const gchar *text;
+
+ col = ( GtkTreeViewColumn * ) list_tmp -> data;
+ column_position = columns_position[column];
+
+ /* get the text */
+ text = gtk_tree_view_column_get_title ( col );
+
+ if ( text == NULL || strlen ( text ) == 0 )
+ {
+ print_tree_view_list_draw_column ( column_position, line_position );
+ list_tmp = list_tmp -> next;
+ column++;
+ continue;
+ }
+
+ str_tmp = gsb_string_uniform_new_line ( text, strlen ( text ) );
+ if ( str_tmp == NULL )
+ {
+ if ( i == 0 )
+ print_tree_view_list_draw_cell ( context, line_position, column_position, column, text );
+ else
+ print_tree_view_list_draw_column ( column_position, line_position );
+ list_tmp = list_tmp -> next;
+ column++;
+ continue;
+ }
+
+ tab = g_strsplit ( str_tmp, "\n", 0 );
+
+ if ( tab[i] && strlen ( tab[i] ) )
+ print_tree_view_list_draw_cell ( context, line_position, column_position, column, tab[i] );
+ else
+ print_tree_view_list_draw_column ( column_position, line_position );
+
+ list_tmp = list_tmp -> next;
+ column++;
+ g_strfreev ( tab );
+ g_free ( str_tmp );
+ }
+ line_position = line_position + size_row + gsb_data_print_config_get_draw_lines ( );
+ column = 0;
+ }
+ }
+
+ return line_position;
+}
+
+
+/**
+ * draw the title if asked
+ *
+ * \param context the GtkPrintContext
+ * \param line_position the position to insert the title
+ * \param page_width the page width
+ *
+ * \return the new line_position to continue to fill the page
+ * */
+static gint print_tree_view_list_draw_title ( GtkPrintContext *context,
+ gint line_position )
+{
+ if ( title_string && strlen ( title_string ) )
+ {
+ PangoLayout *layout;
+ devel_debug_int (line_position);
+
+ cairo_move_to ( cr, 0, line_position );
+
+ /* create the new layout */
+ layout = gtk_print_context_create_pango_layout ( context );
+
+ pango_layout_set_text ( layout, title_string, -1 );
+ pango_layout_set_font_description ( layout, gsb_data_print_config_get_font_title () );
+ pango_layout_set_width ( layout, page_width * PANGO_SCALE );
+ pango_layout_set_alignment ( layout, PANGO_ALIGN_CENTER );
+ pango_layout_set_ellipsize ( layout, PANGO_ELLIPSIZE_END );
+ pango_cairo_show_layout ( cr, layout );
+ g_object_unref ( layout );
+
+ /* add title line and blank line */
+ line_position = line_position + size_title;
+ }
+
+ return line_position;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+void print_tree_view_list_calculate_columns_width ( GtkTreeView *tree_view, gdouble page_width )
+{
+ gint total_text_width = 0;
+ gint column;
+
+ print_tree_view_list_init_tree_view_data ( tree_view );
+ columns_position[0] = 0.0;
+
+ for ( column = 1 ; column < nbre_cols ; column++ )
+ columns_position[column] = (gdouble) ( tree_view_cols_width[column - 1]* page_width / 100 ) +
+ columns_position[column - 1];
+
+ /* set the page_width of the columns */
+ for (column = 0 ; column < ( nbre_cols - 1 ); column++ )
+ {
+ columns_width[column] = ( columns_position[column + 1] - columns_position[column] -
+ 3 * gsb_data_print_config_get_draw_column () ) * PANGO_SCALE;
+
+ total_text_width = total_text_width + columns_width[column];
+ }
+
+ /* last column is the rest of the line */
+ columns_width[nbre_cols - 1] = ( page_width -3 * gsb_data_print_config_get_draw_column () * (nbre_cols) ) *
+ PANGO_SCALE - total_text_width;
+}
+
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+void print_tree_view_list_init_tree_view_data ( GtkTreeView *tree_view )
+{
+ GList *list;
+ GList *list_tmp;
+ gint col_width = 0;
+ gint i = 0;
+
+ devel_debug (NULL);
+
+ /* get the number of columns */
+ list = gtk_tree_view_get_columns ( tree_view );
+ nbre_cols = g_list_length ( list );
+
+ tree_view_cols_width = g_malloc0 ( nbre_cols * sizeof ( gint ) );
+ alignment = g_malloc0 ( nbre_cols * sizeof ( gint ) );
+
+ list_tmp = list;
+ while ( list_tmp )
+ {
+ GtkTreeViewColumn *col;
+
+ col = list_tmp -> data;
+ col_width += gtk_tree_view_column_get_width ( col );
+
+ list_tmp = list_tmp -> next;
+ }
+
+ list_tmp = list;
+ while ( list_tmp )
+ {
+ GtkTreeViewColumn *col;
+ gfloat number;
+
+ col = ( GtkTreeViewColumn * ) list_tmp -> data;
+ tree_view_cols_width[i] = ( gtk_tree_view_column_get_width ( col ) * 100 ) / col_width + 1;
+
+ number = gtk_tree_view_column_get_alignment ( col );
+ if ( number == 0.0 )
+ alignment[i] = PANGO_ALIGN_LEFT;
+ else if ( number == 1.0 )
+ alignment[i] = PANGO_ALIGN_RIGHT;
+ else
+ alignment[i] = PANGO_ALIGN_CENTER;
+
+ list_tmp = list_tmp -> next;
+ i++;
+ }
+
+ g_list_free ( list );
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+static gint print_tree_view_list_set_rows_to_print ( GtkTreeView *tree_view )
+{
+ GtkTreeModel *model;
+ gint nbre_lines;
+
+ nbre_lines = 0;
+ model = gtk_tree_view_get_model ( tree_view );
+ gtk_tree_model_foreach ( model,
+ ( GtkTreeModelForeachFunc ) print_tree_view_list_foreach_callback,
+ &nbre_lines );
+
+ return nbre_lines;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+static gboolean print_tree_view_list_foreach_callback ( GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer data )
+{
+ gint *number = (gint *) data;
+
+ *number = *number + 1;
+
+ return FALSE;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+static gint print_tree_view_list_get_title_size ( void )
+{
+ gint size_tmp = 0;
+ gint size_line;
+ gint nbre_lines = 1;
+
+ if ( g_utf8_strchr ( title_string, -1, '\n' ) )
+ nbre_lines = utils_str_get_nbre_motifs ( title_string, "\n" ) + 1;
+
+ /* Add a blank line */
+ nbre_lines++;
+
+ size_line = pango_font_description_get_size ( gsb_data_print_config_get_font_title () );
+
+ size_tmp = size_line * nbre_lines / PANGO_SCALE;
+
+ return size_tmp;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+static gint print_tree_view_list_get_columns_title_size ( gint nbre_lines )
+{
+ gint size_tmp = 0;
+
+ devel_debug_int(nbre_lines);
+
+ size_tmp = size_row * nbre_lines + gsb_data_print_config_get_draw_lines ( );
+
+ return size_tmp;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+static gint print_tree_view_list_get_columns_title_nbre_lines ( GtkTreeView *tree_view )
+{
+ GList *list_tmp;
+ gint nbre_lines = 0;
+
+ list_tmp = gtk_tree_view_get_columns ( tree_view );
+ while ( list_tmp )
+ {
+ GtkTreeViewColumn *col;
+ const gchar *text;
+ gint nbre_motifs = 0;
+
+ col = ( GtkTreeViewColumn * ) list_tmp -> data;
+
+ /* get the text */
+ text = gtk_tree_view_column_get_title ( col );
+ if ( text == NULL || strlen ( text ) == 0 )
+ {
+ list_tmp = list_tmp -> next;
+ continue;
+ }
+
+ if ( g_utf8_strchr ( text, -1, '\n' ) )
+ {
+ nbre_motifs = utils_str_get_nbre_motifs ( text, "\n" );
+ if ( nbre_motifs > nbre_lines )
+ nbre_lines = nbre_motifs;
+ }
+
+ list_tmp = list_tmp -> next;
+ }
+ nbre_lines++;
+
+ return nbre_lines;
+}
+
+
+/**
+ * Show a dialog to set wether we want the rows/columns lines,
+ * the background color, the titles...
+ *
+ * \param operation GtkPrintOperation responsible of this job.
+ * \param null Not used.
+ *
+ * \return A newly allocated widget.
+ */
+GtkWidget *print_tree_view_list_layout_config ( GtkPrintOperation *operation, gpointer data )
+{
+ GtkWidget *check_button;
+ GtkWidget *label;
+ GtkWidget *hbox;
+ GtkWidget *entry;
+ GtkWidget *font_button_transactions;
+ GtkWidget *font_button_title;
+ gchar *fontname_transactions;
+ gchar *fontname_title;
+ GtkWidget *vbox;
+ GtkWidget *paddingbox;
+ GtkSizeGroup * size_group;
+
+ size_group = gtk_size_group_new ( GTK_SIZE_GROUP_HORIZONTAL );
+
+ vbox = gtk_vbox_new ( FALSE, 6 );
+ gtk_container_set_border_width ( GTK_CONTAINER ( vbox ), 12 );
+ paddingbox = new_paddingbox_with_title ( vbox, FALSE, _("Layout") );
+
+ /* set up the title, this is never saved, so ask each time */
+ /* title line */
+ hbox = gtk_hbox_new ( FALSE, 10 );
+ gtk_box_pack_start ( GTK_BOX ( paddingbox ), hbox, FALSE, FALSE, 0 );
+
+ entry = gsb_automem_entry_new ( &title_string, NULL, NULL);
+
+ check_button = gsb_autofunc_checkbutton_new ( _("Print a title : "),
+ gsb_data_print_config_get_draw_title ( ),
+ G_CALLBACK ( sens_desensitive_pointeur ), entry,
+ G_CALLBACK ( gsb_data_print_config_set_draw_title ),
+ 0 );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), check_button, FALSE, FALSE, 0);
+
+ gtk_widget_set_sensitive ( entry, gsb_data_print_config_get_draw_title () );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), entry, TRUE, TRUE, 0 );
+
+ /* set up all the checkbuttons */
+ check_button = gsb_autofunc_checkbutton_new ( _("Draw the lines between transactions"),
+ gsb_data_print_config_get_draw_lines ( ),
+ NULL, NULL,
+ G_CALLBACK ( gsb_data_print_config_set_draw_lines ),
+ 0 );
+ gtk_box_pack_start ( GTK_BOX ( paddingbox ), check_button, FALSE, FALSE, 0 );
+
+ check_button = gsb_autofunc_checkbutton_new ( _("Draw the lines between the columns"),
+ gsb_data_print_config_get_draw_column ( ),
+ NULL, NULL,
+ G_CALLBACK ( gsb_data_print_config_set_draw_column ),
+ 0 );
+ gtk_box_pack_start ( GTK_BOX ( paddingbox ), check_button, FALSE, FALSE, 0);
+
+ check_button = gsb_autofunc_checkbutton_new ( _("Print the names of the columns"),
+ gsb_data_print_config_get_draw_columns_name (),
+ NULL, NULL,
+ G_CALLBACK ( gsb_data_print_config_set_draw_columns_name ),
+ 0 );
+ gtk_box_pack_start ( GTK_BOX ( paddingbox ), check_button, FALSE, FALSE, 0);
+
+ paddingbox = new_paddingbox_with_title ( vbox, FALSE, _("Fonts") );
+
+ /* set up the font of the transactions,
+ * by default use the font of the lists */
+ hbox = gtk_hbox_new ( FALSE, 12 );
+ gtk_box_pack_start ( GTK_BOX ( paddingbox ), hbox, FALSE, FALSE, 0 );
+
+ label = gtk_label_new ( _("Transactions font") );
+ gtk_label_set_justify ( GTK_LABEL ( label ), GTK_JUSTIFY_LEFT );
+ gtk_misc_set_alignment ( GTK_MISC ( label ), 0, 0.5 );
+ gtk_size_group_add_widget ( size_group, label );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 0 );
+
+ fontname_transactions = pango_font_description_to_string ( gsb_data_print_config_get_font_transactions () );
+ font_button_transactions = gtk_font_button_new_with_font ( fontname_transactions );
+ gtk_font_button_set_use_font ( GTK_FONT_BUTTON ( font_button_transactions ), TRUE );
+ gtk_font_button_set_use_size ( GTK_FONT_BUTTON ( font_button_transactions ), TRUE );
+ gtk_font_button_set_title ( GTK_FONT_BUTTON ( font_button_transactions ), _("Choosing font") );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), font_button_transactions, TRUE, TRUE, 0 );
+
+ /* set up the font for the title */
+ hbox = gtk_hbox_new (FALSE, 12);
+ gtk_box_pack_start ( GTK_BOX ( paddingbox ), hbox, FALSE, FALSE, 0 );
+
+ label = gtk_label_new ( _("Title font") );
+ gtk_label_set_justify ( GTK_LABEL ( label ), GTK_JUSTIFY_LEFT );
+ gtk_misc_set_alignment ( GTK_MISC ( label ), 0, 0.5);
+ gtk_size_group_add_widget ( size_group, label );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), label, FALSE, FALSE, 0 );
+
+ fontname_title = pango_font_description_to_string ( gsb_data_print_config_get_font_title () );
+ font_button_title = gtk_font_button_new_with_font ( fontname_title );
+ gtk_font_button_set_use_font ( GTK_FONT_BUTTON ( font_button_title ), TRUE );
+ gtk_font_button_set_use_size ( GTK_FONT_BUTTON ( font_button_title ), TRUE );
+ gtk_font_button_set_title ( GTK_FONT_BUTTON ( font_button_title ), _("Choosing font") );
+ gtk_box_pack_start ( GTK_BOX ( hbox ), font_button_title, TRUE, TRUE, 0);
+
+
+ /* save what we have done in all cases, so if we cancel and come back, our values
+ * come back */
+ gsb_data_print_config_set_font_transaction (pango_font_description_from_string (fontname_transactions));
+ gsb_data_print_config_set_font_title (pango_font_description_from_string (fontname_title));
+
+ g_object_set_data ( G_OBJECT(operation), "font_transaction_button", font_button_transactions );
+ g_object_set_data ( G_OBJECT(operation), "font_title_button", font_button_title );
+
+ gtk_widget_show_all ( vbox );
+
+ return vbox;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* End: */
+
diff --git a/src/print_tree_view_list.h b/src/print_tree_view_list.h
new file mode 100644
index 0000000..d06c18d
--- /dev/null
+++ b/src/print_tree_view_list.h
@@ -0,0 +1,18 @@
+#ifndef _PRINT_TREE_VIEW_LIST_H
+#define _PRINT_TREE_VIEW_LIST_H
+
+#include <gtk/gtk.h>
+
+/* START_INCLUDE_H */
+/* END_INCLUDE_H */
+
+
+
+/* START_DECLARATION */
+gboolean print_tree_view_list ( GtkWidget *menu_item, GtkTreeView *tree_view );
+
+/* END_DECLARATION */
+
+
+#endif /*_PRINT_TREE_VIEW_LIST_H */
+
diff --git a/src/utils_str.c b/src/utils_str.c
index b9ae115..0fe58f1 100644
--- a/src/utils_str.c
+++ b/src/utils_str.c
@@ -853,9 +853,15 @@ gboolean gsb_string_is_trouve ( const gchar *payee_name, const gchar *needle )
if ( tab_str[i] && strlen (tab_str[i]) > 0)
{
if ( g_strstr_len (payee_name, -1, tab_str[i]))
+ {
+ g_strfreev ( tab_str );
return TRUE;
+ }
}
}
+
+ g_strfreev ( tab_str );
+
return FALSE;
}
@@ -938,6 +944,9 @@ gchar *gsb_string_uniform_new_line ( const gchar *chaine, gint nbre_char )
{
gchar **tab_str;
+ if ( chaine == NULL )
+ return NULL;
+
if ( g_strstr_len ( chaine, nbre_char, "\r\n" ) )
{
tab_str = g_strsplit_set ( chaine, "\r", 0 );
@@ -985,6 +994,25 @@ gchar *utils_str_dtostr ( gdouble number, gint nbre_decimal, gboolean canonical
}
+/**
+ *
+ *
+ *
+ *
+ * */
+gint utils_str_get_nbre_motifs ( const gchar *chaine, const gchar *motif )
+{
+ gchar **tab_str;
+ gint nbre_motifs = 0;
+
+ tab_str = g_strsplit ( chaine, motif, 0 );
+ nbre_motifs = g_strv_length ( tab_str ) -1;
+ g_strfreev ( tab_str );
+
+ return nbre_motifs;
+}
+
+
/* Local Variables: */
/* c-basic-offset: 4 */
/* End: */
diff --git a/src/utils_str.h b/src/utils_str.h
index 50bc524..8a951fa 100644
--- a/src/utils_str.h
+++ b/src/utils_str.h
@@ -38,6 +38,7 @@ gint my_strncasecmp ( gchar *string_1,
gint longueur );
double my_strtod ( const gchar *nptr, gchar **endptr );
G_MODULE_EXPORT gint utils_str_atoi ( const gchar *chaine );
+gint utils_str_get_nbre_motifs ( const gchar *chaine, const gchar *motif );
gchar *utils_str_itoa ( gint integer );
gchar *utils_str_dtostr ( gdouble number, gint nbre_decimal, gboolean canonical );
gchar *utils_str_localise_decimal_point_from_string ( const gchar *string );
diff --git a/win32-msvc/CMakeLists.txt b/win32-msvc/CMakeLists.txt
index cd47574..275d08e 100644
--- a/win32-msvc/CMakeLists.txt
+++ b/win32-msvc/CMakeLists.txt
@@ -338,6 +338,8 @@ SET (grisbi_source
../src/print_report.h
../src/print_transactions_list.c
../src/print_transactions_list.h
+ ../src/print_tree_view_list.c
+ ../src/print_tree_view_list.h
../src/qif.c
../src/qif.h
../src/tiers_onglet.c
hooks/post-receive
--
grisbi
More information about the cvs
mailing list