[grisbi-cvs] [SCM] grisbi branch, grisbi-gtk3, updated. grisbi_gtk3_1_3_0-237-ga8cb990
Pierre Biava
nobody at users.sourceforge.net
Sat May 19 22:44:34 CEST 2012
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, grisbi-gtk3 has been updated
via a8cb990aa4d529632c30af3ac66f0875d8193084 (commit)
via e7586bce5f95eefce6c592af735b59187d463afb (commit)
via b39e5532360c7136bcedc45b3e3ede16b783b118 (commit)
via 269c4f7b7144b215348406b254f759c1ed1e802e (commit)
via 978a54e18b1334d95823762261797464d63538d8 (commit)
via b9d1cd641b1210a80990e4c7a441afdfc1d956e0 (commit)
via 767eaca1d32f0224ac72f1e38c6ccc336f6f2c70 (commit)
via 34633208d6df22152c3f80cc254049c29a181ce3 (commit)
via bb6e60c21bd4936992315d10bbd500c01547a74f (commit)
via 9538d66f3d40a445c27948102ff27242fdc781d3 (commit)
via 3f414d969695b3e5a6fbaadf290cf740e0a62456 (commit)
via bb61fa12a80bd0774ebb22a5810552a548245619 (commit)
via f51c4b777ee429367753fff55e0db00594817193 (commit)
via 01cf656e43b1c7dff60cb99d57051113fffc9279 (commit)
via aec50e6fc4419f3e37e941bb7cdb573a0b6a8684 (commit)
from 90fd22a9e6dfe00e2367af936764a060a3e41aff (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 a8cb990aa4d529632c30af3ac66f0875d8193084
Author: pbiava <pierre.biava at nerim.net>
Date: Sat May 19 22:42:47 2012 +0200
minor changes
commit e7586bce5f95eefce6c592af735b59187d463afb
Author: pbiava <pierre.biava at nerim.net>
Date: Sat May 19 22:42:23 2012 +0200
adding gsb_navigation_view as widget
commit b39e5532360c7136bcedc45b3e3ede16b783b118
Author: pbiava <pierre.biava at nerim.net>
Date: Sat May 19 17:19:18 2012 +0200
renames files navigation.c .h in gsb_navigation.c .h
commit 269c4f7b7144b215348406b254f759c1ed1e802e
Author: pbiava <pierre.biava at nerim.net>
Date: Fri May 18 22:00:57 2012 +0200
adding remboursement.png
commit 978a54e18b1334d95823762261797464d63538d8
Author: pbiava <pierre.biava at nerim.net>
Date: Fri May 18 21:59:11 2012 +0200
deleting mouse.h and rename RIGHT_BUTTON in GSB_RIGHT_BUTTON
commit b9d1cd641b1210a80990e4c7a441afdfc1d956e0
Author: pbiava <pierre.biava at nerim.net>
Date: Fri May 18 21:56:11 2012 +0200
adds grisbi.svg
commit 767eaca1d32f0224ac72f1e38c6ccc336f6f2c70
Author: pbiava <pierre.biava at nerim.net>
Date: Tue May 1 12:40:39 2012 +0200
Adding accounts as G_OBJECT
commit 34633208d6df22152c3f80cc254049c29a181ce3
Author: pbiava <pierre.biava at nerim.net>
Date: Tue May 1 12:34:39 2012 +0200
gsb_select_icon.h: rename functions
commit bb6e60c21bd4936992315d10bbd500c01547a74f
Author: pbiava <pierre.biava at nerim.net>
Date: Tue May 1 12:33:57 2012 +0200
adding gsb_navigation_view files
commit 9538d66f3d40a445c27948102ff27242fdc781d3
Author: pbiava <pierre.biava at nerim.net>
Date: Tue May 1 12:32:30 2012 +0200
gsb_file_load.c: restore an option deleted by error
commit 3f414d969695b3e5a6fbaadf290cf740e0a62456
Author: pbiava <pierre.biava at nerim.net>
Date: Tue May 1 12:28:09 2012 +0200
grisbi_app.h: cosmetic change
commit bb61fa12a80bd0774ebb22a5810552a548245619
Author: pbiava <pierre.biava at nerim.net>
Date: Fri Apr 27 22:22:28 2012 +0200
fixed bugs for the accounts with deferred debit card
commit f51c4b777ee429367753fff55e0db00594817193
Author: pbiava <pierre.biava at nerim.net>
Date: Thu Apr 26 06:28:15 2012 +0200
displays a warning message if the transaction date does not exist
commit 01cf656e43b1c7dff60cb99d57051113fffc9279
Author: pbiava <pierre.biava at nerim.net>
Date: Tue Apr 24 22:01:25 2012 +0200
Fixed bug of replacement of a planned transaction
commit aec50e6fc4419f3e37e941bb7cdb573a0b6a8684
Author: pbiava <pierre.biava at nerim.net>
Date: Sun Apr 22 08:31:49 2012 +0200
Cosmetics changes
-----------------------------------------------------------------------
Changes:
diff --git a/grisbi.spec b/grisbi.spec
index e8050ea..400e963 100644
--- a/grisbi.spec
+++ b/grisbi.spec
@@ -43,8 +43,8 @@ desktop-file-install --vendor mandriva \
$RPM_BUILD_ROOT%_datadir/applications/%{name}.desktop
mkdir -p $RPM_BUILD_ROOT%_datadir/icons/hicolor/48x48/apps
-cp -f $RPM_BUILD_ROOT%{_datadir}/pixmaps/grisbi/grisbi.png \
- $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/48x48/apps/grisbi.png
+cp -f $RPM_BUILD_ROOT%{_datadir}/pixmaps/grisbi/grisbi.svg \
+ $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/48x48/apps/grisbi.svg
%find_lang %{name} %{name}-tips
diff --git a/pixmaps/Makefile.am b/pixmaps/Makefile.am
index 0295308..5d9bf83 100644
--- a/pixmaps/Makefile.am
+++ b/pixmaps/Makefile.am
@@ -36,11 +36,12 @@ grisbi_pixmaps_DATA = \
grille.png \
grisbi-logo.png \
grisbi.png \
+ grisbi.svg \
hide_r.png \
impexp.png \
importlg.png \
import.png \
- locale.png \
+ locale.png \
new-categ.png \
new-ib.png \
new-payee.png \
@@ -57,6 +58,7 @@ grisbi_pixmaps_DATA = \
reconat.png \
reconciliationlg.png \
reconciliation.png \
+ remboursement.png \
reports.png \
scheduler.png \
show_r.png \
@@ -72,5 +74,8 @@ grisbi_pixmaps_DATA = \
grisbi_iconsdir = $(datadir)/icons/hicolor/48x48/apps
grisbi_icons_DATA = grisbi.png
-EXTRA_DIST = $(grisbi_pixmaps_DATA) $(grisbi_icons_DATA)
+grisbi_icons_svgdir = $(datadir)/icons/hicolor/scalable/apps
+grisbi_icons_svg_DATA = grisbi.svg
+
+EXTRA_DIST = $(grisbi_pixmaps_DATA) $(grisbi_icons_DATA) $(grisbi_icons_svg_DATA)
diff --git a/pixmaps/grisbi.svg b/pixmaps/grisbi.svg
new file mode 100644
index 0000000..706d3a9
--- /dev/null
+++ b/pixmaps/grisbi.svg
@@ -0,0 +1,1219 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="893.2"
+ height="630.813"
+ id="svg4133"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="Grisbi5.svg">
+ <metadata
+ id="metadata4679">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1360"
+ inkscape:window-height="736"
+ id="namedview4677"
+ showgrid="false"
+ inkscape:zoom="0.79743933"
+ inkscape:cx="446.60001"
+ inkscape:cy="315.40649"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg4133" />
+ <defs
+ id="defs4135">
+ <marker
+ id="ArrowEnd"
+ viewBox="0 0 10 10"
+ refX="0"
+ refY="5"
+ markerUnits="strokeWidth"
+ markerWidth="4"
+ markerHeight="3"
+ orient="auto">
+ <path
+ d="M 0 0 L 10 5 L 0 10 z"
+ id="path4138" />
+ </marker>
+ <marker
+ id="ArrowStart"
+ viewBox="0 0 10 10"
+ refX="10"
+ refY="5"
+ markerUnits="strokeWidth"
+ markerWidth="4"
+ markerHeight="3"
+ orient="auto">
+ <path
+ d="M 10 0 L 0 5 L 10 10 z"
+ id="path4141" />
+ </marker>
+ </defs>
+ <g
+ id="g4143" />
+ <g
+ id="g4682">
+ <desc
+ id="desc4960">Créer avec Sketch
+André Pascual</desc>
+ <title
+ id="title4958">Logo Grisbi</title>
+ <path
+ id="path4145"
+ d="M 849.057 201.069C 849.057 201.069 860.924 188.345 891.7 156.251C 884.817 151.197 795.528 72.707 581.721 71.8174C 443.347 74.0548 328.246 126.675 253.825 184.554C 212.083 217.018 186.68 251.136 168.532 278.948C 126.013 278.948 117.834 279.244 66.9539 279.244C 47.4322 299.359 42.5556 304.96 21.6535 328.186C 79.5507 328.186 87.4163 328.186 146.781 328.186C 142.901 344.954 139.117 358.752 136.207 370.917C 117.895 371.166 84.4041 371.007 45.3884 370.917C 30.3545 386.45 26.089 393.667 1.5 420.424C 69.6087 420.424 80.8006 420.676 134.774 420.424C 140.479 491.1 199.948 554.589 283.24 592.55C 337.897 617.461 403.553 629.994 468.855 629.285C 633.672 627.495 771.898 557.382 771.898 557.382C 771.898 557.382 778.602 534.696 785.807 497.266C 757.294 509.864 650.779 578.68 478.14 581.414C 363.055 581.414 271.262 534.175 230.481 476.032C 217.719 457.837 211.179 439.76 209.665 420.424C 287.734 420.68 657.686 420.424 657.686 420.424C 657.686 420.424 677.135 398.404 698.402 370.917C 590.632
370.917 219.279 370.917 210.374 370.917C 211.781 365.753 214.086 356.583 221.45 328.186C 308.695 328.193 287.908 328.376 738.419 328.186C 758.428 305.835 765.635 297.207 781.185 279.244C 556.029 279.244 460.148 279.244 242.306 279.662C 245.081 270.432 254.544 256.995 269.786 241.767C 291.182 220.388 321.858 195.015 363.508 173.254C 423.726 141.792 503.084 117.043 587.218 117.712C 760.185 120.633 849.057 201.069 849.057 201.069z"
+ style="stroke:#0f5700;stroke-width:3;stroke-linejoin:round;stroke-linecap:round;fill:#01a26c" />
+ <g
+ id="g4147">
+ <g
+ id="g4149">
+ <path
+ id="path4151"
+ d="M 359.059 395.031C 347.522 389.634 331.589 388.047 317.121 388.047C 258.516 388.047 248.993 424.24 248.993 446.146C 248.993 471.227 259.798 485.831 273.716 493.926C 287.086 501.705 304.301 502.657 316.388 502.657C 330.307 502.657 348.071 499.959 360.891 495.038L 360.891 465.512C 360.891 458.051 362.356 457.257 371.147 456.464L 371.147 450.432L 315.838 450.432L 315.838 456.464C 330.123 457.257 331.589 458.051 331.589 465.829L 331.589 488.212C 331.589 493.768 329.025 495.355 316.388 495.355C 283.24 495.355 281.408 455.67 281.408 444.082C 281.408 427.891 285.987 395.349 318.036 395.349C 338.365 395.349 346.972 410.27 352.1 423.922L 359.059 423.922L 359.059 395.031z"
+ style="stroke:#0f5700; stroke-width:3.0; fill:#ffbd0f; font-family:Utopia-Bold; font-size:130.0" />
+ <path
+ id="path4153"
+ d="M 424.074 449.797L 432.498 449.797C 441.655 449.797 446.783 453.606 448.981 462.178C 450.446 467.734 451.911 476.306 454.841 484.402C 459.237 496.149 467.112 500.276 486.341 500.276L 499.894 500.276L 499.894 494.244C 496.597 494.085 493.484 492.656 491.286 490.752C 486.708 486.783 483.96 480.91 482.312 472.655C 479.748 459.956 476.269 449.479 457.405 445.352L 457.405 445.035C 475.536 442.971 488.356 432.653 488.356 418.842C 488.356 410.747 485.792 403.921 479.199 398.682C 472.24 393.444 461.801 390.428 443.853 390.428L 380.304 390.428L 380.304 396.46C 393.306 396.936 394.772 397.73 394.772 405.826L 394.772 484.878C 394.772 492.974 393.306 493.768 380.304 494.244L 380.304 500.276L 438.542 500.276L 438.542 494.244C 425.539 493.768 424.074 492.974 424.074 484.878L 424.074 449.797zM 424.074 403.921C 424.074 399.635 425.722 397.73 435.795 397.73C 448.248 397.73 457.588 403.603 457.588 419.795C 457.588 432.97 451.728 442.495 433.231 442.495L 424.074 442.495L 424.074 403.921z
"
+ style="stroke:#0f5700; stroke-width:3.0; fill:#ffbd0f; font-family:Utopia-Bold; font-size:130.0" />
+ <path
+ id="path4155"
+ d="M 549.341 405.826C 549.341 397.73 550.806 396.936 563.809 396.46L 563.809 390.428L 505.571 390.428L 505.571 396.46C 518.574 396.936 520.039 397.73 520.039 405.826L 520.039 484.878C 520.039 492.974 518.574 493.768 505.571 494.244L 505.571 500.276L 563.809 500.276L 563.809 494.244C 550.806 493.768 549.341 492.974 549.341 484.878L 549.341 405.826z"
+ style="stroke:#0f5700; stroke-width:3.0; fill:#ffbd0f; font-family:Utopia-Bold; font-size:130.0" />
+ <path
+ id="path4157"
+ d="M 659.042 421.065L 659.042 395.031C 649.518 389.952 635.966 388.047 624.795 388.047C 594.027 388.047 579.193 401.857 579.193 420.589C 579.193 440.272 599.521 448.844 615.638 454.718C 632.303 460.75 639.995 467.893 639.995 478.052C 639.812 489.799 631.021 495.355 619.117 495.355C 605.199 495.355 591.28 484.243 584.321 464.401L 577.545 464.401L 580.292 492.815C 589.632 500.276 607.763 502.657 619.85 502.657C 656.478 502.34 667.466 485.196 667.466 468.687C 667.466 447.733 649.518 439.637 632.853 433.605C 620.766 429.319 605.565 423.605 605.565 411.54C 605.565 401.698 613.623 395.349 624.612 395.349C 636.333 395.349 647.321 402.492 652.449 421.065L 659.042 421.065z"
+ style="stroke:#0f5700; stroke-width:3.0; fill:#ffbd0f; font-family:Utopia-Bold; font-size:130.0" />
+ <path
+ id="path4159"
+ d="M 722.408 445.828L 731.748 445.828C 750.062 445.828 758.669 457.099 758.669 470.433C 758.669 487.418 748.414 492.974 735.594 492.974C 726.437 492.974 722.408 490.434 722.408 482.656L 722.408 445.828zM 722.408 403.603C 722.408 398.206 725.704 397.73 733.03 397.73C 749.513 397.73 756.106 406.143 756.106 418.049C 756.106 429.795 748.963 438.526 731.382 438.526L 722.408 438.526L 722.408 403.603zM 678.638 390.428L 678.638 396.46C 691.641 396.936 693.106 397.73 693.106 405.826L 693.106 484.878C 693.106 492.974 691.641 493.768 678.638 494.244L 678.638 500.276L 739.074 500.276C 759.951 500.276 772.588 497.101 780.28 491.704C 787.789 486.466 790.719 478.846 790.719 470.274C 790.719 452.654 775.701 443.923 758.669 441.701L 758.67 441.384C 776.617 438.05 785.774 429.795 785.774 416.779C 785.774 397.413 768.01 390.428 739.074 390.428L 678.638 390.428z"
+ style="stroke:#0f5700; stroke-width:3.0; fill:#ffbd0f; font-family:Utopia-Bold; font-size:130.0" />
+ <path
+ id="path4161"
+ d="M 847.492 405.826C 847.492 397.73 848.957 396.936 861.96 396.46L 861.96 390.428L 803.722 390.428L 803.722 396.46C 816.725 396.936 818.19 397.73 818.19 405.826L 818.19 484.878C 818.19 492.974 816.725 493.768 803.722 494.244L 803.722 500.276L 861.96 500.276L 861.96 494.244C 848.957 493.768 847.492 492.974 847.492 484.878L 847.492 405.826z"
+ style="stroke:#0f5700; stroke-width:3.0; fill:#ffbd0f; font-family:Utopia-Bold; font-size:130.0" />
+ </g>
+ <g
+ id="g4163">
+ <g
+ id="g4165">
+ <defs
+ id="defs4167">
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ fy="88.883"
+ fx="498.674"
+ r="310.968"
+ cy="88.883"
+ cx="498.674"
+ id="1">
+ <stop
+ id="stop4170"
+ style="stop-color:#7e9dff"
+ offset="0" />
+ <stop
+ id="stop4172"
+ style="stop-color:#6c7dff"
+ offset="0.06" />
+ <stop
+ id="stop4174"
+ style="stop-color:#044395"
+ offset="0.145" />
+ <stop
+ id="stop4176"
+ style="stop-color:#021733"
+ offset="1" />
+ </radialGradient>
+ </defs>
+ <path
+ id="path4178"
+ d="M 618.019 200.038C 638.89 282.628 608.394 349.479 528.175 368.816C 502.579 375.284 465.507 377.159 444.439 357.745C 423.371 338.33 408.726 308.685 413.437 226.655C 390.405 154.598 393.611 136.904 397.742 122.03C 401.875 107.157 412.255 80.8406 453.898 69.8857C 495.54 58.9308 597.148 117.449 618.019 200.038z"
+ style="stroke:none; fill:url(#1)" />
+ </g>
+ <g
+ id="g4180">
+ <defs
+ id="defs4182">
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ fy="159.77"
+ fx="580.887"
+ r="200.958"
+ cy="159.77"
+ cx="580.887"
+ id="2">
+ <stop
+ id="stop4185"
+ style="stop-color:#ffffff"
+ offset="0" />
+ <stop
+ id="stop4187"
+ style="stop-color:#ffffff"
+ offset="0.18" />
+ <stop
+ id="stop4189"
+ style="stop-color:#d3d3d3"
+ offset="0.57" />
+ <stop
+ id="stop4191"
+ style="stop-color:#434343"
+ offset="1" />
+ </radialGradient>
+ </defs>
+ <path
+ id="path4193"
+ d="M 619.025 202.942C 614.54 180.599 601.875 160.552 590.285 143.124C 578.696 125.696 550.663 104.377 550.663 104.377C 550.663 104.377 504.942 124.336 495.826 151.652C 486.709 178.969 497.616 243.327 507.078 267.129C 516.541 290.931 534.32 318.317 547.853 331.131C 561.389 343.946 582.667 342.384 594.723 331.391C 606.779 320.397 621.344 293.395 623.902 268.747C 627.166 232.279 619.025 202.942 619.025 202.942z"
+ style="stroke:none; fill:url(#2)" />
+ </g>
+ <g
+ id="g4195">
+ <defs
+ id="defs4197">
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ fy="341.903"
+ fx="620.03"
+ r="105.281"
+ cy="341.903"
+ cx="620.03"
+ id="3">
+ <stop
+ id="stop4200"
+ style="stop-color:#fff1a4"
+ offset="0" />
+ <stop
+ id="stop4202"
+ style="stop-color:#e5b502"
+ offset="0.165" />
+ <stop
+ id="stop4204"
+ style="stop-color:#d89d00"
+ offset="0.27" />
+ <stop
+ id="stop4206"
+ style="stop-color:#483104"
+ offset="0.555" />
+ <stop
+ id="stop4208"
+ style="stop-color:#1e1501"
+ offset="1" />
+ </radialGradient>
+ </defs>
+ <path
+ id="path4210"
+ d="M 525.292 372.622C 525.292 392.449 550.82 388.476 583.045 384.863C 616.31 389.68 642.902 388.252 644.037 362.988C 645.172 337.727 614.922 321.046 580.964 342.72C 549.086 342.72 525.292 352.793 525.292 372.622z"
+ style="stroke:none; fill:url(#3)" />
+ <defs
+ id="defs4212">
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ fy="310.795"
+ fx="563.988"
+ r="106.591"
+ cy="310.795"
+ cx="563.988"
+ id="4">
+ <stop
+ id="stop4215"
+ style="stop-color:#fff1a4"
+ offset="0" />
+ <stop
+ id="stop4217"
+ style="stop-color:#e5b502"
+ offset="0.19" />
+ <stop
+ id="stop4219"
+ style="stop-color:#d89d00"
+ offset="0.41" />
+ <stop
+ id="stop4221"
+ style="stop-color:#483104"
+ offset="0.81" />
+ <stop
+ id="stop4223"
+ style="stop-color:#1e1501"
+ offset="1" />
+ </radialGradient>
+ </defs>
+ <path
+ id="path4225"
+ d="M 530.576 331.212C 478.035 360.826 503.819 392.371 520.578 395.057C 543.904 398.9 575.352 376.71 580.786 343.307C 586.221 309.903 561.369 281.72 544.611 279.034C 527.852 276.35 508.989 288.907 530.576 331.212z"
+ style="stroke:none; fill:url(#4)" />
+ <defs
+ id="defs4227">
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="400.31"
+ x2="516.659"
+ y1="274.413"
+ x1="548.133"
+ id="5">
+ <stop
+ id="stop4230"
+ style="stop-color:#5a3e07"
+ offset="0" />
+ <stop
+ id="stop4232"
+ style="stop-color:#714e08"
+ offset="0.345" />
+ <stop
+ id="stop4234"
+ style="stop-color:#d89d00"
+ offset="0.59" />
+ <stop
+ id="stop4236"
+ style="stop-color:#e5b502"
+ offset="1" />
+ </linearGradient>
+ </defs>
+ <path
+ id="path4238"
+ d="M 529.742 331.493C 477.201 361.107 502.985 392.652 519.744 395.338C 543.069 399.18 558.251 375.846 564.83 346.795C 569.805 317.057 562.598 292.541 543.776 279.315C 527.017 276.631 508.154 289.188 529.742 331.493z"
+ style="stroke:none; fill:url(#5)" />
+ </g>
+ <g
+ id="g4240">
+ <path
+ id="path4242"
+ d="M 633.821 87.1747C 635.409 92.4327 632.811 98.0327 628.301 98.7027C 620.977 102.525 614 103.64 611.962 93.3137C 609.586 80.9617 618.038 81.5536 622.548 80.8847C 627.058 80.2147 632.233 81.9157 633.821 87.1747z"
+ style="stroke:none; fill:#e72c02" />
+ <defs
+ id="defs4244">
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="114.262"
+ x2="601.751"
+ y1="76.0623"
+ x1="594.031"
+ id="6">
+ <stop
+ id="stop4247"
+ style="stop-color:#745424"
+ offset="0" />
+ <stop
+ id="stop4249"
+ style="stop-color:#a27632"
+ offset="0.28" />
+ <stop
+ id="stop4251"
+ style="stop-color:#4f190c"
+ offset="0.535" />
+ <stop
+ id="stop4253"
+ style="stop-color:#571915"
+ offset="1" />
+ </linearGradient>
+ </defs>
+ <path
+ id="path4255"
+ d="M 566.562 104.123C 568.556 109.249 584.051 110.179 601.146 106.199C 624.235 102.029 632.389 99.6927 628.503 89.7027C 624.467 76.6137 616.253 82.1867 593.921 87.6277C 576.827 91.6077 564.57 98.9977 566.562 104.123z"
+ style="stroke:none; fill:url(#6)" />
+ </g>
+ <g
+ id="g4257">
+ <defs
+ id="defs4259">
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ fy="101.111"
+ fx="541.672"
+ r="48.8219"
+ cy="101.111"
+ cx="541.672"
+ id="7">
+ <stop
+ id="stop4262"
+ style="stop-color:#e5fbff"
+ offset="0" />
+ <stop
+ id="stop4264"
+ style="stop-color:#d3d3d3"
+ offset="0.41" />
+ <stop
+ id="stop4266"
+ style="stop-color:#434343"
+ offset="1" />
+ </radialGradient>
+ </defs>
+ <path
+ id="path4268"
+ d="M 518.973 121.186L 536.987 88.7227L 578.556 69.1248L 562.72 116.237L 526.496 123.958L 518.973 121.186z"
+ style="stroke:none; fill:url(#7)" />
+ <path
+ id="path4270"
+ d="M 563.644 92.9517L 554.742 82.8777"
+ style="stroke:#688d9a; stroke-width:1; fill:none" />
+ <path
+ id="path4272"
+ d="M 553.336 104.197L 542.56 90.3737"
+ style="stroke:#688d9a; stroke-width:1; fill:none" />
+ <path
+ id="path4274"
+ d="M 542.091 114.973L 530.378 99.2767"
+ style="stroke:#688d9a; stroke-width:1; fill:none" />
+ <path
+ id="path4276"
+ d="M 530.846 122.002L 520.07 108.179"
+ style="stroke:#688d9a; stroke-width:1; fill:none" />
+ <defs
+ id="defs4278">
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ fy="91.0278"
+ fx="593.938"
+ r="82.7176"
+ cy="91.0278"
+ cx="593.938"
+ id="8">
+ <stop
+ id="stop4281"
+ style="stop-color:#fff1a4"
+ offset="0" />
+ <stop
+ id="stop4283"
+ style="stop-color:#e5b502"
+ offset="0.19" />
+ <stop
+ id="stop4285"
+ style="stop-color:#d89d00"
+ offset="0.41" />
+ <stop
+ id="stop4287"
+ style="stop-color:#483104"
+ offset="0.81" />
+ <stop
+ id="stop4289"
+ style="stop-color:#1e1501"
+ offset="1" />
+ </radialGradient>
+ </defs>
+ <path
+ id="path4291"
+ d="M 596.889 67.2278C 596.943 72.4857 598.897 74.7788 596.342 77.9047C 593.787 81.0287 574.404 91.1307 571.259 123.763C 541.395 132.972 519.605 121.375 519.605 121.375C 519.605 121.375 539.084 116.123 551.669 108.114C 567.686 66.9258 586.32 65.6527 596.889 67.2278z"
+ style="stroke:none; fill:url(#8)" />
+ <path
+ id="path4293"
+ d="M 594.303 67.7577L 581.951 71.3877L 570.88 76.3987"
+ style="stroke:#dda100; stroke-width:4; stroke-linecap:round; fill:#a27827" />
+ <defs
+ id="defs4295">
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ fy="78.7464"
+ fx="582.823"
+ r="78.2764"
+ cy="78.7464"
+ cx="582.823"
+ id="9">
+ <stop
+ id="stop4298"
+ style="stop-color:#fff1a4"
+ offset="0" />
+ <stop
+ id="stop4300"
+ style="stop-color:#e5b502"
+ offset="0.19" />
+ <stop
+ id="stop4302"
+ style="stop-color:#d89d00"
+ offset="0.41" />
+ <stop
+ id="stop4304"
+ style="stop-color:#483104"
+ offset="0.81" />
+ <stop
+ id="stop4306"
+ style="stop-color:#1e1501"
+ offset="1" />
+ </radialGradient>
+ </defs>
+ <path
+ id="path4308"
+ d="M 526.741 89.0367C 538.944 77.2147 558.486 64.1327 579.128 62.3497C 589.819 61.5868 600.484 66.1637 600.484 66.1637C 600.484 66.1637 589.043 68.4528 579.128 72.2648C 569.212 76.0787 542.647 94.3917 542.647 94.3917C 542.647 94.3917 526.5 110.402 519.253 122.225C 515.44 121.462 519.113 96.6647 526.741 89.0367z"
+ style="stroke:none; fill:url(#9)" />
+ <path
+ id="path4310"
+ d="M 566.69 79.5977L 544.434 100.917L 520.539 121.064"
+ style="stroke:#688d9a; stroke-width:1; fill:none" />
+ <path
+ id="path4312"
+ d="M 531.567 89.3146L 527.002 93.2836L 528.391 89.9107L 531.964 89.1166"
+ style="stroke:#362301; stroke-width:1; fill:none" />
+ </g>
+ <g
+ id="g4314">
+ <g
+ id="g4316">
+ <defs
+ id="defs4318">
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ fy="75.567"
+ fx="480.03"
+ r="55.0259"
+ cy="75.567"
+ cx="480.03"
+ id="10">
+ <stop
+ id="stop4321"
+ style="stop-color:#005f0b"
+ offset="0" />
+ <stop
+ id="stop4323"
+ style="stop-color:#005f0b"
+ offset="0.22" />
+ <stop
+ id="stop4325"
+ style="stop-color:#55ff4a"
+ offset="0.7" />
+ <stop
+ id="stop4327"
+ style="stop-color:#55ff4a"
+ offset="1" />
+ </radialGradient>
+ </defs>
+ <path
+ id="path4329"
+ d="M 489.741 104.102C 505.2 109.033 519.69 106.943 522.084 99.4377C 524.477 91.9329 513.872 81.8394 498.414 76.9091C 482.955 71.9789 468.465 74.0688 466.071 81.5737C 463.678 89.0786 474.282 99.1721 489.741 104.102z"
+ style="stroke:#063800; stroke-width:1.4173199999999999; fill:url(#10)" />
+ <path
+ id="path4331"
+ d="M 491.59 97.8223C 498.051 99.8828 504.334 98.2959 505.614 94.2805C 506.895 90.2651 502.691 85.3335 496.23 83.2731C 489.77 81.2128 483.487 82.7996 482.206 86.8149C 480.926 90.8303 485.13 95.762 491.59 97.8223z"
+ style="stroke:#000000; stroke-width:1; fill:#000000" />
+ <path
+ id="path4333"
+ d="M 488.494 84.8146C 494.045 84.5436 497.489 82.8926 496.123 80.1247C 494.756 77.3557 488.497 74.6178 482.946 74.8888C 476.185 75.1627 474.642 78.3337 476.009 81.1027C 477.373 83.8707 482.942 85.0837 488.494 84.8146z"
+ style="stroke:none; fill:#ddffdd" />
+ <path
+ id="path4335"
+ d="M 470.103 86.0082C 471.795 86.5479 473.589 85.6666 474.108 84.0414C 474.626 82.4161 473.673 80.6589 471.981 80.1193C 470.289 79.5797 468.495 80.4608 467.977 82.0861C 467.459 83.7114 468.411 85.4686 470.103 86.0082z"
+ style="stroke:none; fill:#c6ffbe" />
+ <path
+ id="path4337"
+ d="M 500.951 105.158C 501.652 106.329 504.198 107.071 506.634 106.816C 509.069 106.561 510.477 105.404 509.776 104.233C 509.075 103.063 506.529 102.32 504.093 102.575C 501.658 102.831 500.25 103.988 500.951 105.158z"
+ style="stroke:none; fill:#e5ffe0" />
+ </g>
+ </g>
+ <g
+ id="g4339">
+ <g
+ id="g4341">
+ <g
+ id="g4343">
+ <path
+ id="path4345"
+ d="M 418.049 411.391L 353.673 258.604"
+ style="stroke:#925923; stroke-width:1; fill:none" />
+ <g
+ id="g4347">
+ <path
+ id="path4349"
+ d="M 417.942 411.449L 353.31 258.772"
+ style="stroke:#9d6632; stroke-width:1.0; fill:none" />
+ <path
+ id="path4351"
+ d="M 417.834 411.506L 352.947 258.94"
+ style="stroke:#a87341; stroke-width:1.0; fill:none" />
+ <path
+ id="path4353"
+ d="M 417.726 411.564L 352.584 259.108"
+ style="stroke:#b37f4f; stroke-width:1.0; fill:none" />
+ <path
+ id="path4355"
+ d="M 417.618 411.622L 352.221 259.276"
+ style="stroke:#be8c5e; stroke-width:1.0; fill:none" />
+ <path
+ id="path4357"
+ d="M 417.51 411.68L 351.857 259.444"
+ style="stroke:#c8996d; stroke-width:1.0; fill:none" />
+ <path
+ id="path4359"
+ d="M 417.403 411.738L 351.494 259.612"
+ style="stroke:#d3a67b; stroke-width:1.0; fill:none" />
+ <path
+ id="path4361"
+ d="M 417.295 411.795L 351.131 259.78"
+ style="stroke:#deb38a; stroke-width:1.0; fill:none" />
+ <path
+ id="path4363"
+ d="M 417.187 411.853L 350.768 259.948"
+ style="stroke:#e9c099; stroke-width:1.0; fill:none" />
+ <path
+ id="path4365"
+ d="M 417.079 411.911L 350.405 260.116"
+ style="stroke:#f4cca8; stroke-width:1.0; fill:none" />
+ </g>
+ <path
+ id="path4367"
+ d="M 416.971 411.969L 350.041 260.284"
+ style="stroke:#ffd9b6; stroke-width:1; fill:none" />
+ <g
+ id="g4369">
+ <path
+ id="path4371"
+ d="M 416.823 411.958L 349.612 260.4"
+ style="stroke:#efc9a6; stroke-width:1.0; fill:none" />
+ <path
+ id="path4373"
+ d="M 416.676 411.947L 349.183 260.516"
+ style="stroke:#dfb996; stroke-width:1.0; fill:none" />
+ <path
+ id="path4375"
+ d="M 416.528 411.936L 348.754 260.632"
+ style="stroke:#cfa986; stroke-width:1.0; fill:none" />
+ <path
+ id="path4377"
+ d="M 416.38 411.925L 348.325 260.749"
+ style="stroke:#c09976; stroke-width:1.0; fill:none" />
+ <path
+ id="path4379"
+ d="M 416.232 411.914L 347.896 260.865"
+ style="stroke:#b08966; stroke-width:1.0; fill:none" />
+ <path
+ id="path4381"
+ d="M 416.084 411.903L 347.467 260.981"
+ style="stroke:#a07955; stroke-width:1.0; fill:none" />
+ <path
+ id="path4383"
+ d="M 415.936 411.892L 347.038 261.097"
+ style="stroke:#916a45; stroke-width:1.0; fill:none" />
+ <path
+ id="path4385"
+ d="M 415.788 411.882L 346.609 261.213"
+ style="stroke:#815a35; stroke-width:1.0; fill:none" />
+ <path
+ id="path4387"
+ d="M 415.64 411.871L 346.18 261.33"
+ style="stroke:#714a25; stroke-width:1.0; fill:none" />
+ </g>
+ <path
+ id="path4389"
+ d="M 415.492 411.86L 345.751 261.446"
+ style="stroke:#613a15; stroke-width:1; fill:none" />
+ </g>
+ <defs
+ id="defs4391">
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="259.042"
+ x2="366.925"
+ y1="274.058"
+ x1="335.733"
+ id="11">
+ <stop
+ id="stop4394"
+ style="stop-color:#ffcc67"
+ offset="0" />
+ <stop
+ id="stop4396"
+ style="stop-color:#e5b75c"
+ offset="0.425" />
+ <stop
+ id="stop4398"
+ style="stop-color:#fffcb9"
+ offset="0.51" />
+ <stop
+ id="stop4400"
+ style="stop-color:#ef9f24"
+ offset="0.62" />
+ <stop
+ id="stop4402"
+ style="stop-color:#ffc11e"
+ offset="1" />
+ </linearGradient>
+ </defs>
+ <path
+ id="path4404"
+ d="M 351.371 280.373L 363.885 274.236L 357.458 252.728L 338.772 261.948L 351.371 280.373z"
+ style="stroke:none; fill:url(#11)" />
+ <defs
+ id="defs4406">
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="404.724"
+ x2="421.908"
+ y1="412.773"
+ x1="405.186"
+ id="12">
+ <stop
+ id="stop4409"
+ style="stop-color:#ffcc67"
+ offset="0" />
+ <stop
+ id="stop4411"
+ style="stop-color:#e5b75c"
+ offset="0.425" />
+ <stop
+ id="stop4413"
+ style="stop-color:#fffcb9"
+ offset="0.51" />
+ <stop
+ id="stop4415"
+ style="stop-color:#ef9f24"
+ offset="0.62" />
+ <stop
+ id="stop4417"
+ style="stop-color:#ffc11e"
+ offset="1" />
+ </linearGradient>
+ </defs>
+ <path
+ id="path4419"
+ d="M 413.308 402.576L 418.023 400.22L 419.739 417.278L 407.354 405.109L 413.308 402.576z"
+ style="stroke:none; fill:url(#12)" />
+ </g>
+ <defs
+ id="defs4421">
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="277.415"
+ x2="327.072"
+ y1="188.583"
+ x1="478.085"
+ id="13">
+ <stop
+ id="stop4424"
+ style="stop-color:#1e6dac"
+ offset="0" />
+ <stop
+ id="stop4426"
+ style="stop-color:#13004d"
+ offset="0.385" />
+ <stop
+ id="stop4428"
+ style="stop-color:#000000"
+ offset="1" />
+ </linearGradient>
+ </defs>
+ <path
+ id="path4430"
+ d="M 476.954 195.11C 481.1 212.244 439.628 241.239 431.267 243.927C 427.138 245.254 408.359 253.5 391.009 255.461C 373.225 257.472 356.913 253.183 356.913 253.183C 356.913 253.183 338.997 263.038 338.997 263.038C 338.997 263.038 337.504 269.906 336.011 275.579C 334.518 281.253 328.247 278.864 327.948 273.489C 327.65 268.114 329.143 258.559 333.622 254.677C 338.101 250.795 347.364 246.11 367.066 242.732C 377.517 240.941 393.224 242.862 403.132 234.591C 411.96 227.222 416.851 207.377 420.087 204.844C 426.955 199.469 473.638 174.66 476.954 195.11z"
+ style="stroke:none; fill:url(#13)" />
+ <g
+ id="g4432">
+ <path
+ id="path4434"
+ d="M 421.491 204.164C 415.831 212.658 418.301 211.745 414.153 219.084C 410.004 226.424 410.533 227.809 403.914 233.955C 396.311 243.05 367.954 240.368 352.35 246.46C 337.988 249.564 330.826 256.14 328.989 264.583C 327.152 273.025 327.761 269.572 328.314 274.546"
+ style="stroke:#001364; stroke-width:1; fill:none" />
+ <g
+ id="g4436">
+ <path
+ id="path4438"
+ d="M 422.38 203.946C 416.814 212.298 419.035 211.723 414.717 219.128C 410.398 226.535 410.711 228.04 404.064 234.129C 396.449 243.119 367.929 240.504 352.429 246.532C 338.15 249.621 330.992 256.129 329.126 264.518C 327.259 272.907 327.849 269.691 328.393 274.583"
+ style="stroke:#001566; stroke-width:1.0; fill:none" />
+ <path
+ id="path4440"
+ d="M 423.268 203.728C 417.796 211.939 419.77 211.701 415.281 219.173C 410.791 226.646 410.888 228.27 404.213 234.304C 396.587 243.188 367.904 240.641 352.507 246.604C 338.311 249.678 331.157 256.118 329.262 264.454C 327.366 272.79 327.936 269.811 328.471 274.619"
+ style="stroke:#001767; stroke-width:1.0; fill:none" />
+ <path
+ id="path4442"
+ d="M 424.156 203.51C 418.779 211.579 420.504 211.679 415.844 219.218C 411.184 226.757 411.065 228.501 404.363 234.478C 396.725 243.257 367.879 240.778 352.586 246.676C 338.472 249.735 331.323 256.107 329.398 264.39C 327.473 272.672 328.024 269.931 328.549 274.656"
+ style="stroke:#011869; stroke-width:1.0; fill:none" />
+ <path
+ id="path4444"
+ d="M 425.044 203.292C 419.761 211.22 421.238 211.657 416.408 219.262C 411.578 226.868 411.242 228.732 404.512 234.653C 396.863 243.326 367.854 240.914 352.664 246.748C 338.633 249.792 331.488 256.096 329.534 264.326C 327.58 272.555 328.111 270.051 328.628 274.693"
+ style="stroke:#011a6a; stroke-width:1.0; fill:none" />
+ <path
+ id="path4446"
+ d="M 425.932 203.074C 420.744 210.86 421.972 211.635 416.972 219.307C 411.971 226.979 411.42 228.963 404.661 234.827C 397.001 243.395 367.829 241.051 352.742 246.82C 338.794 249.849 331.653 256.085 329.67 264.262C 327.687 272.438 328.199 270.17 328.706 274.73"
+ style="stroke:#011c6c; stroke-width:1.0; fill:none" />
+ <path
+ id="path4448"
+ d="M 426.82 202.856C 421.726 210.501 422.706 211.613 417.535 219.352C 412.364 227.091 411.597 229.194 404.811 235.002C 397.139 243.463 367.804 241.188 352.821 246.892C 338.955 249.906 331.819 256.074 329.806 264.197C 327.794 272.32 328.286 270.29 328.784 274.767"
+ style="stroke:#011e6d; stroke-width:1.0; fill:none" />
+ <path
+ id="path4450"
+ d="M 427.709 202.638C 422.709 210.141 423.44 211.592 418.099 219.396C 412.758 227.202 411.774 229.425 404.96 235.176C 397.277 243.532 367.779 241.325 352.899 246.964C 339.117 249.963 331.984 256.062 329.942 264.133C 327.9 272.203 328.374 270.41 328.862 274.804"
+ style="stroke:#01206f; stroke-width:1.0; fill:none" />
+ <path
+ id="path4452"
+ d="M 428.597 202.42C 423.691 209.782 424.174 211.57 418.663 219.441C 413.151 227.313 411.951 229.655 405.11 235.351C 397.415 243.601 367.754 241.461 352.978 247.036C 339.278 250.021 332.15 256.051 330.078 264.069C 328.007 272.085 328.462 270.53 328.941 274.841"
+ style="stroke:#012270; stroke-width:1.0; fill:none" />
+ <path
+ id="path4454"
+ d="M 429.485 202.202C 424.674 209.422 424.908 211.548 419.227 219.486C 413.544 227.424 412.129 229.886 405.259 235.525C 397.553 243.67 367.729 241.598 353.056 247.108C 339.439 250.078 332.315 256.04 330.215 264.005C 328.114 271.968 328.549 270.649 329.019 274.877"
+ style="stroke:#012472; stroke-width:1.0; fill:none" />
+ <path
+ id="path4456"
+ d="M 430.373 201.984C 425.656 209.063 425.642 211.526 419.79 219.53C 413.938 227.535 412.306 230.117 405.408 235.699C 397.691 243.739 367.704 241.735 353.134 247.18C 339.6 250.135 332.48 256.029 330.351 263.94C 328.221 271.85 328.637 270.769 329.097 274.914"
+ style="stroke:#012573; stroke-width:1.0; fill:none" />
+ <path
+ id="path4458"
+ d="M 431.261 201.766C 426.639 208.703 426.376 211.504 420.354 219.575C 414.331 227.646 412.483 230.348 405.558 235.874C 397.829 243.808 367.679 241.871 353.213 247.252C 339.761 250.192 332.646 256.018 330.487 263.876C 328.328 271.733 328.724 270.889 329.176 274.951"
+ style="stroke:#012775; stroke-width:1.0; fill:none" />
+ <path
+ id="path4460"
+ d="M 432.149 201.549C 427.621 208.344 427.11 211.482 420.918 219.62C 414.724 227.757 412.66 230.579 405.707 236.048C 397.967 243.877 367.654 242.008 353.291 247.324C 339.922 250.249 332.811 256.007 330.623 263.812C 328.435 271.616 328.812 271.009 329.254 274.988"
+ style="stroke:#012977; stroke-width:1.0; fill:none" />
+ <path
+ id="path4462"
+ d="M 433.038 201.331C 428.604 207.984 427.844 211.46 421.481 219.664C 415.118 227.869 412.838 230.81 405.857 236.223C 398.105 243.946 367.629 242.145 353.37 247.396C 340.084 250.306 332.976 255.996 330.759 263.748C 328.542 271.498 328.899 271.128 329.332 275.025"
+ style="stroke:#012b78; stroke-width:1.0; fill:none" />
+ <path
+ id="path4464"
+ d="M 433.926 201.113C 429.586 207.625 428.578 211.438 422.045 219.709C 415.511 227.98 413.015 231.041 406.006 236.397C 398.242 244.015 367.603 242.281 353.448 247.468C 340.245 250.363 333.142 255.985 330.895 263.683C 328.648 271.381 328.987 271.248 329.411 275.062"
+ style="stroke:#022d7a; stroke-width:1.0; fill:none" />
+ <path
+ id="path4466"
+ d="M 434.814 200.895C 430.569 207.265 429.312 211.416 422.609 219.753C 415.904 228.091 413.192 231.271 406.155 236.572C 398.38 244.084 367.578 242.418 353.526 247.54C 340.406 250.42 333.307 255.974 331.031 263.619C 328.755 271.263 329.074 271.368 329.489 275.098"
+ style="stroke:#022f7b; stroke-width:1.0; fill:none" />
+ <path
+ id="path4468"
+ d="M 435.702 200.677C 431.551 206.906 430.046 211.395 423.172 219.798C 416.298 228.202 413.369 231.502 406.305 236.746C 398.518 244.153 367.553 242.555 353.605 247.612C 340.567 250.478 333.473 255.963 331.168 263.555C 328.862 271.146 329.162 271.488 329.567 275.135"
+ style="stroke:#02317d; stroke-width:1.0; fill:none" />
+ <path
+ id="path4470"
+ d="M 436.59 200.459C 432.534 206.546 430.781 211.373 423.736 219.843C 416.691 228.313 413.547 231.733 406.454 236.921C 398.656 244.222 367.528 242.691 353.683 247.684C 340.728 250.535 333.638 255.952 331.304 263.491C 328.969 271.028 329.249 271.607 329.645 275.172"
+ style="stroke:#02327e; stroke-width:1.0; fill:none" />
+ <path
+ id="path4472"
+ d="M 437.478 200.241C 433.516 206.187 431.515 211.351 424.3 219.887C 417.084 228.424 413.724 231.964 406.604 237.095C 398.794 244.291 367.503 242.828 353.762 247.756C 340.889 250.592 333.803 255.941 331.44 263.427C 329.076 270.911 329.337 271.727 329.724 275.209"
+ style="stroke:#023480; stroke-width:1.0; fill:none" />
+ <path
+ id="path4474"
+ d="M 438.367 200.023C 434.499 205.827 432.249 211.329 424.863 219.932C 417.478 228.536 413.901 232.195 406.753 237.27C 398.932 244.36 367.478 242.965 353.84 247.828C 341.051 250.649 333.969 255.93 331.576 263.362C 329.183 270.793 329.424 271.847 329.802 275.246"
+ style="stroke:#023681; stroke-width:1.0; fill:none" />
+ <path
+ id="path4476"
+ d="M 439.255 199.805C 435.481 205.468 432.983 211.307 425.427 219.977C 417.871 228.647 414.078 232.426 406.902 237.444C 399.07 244.429 367.453 243.101 353.918 247.9C 341.212 250.706 334.134 255.919 331.712 263.298C 329.29 270.676 329.512 271.967 329.88 275.283"
+ style="stroke:#023883; stroke-width:1.0; fill:none" />
+ <path
+ id="path4478"
+ d="M 440.143 199.587C 436.464 205.108 433.717 211.285 425.991 220.021C 418.264 228.758 414.256 232.657 407.052 237.619C 399.208 244.498 367.428 243.238 353.997 247.972C 341.373 250.763 334.299 255.908 331.848 263.234C 329.397 270.559 329.599 272.086 329.959 275.32"
+ style="stroke:#023a84; stroke-width:1.0; fill:none" />
+ <path
+ id="path4480"
+ d="M 441.031 199.369C 437.446 204.749 434.451 211.263 426.554 220.066C 418.658 228.869 414.433 232.887 407.201 237.793C 399.346 244.567 367.403 243.375 354.075 248.044C 341.534 250.82 334.465 255.897 331.984 263.17C 329.503 270.441 329.687 272.206 330.037 275.356"
+ style="stroke:#023c86; stroke-width:1.0; fill:none" />
+ <path
+ id="path4482"
+ d="M 441.919 199.151C 438.429 204.389 435.185 211.241 427.118 220.111C 419.051 228.98 414.61 233.118 407.351 237.968C 399.484 244.636 367.378 243.511 354.154 248.116C 341.695 250.877 334.63 255.886 332.12 263.105C 329.61 270.324 329.774 272.326 330.115 275.393"
+ style="stroke:#023d88; stroke-width:1.0; fill:none" />
+ <path
+ id="path4484"
+ d="M 442.807 198.933C 439.411 204.03 435.919 211.219 427.682 220.155C 419.444 229.091 414.787 233.349 407.5 238.142C 399.622 244.705 367.353 243.648 354.232 248.188C 341.856 250.934 334.796 255.875 332.257 263.041C 329.717 270.206 329.862 272.446 330.194 275.43"
+ style="stroke:#023f89; stroke-width:1.0; fill:none" />
+ <path
+ id="path4486"
+ d="M 443.696 198.715C 440.394 203.67 436.653 211.198 428.245 220.2C 419.838 229.202 414.965 233.58 407.649 238.317C 399.76 244.773 367.328 243.785 354.31 248.26C 342.018 250.992 334.961 255.864 332.393 262.977C 329.824 270.089 329.949 272.565 330.272 275.467"
+ style="stroke:#02418b; stroke-width:1.0; fill:none" />
+ <path
+ id="path4488"
+ d="M 444.584 198.497C 441.376 203.311 437.387 211.176 428.809 220.245C 420.231 229.314 415.142 233.811 407.799 238.491C 399.898 244.842 367.303 243.921 354.389 248.332C 342.179 251.049 335.126 255.853 332.529 262.913C 329.931 269.971 330.037 272.685 330.35 275.504"
+ style="stroke:#03438c; stroke-width:1.0; fill:none" />
+ <path
+ id="path4490"
+ d="M 445.472 198.28C 442.359 202.951 438.121 211.154 429.373 220.289C 420.624 229.425 415.319 234.042 407.948 238.666C 400.036 244.911 367.278 244.058 354.467 248.404C 342.34 251.106 335.292 255.842 332.665 262.848C 330.038 269.854 330.124 272.805 330.428 275.541"
+ style="stroke:#03458e; stroke-width:1.0; fill:none" />
+ <path
+ id="path4492"
+ d="M 446.36 198.062C 443.341 202.592 438.855 211.132 429.937 220.334C 421.018 229.536 415.496 234.272 408.098 238.84C 400.174 244.98 367.253 244.195 354.546 248.476C 342.501 251.163 335.457 255.831 332.801 262.784C 330.145 269.737 330.212 272.925 330.507 275.578"
+ style="stroke:#03478f; stroke-width:1.0; fill:none" />
+ <path
+ id="path4494"
+ d="M 447.248 197.844C 444.324 202.232 439.589 211.11 430.5 220.379C 421.411 229.647 415.674 234.503 408.247 239.015C 400.311 245.049 367.227 244.332 354.624 248.548C 342.662 251.22 335.623 255.82 332.937 262.72C 330.251 269.619 330.299 273.044 330.585 275.614"
+ style="stroke:#034991; stroke-width:1.0; fill:none" />
+ <path
+ id="path4496"
+ d="M 448.136 197.626C 445.306 201.873 440.323 211.088 431.064 220.423C 421.804 229.758 415.851 234.734 408.396 239.189C 400.449 245.118 367.202 244.468 354.702 248.62C 342.823 251.277 335.788 255.809 333.073 262.656C 330.358 269.502 330.387 273.164 330.663 275.651"
+ style="stroke:#034a92; stroke-width:1.0; fill:none" />
+ <path
+ id="path4498"
+ d="M 449.025 197.408C 446.289 201.513 441.057 211.066 431.628 220.468C 422.198 229.869 416.028 234.965 408.546 239.364C 400.587 245.187 367.177 244.605 354.781 248.692C 342.985 251.334 335.953 255.798 333.21 262.591C 330.465 269.384 330.474 273.284 330.742 275.688"
+ style="stroke:#034c94; stroke-width:1.0; fill:none" />
+ <path
+ id="path4500"
+ d="M 449.913 197.19C 447.271 201.154 441.792 211.044 432.191 220.513C 422.591 229.98 416.205 235.196 408.695 239.538C 400.725 245.256 367.152 244.742 354.859 248.764C 343.146 251.391 336.119 255.787 333.346 262.527C 330.572 269.267 330.562 273.404 330.82 275.725"
+ style="stroke:#034e95; stroke-width:1.0; fill:none" />
+ <path
+ id="path4502"
+ d="M 450.801 196.972C 448.254 200.794 442.526 211.023 432.755 220.557C 422.984 230.092 416.383 235.427 408.845 239.713C 400.863 245.325 367.127 244.878 354.938 248.836C 343.307 251.449 336.284 255.776 333.482 262.463C 330.679 269.149 330.649 273.523 330.898 275.762"
+ style="stroke:#035097; stroke-width:1.0; fill:none" />
+ <path
+ id="path4504"
+ d="M 451.689 196.754C 449.236 200.435 443.26 211.001 433.319 220.602C 423.378 230.203 416.56 235.658 408.994 239.887C 401.001 245.394 367.102 245.015 355.016 248.908C 343.468 251.506 336.449 255.765 333.618 262.399C 330.786 269.032 330.737 273.643 330.977 275.799"
+ style="stroke:#035299; stroke-width:1.0; fill:none" />
+ <path
+ id="path4506"
+ d="M 452.577 196.536C 450.219 200.075 443.994 210.979 433.882 220.646C 423.771 230.314 416.737 235.888 409.143 240.062C 401.139 245.463 367.077 245.152 355.094 248.98C 343.629 251.563 336.615 255.754 333.754 262.335C 330.893 268.915 330.824 273.763 331.055 275.836"
+ style="stroke:#03549a; stroke-width:1.0; fill:none" />
+ <path
+ id="path4508"
+ d="M 453.465 196.318C 451.201 199.716 444.728 210.957 434.446 220.691C 424.164 230.425 416.914 236.119 409.293 240.236C 401.277 245.532 367.052 245.288 355.173 249.052C 343.79 251.62 336.78 255.743 333.89 262.27C 331 268.797 330.912 273.883 331.133 275.872"
+ style="stroke:#03569c; stroke-width:1.0; fill:none" />
+ <path
+ id="path4510"
+ d="M 454.354 196.1C 452.184 199.356 445.462 210.935 435.01 220.736C 424.558 230.536 417.092 236.35 409.442 240.411C 401.415 245.601 367.027 245.425 355.251 249.124C 343.952 251.677 336.946 255.731 334.026 262.206C 331.106 268.68 330.999 274.003 331.211 275.909"
+ style="stroke:#04579d; stroke-width:1.0; fill:none" />
+ <path
+ id="path4512"
+ d="M 455.242 195.882C 453.166 198.997 446.196 210.913 435.573 220.78C 424.951 230.647 417.269 236.581 409.592 240.585C 401.553 245.67 367.002 245.562 355.33 249.196C 344.113 251.734 337.111 255.72 334.162 262.142C 331.213 268.562 331.087 274.122 331.29 275.946"
+ style="stroke:#04599f; stroke-width:1.0; fill:none" />
+ <path
+ id="path4514"
+ d="M 456.13 195.664C 454.149 198.637 446.93 210.891 436.137 220.825C 425.344 230.759 417.446 236.812 409.741 240.759C 401.691 245.739 366.977 245.698 355.408 249.268C 344.274 251.791 337.276 255.709 334.299 262.078C 331.32 268.445 331.174 274.242 331.368 275.983"
+ style="stroke:#045ba0; stroke-width:1.0; fill:none" />
+ <path
+ id="path4516"
+ d="M 457.018 195.446C 455.131 198.278 447.664 210.869 436.701 220.87C 425.738 230.87 417.623 237.043 409.89 240.934C 401.829 245.808 366.952 245.835 355.486 249.34C 344.435 251.848 337.442 255.698 334.435 262.013C 331.427 268.327 331.262 274.362 331.446 276.02"
+ style="stroke:#045da2; stroke-width:1.0; fill:none" />
+ <path
+ id="path4518"
+ d="M 457.906 195.228C 456.114 197.918 448.398 210.847 437.264 220.914C 426.131 230.981 417.801 237.274 410.04 241.108C 401.967 245.877 366.927 245.972 355.565 249.412C 344.596 251.905 337.607 255.687 334.571 261.949C 331.534 268.21 331.35 274.482 331.525 276.057"
+ style="stroke:#045fa3; stroke-width:1.0; fill:none" />
+ <path
+ id="path4520"
+ d="M 458.794 195.011C 457.096 197.559 449.132 210.826 437.828 220.959C 426.524 231.092 417.978 237.504 410.189 241.283C 402.105 245.946 366.902 246.108 355.643 249.484C 344.757 251.963 337.773 255.676 334.707 261.885C 331.641 268.092 331.437 274.601 331.603 276.093"
+ style="stroke:#0461a5; stroke-width:1.0; fill:none" />
+ <path
+ id="path4522"
+ d="M 459.683 194.793C 458.079 197.199 449.866 210.804 438.392 221.004C 426.918 231.203 418.155 237.735 410.339 241.457C 402.243 246.015 366.876 246.245 355.722 249.556C 344.919 252.02 337.938 255.665 334.843 261.821C 331.748 267.975 331.525 274.721 331.681 276.13"
+ style="stroke:#0463a6; stroke-width:1.0; fill:none" />
+ <path
+ id="path4524"
+ d="M 460.571 194.575C 459.061 196.84 450.6 210.782 438.955 221.048C 427.311 231.314 418.332 237.966 410.488 241.632C 402.38 246.084 366.851 246.382 355.8 249.628C 345.08 252.077 338.103 255.654 334.979 261.756C 331.854 267.858 331.612 274.841 331.76 276.167"
+ style="stroke:#0464a8; stroke-width:1.0; fill:none" />
+ <path
+ id="path4526"
+ d="M 461.459 194.357C 460.044 196.48 451.334 210.76 439.519 221.093C 427.704 231.425 418.51 238.197 410.637 241.806C 402.518 246.152 366.826 246.518 355.878 249.7C 345.241 252.134 338.269 255.643 335.115 261.692C 331.961 267.74 331.7 274.961 331.838 276.204"
+ style="stroke:#0466aa; stroke-width:1.0; fill:none" />
+ <path
+ id="path4528"
+ d="M 462.347 194.139C 461.026 196.121 452.068 210.738 440.083 221.138C 428.098 231.537 418.687 238.428 410.787 241.981C 402.656 246.221 366.801 246.655 355.957 249.772C 345.402 252.191 338.434 255.632 335.252 261.628C 332.068 267.623 331.787 275.08 331.916 276.241"
+ style="stroke:#0468ab; stroke-width:1.0; fill:none" />
+ <path
+ id="path4530"
+ d="M 463.235 193.921C 462.009 195.761 452.802 210.716 440.646 221.182C 428.491 231.648 418.864 238.659 410.936 242.155C 402.794 246.29 366.776 246.792 356.035 249.844C 345.563 252.248 338.599 255.621 335.388 261.564C 332.175 267.505 331.875 275.2 331.994 276.278"
+ style="stroke:#046aad; stroke-width:1.0; fill:none" />
+ <path
+ id="path4532"
+ d="M 464.123 193.703C 462.991 195.402 453.537 210.694 441.21 221.227C 428.884 231.759 419.041 238.89 411.086 242.33C 402.932 246.359 366.751 246.928 356.114 249.916C 345.724 252.305 338.765 255.61 335.524 261.5C 332.282 267.388 331.962 275.32 332.073 276.315"
+ style="stroke:#056cae; stroke-width:1.0; fill:none" />
+ <path
+ id="path4534"
+ d="M 465.012 193.485C 463.974 195.042 454.271 210.672 441.774 221.272C 429.278 231.87 419.219 239.12 411.235 242.504C 403.07 246.428 366.726 247.065 356.192 249.988C 345.886 252.362 338.93 255.599 335.66 261.435C 332.389 267.27 332.05 275.44 332.151 276.351"
+ style="stroke:#056eb0; stroke-width:1.0; fill:none" />
+ <path
+ id="path4536"
+ d="M 465.9 193.267C 464.956 194.683 455.005 210.651 442.338 221.316C 429.671 231.981 419.396 239.351 411.384 242.679C 403.208 246.497 366.701 247.202 356.27 250.06C 346.047 252.419 339.096 255.588 335.796 261.371C 332.496 267.153 332.137 275.559 332.229 276.388"
+ style="stroke:#0570b1; stroke-width:1.0; fill:none" />
+ <path
+ id="path4538"
+ d="M 466.788 193.049C 465.939 194.323 455.739 210.629 442.901 221.361C 430.064 232.092 419.573 239.582 411.534 242.853C 403.346 246.566 366.676 247.339 356.349 250.132C 346.208 252.477 339.261 255.577 335.932 261.307C 332.603 267.036 332.225 275.679 332.308 276.425"
+ style="stroke:#0571b3; stroke-width:1.0; fill:none" />
+ <path
+ id="path4540"
+ d="M 467.676 192.831C 466.921 193.964 456.473 210.607 443.465 221.406C 430.458 232.203 419.75 239.813 411.683 243.028C 403.484 246.635 366.651 247.475 356.427 250.204C 346.369 252.534 339.426 255.566 336.068 261.243C 332.709 266.918 332.312 275.799 332.386 276.462"
+ style="stroke:#0573b4; stroke-width:1.0; fill:none" />
+ <path
+ id="path4542"
+ d="M 468.564 192.613C 467.904 193.604 457.207 210.585 444.029 221.45C 430.851 232.315 419.928 240.044 411.833 243.202C 403.622 246.704 366.626 247.612 356.506 250.276C 346.53 252.591 339.592 255.555 336.204 261.178C 332.816 266.801 332.4 275.919 332.464 276.499"
+ style="stroke:#0575b6; stroke-width:1.0; fill:none" />
+ <path
+ id="path4544"
+ d="M 469.452 192.395C 468.886 193.245 457.941 210.563 444.592 221.495C 431.244 232.426 420.105 240.275 411.982 243.377C 403.76 246.773 366.601 247.749 356.584 250.348C 346.691 252.648 339.757 255.544 336.341 261.114C 332.923 266.683 332.487 276.038 332.543 276.536"
+ style="stroke:#0577b8; stroke-width:1.0; fill:none" />
+ <path
+ id="path4546"
+ d="M 470.341 192.177C 469.869 192.885 458.675 210.541 445.156 221.539C 431.638 232.537 420.282 240.505 412.131 243.551C 403.898 246.842 366.576 247.885 356.662 250.42C 346.853 252.705 339.922 255.533 336.477 261.05C 333.03 266.566 332.575 276.158 332.621 276.573"
+ style="stroke:#0579b9; stroke-width:1.0; fill:none" />
+ <path
+ id="path4548"
+ d="M 471.229 191.959C 470.851 192.526 459.409 210.519 445.72 221.584C 432.031 232.648 420.459 240.736 412.281 243.726C 404.036 246.911 366.551 248.022 356.741 250.492C 347.014 252.762 340.088 255.522 336.613 260.986C 333.137 266.448 332.662 276.278 332.699 276.609"
+ style="stroke:#057bbb; stroke-width:1.0; fill:none" />
+ <path
+ id="path4550"
+ d="M 472.117 191.742C 471.834 192.166 460.143 210.497 446.283 221.629C 432.424 232.759 420.637 240.967 412.43 243.9C 404.174 246.98 366.526 248.159 356.819 250.564C 347.175 252.819 340.253 255.511 336.749 260.921C 333.244 266.331 332.75 276.398 332.777 276.646"
+ style="stroke:#057dbc; stroke-width:1.0; fill:none" />
+ <path
+ id="path4552"
+ d="M 473.005 191.524C 472.816 191.807 460.877 210.475 446.847 221.673C 432.818 232.87 420.814 241.198 412.58 244.075C 404.312 247.049 366.5 248.295 356.898 250.636C 347.336 252.876 340.419 255.5 336.885 260.857C 333.351 266.214 332.837 276.517 332.856 276.683"
+ style="stroke:#057ebe; stroke-width:1.0; fill:none" />
+ <path
+ id="path4554"
+ d="M 473.893 191.306C 473.799 191.447 461.611 210.454 447.411 221.718C 433.211 232.982 420.991 241.429 412.729 244.249C 404.449 247.118 366.475 248.432 356.976 250.708C 347.497 252.934 340.584 255.489 337.021 260.793C 333.457 266.096 332.925 276.637 332.934 276.72"
+ style="stroke:#0680bf; stroke-width:1.0; fill:none" />
+ </g>
+ <path
+ id="path4556"
+ d="M 474.781 191.088C 474.781 191.088 462.345 210.432 447.974 221.763C 433.604 233.093 421.168 241.66 412.878 244.424C 404.587 247.187 366.45 248.569 357.054 250.78C 347.658 252.991 340.749 255.478 337.157 260.729C 333.564 265.979 333.012 276.757 333.012 276.757"
+ style="stroke:#0682c1; stroke-width:1; fill:none" />
+ <g
+ id="g4558">
+ <path
+ id="path4560"
+ d="M 474.883 191.336C 474.883 191.336 462.64 210.68 448.149 222.039C 433.66 233.397 421.214 241.844 412.924 244.608C 404.633 247.371 366.754 248.845 357.091 250.89C 347.539 253.101 340.694 255.772 337.167 260.996C 333.638 266.218 333.086 276.573 333.104 276.738"
+ style="stroke:#057ebe; stroke-width:1.0; fill:none" />
+ <path
+ id="path4562"
+ d="M 474.984 191.585C 474.984 191.585 462.935 210.929 448.324 222.315C 433.715 233.701 421.26 242.028 412.971 244.792C 404.68 247.555 367.058 249.121 357.128 251.001C 347.419 253.212 340.639 256.067 337.176 261.263C 333.712 266.458 333.16 276.388 333.197 276.72"
+ style="stroke:#057bbb; stroke-width:1.0; fill:none" />
+ <path
+ id="path4564"
+ d="M 475.085 191.834C 475.085 191.834 463.23 211.178 448.5 222.592C 433.77 234.005 421.307 242.212 413.017 244.976C 404.726 247.739 367.362 249.398 357.165 251.111C 347.299 253.322 340.584 256.362 337.185 261.53C 333.785 266.697 333.233 276.204 333.289 276.701"
+ style="stroke:#0577b8; stroke-width:1.0; fill:none" />
+ <path
+ id="path4566"
+ d="M 475.187 192.082C 475.187 192.082 463.524 211.427 448.675 222.868C 433.825 234.309 421.353 242.397 413.063 245.161C 404.772 247.924 367.666 249.674 357.202 251.222C 347.179 253.433 340.528 256.657 337.194 261.797C 333.859 266.937 333.307 276.02 333.381 276.683"
+ style="stroke:#0573b4; stroke-width:1.0; fill:none" />
+ <path
+ id="path4568"
+ d="M 475.288 192.331C 475.288 192.331 463.819 211.675 448.85 223.144C 433.881 234.613 421.399 242.581 413.109 245.345C 404.818 248.108 367.97 249.951 357.239 251.332C 347.06 253.543 340.473 256.952 337.203 262.064C 333.933 267.176 333.381 275.836 333.473 276.665"
+ style="stroke:#0570b1; stroke-width:1.0; fill:none" />
+ <path
+ id="path4570"
+ d="M 475.389 192.58C 475.389 192.58 464.114 211.924 449.025 223.421C 433.936 234.917 421.445 242.765 413.155 245.529C 404.864 248.292 368.274 250.227 357.276 251.443C 346.94 253.654 340.418 257.246 337.213 262.332C 334.007 267.416 333.454 275.651 333.565 276.646"
+ style="stroke:#056cae; stroke-width:1.0; fill:none" />
+ <path
+ id="path4572"
+ d="M 475.491 192.829C 475.491 192.829 464.409 212.173 449.2 223.697C 433.991 235.221 421.491 242.949 413.201 245.713C 404.91 248.476 368.578 250.503 357.312 251.553C 346.82 253.764 340.363 257.541 337.222 262.599C 334.08 267.655 333.528 275.467 333.657 276.628"
+ style="stroke:#0468ab; stroke-width:1.0; fill:none" />
+ <path
+ id="path4574"
+ d="M 475.592 193.077C 475.592 193.077 464.703 212.422 449.375 223.973C 434.047 235.525 421.537 243.134 413.247 245.898C 404.956 248.661 368.882 250.78 357.349 251.664C 346.701 253.875 340.307 257.836 337.231 262.866C 334.154 267.895 333.602 275.283 333.749 276.609"
+ style="stroke:#0464a8; stroke-width:1.0; fill:none" />
+ <path
+ id="path4576"
+ d="M 475.693 193.326C 475.693 193.326 464.998 212.67 449.55 224.25C 434.102 235.829 421.583 243.318 413.293 246.082C 405.002 248.845 369.186 251.056 357.386 251.775C 346.581 253.985 340.252 258.131 337.24 263.133C 334.228 268.134 333.675 275.099 333.841 276.591"
+ style="stroke:#0461a5; stroke-width:1.0; fill:none" />
+ <path
+ id="path4578"
+ d="M 475.795 193.575C 475.795 193.575 465.293 212.919 449.725 224.526C 434.157 236.133 421.629 243.502 413.339 246.266C 405.048 249.029 369.49 251.332 357.423 251.885C 346.461 254.096 340.197 258.425 337.249 263.4C 334.301 268.374 333.749 274.914 333.933 276.572"
+ style="stroke:#045da2; stroke-width:1.0; fill:none" />
+ <path
+ id="path4580"
+ d="M 475.896 193.823C 475.896 193.823 465.588 213.168 449.9 224.802C 434.212 236.437 421.675 243.686 413.385 246.45C 405.094 249.213 369.794 251.609 357.46 251.996C 346.341 254.207 340.141 258.72 337.259 263.667C 334.375 268.613 333.823 274.73 334.025 276.554"
+ style="stroke:#04599f; stroke-width:1.0; fill:none" />
+ <path
+ id="path4582"
+ d="M 475.997 194.072C 475.997 194.072 465.883 213.417 450.075 225.079C 434.268 236.741 421.721 243.871 413.431 246.634C 405.14 249.397 370.098 251.885 357.497 252.106C 346.222 254.317 340.086 259.015 337.268 263.934C 334.449 268.853 333.896 274.546 334.118 276.536"
+ style="stroke:#03569c; stroke-width:1.0; fill:none" />
+ <path
+ id="path4584"
+ d="M 476.099 194.321C 476.099 194.321 466.177 213.665 450.25 225.355C 434.323 237.045 421.767 244.055 413.477 246.819C 405.186 249.582 370.402 252.161 357.534 252.217C 346.102 254.428 340.031 259.31 337.277 264.201C 334.522 269.092 333.97 274.362 334.21 276.517"
+ style="stroke:#035299; stroke-width:1.0; fill:none" />
+ <path
+ id="path4586"
+ d="M 476.2 194.569C 476.2 194.569 466.472 213.914 450.425 225.631C 434.378 237.349 421.813 244.239 413.523 247.003C 405.232 249.766 370.706 252.438 357.571 252.327C 345.982 254.538 339.976 259.604 337.286 264.469C 334.596 269.332 334.044 274.177 334.302 276.499"
+ style="stroke:#034e95; stroke-width:1.0; fill:none" />
+ <path
+ id="path4588"
+ d="M 476.301 194.818C 476.301 194.818 466.767 214.163 450.6 225.908C 434.433 237.653 421.859 244.423 413.569 247.187C 405.278 249.95 371.01 252.714 357.607 252.438C 345.862 254.649 339.92 259.899 337.295 264.736C 334.67 269.571 334.117 273.993 334.394 276.48"
+ style="stroke:#034a92; stroke-width:1.0; fill:none" />
+ <path
+ id="path4590"
+ d="M 476.403 195.067C 476.403 195.067 467.062 214.411 450.775 226.184C 434.489 237.957 421.905 244.607 413.615 247.371C 405.324 250.134 371.314 252.991 357.644 252.548C 345.743 254.759 339.865 260.194 337.305 265.003C 334.744 269.811 334.191 273.809 334.486 276.462"
+ style="stroke:#03478f; stroke-width:1.0; fill:none" />
+ <path
+ id="path4592"
+ d="M 476.504 195.316C 476.504 195.316 467.356 214.66 450.95 226.46C 434.544 238.261 421.952 244.792 413.661 247.556C 405.371 250.319 371.618 253.267 357.681 252.659C 345.623 254.87 339.81 260.489 337.314 265.27C 334.817 270.05 334.265 273.625 334.578 276.443"
+ style="stroke:#03438c; stroke-width:1.0; fill:none" />
+ <path
+ id="path4594"
+ d="M 476.605 195.564C 476.605 195.564 467.651 214.909 451.125 226.737C 434.599 238.565 421.998 244.976 413.707 247.74C 405.417 250.503 371.922 253.543 357.718 252.769C 345.503 254.98 339.755 260.784 337.323 265.537C 334.891 270.29 334.338 273.441 334.67 276.425"
+ style="stroke:#023f89; stroke-width:1.0; fill:none" />
+ <path
+ id="path4596"
+ d="M 476.707 195.813C 476.707 195.813 467.946 215.158 451.3 227.013C 434.654 238.869 422.044 245.16 413.753 247.924C 405.463 250.687 372.226 253.82 357.755 252.88C 345.383 255.091 339.699 261.078 337.332 265.804C 334.965 270.529 334.412 273.256 334.762 276.406"
+ style="stroke:#023c86; stroke-width:1.0; fill:none" />
+ <path
+ id="path4598"
+ d="M 476.808 196.062C 476.808 196.062 468.241 215.406 451.475 227.289C 434.71 239.173 422.09 245.344 413.799 248.108C 405.509 250.871 372.53 254.096 357.792 252.99C 345.264 255.201 339.644 261.373 337.341 266.071C 335.038 270.769 334.486 273.072 334.854 276.388"
+ style="stroke:#023883; stroke-width:1.0; fill:none" />
+ <path
+ id="path4600"
+ d="M 476.909 196.31C 476.909 196.31 468.536 215.655 451.65 227.566C 434.765 239.477 422.136 245.529 413.845 248.293C 405.555 251.056 372.834 254.372 357.829 253.101C 345.144 255.312 339.589 261.668 337.351 266.339C 335.112 271.008 334.559 272.888 334.947 276.37"
+ style="stroke:#023480; stroke-width:1.0; fill:none" />
+ <path
+ id="path4602"
+ d="M 477.011 196.559C 477.011 196.559 468.83 215.904 451.825 227.842C 434.82 239.781 422.182 245.713 413.891 248.477C 405.601 251.24 373.138 254.649 357.865 253.211C 345.024 255.422 339.534 261.963 337.36 266.606C 335.186 271.248 334.633 272.704 335.039 276.351"
+ style="stroke:#02317d; stroke-width:1.0; fill:none" />
+ <path
+ id="path4604"
+ d="M 477.112 196.808C 477.112 196.808 469.125 216.153 452 228.118C 434.875 240.085 422.228 245.897 413.937 248.661C 405.647 251.424 373.442 254.925 357.902 253.322C 344.905 255.533 339.478 262.257 337.369 266.873C 335.26 271.487 334.707 272.519 335.131 276.333"
+ style="stroke:#022d7a; stroke-width:1.0; fill:none" />
+ <path
+ id="path4606"
+ d="M 477.213 197.056C 477.213 197.056 469.42 216.401 452.175 228.395C 434.931 240.389 422.274 246.081 413.983 248.845C 405.693 251.608 373.746 255.201 357.939 253.432C 344.785 255.643 339.423 262.552 337.378 267.14C 335.333 271.727 334.78 272.335 335.223 276.314"
+ style="stroke:#012977; stroke-width:1.0; fill:none" />
+ <path
+ id="path4608"
+ d="M 477.315 197.305C 477.315 197.305 469.715 216.65 452.35 228.671C 434.986 240.693 422.32 246.266 414.029 249.03C 405.739 251.793 374.05 255.478 357.976 253.543C 344.665 255.754 339.368 262.847 337.387 267.407C 335.407 271.966 334.854 272.151 335.315 276.296"
+ style="stroke:#012573; stroke-width:1.0; fill:none" />
+ <path
+ id="path4610"
+ d="M 477.416 197.554C 477.416 197.554 470.009 216.899 452.525 228.947C 435.041 240.997 422.366 246.45 414.075 249.214C 405.785 251.977 374.354 255.754 358.013 253.654C 344.545 255.865 339.312 263.142 337.397 267.674C 335.481 272.206 334.928 271.967 335.407 276.277"
+ style="stroke:#012270; stroke-width:1.0; fill:none" />
+ <path
+ id="path4612"
+ d="M 477.517 197.803C 477.517 197.803 470.304 217.148 452.7 229.224C 435.097 241.301 422.412 246.634 414.121 249.398C 405.831 252.161 374.658 256.031 358.05 253.764C 344.426 255.975 339.257 263.436 337.406 267.941C 335.554 272.445 335.001 271.782 335.499 276.259"
+ style="stroke:#011e6d; stroke-width:1.0; fill:none" />
+ <path
+ id="path4614"
+ d="M 477.619 198.051C 477.619 198.051 470.599 217.396 452.875 229.5C 435.152 241.605 422.458 246.818 414.167 249.582C 405.877 252.345 374.962 256.307 358.087 253.875C 344.306 256.086 339.202 263.731 337.415 268.208C 335.628 272.685 335.075 271.598 335.591 276.241"
+ style="stroke:#011a6a; stroke-width:1.0; fill:none" />
+ <path
+ id="path4616"
+ d="M 477.72 198.3C 477.72 198.3 470.894 217.645 453.05 229.776C 435.207 241.909 422.504 247.002 414.213 249.767C 405.923 252.529 375.266 256.583 358.124 253.985C 344.186 256.196 339.147 264.026 337.424 268.476C 335.702 272.924 335.149 271.414 335.683 276.222"
+ style="stroke:#001767; stroke-width:1.0; fill:none" />
+ </g>
+ <path
+ id="path4618"
+ d="M 477.821 198.549C 477.821 198.549 471.188 217.894 453.225 230.053C 435.262 242.213 422.55 247.187 414.259 249.951C 405.969 252.714 375.57 256.86 358.16 254.096C 344.066 256.307 339.091 264.321 337.433 268.743C 335.775 273.164 335.222 271.23 335.775 276.204"
+ style="stroke:#001364; stroke-width:1; fill:none" />
+ </g>
+ </g>
+ <g
+ id="g4620">
+ <g
+ id="g4622">
+ <defs
+ id="defs4624">
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="115.184"
+ x2="383.876"
+ y1="49.6757"
+ x1="489.332"
+ id="14">
+ <stop
+ id="stop4627"
+ style="stop-color:#c10000"
+ offset="0" />
+ <stop
+ id="stop4629"
+ style="stop-color:#ff0000"
+ offset="0.16" />
+ <stop
+ id="stop4631"
+ style="stop-color:#ffe3dd"
+ offset="0.33" />
+ <stop
+ id="stop4633"
+ style="stop-color:#ff0000"
+ offset="0.615" />
+ <stop
+ id="stop4635"
+ style="stop-color:#5f0000"
+ offset="1" />
+ </linearGradient>
+ </defs>
+ <path
+ id="path4637"
+ d="M 388.915 112.054C 396.797 124.742 424.561 121.769 450.884 105.417C 477.207 89.0654 492.176 65.4938 484.294 52.8054C 476.412 40.1171 448.648 43.0906 422.325 59.4423C 396.001 75.7941 381.033 99.3657 388.915 112.054z"
+ style="stroke:none; fill:url(#14)" />
+ <path
+ id="path4639"
+ d="M 386.685 108.888C 394.567 121.576 422.331 118.603 448.654 102.251C 474.977 85.8994 489.946 62.3278 482.064 49.6395C 474.182 36.9511 446.418 39.9246 420.095 56.2764C 393.771 72.6281 378.803 96.1997 386.685 108.888z"
+ style="stroke:none; fill:black" />
+ <defs
+ id="defs4641">
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="90.7221"
+ x2="358.968"
+ y1="18.2846"
+ x1="475.579"
+ id="15">
+ <stop
+ id="stop4644"
+ style="stop-color:#c10000"
+ offset="0" />
+ <stop
+ id="stop4646"
+ style="stop-color:#ff3838"
+ offset="0.27" />
+ <stop
+ id="stop4648"
+ style="stop-color:#ffe3dd"
+ offset="0.415" />
+ <stop
+ id="stop4650"
+ style="stop-color:#e20000"
+ offset="0.545" />
+ <stop
+ id="stop4652"
+ style="stop-color:#5f0000"
+ offset="0.715" />
+ <stop
+ id="stop4654"
+ style="stop-color:#ff0000"
+ offset="0.82" />
+ <stop
+ id="stop4656"
+ style="stop-color:#ff0000"
+ offset="1" />
+ </linearGradient>
+ </defs>
+ <path
+ id="path4658"
+ d="M 466.195 61.5737L 431.196 5.23181L 367.076 45.0618L 402.075 101.404M 466.195 61.5737C 466.195 61.5737 469.768 63.5918 464.954 71.3998C 460.141 79.2077 451.156 86.7297 439.391 94.0377C 426.937 101.774 416.905 104.173 409.978 103.723C 404.932 103.396 402.075 101.404 402.075 101.404"
+ style="stroke:none; fill:url(#15)" />
+ <path
+ id="path4660"
+ d="M 367.032 45.0753C 372.302 53.5584 390.944 51.5205 408.642 40.5266C 426.34 29.5328 436.428 13.7234 431.159 5.24023C 425.889 -3.24292 407.246 -1.20502 389.548 9.78882C 371.85 20.7827 361.762 36.592 367.032 45.0753z"
+ style="stroke:none; fill:black" />
+ <defs
+ id="defs4662">
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="102.049"
+ x2="396.587"
+ y1="57.1509"
+ x1="468.865"
+ id="16">
+ <stop
+ id="stop4665"
+ style="stop-color:#6c0000"
+ offset="0" />
+ <stop
+ id="stop4667"
+ style="stop-color:#d80000"
+ offset="0.24" />
+ <stop
+ id="stop4669"
+ style="stop-color:#ffb1b1"
+ offset="0.345" />
+ <stop
+ id="stop4671"
+ style="stop-color:#b90000"
+ offset="0.515" />
+ <stop
+ id="stop4673"
+ style="stop-color:#260000"
+ offset="1" />
+ </linearGradient>
+ </defs>
+ <path
+ id="path4675"
+ d="M 462.354 55.3927C 463.389 56.5708 467.772 63.7948 467.772 63.7948C 467.772 63.7948 467.572 67.9098 464.107 73.1288C 460.116 79.1397 452.069 86.7836 439.542 94.0777C 431.026 99.0367 424.039 102.006 418.372 102.989C 408.222 105.278 402.304 102.038 402.304 102.038C 402.304 102.038 398.244 96.5717 397.68 94.3187C 397.599 93.9916 405.593 95.4567 414.434 93.8406C 420.781 92.6807 427.732 89.1977 434.674 85.2647C 444.488 79.7067 452.785 72.3438 457.511 65.9067C 460.786 61.4458 461.946 57.1367 462.354 55.3927z"
+ style="stroke:none; fill:url(#16)" />
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/pixmaps/remboursement.png b/pixmaps/remboursement.png
new file mode 100644
index 0000000..10986f4
Binary files /dev/null and b/pixmaps/remboursement.png differ
diff --git a/share/grisbi.desktop.in b/share/grisbi.desktop.in
index 2941a13..db37a36 100644
--- a/share/grisbi.desktop.in
+++ b/share/grisbi.desktop.in
@@ -2,7 +2,7 @@
_Name=Grisbi
_Comment=Personnal finances mana in b/share/grisbi.desktop.in ng 8 467.772 63.7948C 467.772 63.7948 467.572 67.9098 464.107 73.1288C 460.116 79.1397 452.069 86.7836 439.542 94.0777C 431.026 99.0367 424.039 102.006 418.372 102.989C 408.222 105.278 402.304 102.038 402.304 102.038C 402.304 102.038 398.244 96.5717 397.68 94.3187C 397.599 93.9916 405.593 95.4567 414.434 93.8406C 420.781 92.6807 427.732 89.1977 434.674 85.2647C 444.488 79.7067 452.785 72.3438 457.511 65.9067C 460.786 61.4458 461.946 57.1367 462.354 55.3927z" .469 473.638 174.66 476.954 195.11z" 00.276L 739.074 500.276C 759.951 500.276 772.588 497.101 780.28 491.704C 787.789 486.466 790.719 478.846 790.719 470.274C 790.719 452.654 775.701 443.923 758.669 441.701L 758.67 441.384C 776.617 438.05 785.774 429.795 785.774 416.779C 785.774 397.413 768.01 390.428 739.074 390.428L 678.638 390.428z" 448.248 397.73 457.588 403.603 457.588 419.795C 457.588 432.97 451.728 442.495 433.231 442.495L 424.074 442.495L 424.074 403.921z
" 0.917 219.279 370.917 210.374 370.917C 211.781 365.753 214.086 356.583 221.45 328.186C 308.695 328.193 287.908 328.376 738.419 328.186C 758.428 305.835 765.635 297.207 781.185 279.244C 556.029 279.244 460.148 279.244 242.306 279.662C 245.081 270.432 254.544 256.995 269.786 241.767C 291.182 220.388 321.858 195.015 363.508 173.254C 423.726 141.792 503.084 117.043 587.218 117.712C 760.185 120.633 849.057 201.069 849.057 201.069z" ò* Ëøÿ pKáò* @Åøÿ Äøÿ kP1ò* 5 6 7 8 : < = > ? @ B D Ëøÿ Ëøÿ à}ªò* Ëøÿ u:1ò* URò* ÀÃøÿ }ò* e91ò* URò* Õ_ at fÆS Qöl±íÁyò* Ëøÿ à}ªò* PÆøÿ Åøÿ kP1ò* u]ÞÓ 4Q ÷U^Qʧ ¶uª¹ñìò*ÄvËøÿ Ëøÿ HÎvò* ³ò* ÀÌøÿ ¦
ò* ¦
ò* f°ò* OËøÿ Ìøÿ 8Ëøÿ Çøÿ Nò* u:1ò* ØNò* Îøÿ ¢
ò* ÐÌøÿ `Èøÿ
ÿÿÿÿÿÿÿÿ¢
ò* Ëøÿ ger
Exec=grisbi
-Icon=grisbi
+Icon=grisbi.svg
Terminal=false
Type=Application
Categories=Office;Finance;
diff --git a/src/Makefile.am b/src/Makefile.am
index 6f3f938..71496ad 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -106,6 +106,8 @@ libgrisbi_la_SOURCES = \
gsb_fyear.c \
gsb_fyear_config.c \
gsb_locale.c \
+ gsb_navigation.c \
+ gsb_navigation_view.c \
gsb_payment_method.c \
gsb_payment_method_config.c \
gsb_plugins.c \
@@ -132,7 +134,6 @@ libgrisbi_la_SOURCES = \
meta_categories.c \
meta_payee.c \
metatree.c \
- navigation.c \
parametres.c \
parse_cmdline.c \
parametres_ui.c \
@@ -251,6 +252,8 @@ libgrisbi_la_SOURCES = \
gsb_fyear.h \
gsb_fyear_config.h \
gsb_locale.h \
+ gsb_navigation.h \
+ gsb_navigation_view.h \
gsb_payment_method.h \
gsb_payment_method_config.h \
gsb_plugins.h \
@@ -289,8 +292,6 @@ libgrisbi_la_SOURCES = \
meta_categories.h \
meta_payee.h \
metatree.h \
- mouse.h \
- navigation.h \
parametres.h \
parse_cmdline.h \
parametres_ui.h \
diff --git a/src/accueil.c b/src/accueil.c
index 3893bdb..d20f739 100644
--- a/src/accueil.c
+++ b/src/accueil.c
@@ -43,12 +43,13 @@
#include "gsb_data_transaction.h"
#include "gsb_form.h"
#include "gsb_form_scheduler.h"
+#include "gsb_navigation.h"
+#include "gsb_navigation_view.h"
#include "gsb_real.h"
#include "gsb_scheduler.h"
#include "gsb_scheduler_list.h"
#include "gsb_select_icon.h"
#include "gsb_transactions_list.h"
-#include "navigation.h"
#include "structures.h"
#include "utils.h"
#include "utils_dates.h"
@@ -1216,9 +1217,9 @@ gint affiche_soldes_additionnels ( GtkWidget *table, gint i, GSList *liste )
gboolean gsb_main_page_click_on_account ( gint *account_number )
{
devel_debug_int (GPOINTER_TO_INT (account_number));
- gsb_gui_navigation_set_selection ( GSB_ACCOUNT_PAGE,
- GPOINTER_TO_INT (account_number),
- NULL );
+ gsb_navigation_view_set_selection ( GSB_ACCOUNT_PAGE,
+ GPOINTER_TO_INT (account_number),
+ NULL );
return FALSE;
}
diff --git a/src/affichage.c b/src/affichage.c
index 5836af1..1fe6b1d 100644
--- a/src/affichage.c
+++ b/src/affichage.c
@@ -39,9 +39,10 @@
#include "gsb_data_account.h"
#include "gsb_dirs.h"
#include "gsb_file.h"
+#include "gsb_navigation.h"
+#include "gsb_navigation_view.h"
#include "gsb_scheduler_list.h"
#include "gsb_select_icon.h"
-#include "navigation.h"
#include "parametres.h"
#include "structures.h"
#include "traitement_variables.h"
@@ -520,7 +521,7 @@ void change_logo_accueil ( GtkWidget *file_selector )
etat->is_pixmaps_dir = TRUE;
name_logo = g_path_get_basename ( chemin_logo );
- if ( g_strcmp0 ( name_logo, "grisbi-logo.png" ) != 0 )
+ if ( g_strcmp0 ( name_logo, "grisbi.svg" ) != 0 )
etat->name_logo = name_logo;
else
etat->name_logo = NULL;
@@ -810,11 +811,11 @@ gboolean preferences_active_mouse_scrolling_left_pane ( GtkWidget *toggle_button
if ( conf->active_scrolling_left_pane )
g_signal_handlers_unblock_by_func ( gsb_gui_navigation_get_tree_view ( ),
- G_CALLBACK ( gsb_gui_navigation_check_scroll ),
+ G_CALLBACK ( gsb_navigation_view_check_scroll ),
NULL );
else
g_signal_handlers_block_by_func ( gsb_gui_navigation_get_tree_view ( ),
- G_CALLBACK ( gsb_gui_navigation_check_scroll ),
+ G_CALLBACK ( gsb_navigation_view_check_scroll ),
NULL );
return FALSE;
diff --git a/src/affichage_liste.c b/src/affichage_liste.c
index 1046108..83f289d 100644
--- a/src/affichage_liste.c
+++ b/src/affichage_liste.c
@@ -40,9 +40,9 @@
#include "gsb_file.h"
#include "gsb_form.h"
#include "gsb_form_widget.h"
+#include "gsb_navigation.h"
#include "gsb_transactions_list.h"
#include "gtk_combofix.h"
-#include "navigation.h"
#include "structures.h"
#include "traitement_variables.h"
#include "transaction_list.h"
diff --git a/src/bet_config.c b/src/bet_config.c
index 8f733f2..0f13021 100644
--- a/src/bet_config.c
+++ b/src/bet_config.c
@@ -46,7 +46,7 @@
#include "gsb_file.h"
#include "gsb_form_widget.h"
#include "gsb_fyear.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "structures.h"
#include "traitement_variables.h"
#include "utils.h"
@@ -1016,10 +1016,11 @@ gboolean bet_config_change_account ( GtkWidget *combo )
GtkWidget *account_page;
GtkWidget *notebook;
GtkWidget *widget = NULL;
+ GtkWidget *fyear_combo;
gint account_number;
gint bet_use_budget;
GrisbiWindowEtat *etat;
- bet_type_onglets bet_show_onglets;
+ BetTypeOnglets bet_show_onglets;
devel_debug (NULL);
etat = grisbi_window_get_struct_etat ();
@@ -1031,6 +1032,13 @@ gboolean bet_config_change_account ( GtkWidget *combo )
account_number = gsb_account_get_combo_account_number ( combo );
bet_use_budget = gsb_data_account_get_bet_use_budget ( account_number );
+ account_page = gsb_gui_on_account_get_notebook ();
+
+ /* on bloque l'appel à la fonction bet_config_fyear_clicked */
+ fyear_combo = g_object_get_data ( G_OBJECT ( account_page ), "bet_config_hist_fyear_combo" );
+ g_signal_handlers_block_by_func ( G_OBJECT ( fyear_combo ),
+ G_CALLBACK ( bet_config_fyear_clicked ),
+ GINT_TO_POINTER ( 0 ) );
switch ( bet_use_budget )
{
@@ -1080,6 +1088,12 @@ gboolean bet_config_change_account ( GtkWidget *combo )
break;
}
+ /* on débloque l'appel à la fonction bet_config_fyear_clicked */
+ g_signal_handlers_unblock_by_func ( G_OBJECT ( fyear_combo ),
+ G_CALLBACK ( bet_config_fyear_clicked ),
+ GINT_TO_POINTER ( 0 ) );
+
+ /* return */
return FALSE;
}
@@ -1153,11 +1167,10 @@ void bet_config_sensitive_account_parameters ( gint account_number, gboolean sen
if ( sensitive )
{
GrisbiWindowEtat *etat;
+ BetTypeOnglets bet_show_onglets;
etat = grisbi_window_get_struct_etat ();
- bet_type_onglets bet_show_onglets;
-
bet_show_onglets = gsb_data_account_get_bet_show_onglets ( account_number );
switch ( bet_show_onglets )
diff --git a/src/bet_data.c b/src/bet_data.c
index 614ffcb..2883f78 100644
--- a/src/bet_data.c
+++ b/src/bet_data.c
@@ -42,14 +42,15 @@
#include "gsb_data_scheduled.h"
#include "gsb_data_transaction.h"
#include "gsb_file.h"
-#include "utils_dates.h"
-#include "navigation.h"
-#include "traitement_variables.h"
#include "gsb_file_save.h"
-#include "utils_str.h"
+#include "gsb_navigation.h"
#include "gsb_scheduler_list.h"
-#include "erreur.h"
+#include "gsb_transactions_list.h"
#include "structures.h"
+#include "traitement_variables.h"
+#include "utils_dates.h"
+#include "utils_str.h"
+#include "erreur.h"
/*END_INCLUDE*/
@@ -105,7 +106,7 @@ void bet_data_select_bet_pages ( gint account_number )
GtkWidget *account_page;
GtkWidget *page;
gint current_page;
- bet_type_onglets bet_show_onglets;
+ BetTypeOnglets bet_show_onglets;
devel_debug_int ( account_number );
bet_show_onglets = gsb_data_account_get_bet_show_onglets ( account_number );
@@ -916,17 +917,17 @@ GPtrArray *bet_data_get_strings_to_save ( void )
date_bascule = gsb_format_gdate_safe ( transfert->date_bascule );
tmp_str = g_markup_printf_escaped ( "\t<Bet_transfert Nb=\"%d\" Dt=\"%s\" Ac=\"%d\" "
- "Ty=\"%d\" Ra=\"%d\" Rt=\"%d\" Aim=\"%d\" Dd=\"%d\" Dtb=\"%s\" "
- "Ca=\"%d\" Sca=\"%d\" Bu=\"%d\" Sbu=\"%d\" />\n",
+ "Ty=\"%d\" Ra=\"%d\" Rt=\"%d\" Dd=\"%d\" Dtb=\"%s\" "
+ "Pa=\"%d\" Ca=\"%d\" Sca=\"%d\" Bu=\"%d\" Sbu=\"%d\" />\n",
++index,
my_safe_null_str ( date ),
transfert->account_number,
transfert->type,
transfert->replace_account,
transfert->replace_transaction,
- transfert->auto_inc_month,
transfert->direct_debit,
my_safe_null_str ( date_bascule ),
+ transfert->payee_number,
transfert->category_number,
transfert->sub_category_number,
transfert->budgetary_number,
@@ -1703,6 +1704,121 @@ gboolean bet_data_transfert_modify_line ( struct_transfert_data *transfert )
/**
+ * crée la ou les transactions de remise à zéro des comptes cartes concernés
+ *
+ * \param struct transfert
+ *
+ * \return
+ * */
+static void bet_data_transfert_create_reset_credit_card ( struct_transfert_data *transfert )
+{
+ gint transaction_number;
+ gsb_real amount;
+
+ /* replace_account is an account */
+ if ( transfert -> type == 0 )
+ {
+ amount = gsb_data_account_get_current_balance ( transfert->replace_account );
+ transaction_number = gsb_data_transaction_new_transaction ( transfert->replace_account );
+ gsb_data_transaction_set_date ( transaction_number, transfert->date_bascule );
+ gsb_data_transaction_set_amount ( transaction_number, gsb_real_opposite ( amount ) );
+
+ /* set the currency */
+ gsb_data_transaction_set_currency_number ( transaction_number,
+ gsb_data_account_get_currency ( transfert->replace_account ) );
+
+ /* set the payement mode */
+ if ( amount.mantissa < 0 )
+ gsb_data_transaction_set_method_of_payment_number ( transaction_number,
+ gsb_data_account_get_default_debit ( transfert->account_number ) );
+ else
+ gsb_data_transaction_set_method_of_payment_number ( transaction_number,
+ gsb_data_account_get_default_credit ( transfert->account_number ) );
+
+ /* set the payee */
+ gsb_data_transaction_set_party_number ( transaction_number, transfert->payee_number );
+
+ /* set the category sub_category */
+ if ( transfert->category_number )
+ {
+ gsb_data_transaction_set_category_number ( transaction_number, transfert->category_number );
+ if ( transfert -> sub_category_number )
+ gsb_data_transaction_set_sub_category_number ( transaction_number,
+ transfert->sub_category_number );
+ }
+
+ /* set the IB sub_IB */
+ if ( transfert->budgetary_number )
+ {
+ gsb_data_transaction_set_budgetary_number ( transaction_number, transfert->budgetary_number );
+ if ( transfert -> sub_category_number )
+ gsb_data_transaction_set_sub_budgetary_number ( transaction_number,
+ transfert->sub_budgetary_number );
+ }
+
+ /* append the transaction in list */
+ gsb_transactions_list_append_new_transaction ( transaction_number, TRUE );
+ }
+ else
+ {
+ gchar **tab;
+ GDate *date;
+ gint i;
+
+ date = gsb_date_copy ( transfert->date_bascule );
+ g_date_subtract_days ( date, 1 );
+ tab = g_strsplit ( gsb_data_partial_balance_get_liste_cptes ( transfert->replace_account ), ";", 0 );
+ for ( i = 0; tab[i]; i++ )
+ {
+ gint account_number;
+
+ account_number = utils_str_atoi ( tab[i] );
+ amount = gsb_data_account_get_current_balance ( account_number );
+ transaction_number = gsb_data_transaction_new_transaction ( account_number );
+ gsb_data_transaction_set_date ( transaction_number, date );
+ gsb_data_transaction_set_amount ( transaction_number, gsb_real_opposite ( amount ) );
+
+ /* set the currency */
+ gsb_data_transaction_set_currency_number ( transaction_number,
+ gsb_data_account_get_currency ( account_number ) );
+
+ /* set the payement mode */
+ if ( amount.mantissa < 0 )
+ gsb_data_transaction_set_method_of_payment_number ( transaction_number,
+ gsb_data_account_get_default_debit ( transfert->account_number ) );
+ else
+ gsb_data_transaction_set_method_of_payment_number ( transaction_number,
+ gsb_data_account_get_default_credit ( transfert->account_number ) );
+
+ /* set the payee */
+ gsb_data_transaction_set_party_number ( transaction_number, transfert->payee_number );
+
+ /* set the category sub_category */
+ if ( transfert->category_number )
+ {
+ gsb_data_transaction_set_category_number ( transaction_number, transfert->category_number );
+ if ( transfert -> sub_category_number )
+ gsb_data_transaction_set_sub_category_number ( transaction_number, transfert->sub_category_number );
+ }
+
+ /* set the IB sub_IB */
+ if ( transfert->budgetary_number )
+ {
+ gsb_data_transaction_set_budgetary_number ( transaction_number, transfert->budgetary_number );
+ if ( transfert -> sub_category_number )
+ gsb_data_transaction_set_sub_budgetary_number ( transaction_number, transfert->sub_budgetary_number );
+ }
+
+ /* append the transaction in list */
+ gsb_transactions_list_append_new_transaction ( transaction_number, TRUE );
+ }
+ g_strfreev ( tab );
+ g_date_free ( date );
+ }
+}
+
+
+/**
* update la date de la ligne transfert lorsque la date de bascule est atteinte
*
* \param struct transfert contenant les données
@@ -1723,14 +1839,29 @@ void bet_data_transfert_update_date_if_necessary ( struct_transfert_data *transf
if ( g_date_get_month ( transfert->date ) == g_date_get_month ( transfert->date_bascule ) )
same_month = TRUE;
+ /* on crée la transaction dans le compte principal */
if ( transfert->direct_debit )
bet_array_create_transaction_from_transfert ( transfert, same_month );
+ /* on remet à zéro les comptes cartes */
+ bet_data_transfert_create_reset_credit_card ( transfert );
+
+ /* on incrémente la date de prélèvement */
tmp_date = gsb_date_copy ( transfert -> date );
- g_date_free ( transfert -> date );
+ g_date_free ( transfert->date );
g_date_add_months ( tmp_date, 1 );
transfert -> date = tmp_date;
+
+ /* on incrémente la date de bascule */
+ tmp_date = gsb_date_copy ( transfert->date_bascule );
+
+ g_date_free ( transfert->date_bascule );
+ g_date_add_months ( tmp_date, 1 );
+ transfert->date_bascule = tmp_date;
+
+ gsb_data_account_set_bet_maj ( transfert->account_number, BET_MAJ_ESTIMATE );
+ gsb_file_set_modified ( TRUE );
}
g_date_free ( date_jour );
@@ -1943,12 +2074,15 @@ void bet_data_transfert_create_new_transaction ( struct_transfert_data *transfer
gsb_data_transaction_set_method_of_payment_number ( transaction_number,
gsb_data_account_get_default_credit ( transfert->account_number ) );
+ /* set the payee */
+ gsb_data_transaction_set_party_number ( transaction_number, transfert->payee_number );
+
/* set the category sub_category */
if ( transfert->category_number )
{
gsb_data_transaction_set_category_number ( transaction_number, transfert->category_number );
if ( transfert -> sub_category_number )
- gsb_data_transaction_set_sub_category_number ( transaction_number, transfert->sub_category_number );
+ gsb_data_transaction_set_sub_category_number ( transaction_number, transfert->sub_category_number );
}
/* set the IB sub_IB */
@@ -1956,8 +2090,11 @@ void bet_data_transfert_create_new_transaction ( struct_transfert_data *transfer
{
gsb_data_transaction_set_budgetary_number ( transaction_number, transfert->budgetary_number );
if ( transfert -> sub_category_number )
- gsb_data_transaction_set_sub_budgetary_number ( transaction_number, transfert->sub_budgetary_number );
+ gsb_data_transaction_set_sub_budgetary_number ( transaction_number, transfert->sub_budgetary_number );
}
+
+ /* append the transaction in list */
+ gsb_transactions_list_append_new_transaction ( transaction_number, TRUE );
}
diff --git a/src/bet_data.h b/src/bet_data.h
index d5616d5..70808ca 100644
--- a/src/bet_data.h
+++ b/src/bet_data.h
@@ -29,9 +29,9 @@ struct _bet_range
struct _historical
{
gint div;
- gint account_nb;
+ gint account_nb;
SBR *sbr;
- GHashTable *list_sub_div;
+ GHashTable *list_sub_div;
};
/* utilisée pour gérer la liste des données historiques dans le tableau des prévisions */
@@ -77,12 +77,12 @@ struct _transfert_data
gint number;
gint account_number;
gint type; /* 0 = account 1 = partial balance */
- gint replace_account; /* Account number or partial balance concerned */
+ gint replace_account; /* Account number or partial balance number */
gint replace_transaction;
- gint auto_inc_month;
gint direct_debit;
GDate *date;
GDate *date_bascule;
+ gint payee_number;
gint category_number;
gint sub_category_number;
gint budgetary_number;
diff --git a/src/bet_finance_ui.c b/src/bet_finance_ui.c
index 4282579..f0aa111 100644
--- a/src/bet_finance_ui.c
+++ b/src/bet_finance_ui.c
@@ -43,9 +43,8 @@
#include "gsb_dirs.h"
#include "gsb_file.h"
#include "gsb_form_widget.h"
+#include "gsb_navigation.h"
#include "gsb_real.h"
-#include "mouse.h"
-#include "navigation.h"
#include "print_tree_view_list.h"
#include "structures.h"
#include "traitement_variables.h"
@@ -959,7 +958,7 @@ gboolean bet_finance_data_list_button_press ( GtkWidget *tree_view,
GtkWidget *page )
{
/* show the popup */
- if ( ev -> button == RIGHT_BUTTON )
+ if ( ev -> button == GSB_RIGHT_BUTTON )
{
gint page_num;
diff --git a/src/bet_future.c b/src/bet_future.c
index 70fdce0..1d2c42f 100644
--- a/src/bet_future.c
+++ b/src/bet_future.c
@@ -52,10 +52,10 @@
#include "gsb_form_scheduler.h"
#include "gsb_form_widget.h"
#include "gsb_fyear.h"
+#include "gsb_navigation.h"
#include "gsb_payment_method.h"
#include "gsb_real.h"
#include "gtk_combofix.h"
-#include "navigation.h"
#include "structures.h"
#include "utils.h"
#include "utils_dates.h"
@@ -90,12 +90,6 @@ static gboolean bet_form_scheduler_frequency_button_changed ( GtkWidget *combo_b
static GtkWidget *bet_form_scheduler_get_element_widget ( gint element_number );
static GtkWidget *bet_form_widget_get_widget ( gint element_number );
static GtkWidget *bet_future_create_dialog ( gint account_number );
-static gboolean bet_future_get_budget_data ( GtkWidget *widget,
- gint struct_type,
- gpointer *value );
-static gboolean bet_future_get_category_data ( GtkWidget *widget,
- gint struct_type,
- gpointer *value );
static gboolean bet_future_set_form_data_from_line ( gint account_number,
gint number );
static gboolean bet_future_take_data_from_form ( struct_futur_data *scheduled );
@@ -1310,6 +1304,169 @@ gboolean bet_form_button_press_event ( GtkWidget *entry,
/**
+ * récupère le tiers
+ *
+ *
+ * \return FALSE
+ * */
+static gboolean bet_future_get_payee_data ( GtkWidget *widget,
+ gpointer *value )
+{
+ const gchar *string;
+ struct_transfert_data *sd = ( struct_transfert_data *) value;
+
+ string = gtk_combofix_get_text ( GTK_COMBOFIX ( widget ) );
+ if ( string && strlen ( string ) > 0 )
+ {
+ sd->payee_number = gsb_data_payee_get_number_by_name ( string, FALSE );
+ }
+ else
+ sd->payee_number = 0;
+
+ return FALSE;
+}
+
+
+/**
+ * récupère la catégorie et la sous catégorie
+ *
+ *
+ * \return FALSE
+ * */
+static gboolean bet_future_get_category_data ( GtkWidget *widget,
+ gint struct_type,
+ gpointer *value )
+{
+ const gchar *string;
+ gchar **tab_char;
+ gint category_number = 0;
+ gint sub_category_number = 0;
+
+ string = gtk_combofix_get_text ( GTK_COMBOFIX ( widget ) );
+
+ if ( struct_type == 0 )
+ {
+ struct_futur_data *sd = ( struct_futur_data *) value;
+
+ if ( string && strlen ( string ) > 0 )
+ {
+ tab_char = g_strsplit ( string, " : ", 2 );
+ if ( my_strcasecmp ( tab_char[0], _("Transfer") ) == 0 )
+ {
+ sd -> is_transfert = TRUE;
+ sd -> account_transfert = gsb_data_account_get_no_account_by_name ( tab_char[1] );
+ }
+ else
+ {
+ category_number = gsb_data_category_get_number_by_name (
+ tab_char[0], FALSE, 0 );
+
+ if ( tab_char[1] && strlen ( tab_char[1] ) )
+ sub_category_number = gsb_data_category_get_sub_category_number_by_name (
+ category_number, tab_char[1], FALSE );
+ else
+ sub_category_number = 0;
+ }
+
+ g_strfreev ( tab_char );
+ }
+ else
+ {
+ category_number = 0;
+ category_number = 0;
+ }
+
+ sd -> category_number = category_number;
+ sd -> sub_category_number = sub_category_number;
+ }
+ else if ( struct_type == 1 )
+ {
+ struct_transfert_data *sd = ( struct_transfert_data *) value;
+
+ if ( string && strlen ( string ) > 0 )
+ {
+ tab_char = g_strsplit ( string, " : ", 2 );
+ category_number = gsb_data_category_get_number_by_name (
+ tab_char[0], FALSE, 0 );
+
+ if ( tab_char[1] && strlen ( tab_char[1] ) )
+ sub_category_number = gsb_data_category_get_sub_category_number_by_name (
+ category_number, tab_char[1], FALSE );
+ else
+ sub_category_number = 0;
+
+ g_strfreev ( tab_char );
+ }
+ else
+ {
+ category_number = 0;
+ category_number = 0;
+ }
+
+ sd -> category_number = category_number;
+ sd -> sub_category_number = sub_category_number;
+ }
+
+ return FALSE;
+}
+
+
+/**
+ * récupère l'imputation et la sous imputation budgétaire
+ *
+ *
+ * \return FALSE
+ * */
+static gboolean bet_future_get_budget_data ( GtkWidget *widget,
+ gint struct_type,
+ gpointer *value )
+{
+ const gchar *string;
+ gchar **tab_char;
+ gint budgetary_number;
+ gint sub_budgetary_number;
+
+ string = gtk_combofix_get_text ( GTK_COMBOFIX ( widget ) );
+ if ( string && strlen ( string ) > 0 )
+ {
+ tab_char = g_strsplit ( string, " : ", 2 );
+ budgetary_number = gsb_data_budget_get_number_by_name (
+ tab_char[0], FALSE, 0 );
+
+ if ( tab_char[1] && strlen ( tab_char[1] ) )
+ sub_budgetary_number = gsb_data_budget_get_sub_budget_number_by_name (
+ budgetary_number, tab_char[1], FALSE );
+ else
+ sub_budgetary_number = 0;
+
+ g_strfreev ( tab_char );
+ }
+ else
+ {
+ budgetary_number = 0;
+ sub_budgetary_number = 0;
+ }
+
+ if ( struct_type == 0 )
+ {
+ struct_futur_data *sd = ( struct_futur_data *) value;
+
+ sd -> budgetary_number = budgetary_number;
+ sd -> sub_budgetary_number = sub_budgetary_number;
+ }
+ else if ( struct_type == 1 )
+ {
+ struct_transfert_data *sd = ( struct_transfert_data *) value;
+
+ sd -> budgetary_number = budgetary_number;
+ sd -> sub_budgetary_number = sub_budgetary_number;
+ }
+
+ return FALSE;
+}
+
+
+/**
* initialise les données du formulaire
*
*
@@ -1587,145 +1744,6 @@ gboolean bet_future_take_data_from_form ( struct_futur_data *scheduled )
/**
- * récupère l'imputation et la sous imputation budgétaire
- *
- *
- * \return FALSE
- * */
-gboolean bet_future_get_budget_data ( GtkWidget *widget,
- gint struct_type,
- gpointer *value )
-{
- const gchar *string;
- gchar **tab_char;
- gint budgetary_number;
- gint sub_budgetary_number;
-
- string = gtk_combofix_get_text ( GTK_COMBOFIX ( widget ) );
- if ( string && strlen ( string ) > 0 )
- {
- tab_char = g_strsplit ( string, " : ", 2 );
- budgetary_number = gsb_data_budget_get_number_by_name (
- tab_char[0], FALSE, 0 );
-
- if ( tab_char[1] && strlen ( tab_char[1] ) )
- sub_budgetary_number = gsb_data_budget_get_sub_budget_number_by_name (
- budgetary_number, tab_char[1], FALSE );
- else
- sub_budgetary_number = 0;
-
- g_strfreev ( tab_char );
- }
- else
- {
- budgetary_number = 0;
- sub_budgetary_number = 0;
- }
-
- if ( struct_type == 0 )
- {
- struct_futur_data *sd = ( struct_futur_data *) value;
-
- sd -> budgetary_number = budgetary_number;
- sd -> sub_budgetary_number = sub_budgetary_number;
- }
- else if ( struct_type == 0 )
- {
- struct_transfert_data *sd = ( struct_transfert_data *) value;
-
- sd -> budgetary_number = budgetary_number;
- sd -> sub_budgetary_number = sub_budgetary_number;
- }
-
- return FALSE;
-}
-
-
-/**
- * récupère la catégorie et la sous catégorie
- *
- *
- * \return FALSE
- * */
-gboolean bet_future_get_category_data ( GtkWidget *widget,
- gint struct_type,
- gpointer *value )
-{
- const gchar *string;
- gchar **tab_char;
- gint category_number = 0;
- gint sub_category_number = 0;
-
- string = gtk_combofix_get_text ( GTK_COMBOFIX ( widget ) );
-
- if ( struct_type == 0 )
- {
- struct_futur_data *sd = ( struct_futur_data *) value;
-
- if ( string && strlen ( string ) > 0 )
- {
- tab_char = g_strsplit ( string, " : ", 2 );
- if ( my_strcasecmp ( tab_char[0], _("Transfer") ) == 0 )
- {
- sd -> is_transfert = TRUE;
- sd -> account_transfert = gsb_data_account_get_no_account_by_name ( tab_char[1] );
- }
- else
- {
- category_number = gsb_data_category_get_number_by_name (
- tab_char[0], FALSE, 0 );
-
- if ( tab_char[1] && strlen ( tab_char[1] ) )
- sub_category_number = gsb_data_category_get_sub_category_number_by_name (
- category_number, tab_char[1], FALSE );
- else
- sub_category_number = 0;
- }
-
- g_strfreev ( tab_char );
- }
- else
- {
- category_number = 0;
- category_number = 0;
- }
-
- sd -> category_number = category_number;
- sd -> sub_category_number = sub_category_number;
- }
- else if ( struct_type == 1 )
- {
- struct_transfert_data *sd = ( struct_transfert_data *) value;
-
- if ( string && strlen ( string ) > 0 )
- {
- tab_char = g_strsplit ( string, " : ", 2 );
- category_number = gsb_data_category_get_number_by_name (
- tab_char[0], FALSE, 0 );
-
- if ( tab_char[1] && strlen ( tab_char[1] ) )
- sub_category_number = gsb_data_category_get_sub_category_number_by_name (
- category_number, tab_char[1], FALSE );
- else
- sub_category_number = 0;
-
- g_strfreev ( tab_char );
- }
- else
- {
- category_number = 0;
- category_number = 0;
- }
-
- sd -> category_number = category_number;
- sd -> sub_category_number = sub_category_number;
- }
-
- return FALSE;
-}
-
-
-/**
*
*
*
@@ -1935,6 +1953,11 @@ gboolean bet_transfert_new_line_dialog ( GtkTreeModel *tab_model,
if ( bet_transfert_dialog == NULL )
{
bet_transfert_dialog = bet_transfert_create_dialog ( account_number );
+ if ( bet_transfert_dialog == NULL )
+ {
+ dialogue_warning ( _("You must create at least one cash account") );
+ return FALSE;
+ }
}
else
{
@@ -1961,9 +1984,6 @@ gboolean bet_transfert_new_line_dialog ( GtkTreeModel *tab_model,
gsb_form_widget_set_empty ( widget, FALSE );
gsb_calendar_entry_set_date ( widget, date );
- gtk_dialog_set_response_sensitive ( GTK_DIALOG ( bet_transfert_dialog ),
- GTK_RESPONSE_OK, FALSE );
-
dialog_return:
result = gtk_dialog_run ( GTK_DIALOG ( bet_transfert_dialog ) );
@@ -2071,6 +2091,10 @@ GtkWidget *bet_transfert_create_dialog ( gint account_number )
/* create the account list */
tree_view = bet_transfert_create_account_list_part ( dialog, account_number );
+
+ if ( tree_view == NULL )
+ return NULL;
+
gtk_container_add (GTK_CONTAINER ( sw ), tree_view );
gtk_container_set_resize_mode (GTK_CONTAINER ( sw ), GTK_RESIZE_PARENT );
@@ -2095,11 +2119,6 @@ GtkWidget *bet_transfert_create_dialog ( gint account_number )
g_object_set_data ( G_OBJECT ( dialog ), "date_entry", date_entry );
gtk_box_pack_start ( GTK_BOX ( hbox ), date_entry, FALSE, FALSE, 0 );
- button = gtk_check_button_new_with_label ( _("Monthly auto-increment") );
- gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( button ), FALSE );
- g_object_set_data ( G_OBJECT ( dialog ), "bet_transfert_auto_inc", button );
- gtk_box_pack_start ( GTK_BOX ( paddingbox ), button, FALSE, FALSE, 5 );
-
/* check button replace planned line */
button = gtk_check_button_new_with_label (
_("Replacement of the scheduled operation") );
@@ -2111,13 +2130,6 @@ GtkWidget *bet_transfert_create_dialog ( gint account_number )
G_CALLBACK ( bet_transfert_replace_data_toggle ),
dialog );
- /* check button replace planned line */
- button = gtk_check_button_new_with_label (
- _("Automatic creation of the direct debit transaction") );
- gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( button ), FALSE );
- g_object_set_data ( G_OBJECT ( dialog ), "bet_transfert_direct_debit", button );
- gtk_box_pack_start ( GTK_BOX ( paddingbox ), button, FALSE, FALSE, 0 );
-
/* Line replaced */
hbox = gtk_hbox_new ( FALSE, 0 );
gtk_box_pack_start ( GTK_BOX ( paddingbox ), hbox, FALSE, TRUE, 5 );
@@ -2176,6 +2188,37 @@ GtkWidget *bet_transfert_create_dialog ( gint account_number )
GINT_TO_POINTER ( TRANSACTION_FORM_BUDGET ) );
gtk_widget_set_sensitive ( combo, FALSE );
+ /* check button Automatic creation of the direct debit transaction */
+ button = gtk_check_button_new_with_label (
+ _("Automatic creation of the direct debit transaction") );
+ gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( button ), FALSE );
+ g_object_set_data ( G_OBJECT ( dialog ), "bet_transfert_direct_debit", button );
+ gtk_box_pack_start ( GTK_BOX ( paddingbox ), button, FALSE, FALSE, 0 );
+
+ combo = gtk_combofix_new ( gsb_data_payee_get_name_and_report_list () );
+ gtk_combofix_set_force_text ( GTK_COMBOFIX ( combo ),
+ etat->combofix_force_category );
+ gtk_combofix_set_max_items ( GTK_COMBOFIX ( combo ),
+ etat->combofix_max_item );
+ gtk_combofix_set_case_sensitive ( GTK_COMBOFIX ( combo ),
+ etat->combofix_case_sensitive );
+ gtk_combofix_set_mixed_sort ( GTK_COMBOFIX ( combo ),
+ etat->combofix_mixed_sort );
+ gtk_box_pack_start ( GTK_BOX ( paddingbox ), combo, FALSE, FALSE, 0 );
+ gsb_form_widget_set_empty ( GTK_COMBOFIX ( combo ) -> entry, TRUE );
+ gtk_combofix_set_text ( GTK_COMBOFIX ( combo ), _("Payee") );
+ g_object_set_data ( G_OBJECT ( GTK_COMBOFIX ( combo ) -> entry ), "combo", combo );
+ g_object_set_data ( G_OBJECT ( dialog ), "bet_transfert_payee_combo", combo );
+
+ g_signal_connect ( G_OBJECT ( GTK_COMBOFIX ( combo ) -> entry ),
+ "focus-in-event",
+ G_CALLBACK ( bet_form_entry_get_focus ),
+ NULL );
+ g_signal_connect ( G_OBJECT ( GTK_COMBOFIX ( combo ) -> entry ),
+ "focus-out-event",
+ G_CALLBACK ( bet_transfert_entry_lose_focus ),
+ GINT_TO_POINTER ( TRANSACTION_FORM_PARTY ) );
+
gtk_widget_show_all ( dialog );
return dialog;
@@ -2284,7 +2327,9 @@ gboolean bet_transfert_entry_lose_focus ( GtkWidget *entry,
gtk_editable_select_region ( GTK_EDITABLE ( entry ), 0, 0 );
element_number = GPOINTER_TO_INT ( ptr_origin );
- if ( element_number != TRANSACTION_FORM_CATEGORY
+ if ( element_number != TRANSACTION_FORM_PARTY
+ &&
+ element_number != TRANSACTION_FORM_CATEGORY
&&
element_number != TRANSACTION_FORM_BUDGET )
return FALSE;
@@ -2299,6 +2344,11 @@ gboolean bet_transfert_entry_lose_focus ( GtkWidget *entry,
string = NULL;
switch ( element_number )
{
+ case TRANSACTION_FORM_PARTY :
+ if ( !strlen ( gtk_entry_get_text ( GTK_ENTRY ( entry ) ) ) )
+ string = gsb_form_widget_get_name ( TRANSACTION_FORM_PARTY );
+ break;
+
case TRANSACTION_FORM_CATEGORY :
if ( !strlen ( gtk_entry_get_text ( GTK_ENTRY ( entry ) ) ) )
string = gsb_form_widget_get_name ( TRANSACTION_FORM_CATEGORY );
@@ -2319,6 +2369,7 @@ gboolean bet_transfert_entry_lose_focus ( GtkWidget *entry,
{
switch ( element_number)
{
+ case TRANSACTION_FORM_PARTY :
case TRANSACTION_FORM_CATEGORY :
case TRANSACTION_FORM_BUDGET :
/* need to work with the combofix to avoid some signals if we work
@@ -2383,10 +2434,6 @@ gboolean bet_transfert_take_data ( struct_transfert_data *transfert, GtkWidget
else
return FALSE;
- widget = g_object_get_data ( G_OBJECT ( dialog ), "bet_transfert_auto_inc" );
- transfert -> auto_inc_month = gtk_toggle_button_get_active (
- GTK_TOGGLE_BUTTON ( widget ) );
-
widget = g_object_get_data ( G_OBJECT ( dialog ), "bet_transfert_replace_data" );
transfert -> replace_transaction = gtk_toggle_button_get_active (
GTK_TOGGLE_BUTTON ( widget ) );
@@ -2416,6 +2463,18 @@ gboolean bet_transfert_take_data ( struct_transfert_data *transfert, GtkWidget
widget = g_object_get_data ( G_OBJECT ( dialog ), "bet_transfert_direct_debit" );
transfert->direct_debit = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( widget ) );
+ if ( transfert->direct_debit )
+ {
+ gboolean empty = TRUE;
+
+ widget = g_object_get_data ( G_OBJECT ( dialog ), "bet_transfert_payee_combo" );
+ if ( gsb_form_widget_check_empty( widget ) == FALSE )
+ {
+ bet_future_get_payee_data ( widget, ( gpointer ) transfert );
+ empty = FALSE;
+ }
+ }
+
return TRUE;
}
@@ -2649,16 +2708,28 @@ gboolean bet_transfert_set_form_data_from_line ( gint account_number, gint numbe
gtk_widget_set_sensitive ( widget, transfert -> replace_transaction );
widget = g_object_get_data ( G_OBJECT ( bet_transfert_dialog ),
- "bet_transfert_auto_inc" );
- gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widget ), transfert->auto_inc_month );
-
- widget = g_object_get_data ( G_OBJECT ( bet_transfert_dialog ),
"bet_transfert_replace_data" );
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widget ), transfert->replace_transaction );
widget = g_object_get_data ( G_OBJECT ( bet_transfert_dialog ), "bet_transfert_direct_debit" );
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widget ), transfert->direct_debit );
+ widget = g_object_get_data ( G_OBJECT ( bet_transfert_dialog ),
+ "bet_transfert_payee_combo" );
+ if ( transfert -> payee_number > 0 )
+ {
+ gtk_combofix_set_text ( GTK_COMBOFIX ( widget ),
+ gsb_data_payee_get_name ( transfert -> payee_number, FALSE ) );
+
+ gsb_form_widget_set_empty ( GTK_COMBOFIX ( widget ) -> entry, FALSE );
+ gtk_editable_set_position ( GTK_EDITABLE ( GTK_COMBOFIX ( widget ) -> entry), 0 );
+ }
+ else
+ {
+ gtk_combofix_set_text ( GTK_COMBOFIX ( widget ), _("Payee") );
+ gsb_form_widget_set_empty ( GTK_COMBOFIX ( widget ) -> entry, TRUE );
+ }
+
return TRUE;
}
diff --git a/src/bet_graph.c b/src/bet_graph.c
index 160e19f..c9f84d6 100644
--- a/src/bet_graph.c
+++ b/src/bet_graph.c
@@ -41,7 +41,7 @@
#include "gsb_data_fyear.h"
#include "gsb_dirs.h"
#include "gsb_file.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "structures.h"
#include "utils_gtkbuilder.h"
#include "utils_dates.h"
diff --git a/src/bet_hist.c b/src/bet_hist.c
index 975c881..8242bb2 100644
--- a/src/bet_hist.c
+++ b/src/bet_hist.c
@@ -46,9 +46,8 @@
#include "gsb_data_transaction.h"
#include "gsb_file.h"
#include "gsb_fyear.h"
+#include "gsb_navigation.h"
#include "gsb_real.h"
-#include "mouse.h"
-#include "navigation.h"
#include "print_tree_view_list.h"
#include "structures.h"
#include "traitement_variables.h"
@@ -1456,7 +1455,7 @@ gboolean bet_historical_button_press ( GtkWidget *tree_view,
GdkEventButton *ev )
{
/* show the popup */
- if ( ev -> button == RIGHT_BUTTON )
+ if ( ev -> button == GSB_RIGHT_BUTTON )
bet_historical_context_menu ( tree_view );
return FALSE;
diff --git a/src/bet_tab.c b/src/bet_tab.c
index b3ba69d..2a7b4a5 100644
--- a/src/bet_tab.c
+++ b/src/bet_tab.c
@@ -52,12 +52,12 @@
#include "gsb_data_transaction.h"
#include "gsb_dirs.h"
#include "gsb_file.h"
+#include "gsb_navigation.h"
+#include "gsb_navigation_view.h"
#include "gsb_real.h"
#include "gsb_scheduler.h"
#include "gsb_scheduler_list.h"
#include "gsb_transactions_list.h"
-#include "mouse.h"
-#include "navigation.h"
#include "print_tree_view_list.h"
#include "structures.h"
#include "traitement_variables.h"
@@ -171,6 +171,35 @@ static gint bet_array_current_tree_view_width = 0;
static GtkWidget *bet_array_toolbar;
+/**
+ * remplace l'opération planifiée de même date et de même catégorie ou IB
+ *
+ * \param modèle du tableau
+ *
+ * \return
+ * */
+static void bet_array_list_replace_scheduled_by_transfert ( GtkTreeModel *tab_model,
+ gint account_number )
+{
+ GHashTable *transfert_list;
+ GHashTableIter iter;
+ gpointer key, value;
+
+ transfert_list = bet_data_transfert_get_list ();
+ g_hash_table_iter_init ( &iter, transfert_list );
+ while ( g_hash_table_iter_next ( &iter, &key, &value ) )
+ {
+ struct_transfert_data *transfert = ( struct_transfert_data *) value;
+
+ if ( account_number != transfert -> account_number )
+ continue;
+
+ if ( transfert -> replace_transaction )
+ bet_array_list_replace_planned_line_by_transfert ( tab_model, transfert );
+ }
+}
+
+
/*
* Met à jour les données à afficher dans les différentes vues du module
*
@@ -467,6 +496,9 @@ void bet_array_refresh_estimate_tab ( gint account_number )
/* search data from the futur */
bet_array_refresh_futur_data ( tree_model, date_min, date_max );
+ /* search data from a transfer */
+ bet_array_refresh_transfert_data ( tree_model, date_min, date_max );
+
/* search transactions of the account which are in the period */
bet_array_refresh_transactions_data ( tree_model,
account_number,
@@ -479,8 +511,7 @@ void bet_array_refresh_estimate_tab ( gint account_number )
date_min,
date_max );
- /* search data from a transfer */
- bet_array_refresh_transfert_data ( tree_model, date_min, date_max );
+ bet_array_list_replace_scheduled_by_transfert ( tree_model, account_number );
/* shows the balance at beginning of month */
bet_array_shows_balance_at_beginning_of_month ( tree_model, date_min, date_max );
@@ -1308,7 +1339,7 @@ gboolean bet_array_list_button_press ( GtkWidget *tree_view,
GdkEventButton *ev )
{
/* show the popup */
- if ( ev -> button == RIGHT_BUTTON )
+ if ( ev -> button == GSB_RIGHT_BUTTON )
{
GtkTreePath *path = NULL;
@@ -1612,7 +1643,7 @@ void bet_array_list_change_menu ( GtkWidget *menu_item,
}
else if ( origine == SPP_ORIGIN_SCHEDULED )
{
- gsb_gui_navigation_set_selection ( GSB_SCHEDULER_PAGE, 0, NULL );
+ gsb_navigation_view_set_selection ( GSB_SCHEDULER_PAGE, 0, NULL );
gsb_scheduler_list_select ( number );
gsb_scheduler_list_edit_transaction ( number );
}
@@ -2328,7 +2359,7 @@ void bet_array_list_schedule_selected_line ( GtkWidget *menu_item,
mise_a_jour_liste_echeances_auto_accueil = 1;
- gsb_gui_navigation_set_selection ( GSB_SCHEDULER_PAGE, 0, NULL );
+ gsb_navigation_view_set_selection ( GSB_SCHEDULER_PAGE, 0, NULL );
gsb_scheduler_list_select ( scheduled_number );
gsb_scheduler_list_edit_transaction ( scheduled_number );
@@ -2622,8 +2653,8 @@ gboolean bet_array_refresh_transfert_data ( GtkTreeModel *tab_model,
devel_debug (NULL);
- account_number = gsb_gui_navigation_get_current_account ( );
- transfert_list = bet_data_transfert_get_list ( );
+ account_number = gsb_gui_navigation_get_current_account ();
+ transfert_list = bet_data_transfert_get_list ();
g_hash_table_iter_init ( &iter, transfert_list );
while ( g_hash_table_iter_next ( &iter, &key, &value ) )
@@ -2643,9 +2674,6 @@ gboolean bet_array_refresh_transfert_data ( GtkTreeModel *tab_model,
if ( account_number != transfert -> account_number )
continue;
- if ( transfert -> auto_inc_month )
- bet_data_transfert_update_date_if_necessary ( transfert );
-
if ( g_date_compare ( transfert -> date, date_max ) > 0 )
continue;
if ( g_date_compare ( transfert -> date, date_min ) < 0 )
@@ -2697,8 +2725,6 @@ gboolean bet_array_refresh_transfert_data ( GtkTreeModel *tab_model,
SPP_ESTIMATE_TREE_AMOUNT_COLUMN, str_amount,
-1);
- if ( transfert -> replace_transaction )
- bet_array_list_replace_planned_line_by_transfert ( tab_model, transfert );
g_value_unset ( &date_value );
g_free ( str_date );
g_free ( str_description );
@@ -3183,17 +3209,17 @@ void bet_array_create_transaction_from_transfert ( struct_transfert_data *transf
}
else
{
+ gint scheduled_number;
+
/* on recherche une opération planifiée */
tmp_list = gsb_data_scheduled_get_scheduled_list ( );
while (tmp_list)
{
- gint scheduled_number;
gint div_number = 0;
gint sub_div_number = 0;
gint account_number;
const GDate *date;
- gsb_real amount;
scheduled_number = gsb_data_scheduled_get_scheduled_number ( tmp_list->data );
tmp_list = tmp_list->next;
@@ -3219,15 +3245,6 @@ void bet_array_create_transaction_from_transfert ( struct_transfert_data *transf
&&
transfert -> sub_category_number == sub_div_number )
{
- if ( transfert -> type == 0 )
- {
- amount = gsb_data_account_get_current_balance ( transfert -> replace_account );
- }
- else
- {
- amount = gsb_data_partial_balance_get_current_amount ( transfert -> replace_account );
- }
- gsb_data_scheduled_set_amount ( scheduled_number, amount );
find = TRUE;
break;
}
@@ -3243,31 +3260,22 @@ void bet_array_create_transaction_from_transfert ( struct_transfert_data *transf
&&
transfert -> sub_budgetary_number == sub_div_number )
{
- if ( transfert -> type == 0 )
- {
- amount = gsb_data_account_get_current_balance ( transfert -> replace_account );
- }
- else
- {
- amount = gsb_data_partial_balance_get_current_amount ( transfert -> replace_account );
- }
- gsb_data_scheduled_set_amount ( scheduled_number, amount );
find = TRUE;
break;
}
}
- if ( find )
- {
- GDate *tmp_date;
-
- tmp_date = gsb_date_copy ( transfert -> date );
- g_date_add_months ( tmp_date, 1 );
+ }
+ if ( find )
+ {
+ GDate *tmp_date;
- gsb_data_scheduled_set_date ( scheduled_number, tmp_date );
+ tmp_date = gsb_date_copy ( transfert -> date );
+ g_date_add_months ( tmp_date, 1 );
- g_date_free ( tmp_date );
- }
+ gsb_data_scheduled_set_date ( scheduled_number, tmp_date );
bet_data_transfert_create_new_transaction ( transfert );
+
+ g_date_free ( tmp_date );
}
}
}
diff --git a/src/categories_onglet.c b/src/categories_onglet.c
index 07a785a..8cecd5c 100644
--- a/src/categories_onglet.c
+++ b/src/categories_onglet.c
@@ -42,7 +42,6 @@
#include "gsb_transactions_list.h"
#include "meta_categories.h"
#include "metatree.h"
-#include "mouse.h"
#include "structures.h"
#include "traitement_variables.h"
#include "transaction_list.h"
@@ -991,7 +990,7 @@ gboolean category_list_button_press ( GtkWidget *tree_view,
GdkEventButton *ev,
gpointer null )
{
- if ( ev -> button == RIGHT_BUTTON )
+ if ( ev -> button == GSB_RIGHT_BUTTON )
{
category_list_popup_context_menu ( );
diff --git a/src/etats_affiche.c b/src/etats_affiche.c
index 4271a71..318c2c4 100644
--- a/src/etats_affiche.c
+++ b/src/etats_affiche.c
@@ -43,9 +43,9 @@
#include "gsb_data_reconcile.h"
#include "gsb_data_report.h"
#include "gsb_data_transaction.h"
-#include "utils_dates.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "gsb_real.h"
+#include "utils_dates.h"
#include "utils_real.h"
#include "utils_str.h"
#include "structures.h"
@@ -54,8 +54,8 @@
/*START_STATIC*/
static void etat_affiche_attach_hsep ( int x, int x2, int y, int y2);
-static void etat_affiche_attach_label ( gchar * text, gint properties, int x, int x2, int y, int y2,
- enum alignement align, gint transaction_number );
+static void etat_affiche_attach_label ( gchar *text, gint properties, int x, int x2, int y, int y2,
+ EtatsAlignment align, gint transaction_number );
static void etat_affiche_attach_vsep ( int x, int x2, int y, int y2);
/*END_STATIC*/
@@ -2515,8 +2515,8 @@ void etat_affiche_attach_vsep ( int x, int x2, int y, int y2)
-void etat_affiche_attach_label ( gchar * text, gint properties, int x, int x2, int y, int y2,
- enum alignement align, gint transaction_number )
+void etat_affiche_attach_label ( gchar *text, gint properties, int x, int x2, int y, int y2,
+ EtatsAlignment align, gint transaction_number )
{
etat_affichage_output -> attach_label ( text, properties, x, x2, y, y2, align, transaction_number );
}
diff --git a/src/etats_affiche.h b/src/etats_affiche.h
index 2c71fe9..e5fc4b7 100644
--- a/src/etats_affiche.h
+++ b/src/etats_affiche.h
@@ -16,7 +16,7 @@ struct struct_etat_affichage
gint (* finish) (); /** End of drawing session */
void (* attach_hsep) (int, int, int, int); /** Draw horizontal separator (aka "-") */
void (* attach_vsep) (int, int, int, int); /** Draw vertical separator (aka "|") */
- void (* attach_label) (gchar *, gdouble, int, int, int, int, enum alignement, gint); /** Drraw a label with properties */
+ void (* attach_label) (gchar *, gdouble, int, int, int, int, EtatsAlignment, gint); /** Drraw a label with properties */
};
diff --git a/src/etats_calculs.c b/src/etats_calculs.c
index 0995913..8f1492c 100644
--- a/src/etats_calculs.c
+++ b/src/etats_calculs.c
@@ -43,7 +43,7 @@
#include "gsb_data_report.h"
#include "gsb_data_report_text_comparison.h"
#include "gsb_data_transaction.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "gsb_real.h"
#include "gsb_status.h"
#include "utils_str.h"
diff --git a/src/etats_config.c b/src/etats_config.c
index f116c5e..b250d8b 100644
--- a/src/etats_config.c
+++ b/src/etats_config.c
@@ -51,7 +51,7 @@
#include "gsb_data_report_text_comparison.h"
#include "gsb_file.h"
#include "gsb_form_widget.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "structures.h"
#include "utils.h"
#include "utils_buttons.h"
diff --git a/src/etats_csv.c b/src/etats_csv.c
index 101f512..cf07d12 100644
--- a/src/etats_csv.c
+++ b/src/etats_csv.c
@@ -42,7 +42,7 @@
/*START_STATIC*/
static void csv_attach_hsep ( gint x, gint x2, gint y, gint y2);
static void csv_attach_label ( gchar * text, gdouble properties, gint x, gint x2, gint y, gint y2,
- enum alignement align, gint transaction_number );
+ EtatsAlignment align, gint transaction_number );
static void csv_attach_vsep ( gint x, gint x2, gint y, gint y2);
static gint csv_finish ();
static gint csv_initialise (GSList * opes_selectionnees, gchar * filename );
@@ -87,7 +87,7 @@ static gint csv_lastline = 1;
* backend is not interactive)
*/
void csv_attach_label ( gchar * text, gdouble properties, gint x, gint x2, gint y, gint y2,
- enum alignement align, gint transaction_number )
+ EtatsAlignment align, gint transaction_number )
{
gint pad;
diff --git a/src/etats_gtktable.c b/src/etats_gtktable.c
index d9d513e..57cbb63 100644
--- a/src/etats_gtktable.c
+++ b/src/etats_gtktable.c
@@ -35,25 +35,26 @@
/*START_INCLUDE*/
#include "etats_gtktable.h"
+#include "etats_affiche.h"
+#include "etats_config.h"
+#include "fenetre_principale.h"
#include "gsb_data_account.h"
#include "gsb_data_transaction.h"
-#include "navigation.h"
-#include "menu.h"
+#include "gsb_navigation.h"
+#include "gsb_navigation_view.h"
#include "gsb_transactions_list.h"
-#include "utils.h"
+#include "menu.h"
+#include "structures.h"
#include "transaction_list.h"
#include "transaction_list_select.h"
-#include "structures.h"
-#include "fenetre_principale.h"
-#include "etats_config.h"
-#include "etats_affiche.h"
+#include "utils.h"
#include "erreur.h"
/*END_INCLUDE*/
/*START_STATIC*/
static void gtktable_attach_hsep ( int x, int x2, int y, int y2);
-static void gtktable_attach_label ( gchar * text, gdouble properties, int x, int x2, int y, int y2,
- enum alignement align, gint transaction_number );
+static void gtktable_attach_label ( gchar *text, gdouble properties, int x, int x2, int y, int y2,
+ EtatsAlignment align, gint transaction_number );
static void gtktable_attach_vsep ( int x, int x2, int y, int y2);
static void gtktable_click_sur_ope_etat ( gint transaction_number );
static gint gtktable_finish ();
@@ -93,8 +94,8 @@ extern GtkWidget *scrolled_window_etat;
* label is part of a transaction. Make
* an hyperlink if applicable
*/
-void gtktable_attach_label ( gchar * text, gdouble properties, int x, int x2, int y, int y2,
- enum alignement align, gint transaction_number )
+void gtktable_attach_label ( gchar *text, gdouble properties, int x, int x2, int y, int y2,
+ EtatsAlignment align, gint transaction_number )
{
GtkWidget * label;
GtkStyle * style;
@@ -306,12 +307,12 @@ void gtktable_click_sur_ope_etat ( gint transaction_number )
gint mother_transaction;
/* go on the good account */
- gsb_gui_navigation_set_selection ( GSB_ACCOUNT_PAGE,
- account_number,
- GINT_TO_POINTER (-1));
+ gsb_navigation_view_set_selection ( GSB_ACCOUNT_PAGE,
+ account_number,
+ GINT_TO_POINTER ( -1 ) );
/* récupération de la ligne de l'opé dans la liste ; affichage de toutes les opé si nécessaire */
- if ( gsb_data_transaction_get_marked_transaction (transaction_number) == OPERATION_RAPPROCHEE
+ if ( gsb_data_transaction_get_marked_transaction (transaction_number) == OPERATION_RAPPROCHEE
&&
!gsb_data_account_get_r ( account_number ) )
{
diff --git a/src/etats_html.c b/src/etats_html.c
index 653d946..b8ca271 100644
--- a/src/etats_html.c
+++ b/src/etats_html.c
@@ -30,7 +30,7 @@
#include "dialog.h"
#include "etats_support.h"
#include "gsb_data_report.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "utils_files.h"
#include "structures.h"
#include "etats_config.h"
@@ -39,8 +39,8 @@
/*START_STATIC*/
static void html_attach_hsep ( int x, int x2, int y, int y2);
-static void html_attach_label ( gchar * text, gdouble properties, int x, int x2, int y, int y2,
- enum alignement align, gint transaction_number );
+static void html_attach_label ( gchar *text, gdouble properties, int x, int x2, int y, int y2,
+ EtatsAlignment align, gint transaction_number );
static void html_attach_vsep ( int x, int x2, int y, int y2);
static gint html_finish ();
static gint html_initialise ( GSList * opes_selectionnees, gchar * filename );
@@ -89,8 +89,8 @@ struct struct_etat_affichage html_affichage = {
* \param transaction_number the number of a transaction to link to (not used as html
* backend is not interactive)
*/
-void html_attach_label ( gchar * text, gdouble properties, int x, int x2, int y, int y2,
- enum alignement align, gint transaction_number )
+void html_attach_label ( gchar *text, gdouble properties, int x, int x2, int y, int y2,
+ EtatsAlignment align, gint transaction_number )
{
int pad, realsize, realcolumns;
gint current_report_number;
diff --git a/src/etats_onglet.c b/src/etats_onglet.c
index 25b1472..0777f7b 100644
--- a/src/etats_onglet.c
+++ b/src/etats_onglet.c
@@ -44,9 +44,9 @@
#include "gsb_data_report_amout_comparison.h"
#include "gsb_file.h"
#include "gsb_file_others.h"
+#include "gsb_navigation.h"
#include "gsb_report.h"
#include "gsb_status.h"
-#include "navigation.h"
#include "print_report.h"
#include "structures.h"
#include "traitement_variables.h"
diff --git a/src/fenetre_principale.c b/src/fenetre_principale.c
index 5a09ce0..77e14fa 100644
--- a/src/fenetre_principale.c
+++ b/src/fenetre_principale.c
@@ -38,17 +38,15 @@
#include "bet_tab.h"
#include "categories_onglet.h"
#include "etats_onglet.h"
-#include "grisbi_app.h"
-#include "grisbi_window.h"
#include "gsb_data_account.h"
#include "gsb_account_property.h"
#include "gsb_form.h"
+#include "gsb_navigation.h"
#include "gsb_scheduler_list.h"
#include "gsb_status.h"
#include "gsb_transactions_list.h"
#include "imputation_budgetaire.h"
#include "menu.h"
-#include "navigation.h"
#include "structures.h"
#include "tiers_onglet.h"
#include "erreur.h"
@@ -56,7 +54,6 @@
/*START_STATIC*/
static GtkWidget *creation_fenetre_operations ( void );
-static void gsb_gui_create_general_notebook ( GrisbiWindow *window );
static gboolean gsb_gui_fill_general_notebook ( GtkWidget *notebook );
static void gsb_gui_headings_private_update_label_markup ( GtkLabel *label,
const gchar *text,
@@ -109,35 +106,19 @@ void gsb_gui_new_gui ( void )
/**
- * Create a new general notebook
- *
- * \param
- *
- * \return
- */
-void gsb_gui_new_general_notebook ( void )
-{
- GrisbiWindow *window;
-
- window = grisbi_app_get_active_window ( grisbi_app_get_default ( FALSE ) );
-
- gsb_gui_create_general_notebook ( window );
-}
-
-
-
-/**
- * Create the main notebook :
+ * Create the main notebook :
* a notebook wich contains the pages : main page, accounts, scheduler... and
* the form on the bottom, the form will be showed only for accounts page and
* scheduler page
*
+ * \param window
+ *
* \return the notebook
*/
void gsb_gui_create_general_notebook ( GrisbiWindow *window )
{
GtkWidget *vbox;
-/* GtkWidget *form; */
+ GtkWidget *form;
GtkWidget *notebook_general;
devel_debug ( "create_main_notebook" );
@@ -150,10 +131,9 @@ void gsb_gui_create_general_notebook ( GrisbiWindow *window )
notebook_general = grisbi_window_get_widget_by_name ( "notebook_general" );
/* append the form */
-/* form = gsb_form_new ( );
- * gtk_box_pack_start ( GTK_BOX ( vbox ), form, FALSE, FALSE, 0 );
- * gtk_widget_hide ( form );
- */
+ form = gsb_form_new ( );
+ gtk_box_pack_start ( GTK_BOX ( vbox ), form, FALSE, FALSE, 0 );
+ gtk_widget_hide ( form );
/* fill the notebook */
gsb_gui_fill_general_notebook ( notebook_general );
@@ -163,8 +143,11 @@ void gsb_gui_create_general_notebook ( GrisbiWindow *window )
/**
+ * retourne le notebook qui contient les pages de droite de grisbi
*
+ * \param
*
+ * \return FALSE
*/
GtkWidget *gsb_gui_get_general_notebook (void )
{
diff --git a/src/fenetre_principale.h b/src/fenetre_principale.h
index 5158d59..204f775 100644
--- a/src/fenetre_principale.h
+++ b/src/fenetre_principale.h
@@ -3,17 +3,6 @@
#include <gtk/gtk.h>
-typedef enum GSB_GENERAL_NOTEBOOK_PAGES {
- GSB_HOME_PAGE,
- GSB_ACCOUNT_PAGE,
- GSB_SCHEDULER_PAGE,
- GSB_PAYEES_PAGE,
- GSB_SIMULATOR_PAGE,
- GSB_CATEGORIES_PAGE,
- GSB_BUDGETARY_LINES_PAGE,
- GSB_REPORTS_PAGE,
-} GsbGeneralNotebookPages;
-
typedef enum GSB_ACCOUNT_NOTEBOOK_PAGES {
GSB_TRANSACTIONS_PAGE,
GSB_ESTIMATE_PAGE,
@@ -23,10 +12,12 @@ typedef enum GSB_ACCOUNT_NOTEBOOK_PAGES {
} GsbaccountNotebookPages;
/* START_INCLUDE_H */
+#include "grisbi_app.h"
/* END_INCLUDE_H */
/* START_DECLARATION */
+void gsb_gui_create_general_notebook ( GrisbiWindow *window );
GtkWidget *gsb_gui_create_general_widget ( void );
GtkWidget *gsb_gui_get_general_notebook (void );
void gsb_gui_headings_update_suffix ( gchar * suffix );
diff --git a/src/grisbi_app.c b/src/grisbi_app.c
index f9b7886..0a9fea6 100644
--- a/src/grisbi_app.c
+++ b/src/grisbi_app.c
@@ -36,6 +36,7 @@
#include "gsb_dirs.h"
#include "gsb_file.h"
#include "gsb_file_config.h"
+#include "gsb_select_icon.h"
#include "traitement_variables.h"
#include "erreur.h"
/*END_INCLUDE*/
@@ -200,7 +201,7 @@ static void grisbi_app_load_accels ( void )
gchar *accel_filename = NULL;
gchar *msg = NULL;
- accel_filename = g_build_filename ( gsb_dirs_get_user_config_dir ( ), "grisbi-accels", NULL );
+ accel_filename = g_build_filename ( gsb_dirs_get_user_config_dir (), "grisbi-accels", NULL );
if ( accel_filename )
{
gtk_accel_map_load ( accel_filename );
@@ -229,7 +230,7 @@ static void grisbi_app_save_accels ( void )
gchar *accel_filename;
gchar *msg = NULL;
- accel_filename = g_build_filename ( gsb_dirs_get_user_config_dir ( ), "grisbi-accels", NULL );
+ accel_filename = g_build_filename ( gsb_dirs_get_user_config_dir (), "grisbi-accels", NULL );
if ( accel_filename )
{
gtk_accel_map_save ( accel_filename );
@@ -271,7 +272,7 @@ static void grisbi_app_window_destroy ( GrisbiWindow *window,
if ( app->priv->windows == NULL )
{
- grisbi_app_save_accels ( );
+ grisbi_app_save_accels ();
g_object_unref ( app );
}
}
@@ -353,20 +354,11 @@ static void grisbi_app_init_conf_mutex ( void )
*/
static void grisbi_app_init ( GrisbiApp *app )
{
- gchar *string;
-
devel_debug (NULL);
-
app->priv = GRISBI_APP_GET_PRIVATE ( app );
/* charge les raccourcis claviers */
- grisbi_app_load_accels ( );
-
- /* create the icon of grisbi (set in the panel of gnome or other) */
- string = g_build_filename ( gsb_dirs_get_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);
+ grisbi_app_load_accels ();
/* initialisation des paramètres de l'application */
grisbi_app_init_conf_mutex ();
@@ -375,7 +367,7 @@ static void grisbi_app_init ( GrisbiApp *app )
g_mutex_unlock ( grisbi_app_conf_mutex );
/* initialisation des couleurs par défaut */
- gsb_color_initialise_couleurs_par_defaut ( );
+ gsb_color_initialise_couleurs_par_defaut ();
/* return */
}
@@ -394,6 +386,7 @@ GrisbiWindow *grisbi_app_create_window ( GrisbiApp *app,
GdkScreen *screen )
{
GrisbiWindow *window;
+ gchar *string;
if ( app->priv->windows == NULL )
{
@@ -409,6 +402,17 @@ GrisbiWindow *grisbi_app_create_window ( GrisbiApp *app,
grisbi_app_window_set_size_and_position ( window );
+ /* create the icon of grisbi (set in the panel of gnome or other) */
+ string = g_build_filename ( gsb_dirs_get_pixmaps_dir (), "grisbi.svg", NULL );
+ if ( g_file_test ( string, G_FILE_TEST_EXISTS ) )
+ {
+ GdkPixbuf *pixbuf = NULL;
+
+ pixbuf = gsb_select_icon_get_default_logo_pixbuf ();
+ gtk_window_set_icon ( GTK_WINDOW ( window ), pixbuf );
+ }
+ g_free (string);
+
g_signal_connect ( window,
"focus_in_event",
G_CALLBACK ( grisbi_app_window_focus_in_event ),
@@ -706,7 +710,7 @@ gboolean grisbi_app_quit ( void )
/* clean finish of the debug file */
if ( gsb_debug_get_debug_mode () )
- gsb_debug_finish_log ( );
+ gsb_debug_finish_log ();
return FALSE;
}
diff --git a/src/grisbi_app.h b/src/grisbi_app.h
index ed00f35..a561e4e 100644
--- a/src/grisbi_app.h
+++ b/src/grisbi_app.h
@@ -15,10 +15,10 @@ G_BEGIN_DECLS
*/
#define GRISBI_TYPE_APP (grisbi_app_get_type())
#define GRISBI_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GRISBI_TYPE_APP, GrisbiApp))
-#define GRISBI_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GRISBI_TYPE_APP, GrisbiAppClass))
+#define GRISBI_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GRISBI_TYPE_APP, GrisbiAppClass))
#define GRISBI_IS_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GRISBI_TYPE_APP))
#define GRISBI_IS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GRISBI_TYPE_APP))
-#define GRISBI_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GRISBI_TYPE_APP, GrisbitAppClass))
+#define GRISBI_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GRISBI_TYPE_APP, GrisbiAppClass))
/* Private structure type */
typedef struct _GrisbiAppPrivate GrisbiAppPrivate;
diff --git a/src/grisbi_window.c b/src/grisbi_window.c
index ed0d9a0..69325ae 100644
--- a/src/grisbi_window.c
+++ b/src/grisbi_window.c
@@ -40,8 +40,8 @@
#include "grisbi_app.h"
#include "grisbi_ui.h"
#include "gsb_dirs.h"
+#include "gsb_navigation.h"
#include "menu.h"
-#include "navigation.h"
#include "structures.h"
#include "traitement_variables.h"
#include "utils_gtkbuilder.h"
@@ -49,9 +49,6 @@
/*END_INCLUDE*/
-/*START_STATIC*/
-/*END_STATIC*/
-
#define GSB_NBRE_CHAR 15
#define GSB_NAMEFILE_TOO_LONG 45
@@ -110,6 +107,15 @@ struct _GrisbiWindowPrivate
/* structure run */
GrisbiWindowRun *run;
+
+ /* account list */
+ GtkWidget *navigation_tree_view;
+ GSList *list_accounts;
+ gpointer account_buffer;
+
+ /* Widget that hold the scheduler calendar. */
+ GtkWidget *scheduler_calendar;
+
};
@@ -179,7 +185,7 @@ static gboolean grisbi_window_key_press_event ( GtkWidget *widget,
switch ( event -> keyval )
{
case GDK_KEY_F11 :
- conf = grisbi_app_get_conf ( );
+ conf = grisbi_app_get_conf ();
if ( conf->full_screen )
gtk_window_unfullscreen ( GTK_WINDOW ( widget ) );
else
@@ -210,7 +216,7 @@ static gboolean grisbi_window_state_event ( GtkWidget *widget,
show = !( event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED );
gtk_statusbar_set_has_resize_grip ( GTK_STATUSBAR ( window->priv->statusbar ), show );
- conf = grisbi_app_get_conf ( );
+ conf = grisbi_app_get_conf ();
conf->maximize_screen = !show;
}
else if ( event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN )
@@ -218,7 +224,7 @@ static gboolean grisbi_window_state_event ( GtkWidget *widget,
show = !( event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN );
gtk_statusbar_set_has_resize_grip ( GTK_STATUSBAR ( window->priv->statusbar ), show );
- conf = grisbi_app_get_conf ( );
+ conf = grisbi_app_get_conf ();
conf->full_screen = !show;
}
@@ -342,11 +348,11 @@ static void grisbi_window_init_menus ( GrisbiWindow *window )
devel_debug (NULL);
- ui_manager = gtk_ui_manager_new ( );
+ ui_manager = gtk_ui_manager_new ();
window->priv->ui_manager = ui_manager;
window->priv->recent_files_merge_id = -1;
- conf = grisbi_app_get_conf ( );
+ conf = grisbi_app_get_conf ();
/* actions toujours accessibles (sensitives) */
actions = gtk_action_group_new ( "AlwaysSensitiveActions" );
@@ -469,7 +475,7 @@ static void grisbi_window_init_menus ( GrisbiWindow *window )
gtk_action_group_set_sensitive ( actions, FALSE );
/* now load the UI definition */
- ui_file = g_build_filename ( gsb_dirs_get_ui_dir ( ), "grisbi_ui.xml", NULL );
+ ui_file = g_build_filename ( gsb_dirs_get_ui_dir (), "grisbi_ui.xml", NULL );
gtk_ui_manager_add_ui_from_file ( ui_manager, ui_file, &error );
if ( error != NULL )
{
@@ -509,7 +515,7 @@ static void grisbi_window_init_menus ( GrisbiWindow *window )
static gboolean grisbi_window_initialise_builder ( GrisbiWindow *window )
{
/* Creation d'un nouveau GtkBuilder */
- grisbi_window_builder = gtk_builder_new ( );
+ grisbi_window_builder = gtk_builder_new ();
if ( grisbi_window_builder == NULL )
return FALSE;
@@ -519,6 +525,7 @@ static gboolean grisbi_window_initialise_builder ( GrisbiWindow *window )
window->priv->main_box = GTK_WIDGET ( gtk_builder_get_object ( grisbi_window_builder, "main_vbox" ) );
window->priv->accueil_page = GTK_WIDGET ( gtk_builder_get_object ( grisbi_window_builder, "accueil_page" ) );
+ window->priv->vbox_general = GTK_WIDGET ( gtk_builder_get_object ( grisbi_window_builder, "vbox_general" ) );
return TRUE;
}
@@ -542,7 +549,7 @@ static void grisbi_window_new_accueil_page ( GrisbiWindow *window )
gint row = 1;
GrisbiAppConf *conf;
- conf = grisbi_app_get_conf ( );
+ conf = grisbi_app_get_conf ();
table = GTK_WIDGET ( gtk_builder_get_object ( grisbi_window_builder, "table_accueil" ) );
@@ -643,7 +650,7 @@ static gboolean grisbi_window_headings_simpleclick_event_run ( GtkWidget *button
{
if ( button_event -> type == GDK_BUTTON_PRESS )
{
- callback ( );
+ callback ();
}
return TRUE;
@@ -675,7 +682,6 @@ static GtkWidget *grisbi_window_new_headings_eb ( GrisbiWindow *window )
G_CALLBACK ( grisbi_window_headings_simpleclick_event_run ),
gsb_gui_navigation_select_prev );
-
arrow_eb = GTK_WIDGET ( gtk_builder_get_object ( grisbi_window_builder, "arrow_eb_right" ) );
gtk_widget_modify_bg ( arrow_eb, 0, &(style -> bg[GTK_STATE_ACTIVE]) );
g_signal_connect ( G_OBJECT ( arrow_eb ), "button-press-event",
@@ -705,7 +711,7 @@ static gboolean grisbi_window_hpaned_size_allocate ( GtkWidget *hpaned,
{
GrisbiAppConf *conf;
- conf = grisbi_app_get_conf ( );
+ conf = grisbi_app_get_conf ();
conf->panel_width = gtk_paned_get_position ( GTK_PANED ( hpaned ) );
return FALSE;
@@ -791,74 +797,6 @@ static gboolean grisbi_window_set_struct_etat ( GrisbiWindow *window,
/**
- * Init la structure etat
- *
- * \param
- *
- * \return
- **/
-void grisbi_window_init_struct_etat ( GrisbiWindow *window )
-{
- GrisbiWindowEtat *etat;
-
- devel_debug (NULL);
-
- /* creation de la structure etat */
- etat = g_malloc0 ( sizeof ( GrisbiWindowEtat ) );
- grisbi_window_set_struct_etat ( window, etat );
-
- /* blocage du mutex */
- g_mutex_lock ( grisbi_window_etat_mutex );
-
- /* init logo */
- etat->is_pixmaps_dir = TRUE;
- if ( etat->name_logo && strlen ( etat->name_logo ) )
- g_free ( etat->name_logo );
- etat->name_logo = NULL;
- etat->utilise_logo = 1;
-
- etat->valeur_echelle_recherche_date_import = 2;
- etat->get_fyear_by_value_date = FALSE;
-
- /* init default combofix values */
- etat->combofix_mixed_sort = FALSE;
- etat->combofix_max_item = 0;
- etat->combofix_case_sensitive = FALSE;
- etat->combofix_enter_select_completion = FALSE;
- etat->combofix_force_payee = FALSE;
- etat->combofix_force_category = FALSE;
-
- /* defaut value for width and align of columns */
- if ( etat->transaction_column_width && strlen ( etat->transaction_column_width ) )
- {
- g_free ( etat->transaction_column_width );
- etat->transaction_column_width = NULL;
- }
- if ( etat->scheduler_column_width && strlen ( etat->scheduler_column_width ) )
- {
- g_free ( etat->scheduler_column_width );
- etat->scheduler_column_width = NULL;
- }
-
- /* divers */
- etat->add_archive_in_total_balance = TRUE; /* add the archived transactions by default */
- etat->get_fyear_by_value_date = 0; /* By default use transaction-date */
- etat->retient_affichage_par_compte = 0; /* Par défaut affichage identique pour tous les comptes */
- memset ( etat->csv_skipped_lines, '\0', sizeof(gboolean) *CSV_MAX_TOP_LINES );
-
- /* initializes the variables for the estimate balance module */
- etat->bet_deb_period = 1;
-
- /* initialisation des autres variables */
- init_variables ( window->priv->etat, window->priv->run );
-
- /* libération du mutex */
- g_mutex_unlock ( grisbi_window_etat_mutex );
-
-}
-
-
-/**
* libère la mémoire utilisée par etat
*
* \param object
@@ -873,6 +811,9 @@ static void grisbi_window_free_struct_etat ( GrisbiWindowEtat *etat )
g_free ( etat->name_logo );
etat->name_logo = NULL;
+ g_free ( etat->navigation_list_order );
+ etat->navigation_list_order = NULL;
+
g_free ( etat->csv_separator );
etat->csv_separator = NULL;
@@ -883,9 +824,6 @@ static void grisbi_window_free_struct_etat ( GrisbiWindowEtat *etat )
etat->scheduler_column_width = NULL;
g_free ( etat );
-
- /* free others variables */
- free_variables ();
}
@@ -902,10 +840,11 @@ static void grisbi_window_init ( GrisbiWindow *window )
GtkWidget *statusbar;
GtkWidget *headings_eb;
GrisbiAppConf *conf;
+ GrisbiWindowPrivate *priv;
devel_debug (NULL);
- window->priv = GRISBI_WINDOW_GET_PRIVATE ( window );
+ window->priv = priv = GRISBI_WINDOW_GET_PRIVATE ( window );
if ( !grisbi_window_initialise_builder ( window ) )
exit ( 1 );
@@ -914,34 +853,38 @@ static void grisbi_window_init ( GrisbiWindow *window )
grisbi_window_init_etat_mutex ();
/* creation de la structure run */
- window->priv->run = g_malloc0 ( sizeof ( GrisbiWindowRun ) );
+ priv->run = g_malloc0 ( sizeof ( GrisbiWindowRun ) );
/* initialisation de la structure etat */
grisbi_window_init_struct_etat ( window );
+ /* initialisation de la liste des comptes */
+ priv->list_accounts = NULL;
+ priv->account_buffer = NULL;
+
/* Création de la fenêtre principale de Grisbi */
- gtk_container_add ( GTK_CONTAINER ( window ), window->priv->main_box );
- gtk_widget_show ( window->priv->main_box );
+ gtk_container_add ( GTK_CONTAINER ( window ), priv->main_box );
+ gtk_widget_show ( priv->main_box );
/* create the menus */
grisbi_window_init_menus ( window );
/* create the headings eb */
headings_eb = grisbi_window_new_headings_eb ( window );
- gtk_box_pack_start ( GTK_BOX ( window->priv->main_box ), headings_eb, FALSE, FALSE, 0 );
+ gtk_box_pack_start ( GTK_BOX ( priv->main_box ), headings_eb, FALSE, FALSE, 0 );
/* create the statusbar */
statusbar = grisbi_window_new_statusbar ( window );
- gtk_box_pack_end ( GTK_BOX ( window->priv->main_box ), statusbar, FALSE, FALSE, 0 );
+ gtk_box_pack_end ( GTK_BOX ( priv->main_box ), statusbar, FALSE, FALSE, 0 );
/* on initialise une page d'accueil si on ne charge pas de fichier */
conf = grisbi_app_get_conf ();
grisbi_window_new_accueil_page ( window );
- gtk_box_pack_start ( GTK_BOX ( window->priv->main_box ), window->priv->accueil_page, FALSE, FALSE, 0 );
+ gtk_box_pack_start ( GTK_BOX ( priv->main_box ), priv->accueil_page, FALSE, FALSE, 0 );
if ( conf->load_last_file && conf->nb_derniers_fichiers_ouverts > 0 )
- gtk_widget_hide ( window->priv->accueil_page );
+ gtk_widget_hide ( priv->accueil_page );
/* set the signals */
g_signal_connect ( G_OBJECT ( window ),
@@ -987,17 +930,14 @@ GtkWidget *grisbi_window_new_general_widget ( void )
if ( gtk_widget_get_visible ( window->priv->accueil_page ) )
gtk_widget_hide ( window->priv->accueil_page );
- if ( window->priv->vbox_general == NULL )
- {
- window->priv->vbox_general = GTK_WIDGET ( gtk_builder_get_object ( grisbi_window_builder, "vbox_general" ) );
-
- /* Then create and fill the main hpaned. */
+ /* Then create and fill the main hpaned if necessary */
+ if ( window->priv->hpaned_general == NULL )
window->priv->hpaned_general = grisbi_window_new_hpaned ( window );
- gsb_gui_navigation_create_navigation_pane ();
- gsb_gui_new_general_notebook ();
- gtk_container_set_border_width ( GTK_CONTAINER ( window->priv->hpaned_general ), 6 );
- }
+ gsb_gui_navigation_create_navigation_pane ();
+ gsb_gui_create_general_notebook ( window );
+ gtk_container_set_border_width ( GTK_CONTAINER ( window->priv->hpaned_general ), 6 );
+/* gsb_gui_navigation_update_home_page (); */
gtk_widget_show ( window->priv->hpaned_general );
gtk_widget_show ( window->priv->vbox_general );
@@ -1223,7 +1163,7 @@ gboolean grisbi_window_set_active_title ( gint account_number )
case GSB_ACCOUNT_HOLDER:
{
if ( account_number == -1 )
- tmp_number = gsb_data_account_first_number ( );
+ tmp_number = gsb_data_account_first_number ();
else
tmp_number = account_number;
@@ -1375,6 +1315,74 @@ GrisbiWindowEtat *grisbi_window_get_struct_etat ( void )
}
+/**
+ * Init la structure etat
+ *
+ * \param
+ *
+ * \return
+ **/
+void grisbi_window_init_struct_etat ( GrisbiWindow *window )
+{
+ GrisbiWindowEtat *etat;
+
+ devel_debug (NULL);
+
+ /* creation de la structure etat */
+ etat = g_malloc0 ( sizeof ( GrisbiWindowEtat ) );
+ grisbi_window_set_struct_etat ( window, etat );
+
+ /* blocage du mutex */
+ g_mutex_lock ( grisbi_window_etat_mutex );
+
+ /* init logo */
+ etat->is_pixmaps_dir = TRUE;
+ if ( etat->name_logo && strlen ( etat->name_logo ) )
+ g_free ( etat->name_logo );
+ etat->name_logo = NULL;
+ etat->utilise_logo = 1;
+
+ etat->valeur_echelle_recherche_date_import = 2;
+ etat->get_fyear_by_value_date = FALSE;
+
+ /* init default combofix values */
+ etat->combofix_mixed_sort = FALSE;
+ etat->combofix_max_item = 0;
+ etat->combofix_case_sensitive = FALSE;
+ etat->combofix_enter_select_completion = FALSE;
+ etat->combofix_force_payee = FALSE;
+ etat->combofix_force_category = FALSE;
+
+ /* defaut value for width and align of columns */
+ if ( etat->transaction_column_width && strlen ( etat->transaction_column_width ) )
+ {
+ g_free ( etat->transaction_column_width );
+ etat->transaction_column_width = NULL;
+ }
+ if ( etat->scheduler_column_width && strlen ( etat->scheduler_column_width ) )
+ {
+ g_free ( etat->scheduler_column_width );
+ etat->scheduler_column_width = NULL;
+ }
+
+ /* divers */
+ etat->add_archive_in_total_balance = TRUE; /* add the archived transactions by default */
+ etat->get_fyear_by_value_date = 0; /* By default use transaction-date */
+ etat->retient_affichage_par_compte = 0; /* Par défaut affichage identique pour tous les comptes */
+ memset ( etat->csv_skipped_lines, '\0', sizeof(gboolean) *CSV_MAX_TOP_LINES );
+
+ /* initializes the variables for the estimate balance module */
+ etat->bet_deb_period = 1;
+
+ /* initialisation des autres variables */
+ init_variables ( window->priv->etat, window->priv->run );
+
+ /* libération du mutex */
+ g_mutex_unlock ( grisbi_window_etat_mutex );
+
+}
+
+
/* STRUCTURE RUN */
/**
* retourne la structure run
@@ -1400,6 +1408,133 @@ GrisbiWindowRun *grisbi_window_get_struct_run ( GrisbiWindow *window )
}
+/* NAVIGATION PANEL */
+/**
+ * retourne navigation_tree_view
+ *
+ * \param
+ *
+ * \return navigation_tree_view
+ **/
+GtkWidget *grisbi_window_get_navigation_tree_view ( void )
+{
+ GrisbiWindow *window;
+
+ window = grisbi_app_get_active_window ( grisbi_app_get_default ( TRUE ) );
+
+ if ( window )
+ return window->priv->navigation_tree_view;
+ else
+ return NULL;
+}
+
+
+/**
+ * retourne navigation_tree_view
+ *
+ * \param
+ *
+ * \return navigation_tree_view
+ **/
+gboolean grisbi_window_set_navigation_tree_view ( GtkWidget *navigation_tree_view )
+{
+ GrisbiWindow *window;
+
+ window = grisbi_app_get_active_window ( grisbi_app_get_default ( TRUE ) );
+
+ if ( window )
+ {
+ window->priv->navigation_tree_view = navigation_tree_view;
+ return TRUE;
+ }
+ else
+ {
+ window->priv->navigation_tree_view = NULL;
+ return FALSE;
+ }
+}
+
+
+/**
+ * retourne la liste des comptes
+ *
+ * \param window
+ *
+ * \return
+ **/
+GSList *grisbi_window_get_list_accounts ( GrisbiWindow *window )
+{
+ return window->priv->list_accounts;
+}
+
+
+/**
+ * libère t initialise la liste des comptes et le buffer
+ *
+ * \param window
+ *
+ * \return
+ **/
+void grisbi_window_free_list_accounts ( GrisbiWindow *window )
+{
+ if ( window == NULL )
+ return;
+
+ g_slist_free ( window->priv->list_accounts );
+
+ window->priv->list_accounts = NULL;
+ window->priv->account_buffer = NULL;
+}
+
+
+/**
+ * définit la liste des comptes
+ *
+ * \param window
+ * \param nouvelle liste des comptes.
+ *
+ * \return
+ **/
+gboolean grisbi_window_set_list_accounts ( GrisbiWindow *window,
+ GSList *list_accounts )
+{
+ window->priv->list_accounts = list_accounts;
+
+ return TRUE;
+}
+
+
+/**
+ * retourne scheduler_calendar
+ *
+ * \param window
+ * \param GtkWidget *scheduler_calendar
+ *
+ * \return TRUE
+ **/
+GtkWidget *grisbi_window_get_scheduler_calendar ( GrisbiWindow *window )
+{
+ return window->priv->scheduler_calendar;
+}
+
+
+/**
+ * initialise scheduler_calendar
+ *
+ * \param window
+ * \param GtkWidget *scheduler_calendar
+ *
+ * \return TRUE
+ **/
+gboolean grisbi_window_set_scheduler_calendar ( GrisbiWindow *window,
+ GtkWidget *scheduler_calendar )
+{
+ window->priv->scheduler_calendar = scheduler_calendar;
+
+ return TRUE;
+}
+
+
/* FONCTIONS UTILITAIRES */
/**
* retourne le widget nommé
@@ -1467,9 +1602,17 @@ void grisbi_window_free_priv_file ( GrisbiWindow *window )
g_free ( window->priv->window_title );
window->priv->window_title = NULL;
+ /* free others variables */
+ free_variables ();
+
/* libération de la mémoiré utilisée par etat */
grisbi_window_free_struct_etat ( window->priv->etat );
window->priv->etat = NULL;
+
+ /* libération de la mémoire utilisée par la liste des comptes */
+ grisbi_window_free_list_accounts ( window );
+
+
}
diff --git a/src/grisbi list_accounts ( window ); liste des comptes */ indow ) ) window ) s comptes */ al" ) ); es */ .1288C 460.116 79.1397 452.069 86.7836 439.542 94.0777C 431.026 99.0367 424.039 102.006 418.372 102.989C 408.222 105.278 402.304 102.038 402.304 102.038C 402.304 102.038 398.244 96.5717 397.68 94.3187C 397.599 93.9916 405.593 95.4567 414.434 93.8406C 420.781 92.6807 427.732 89.1977 434.674 85.2647C 444.488 79.7067 452.785 72.3438 457.511 65.9067C 460.786 61.4458 461.946 57.1367 462.354 55.3927z" .469 473.638 174.66 476.954 195.11z" 00.276L 739.074 500.276C 759.951 500.276 772.588 497.101 780.28 491.704C 787.789 486.466 790.719 478.846 790.719 470.274C 790.719 452.654 775.701 443.923 758.669 441.701L 758.67 441.384C 776.617 438.05 785.774 429.795 785.774 416.779C 785.774 397.413 768.01 390.428 739.074 390.428L 678.638 390.428z" 448.248 397.73 457.588 403.603 457.588 419.795C 457.588 432.97 451.728 442.495 433.231 442.495L 424.074 442.495L 424.074 403.921z
" 0.917 219.279 370.917 210.374 370.917C 211.781 365.753 214.086 356.583 221.45 328.186C 308.695 328.193 287.908 328.376 738.419 328.186C 758.428 305.835 765.635 297.207 781.185 279.244C 556.029 279.244 460.148 279.244 242.306 279.662C 245.081 270.432 254.544 256.995 269.786 241.767C 291.182 220.388 321.858 195.015 363.508 173.254C 423.726 141.792 503.084 117.043 587.218 117.712C 760.185 120.633 849.057 201.069 849.057 201.069z" ò* Ëøÿ pKáò* @Åøÿ Äøÿ kP1ò* 5 6 7 8 : < = > ? @ B D Ëøÿ Ëøÿ à}ªò* Ëøÿ u:1ò* URò* ÀÃøÿ }ò* e91ò* URò* Õ_ at fÆS Qöl±íÁyò* Ëøÿ à}ªò* PÆøÿ Åøÿ kP1ò* u]ÞÓ 4Q ÷U^Qʧ ¶uª¹ñìò*ÄvËøÿ Ëøÿ HÎvò* ³ò* ÀÌøÿ ¦
ò* ¦
ò* f°ò* OËøÿ Ìøÿ 8Ëøÿ Çøÿ Nò* u:1ò* ØNò* Îøÿ ¢
ò* ÐÌøÿ `Èøÿ
ÿÿÿÿÿÿÿÿ¢
ò* Ëøÿ _window.h b/src/grisbi_window.h
index 32df459..ad7d418 100644
--- a/src/grisbi_window.h
+++ b/src/grisbi_window.h
@@ -14,11 +14,11 @@ G_BEGIN_DECLS
* Type checking and casting macros
*/
#define GRISBI_TYPE_WINDOW (grisbi_window_get_type())
-#define GRISBI_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GRISBI_TYPE_WINDOW, GrisbiWindow))
-#define GRISBI_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GRISBI_TYPE_WINDOW, GrisbiWindowClass))
-#define GRISBI_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GRISBI_TYPE_WINDOW))
-#define GRISBI_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GRISBI_TYPE_WINDOW))
-#define GRISBI_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GRISBI_TYPE_WINDOW, GrisbitWindowClass))
+#define GRISBI_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GRISBI_TYPE_WINDOW, GrisbiWindow))
+#define GRISBI_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GRISBI_TYPE_WINDOW, GrisbiWindowClass))
+#define GRISBI_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GRISBI_TYPE_WINDOW))
+#define GRISBI_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GRISBI_TYPE_WINDOW))
+#define GRISBI_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GRISBI_TYPE_WINDOW, GrisbiWindowClass))
/* Private structure type */
typedef struct _GrisbiWindowPrivate GrisbiWindowPrivate;
@@ -52,10 +52,14 @@ GtkActionGroup *grisbi_window_get_action_group ( GrisbiWindow *window,
void grisbi_window_etat_mutex_lock ( void );
void grisbi_window_etat_mutex_unlock ( void );
void grisbi_window_free_priv_file ( GrisbiWindow *window );
+void grisbi_window_free_list_accounts ( GrisbiWindow *window );
GtkWidget *grisbi_window_get_accueil_page ( GrisbiWindow *window );
const gchar *grisbi_window_get_filename ( GrisbiWindow *window );
const gchar *grisbi_window_get_file_title ( GrisbiWindow *window );
GtkWidget *grisbi_window_get_headings_eb ( GrisbiWindow *window );
+GSList *grisbi_window_get_list_accounts ( GrisbiWindow *window );
+GtkWidget *grisbi_window_get_navigation_tree_view ( void );
+GtkWidget *grisbi_window_get_scheduler_calendar ( GrisbiWindow *window );
guint grisbi_window_get_sub_menu_merge_id ( GrisbiWindow *window,
const gchar *sub_menu );
GrisbiWindowEtat *grisbi_window_get_struct_etat ( void );
@@ -72,6 +76,11 @@ gboolean grisbi_window_set_filename ( GrisbiWindow *window,
const gchar *filename );
gboolean grisbi_window_set_file_title ( GrisbiWindow *window,
const gchar *file_title );
+gboolean grisbi_window_set_list_accounts ( GrisbiWindow *window,
+ GSList *list_accounts );
+gboolean grisbi_window_set_navigation_tree_view ( GtkWidget *navigation_tree_view );
+gboolean grisbi_window_set_scheduler_calendar ( GrisbiWindow *window,
+ GtkWidget *scheduler_calendar );
void grisbi_window_set_sub_menu_merge_id ( GrisbiWindow *window,
guint merge_id,
const gchar *sub_menu );
diff --git a/src/gsb_account.c b/src/gsb_account.c
index 24e8e4d..31bc39e 100644
--- a/src/gsb_account.c
+++ b/src/gsb_account.c
@@ -39,7 +39,7 @@
#include "gsb_data_transaction.h"
#include "gsb_file.h"
#include "gsb_form_scheduler.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "fenetre_principale.h"
#include "menu.h"
#include "gsb_real.h"
diff --git a/src/gsb_account_property.c b/src/gsb_account_property.c
index c4df761..e12e928 100644
--- a/src/gsb_account_property.c
+++ b/src/gsb_account_property.c
@@ -54,11 +54,11 @@
#include "gsb_file.h"
#include "gsb_form.h"
#include "gsb_form_scheduler.h"
+#include "gsb_navigation.h"
#include "gsb_scheduler_list.h"
#include "gsb_transactions_list.h"
#include "imputation_budgetaire.h"
#include "menu.h"
-#include "navigation.h"
#include "structures.h"
#include "tiers_onglet.h"
#include "traitement_variables.h"
diff --git a/src/gsb_archive_config.c b/src/gsb_archive_config.c
index d6e94bd..ed67d34 100644
--- a/src/gsb_archive_config.c
+++ b/src/gsb_archive_config.c
@@ -47,9 +47,9 @@
#include "gsb_data_transaction.h"
#include "gsb_dirs.h"
#include "gsb_file.h"
+#include "gsb_navigation.h"
#include "gsb_real.h"
#include "gsb_transactions_list.h"
-#include "navigation.h"
#include "structures.h"
#include "traitement_variables.h"
#include "transaction_list.h"
diff --git a/src/gsb_assistant_archive.c b/src/gsb_assistant_archive.c
index 5f3c7dc..387f6b4 100644
--- a/src/gsb_assistant_archive.c
+++ b/src/gsb_assistant_archive.c
@@ -49,9 +49,9 @@
#include "gsb_data_transaction.h"
#include "gsb_file.h"
#include "gsb_fyear.h"
+#include "gsb_navigation.h"
#include "gsb_report.h"
#include "gsb_transactions_list.h"
-#include "navigation.h"
#include "structures.h"
#include "traitement_variables.h"
#include "utils.h"
diff --git a/src/gsb_bank.c b/src/gsb_bank.c
index 33bb127..60de17d 100644
--- a/src/gsb_bank.c
+++ b/src/gsb_bank.c
@@ -46,7 +46,7 @@
#include "gsb_data_bank.h"
#include "gsb_transactions_list.h"
#include "gsb_file.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "structures.h"
#include "traitement_variables.h"
#include "utils.h"
diff --git a/src/gsb_currency_link_config.c b/src/gsb_currency_link_config.c
index 7d9b3db..3c14c61 100644
--- a/src/gsb_currency_link_config.c
+++ b/src/gsb_currency_link_config.c
@@ -42,8 +42,8 @@
#include "gsb_data_currency.h"
#include "gsb_data_currency_link.h"
#include "gsb_file.h"
+#include "gsb_navigation.h"
#include "gsb_real.h"
-#include "navigation.h"
#include "structures.h"
#include "traitement_variables.h"
#include "utils.h"
diff --git a/src/gsb_data_account.c b/src/gsb_data_account.c
index a6f112c..dbaac6f 100644
--- a/src/gsb_data_account.c
+++ b/src/gsb_data_account.c
@@ -3,6 +3,7 @@
/* Copyright (C) 2000-2008 Cédric Auger (cedric at grisbi.org) */
/* 2003-2008 Benjamin Drieu (bdrieu at april.org) */
/* 2008-2012 Pierre Biava (grisbi at pierre.biava.name) */
+/* 2010-2012 Rémy Cardona (remi at gentoo.org) */
/* http://www.grisbi.org */
/* */
/* This program is free software; you can redistribute it and/or modify */
@@ -45,9 +46,9 @@
#include "gsb_data_transaction.h"
#include "gsb_dirs.h"
#include "gsb_file.h"
+#include "gsb_navigation.h"
#include "gsb_select_icon.h"
#include "gsb_transactions_list.h"
-#include "navigation.h"
#include "traitement_variables.h"
#include "utils.h"
#include "utils_dates.h"
@@ -56,105 +57,129 @@
#include "erreur.h"
/*END_INCLUDE*/
-/** \struct
- * describe an account
- * */
-typedef struct
+/**
+ * Below are all the definitions that MUST be made public if we ever make the
+ * account struct/class open.
+ */
+#define GSB_TYPE_DATA_ACCOUNT (gsb_data_account_get_type ())
+#define GSB_DATA_ACCOUNT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSB_TYPE_DATA_ACCOUNT, GsbDataAccount))
+#define GSB_DATA_ACCOUNT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSB_TYPE_DATA_ACCOUNT, GsbDataAccountClass))
+#define GSB_IS_DATA_ACCOUNT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSB_TYPE_DATA_ACCOUNT))
+#define GSB_IS_DATA_ACCOUNT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSB_TYPE_DATA_ACCOUNT))
+#define GSB_DATA_ACCOUNT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GSB_TYPE_DATA_ACCOUNT, GsbDataAccountClass))
+
+typedef struct _GsbDataAccount GsbDataAccount;
+typedef struct _GsbDataAccountClass GsbDataAccountClass;
+
+/** \struct describe an account */
+struct _GsbDataAccount
{
+ GObject object;
+
/** @name general stuff */
- gint account_number;
- gchar *account_id; /**< for ofx import, invisible for the user */
- kind_account account_kind;
- gchar *account_name;
- gint currency;
- gint closed_account; /**< if 1 => closed */
- gchar *comment;
- gchar *holder_name;
- gchar *holder_address;
+ gint account_number;
+ gchar *account_id; /* for ofx import, invisible for the user */
+ gint account_kind;
+ gchar *account_name;
+ gint currency;
+ 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 */
+ gchar *name_icon; /* path for not standard icon */
+ GdkPixbuf *pixbuf; /* pixbuf for the account */
/** @name method of payment */
- gint default_debit;
- gint default_credit;
+ 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_l; /** 1 archived lines are showed */
+ 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 */
- gsb_real init_balance;
- gsb_real mini_balance_wanted;
- gsb_real mini_balance_authorized;
+ gsb_real init_balance;
+ gsb_real mini_balance_wanted;
+ gsb_real mini_balance_authorized;
gboolean balances_are_dirty;
- gsb_real current_balance;
- gsb_real marked_balance;
+ gsb_real current_balance;
+ gsb_real marked_balance;
/** @name remaining of the minimun balance message */
- gint mini_balance_wanted_message;
- gint mini_balance_authorized_message;
+ gint mini_balance_wanted_message;
+ gint mini_balance_authorized_message;
/** @name number of the transaction selectionned, or -1 for the white line */
- gint current_transaction_number;
+ gint current_transaction_number;
/** @name bank stuff */
- gint bank_number;
- gchar *bank_branch_code;
- gchar *bank_account_number;
- gchar *bank_account_key;
- gchar *bank_account_iban;
+ gint bank_number;
+ gchar *bank_branch_code;
+ gchar *bank_account_number;
+ gchar *bank_account_key;
+ gchar *bank_account_iban;
/** @name reconcile sort */
- gint reconcile_sort_type; /**< 1 : sort by method of payment ; 0 : let the user sort by himself */
- GSList *sort_list; /**< the method of payment numbers sorted in a list
- (if split neutral, the negative method has a negative method of payment number)*/
- gint split_neutral_payment; /**< if 1 : neutral payments are splitted into debits/credits */
+ gint reconcile_sort_type; /* 1 : sort by method of payment ; 0 : let the user sort by himself */
+ GSList *sort_list; /* the method of payment numbers sorted in a list
+ (if split neutral, the negative method has a negative method of payment number)*/
+ gint split_neutral_payment; /* if 1 : neutral payments are splitted into debits/credits */
/** @name tree_view sort stuff */
- gint sort_type; /**< GTK_SORT_DESCENDING / GTK_SORT_ASCENDING */
- gint sort_column; /**< used to hide the arrow when change the column */
- gint column_element_sort[CUSTOM_MODEL_VISIBLE_COLUMNS]; /**< contains for each column the element number used to sort the list */
+ gint sort_type; /* GTK_SORT_DESCENDING / GTK_SORT_ASCENDING */
+ gint sort_column; /* used to hide the arrow when change the column */
+
+ /* contains for each column the element number used to sort the list */
+ gint column_element_sort[CUSTOM_MODEL_VISIBLE_COLUMNS];
/** @name current graphic position in the list (the row_align used with gtk_tree_view_scroll_to_cell) */
- gfloat row_align;
+ gfloat row_align;
/** @name struct of the form's organization */
- gpointer form_organization;
+ gpointer form_organization;
/** @name bet data */
- gint bet_use_budget; /* 1 = use the budget module */
- gint bet_credit_card; /* 1 = compte type CB à débit différé */
- bet_type_onglets bet_show_onglets; /* enum des onglets à afficher pour le module budgetaire */
- GDate *bet_start_date; /* date de début */
- gint bet_months; /* nombre de mois ou d'années */
- gint bet_spin_range; /* echelle de la période 0 = mois 1 = années */
- gint bet_auto_inc_month; /* incrémente automatiquement le mois */
- gint bet_select_transaction_label; /* fixe le label pour les opérations */
- gint bet_select_scheduled_label; /* fixe le label pour les opérations planifiées */
- gint bet_select_futur_label; /* fixe le label pour les données futures */
- gint bet_hist_data; /* origine des données 0 = catégories 1 = IB */
- gint bet_hist_fyear; /* numéro d'exercice */
- gint bet_maj; /* MAJ du module estiamte balance */
- gdouble bet_capital; /* capital emprunté */
- gdouble bet_taux_annuel; /* taux d'interet annuel */
- gdouble bet_frais; /* frais par echeance */
- gint bet_type_taux; /* type de taux : actuariel ou proportionnel */
-} struct_account;
-
-
-/*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 );
-static gboolean gsb_data_form_dup_sort_values ( gint origin_account,
- gint target_account );
-/*END_STATIC*/
+ gint bet_use_budget; /* 1 = use the budget module */
+ gint bet_credit_card; /* 1 = compte type CB à débit différé */
+ BetTypeOnglets bet_show_onglets; /* enum des onglets à afficher pour le module budgetaire */
+ GDate *bet_start_date; /* date de début */
+ gint bet_months; /* nombre de mois ou d'années */
+ gint bet_spin_range; /* echelle de la période 0 = mois 1 = années */
+ gint bet_auto_inc_month; /* incrémente automatiquement le mois */
+ gint bet_select_transaction_label; /* fixe le label pour les opérations */
+ gint bet_select_scheduled_label; /* fixe le label pour les opérations planifiées */
+ gint bet_select_futur_label; /* fixe le label pour les données futures */
+ gint bet_hist_data; /* origine des données 0 = catégories 1 = IB */
+ gint bet_hist_fyear; /* numéro d'exercice */
+ gint bet_maj; /* MAJ du module estiamte balance */
+ gdouble bet_capital; /* capital emprunté */
+ gdouble bet_taux_annuel; /* taux d'interet annuel */
+ gdouble bet_frais; /* frais par echeance */
+ gint bet_type_taux; /* type de taux : actuariel ou proportionnel */
+};
+
+struct _GsbDataAccountClass
+{
+ GObjectClass parent_class;
+};
+
+/**
+ * End of the public defs.
+ */
+
+
+G_DEFINE_TYPE(GsbDataAccount, gsb_data_account, G_TYPE_OBJECT)
+
+enum {
+ PROP_0,
+ PROP_SHOW_RECONCILED,
+ PROP_KIND_ACCOUNT
+};
+
+
/*START_EXTERN*/
extern gsb_real error_real;
@@ -163,37 +188,378 @@ extern gint tab_affichage_ope[TRANSACTION_LIST_ROWS_NB][CUSTOM_MODEL_VISIBLE_COL
/*END_EXTERN*/
-/** contains a g_slist of struct_account in the good order */
-static GSList *list_accounts = NULL;
-
/** a pointer to the last account used (to increase the speed) */
-static struct_account *account_buffer;
+static GsbDataAccount *account_buffer;
+
+
+/**
+ *
+ */
+static void gsb_data_account_set_property ( GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec )
+{
+ GsbDataAccount *account = GSB_DATA_ACCOUNT ( object );
+
+ switch ( property_id )
+ {
+ case PROP_SHOW_RECONCILED:
+ account->show_r = g_value_get_boolean ( value );
+ break;
+ case PROP_KIND_ACCOUNT:
+ account-> account_kind = g_value_get_int ( value );
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID ( object, property_id, pspec );
+ break;
+ }
+}
+
+
+/**
+ *
+ */
+static void gsb_data_account_get_property ( GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec )
+{
+ GsbDataAccount *account = GSB_DATA_ACCOUNT (object);
+
+ switch ( property_id )
+ {
+ case PROP_SHOW_RECONCILED:
+ g_value_set_boolean (value, account -> show_r);
+ break;
+ case PROP_KIND_ACCOUNT:
+ g_value_set_int ( value, account-> account_kind );
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+
+/**
+ *
+ */
+static void gsb_data_account_dispose (GObject *object)
+{
+ GsbDataAccount *account = GSB_DATA_ACCOUNT (object);
+
+ if ( account -> pixbuf )
+ {
+ g_object_unref ( account -> pixbuf );
+ account -> pixbuf = NULL;
+ }
+
+ G_OBJECT_CLASS (gsb_data_account_parent_class)->dispose (object);
+}
+
+
+/**
+ *
+ */
+static void gsb_data_account_finalize (GObject *object)
+{
+ GsbDataAccount *account = GSB_DATA_ACCOUNT (object);
+
+ g_free ( account -> account_id );
+ g_free ( account -> account_name );
+ g_free ( account -> name_icon );
+ g_free ( account -> comment );
+ g_free ( account -> holder_name );
+ g_free ( account -> holder_address );
+ g_free ( account -> bank_branch_code );
+ g_free ( account -> bank_account_number );
+ g_free ( account -> bank_account_key );
+ g_free ( account -> bank_account_iban );
+ if ( account -> sort_list )
+ g_slist_free( account -> sort_list ) ;
+ g_free ( account -> form_organization );
+ if ( account -> bet_start_date )
+ g_date_free ( account -> bet_start_date );
+
+ G_OBJECT_CLASS (gsb_data_account_parent_class)->finalize (object);
+}
+
/**
* This function close all opened accounts and free the memory
* used by them.
*/
-void gsb_data_account_delete_all_accounts (void)
+static void gsb_data_account_class_init ( GsbDataAccountClass *klass )
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GParamSpec *pspec;
+
+ gobject_class->dispose = gsb_data_account_dispose;
+ gobject_class->finalize = gsb_data_account_finalize;
+ gobject_class->set_property = gsb_data_account_set_property;
+ gobject_class->get_property = gsb_data_account_get_property;
+
+ pspec = g_param_spec_boolean ("show-reconciled",
+ "Show reconciled transactions",
+ "Show reconciled transactions",
+ FALSE,
+ G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
+ g_object_class_install_property ( gobject_class,
+ PROP_SHOW_RECONCILED,
+ pspec );
+
+ pspec = g_param_spec_int ("account-kind",
+ "account-kind",
+ "type of account",
+ -1,
+ 4,
+ 0,
+ G_PARAM_CONSTRUCT | G_PARAM_READWRITE );
+ g_object_class_install_property ( gobject_class,
+ PROP_KIND_ACCOUNT,
+ pspec );
+}
+
+
+/**
+ * find and return the structure of the account asked
+ *
+ * \param no number of account
+ *
+ * \return the adr of the struct of the account (NULL if doesn't exit)
+ * */
+static GsbDataAccount *gsb_data_account_get_structure ( gint no )
{
- if ( list_accounts )
+ GSList *tmp;
+
+ if ( no < 0 )
{
- GSList* tmp_list = list_accounts;
- while ( tmp_list )
+ return NULL;
+ }
+
+ /* before checking all the accounts, we check the buffer */
+
+ if ( account_buffer && account_buffer -> account_number == no )
+ return account_buffer;
+
+ tmp = gsb_data_account_get_list_accounts ();
+
+ while ( tmp )
+ {
+ GsbDataAccount *account;
+
+ account = tmp -> data;
+
+ if ( account && account -> account_number == no )
+ {
+ account_buffer = account;
+ return account;
+ }
+
+ tmp = tmp -> next;
+ }
+ return NULL;
+}
+
+
+/**
+ * find and return the last number of account
+ *
+ * \param none
+ *
+ * \return last number of account
+ * */
+static gint gsb_data_account_max_number ( void )
+{
+ GSList *tmp;
+ gint number_tmp = 0;
+
+ tmp = gsb_data_account_get_list_accounts ();
+
+ while ( tmp )
+ {
+ GsbDataAccount *account;
+
+ account = tmp -> data;
+
+ /* Bulletproof, baby */
+ if ( !account )
{
- struct_account *account;
- account = tmp_list -> data;
- tmp_list = tmp_list -> next;
- _gsb_data_account_free ( account );
- }
- g_slist_free ( list_accounts );
+ return 0;
+ }
+
+ if ( account -> account_number > number_tmp )
+ number_tmp = account -> account_number;
+
+ tmp = tmp -> next;
+ }
+ return number_tmp;
+}
+
+
+/**
+ * get the filename of the default pixbuf icon for the kind_account
+ *
+ * \param kind_account
+ *
+ * \return filename
+ * */
+
+static 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:
+ account_icon = "ac_bank.png";
+ break;
+ case GSB_TYPE_CASH:
+ account_icon = "ac_cash.png";
+ break;
+ case GSB_TYPE_ASSET:
+ account_icon = "ac_asset.png";
+ break;
+ case GSB_TYPE_LIABILITIES:
+ account_icon = "ac_liability.png";
+ break;
+ default:
+ account_icon = "ac_bank.png";
+ break;
}
- list_accounts = NULL;
- account_buffer = NULL;
+
+ filename = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), account_icon, NULL );
+
+ return filename;
+}
+
+
+/**
+ * This function close all opened accounts and free the memory
+ * used by them.
+ */
+static void gsb_data_account_delete_all_accounts ( void )
+{
+ GSList *tmp_list;
+
+ tmp_list = gsb_data_account_get_list_accounts ();
+
+ while ( tmp_list )
+ {
+ GsbDataAccount *account;
+
+ account = tmp_list -> data;
+ tmp_list = tmp_list -> next;
+ g_object_unref ( account );
+ }
+ grisbi_window_free_list_accounts ( grisbi_app_get_active_window (
+ grisbi_app_get_default ( TRUE ) ) );
+}
+
+
+/**
+ * initalize the sort variables for an account to the default value
+ * used normally only when creating a new account if it's the first one
+ * in all others cases, we will take a copy of that values of the previous account
+ *
+ * \param account_number
+ *
+ * \return FALSE
+ * */
+static gboolean gsb_data_account_set_default_sort_values ( gint account_number )
+{
+ gint i, j;
+ GsbDataAccount *account;
+
+ account = gsb_data_account_get_structure ( account_number );
+
+ if ( !account )
+ return FALSE;
+
+ for ( i = 0 ; i<TRANSACTION_LIST_ROWS_NB ; i++ )
+ for ( j = 0 ; j<CUSTOM_MODEL_VISIBLE_COLUMNS ; j++ )
+ {
+ /* by default the sorting element will be the first found for each column */
+ if ( !account -> column_element_sort[j]
+ &&
+ tab_affichage_ope[i][j]
+ &&
+ tab_affichage_ope[i][j] != ELEMENT_BALANCE )
+ account -> column_element_sort[j] = tab_affichage_ope[i][j];
+ }
+
+ /* the default sort is by date and ascending */
+ account -> sort_type = GTK_SORT_ASCENDING;
+ account -> sort_column = CUSTOM_MODEL_COL_1;
+ return FALSE;
+}
+
+
+/**
+ * copy the sort values from an account to another
+ *
+ * \param origin_account
+ * \param target_account
+ *
+ * \return TRUE ok, FALSE problem
+ * */
+static gboolean gsb_data_form_dup_sort_values ( gint origin_account,
+ gint target_account )
+{
+ gint j;
+ GsbDataAccount *origin_account_ptr;
+ GsbDataAccount *target_account_ptr;
+
+ origin_account_ptr = gsb_data_account_get_structure (origin_account);
+ target_account_ptr = gsb_data_account_get_structure (target_account);
+
+ if ( !origin_account_ptr || !target_account_ptr )
+ return FALSE;
+
+ for ( j = 0 ; j<CUSTOM_MODEL_VISIBLE_COLUMNS ; j++ )
+ target_account_ptr -> column_element_sort[j] = origin_account_ptr -> column_element_sort[j];
+
+ target_account_ptr -> sort_type = origin_account_ptr -> sort_type;
+ target_account_ptr -> sort_column = origin_account_ptr -> sort_column;
+ return TRUE;
+}
+
+
+/**
+ * définit la liste des comptes
+ *
+ * \param nouvelle liste des comptes
+ *
+ * \return TRUE
+ **/
+static gboolean gsb_data_account_set_list_accounts ( GSList *list_accounts )
+{
+ GrisbiWindow *window;
+
+ window = grisbi_app_get_active_window ( NULL );
+ grisbi_window_set_list_accounts ( window, list_accounts );
+
+ /* return */
+ return TRUE;
+}
+
+
+/* FONCTION DE CONSTRUCTION */
+/**
+ *
+ */
+static void gsb_data_account_init ( GsbDataAccount *self )
+{
+ /* FIXME: set struct members to 0/NULL */
}
+
+/* PUBLIC FUNCTIONS */
/**
* set the accounts global variables to NULL, usually when we init all the global variables
- *
+ *
* \param none
*
* \return FALSE
@@ -201,8 +567,9 @@ void gsb_data_account_delete_all_accounts (void)
gboolean gsb_data_account_init_variables ( void )
{
gsb_data_account_delete_all_accounts ();
- gsb_select_icon_init_account_variables ();
+ gsb_select_icon_delete_accounts_icons ();
+ /* return */
return FALSE;
}
@@ -210,45 +577,53 @@ gboolean gsb_data_account_init_variables ( void )
* return a pointer on the g_slist of accounts
* carrefull : it's not a copy, so we must not free or change it
* if we want to change the list, use gsb_data_account_get_copy_list_accounts instead
- *
+ *
* \param none
* \return a g_slist on the accounts
* */
GSList *gsb_data_account_get_list_accounts ( void )
{
+ GrisbiWindow *window;
+ GSList *list_accounts = NULL;
+
+ window = grisbi_app_get_active_window ( NULL );
+ if ( window )
+ list_accounts = grisbi_window_get_list_accounts ( window );
+
return list_accounts;
}
/**
* create a new account and add to the list of accounts
- *
+ *
* \param account_type the type of the account
- *
+ *
* \return no of account, -1 if problem
* */
gint gsb_data_account_new ( kind_account account_kind )
{
- struct_account *account;
+ GsbDataAccount *account;
gint last_number;
+ GSList *list_accounts;
- account = g_malloc0 (sizeof ( struct_account ));
+ account = GSB_DATA_ACCOUNT ( g_object_new ( GSB_TYPE_DATA_ACCOUNT, NULL ) );
if ( !account )
{
- dialogue_error_memory ();
- return -1;
+ dialogue_error_memory ();
+ return -1;
}
last_number = gsb_data_account_max_number ();
+
+ list_accounts = gsb_data_account_get_list_accounts ();
+
/* we have to append the account first because some functions later will
* look for that account */
- list_accounts = g_slist_append ( list_accounts, account );
-
/* set the base */
account -> account_number = last_number + 1;
- account -> account_name = g_strdup_printf ( _("No name %d"),
- account -> account_number );
+ account -> account_name = g_strdup_printf ( _("No name %d"), account -> account_number );
account -> currency = gsb_data_currency_get_default_currency ();
/* set the kind of account */
@@ -264,64 +639,40 @@ gint gsb_data_account_new ( kind_account account_kind )
if ( account -> account_number == 1 )
{
- account -> nb_rows_by_transaction = 3;
+ account -> nb_rows_by_transaction = 3;
- /* set the form organization by default */
- gsb_data_form_new_organization (account -> account_number);
- gsb_data_form_set_default_organization (account -> account_number);
+ /* set the form organization by default */
+ gsb_data_form_new_organization (account -> account_number);
+ gsb_data_form_set_default_organization ( account -> account_number );
- /* sort the transactions by default */
- gsb_data_account_set_default_sort_values (account -> account_number);
+ /* sort the transactions by default */
+ gsb_data_account_set_default_sort_values (account -> account_number);
}
else
{
- account -> show_r = gsb_data_account_get_r (last_number);
- account -> nb_rows_by_transaction = gsb_data_account_get_nb_rows (last_number);
-
- /* try to copy the form of the last account, else make a new form */
- if ( !gsb_data_form_dup_organization ( last_number,
- account -> account_number ))
- {
- gsb_data_form_new_organization (account -> account_number);
- gsb_data_form_set_default_organization (account -> account_number);
- }
-
- /* try to copy the sort values of the last account, else set default values */
- if ( !gsb_data_form_dup_sort_values ( last_number,
- account -> account_number ))
- gsb_data_account_set_default_sort_values (account -> account_number);
+ account -> show_r = gsb_data_account_get_r ( last_number );
+ account -> nb_rows_by_transaction = gsb_data_account_get_nb_rows ( last_number );
+
+ /* try to copy the form of the last account, else make a new form */
+ if ( !gsb_data_form_dup_organization ( last_number, account -> account_number ) )
+ {
+ gsb_data_form_new_organization ( account -> account_number );
+ gsb_data_form_set_default_organization ( account -> account_number );
+ }
+
+ /* try to copy the sort values of the last account, else set default values */
+ if ( !gsb_data_form_dup_sort_values ( last_number,
+ account -> account_number ))
+ gsb_data_account_set_default_sort_values (account -> account_number);
}
- return account -> account_number;
-}
+ list_accounts = g_slist_append ( list_accounts, account );
+printf ("nbre de comptes = %d\n", g_slist_length ( list_accounts ));
-/**
- * This internal function is called to free the memory used by a struct_account structure
- */
-static void _gsb_data_account_free ( struct_account* account )
-{
- if ( ! account )
- return;
- g_free ( account -> account_id );
- g_free ( account -> account_name );
- g_free ( account -> name_icon );
- g_free ( account -> comment );
- g_free ( account -> holder_name );
- g_free ( account -> holder_address );
- g_free ( account -> bank_branch_code );
- g_free ( account -> bank_account_number );
- g_free ( account -> bank_account_key );
- g_free ( account -> bank_account_iban );
- if ( account -> sort_list )
- g_slist_free( account -> sort_list ) ;
- 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;
+ gsb_data_account_set_list_accounts ( list_accounts );
+
+
+ return account -> account_number;
}
@@ -334,87 +685,61 @@ static void _gsb_data_account_free ( struct_account* account )
* */
gboolean gsb_data_account_delete ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
+ GSList *list_accounts;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
+ list_accounts = gsb_data_account_get_list_accounts ();
list_accounts = g_slist_remove ( list_accounts, account );
- _gsb_data_account_free ( account );
+ if ( account_buffer == account )
+ account_buffer = NULL;
+
+ g_object_unref ( account );
return TRUE;
}
-
/**
* return the amount of accounts
- *
+ *
* \param none
- *
+ *
* \return amount of accounts
* */
gint gsb_data_account_get_accounts_amount ( void )
-{
- if ( !list_accounts )
- return 0;
-
- return g_slist_length ( list_accounts );
-}
-
-
-
-/**
- * find and return the last number of account
- *
- * \param none
- *
- * \return last number of account
- * */
-gint gsb_data_account_max_number ( void )
-{
- GSList *tmp;
- gint number_tmp = 0;
-
- tmp = list_accounts;
-
- while ( tmp )
- {
- struct_account *account;
-
- account = tmp -> data;
-
- /* Bulletproof, baby */
- if ( ! account )
- {
- return 0;
- }
+{
+ GSList *list_accounts;
- if ( account -> account_number > number_tmp )
- number_tmp = account -> account_number;
+ list_accounts = gsb_data_account_get_list_accounts ();
+ if ( !list_accounts )
+ return 0;
- tmp = tmp -> next;
- }
- return number_tmp;
+ return g_slist_length ( list_accounts );
}
+
/**
* find and return the first number of account
- *
+ *
* \param none
- *
+ *
* \return first number of account, -1 if no accounts
* */
gint gsb_data_account_first_number ( void )
{
- struct_account *account;
+ GsbDataAccount *account;
+ GSList *list_accounts;
+ list_accounts = gsb_data_account_get_list_accounts ();
if ( !list_accounts )
- return -1;
+ return -1;
account = list_accounts -> data;
@@ -434,10 +759,10 @@ gint gsb_data_account_first_number ( void )
* */
gint gsb_data_account_get_no_account ( gpointer account_ptr )
{
- struct_account *account;
+ GsbDataAccount *account;
if ( !account_ptr )
- return -1;
+ return -1;
account = account_ptr;
account_buffer = account;
@@ -460,12 +785,12 @@ gint gsb_data_account_get_no_account ( gpointer account_ptr )
gint gsb_data_account_set_account_number ( gint account_number,
gint new_no )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return -1;
+ return -1;
account -> account_number = new_no;
@@ -473,73 +798,28 @@ gint gsb_data_account_set_account_number ( gint account_number,
}
-
-
-/**
- * find and return the structure of the account asked
- *
- * \param no number of account
- *
- * \return the adr of the struct of the account (NULL if doesn't exit)
- * */
-struct_account *gsb_data_account_get_structure ( gint no )
-{
- GSList *tmp;
-
- if ( no < 0 )
- {
- return NULL;
- }
-
- /* before checking all the accounts, we check the buffer */
-
- if ( account_buffer
- &&
- account_buffer -> account_number == no )
- return account_buffer;
-
- tmp = list_accounts;
-
- while ( tmp )
- {
- struct_account *account;
-
- account = tmp -> data;
-
- if ( account && account -> account_number == no )
- {
- account_buffer = account;
- return account;
- }
-
- tmp = tmp -> next;
- }
- return NULL;
-}
-
-
-
/**
* get the nb of rows displayed on the account given
- *
+ *
* \param account_number no of the account
- *
+ *
* \return nb of rows displayed (1, 2, 3 or 4), or 0 if the account doesn't exist
* */
gint gsb_data_account_get_nb_rows ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> nb_rows_by_transaction;
}
-/** set the nb of rows displayed in the account given
+/**
+ * set the nb of rows displayed in the account given
* \param account_number no of the account
* \param nb_rows number of rows per transaction (1, 2, 3 or 4)
* \return TRUE, ok ; FALSE, problem
@@ -547,21 +827,19 @@ gint gsb_data_account_get_nb_rows ( gint account_number )
gboolean gsb_data_account_set_nb_rows ( gint account_number,
gint nb_rows )
{
- struct_account *account;
+ GsbDataAccount *account;
- if ( nb_rows < 1
- ||
- nb_rows > 4 )
+ if ( nb_rows < 1 || nb_rows > 4 )
{
- devel_debug ( g_strdup_printf ( _("Bad nb rows to gsb_data_account_set_nb_rows in gsb_data_account.c : %d\n"),
- nb_rows ) );
- return FALSE;
+ devel_debug ( g_strdup_printf ( _("Bad nb rows to gsb_data_account_set_nb_rows in gsb_data_account.c : %d\n"),
+ nb_rows ) );
+ return FALSE;
}
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> nb_rows_by_transaction = nb_rows;
@@ -578,12 +856,12 @@ gboolean gsb_data_account_set_nb_rows ( gint account_number,
* */
gboolean gsb_data_account_get_l ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> show_l;
}
@@ -599,12 +877,12 @@ gboolean gsb_data_account_get_l ( gint account_number )
gboolean gsb_data_account_set_l ( gint account_number,
gboolean show_l )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> show_l = show_l;
return TRUE;
@@ -620,12 +898,12 @@ gboolean gsb_data_account_set_l ( gint account_number,
* */
gboolean gsb_data_account_get_r ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> show_r;
}
@@ -641,31 +919,32 @@ gboolean gsb_data_account_get_r ( gint account_number )
gboolean gsb_data_account_set_r ( gint account_number,
gboolean show_r )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
- account -> show_r = show_r;
+ g_object_set (G_OBJECT(account), "show-reconciled", !!show_r, NULL);
return TRUE;
}
-/** get the id of the account
+/**
+ * get the id of the account
* \param account_number no of the account
* \return id or 0 if the account doesn't exist
* */
gchar *gsb_data_account_get_id ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return NULL;
+ return NULL;
return account -> account_id;
}
@@ -683,17 +962,17 @@ gchar *gsb_data_account_get_id ( gint account_number )
gboolean gsb_data_account_set_id ( gint account_number,
const gchar *id )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
if ( account -> account_id )
g_free ( account -> account_id );
- account -> account_id = my_strdup (id);
+ account -> account_id = my_strdup ( id );
return TRUE;
}
@@ -714,7 +993,7 @@ gint gsb_data_account_get_account_by_id ( const gchar *account_id )
list_tmp = gsb_data_account_get_list_accounts ();
while ( list_tmp )
{
- struct_account *account;
+ GsbDataAccount *account;
account = list_tmp -> data;
@@ -734,57 +1013,60 @@ gint gsb_data_account_get_account_by_id ( const gchar *account_id )
-/** get the account kind of the account
+/**
+ * get the account kind of the account
* \param account_number no of the account
* \return account type or 0 if the account doesn't exist
* */
kind_account gsb_data_account_get_kind ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
- return account -> account_kind;
+ return account->account_kind;
}
-/** set the kind of the account
+/**
+ * set the kind of the account
* \param account_number no of the account
* \param account_kind type to set
* \return TRUE, ok ; FALSE, problem
* */
gboolean gsb_data_account_set_kind ( gint account_number,
- kind_account account_kind )
+ gint account_kind )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
- account -> account_kind = account_kind;
+ g_object_set ( G_OBJECT ( account ), "account-kind", account_kind, NULL );
return TRUE;
}
-/** get the name of the account
+/**
+ * get the name of the account
* \param account_number no of the account
* \return name or NULL if the account doesn't exist
* */
gchar *gsb_data_account_get_name ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return NULL;
+ return NULL;
return account -> account_name;
}
@@ -802,19 +1084,19 @@ gchar *gsb_data_account_get_name ( gint account_number )
gboolean gsb_data_account_set_name ( gint account_number,
const gchar *name )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
g_free ( account -> account_name );
- if (!name || !strlen (name))
- account -> account_name = NULL;
+ if ( !name || !strlen ( name ) )
+ account -> account_name = NULL;
else
- account -> account_name = my_strdup (name);
+ account -> account_name = my_strdup ( name );
return TRUE;
}
@@ -833,20 +1115,19 @@ gint gsb_data_account_get_no_account_by_name ( const gchar *account_name )
GSList *list_tmp;
if ( !account_name )
- return -1;
+ return -1;
- list_tmp = list_accounts;
+ list_tmp = gsb_data_account_get_list_accounts ();
while ( list_tmp )
{
- struct_account *account;
+ GsbDataAccount *account;
- account = list_tmp -> data;
- if ( !strcmp ( account -> account_name,
- account_name ))
- return account -> account_number;
+ account = list_tmp -> data;
+ if ( !strcmp ( account -> account_name, account_name ) )
+ return account -> account_number;
- list_tmp = list_tmp -> next;
+ list_tmp = list_tmp -> next;
}
return -1;
@@ -865,15 +1146,14 @@ gint gsb_data_account_get_no_account_by_name ( const gchar *account_name )
gsb_real gsb_data_account_get_init_balance ( gint account_number,
gint floating_point )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return null_real;
+ return null_real;
- return gsb_real_adjust_exponent ( account -> init_balance,
- floating_point );
+ return gsb_real_adjust_exponent ( account -> init_balance, floating_point );
}
@@ -888,7 +1168,7 @@ gsb_real gsb_data_account_get_init_balance ( gint account_number,
gboolean gsb_data_account_set_init_balance ( gint account_number,
gsb_real balance )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -912,12 +1192,12 @@ gboolean gsb_data_account_set_init_balance ( gint account_number,
* */
gsb_real gsb_data_account_get_mini_balance_wanted ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return null_real;
+ return null_real;
return account -> mini_balance_wanted;
}
@@ -934,12 +1214,12 @@ gsb_real gsb_data_account_get_mini_balance_wanted ( gint account_number )
gboolean gsb_data_account_set_mini_balance_wanted ( gint account_number,
gsb_real balance )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> mini_balance_wanted = balance;
@@ -955,12 +1235,12 @@ gboolean gsb_data_account_set_mini_balance_wanted ( gint account_number,
* */
gsb_real gsb_data_account_get_mini_balance_authorized ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return null_real;
+ return null_real;
return account -> mini_balance_authorized;
}
@@ -977,12 +1257,12 @@ gsb_real gsb_data_account_get_mini_balance_authorized ( gint account_number )
gboolean gsb_data_account_set_mini_balance_authorized ( gint account_number,
gsb_real balance )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> mini_balance_authorized = balance;
@@ -999,7 +1279,7 @@ gboolean gsb_data_account_set_mini_balance_authorized ( gint account_number,
* */
gboolean gsb_data_account_set_balances_are_dirty ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -1026,7 +1306,7 @@ gboolean gsb_data_account_set_balances_are_dirty ( gint account_number )
* */
gsb_real gsb_data_account_calculate_current_and_marked_balances ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
GDate *date_jour;
GSList *tmp_list;
gsb_real current_balance;
@@ -1046,10 +1326,8 @@ gsb_real gsb_data_account_calculate_current_and_marked_balances ( gint account_n
floating_point = gsb_data_currency_get_floating_point (account -> currency);
- current_balance = gsb_real_adjust_exponent ( account -> init_balance,
- floating_point );
- marked_balance = gsb_real_adjust_exponent ( account -> init_balance,
- floating_point );
+ current_balance = gsb_real_adjust_exponent ( account -> init_balance, floating_point );
+ marked_balance = gsb_real_adjust_exponent ( account -> init_balance, floating_point );
date_jour = gdate_today ( );
@@ -1100,7 +1378,7 @@ gsb_real gsb_data_account_calculate_current_and_marked_balances ( gint account_n
g_date_free ( date_jour );
account -> current_balance = gsb_real_add ( current_balance, current_balance_later );
account -> marked_balance = gsb_real_add ( marked_balance, marked_balance_later );
- /* return */
+
return account -> current_balance;
}
@@ -1114,7 +1392,7 @@ gsb_real gsb_data_account_calculate_current_and_marked_balances ( gint account_n
* */
gsb_real gsb_data_account_get_current_balance ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -1140,7 +1418,7 @@ gsb_real gsb_data_account_get_current_balance ( gint account_number )
* */
gsb_real gsb_data_account_get_marked_balance ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -1166,7 +1444,7 @@ gsb_real gsb_data_account_get_marked_balance ( gint account_number )
* */
gsb_real gsb_data_account_calculate_waiting_marked_balance ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
GSList *tmp_list;
gsb_real marked_balance = null_real;
gint floating_point;
@@ -1174,28 +1452,29 @@ gsb_real gsb_data_account_calculate_waiting_marked_balance ( gint account_number
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return null_real;
+ return null_real;
- floating_point = gsb_data_currency_get_floating_point (account -> currency);
+ floating_point = gsb_data_currency_get_floating_point ( account -> currency );
tmp_list = gsb_data_transaction_get_complete_transactions_list ();
while (tmp_list)
{
- gint transaction_number;
-
- transaction_number = gsb_data_transaction_get_transaction_number (tmp_list->data);
-
- if ( gsb_data_transaction_get_account_number (transaction_number) == account_number
- &&
- !gsb_data_transaction_get_mother_transaction_number (transaction_number)
- &&
- ( gsb_data_transaction_get_marked_transaction (transaction_number) == OPERATION_POINTEE
- ||
- gsb_data_transaction_get_marked_transaction (transaction_number) == OPERATION_TELERAPPROCHEE))
- marked_balance = gsb_real_add ( marked_balance,
- gsb_data_transaction_get_adjusted_amount (transaction_number, floating_point));
- tmp_list = tmp_list -> next;
+ gint transaction_number;
+
+ transaction_number = gsb_data_transaction_get_transaction_number ( tmp_list->data );
+
+ if ( gsb_data_transaction_get_account_number ( transaction_number ) == account_number
+ &&
+ !gsb_data_transaction_get_mother_transaction_number ( transaction_number )
+ &&
+ ( gsb_data_transaction_get_marked_transaction ( transaction_number ) == OPERATION_POINTEE
+ ||
+ gsb_data_transaction_get_marked_transaction ( transaction_number ) == OPERATION_TELERAPPROCHEE ) )
+ marked_balance = gsb_real_add ( marked_balance,
+ gsb_data_transaction_get_adjusted_amount (
+ transaction_number, floating_point ) );
+ tmp_list = tmp_list -> next;
}
return marked_balance;
}
@@ -1212,15 +1491,13 @@ gsb_real gsb_data_account_calculate_waiting_marked_balance ( gint account_number
gint gsb_data_account_get_element_sort ( gint account_number,
gint no_column )
{
- struct_account *account;
+ GsbDataAccount *account;
- if ( no_column < 0
- ||
- no_column > CUSTOM_MODEL_VISIBLE_COLUMNS )
+ if ( no_column < 0 || no_column > CUSTOM_MODEL_VISIBLE_COLUMNS )
{
gchar* tmpstr;
- /* TODO dOm : the return value of g_strdup_printf was not used !
+ /* 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 ? */
tmpstr = g_strdup_printf ( _("Bad no column to gsb_data_account_get_element_sort () "
"in data_account.c\nno_column = %d\n" ),
@@ -1234,7 +1511,7 @@ gint gsb_data_account_get_element_sort ( gint account_number,
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> column_element_sort[no_column];
}
@@ -1253,13 +1530,11 @@ gboolean gsb_data_account_set_element_sort ( gint account_number,
gint no_column,
gint element_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
- if ( no_column < 0
- ||
- no_column > CUSTOM_MODEL_VISIBLE_COLUMNS )
+ if ( no_column < 0 || no_column > CUSTOM_MODEL_VISIBLE_COLUMNS )
{
gchar* tmpstr;
@@ -1268,15 +1543,15 @@ gboolean gsb_data_account_set_element_sort ( gint account_number,
tmpstr = g_strdup_printf ( _("Bad no column to gsb_data_account_set_element_sort () "
"in data_account.c\nno_column = %d\n" ),
no_column );
- devel_debug ( tmpstr );
- g_free (tmpstr);
+ devel_debug ( tmpstr );
+ g_free (tmpstr);
- return FALSE;
+ return FALSE;
}
/* need to set <0 too because some functions return problem with -1 for account */
if (account <= 0 )
- return FALSE;
+ return FALSE;
account -> column_element_sort[no_column] = element_number;
@@ -1295,12 +1570,12 @@ gboolean gsb_data_account_set_element_sort ( gint account_number,
* */
gint gsb_data_account_get_current_transaction_number ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> current_transaction_number;
}
@@ -1318,12 +1593,12 @@ gint gsb_data_account_get_current_transaction_number ( gint account_number )
gboolean gsb_data_account_set_current_transaction_number ( gint account_number,
gint transaction_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> current_transaction_number = transaction_number;
@@ -1341,12 +1616,12 @@ gboolean gsb_data_account_set_current_transaction_number ( gint account_number,
* */
gboolean gsb_data_account_get_mini_balance_wanted_message ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> mini_balance_wanted_message;
}
@@ -1363,12 +1638,12 @@ gboolean gsb_data_account_get_mini_balance_wanted_message ( gint account_number
gboolean gsb_data_account_set_mini_balance_wanted_message ( gint account_number,
gboolean value )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> mini_balance_wanted_message = value;
@@ -1382,12 +1657,12 @@ gboolean gsb_data_account_set_mini_balance_wanted_message ( gint account_number,
* */
gboolean gsb_data_account_get_mini_balance_authorized_message ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> mini_balance_authorized_message;
}
@@ -1404,12 +1679,12 @@ gboolean gsb_data_account_get_mini_balance_authorized_message ( gint account_num
gboolean gsb_data_account_set_mini_balance_authorized_message ( gint account_number,
gboolean value )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> mini_balance_authorized_message = value;
@@ -1426,12 +1701,12 @@ gboolean gsb_data_account_set_mini_balance_authorized_message ( gint account_num
* */
gint gsb_data_account_get_currency ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> currency;
}
@@ -1445,12 +1720,12 @@ gint gsb_data_account_get_currency ( gint account_number )
gboolean gsb_data_account_set_currency ( gint account_number,
gint currency )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> currency = currency;
@@ -1464,12 +1739,12 @@ gboolean gsb_data_account_set_currency ( gint account_number,
* */
gint gsb_data_account_get_bank ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> bank_number;
}
@@ -1483,12 +1758,12 @@ gint gsb_data_account_get_bank ( gint account_number )
gboolean gsb_data_account_set_bank ( gint account_number,
gint bank )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> bank_number = bank;
@@ -1502,12 +1777,12 @@ gboolean gsb_data_account_set_bank ( gint account_number,
* */
gchar *gsb_data_account_get_bank_branch_code ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return NULL;
+ return NULL;
return account -> bank_branch_code;
}
@@ -1525,19 +1800,19 @@ gchar *gsb_data_account_get_bank_branch_code ( gint account_number )
gboolean gsb_data_account_set_bank_branch_code ( gint account_number,
const gchar *bank_branch_code )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
g_free ( account -> bank_branch_code );
- if (!bank_branch_code || !strlen (bank_branch_code))
- account -> bank_branch_code = NULL;
+ if ( !bank_branch_code || !strlen ( bank_branch_code ) )
+ account -> bank_branch_code = NULL;
else
- account -> bank_branch_code = my_strdup (bank_branch_code);
+ account -> bank_branch_code = my_strdup ( bank_branch_code );
return TRUE;
}
@@ -1549,12 +1824,12 @@ gboolean gsb_data_account_set_bank_branch_code ( gint account_number,
* */
gchar *gsb_data_account_get_bank_account_number ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return NULL;
+ return NULL;
return account -> bank_account_number;
}
@@ -1572,20 +1847,20 @@ gchar *gsb_data_account_get_bank_account_number ( gint account_number )
gboolean gsb_data_account_set_bank_account_number ( gint account_number,
const gchar *bank_account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
if ( account -> bank_account_number )
g_free ( account -> bank_account_number );
- if (!bank_account_number || !strlen (bank_account_number))
- account -> bank_account_number = NULL;
+ if ( !bank_account_number || !strlen ( bank_account_number ) )
+ account -> bank_account_number = NULL;
else
- account -> bank_account_number = my_strdup (bank_account_number);
+ account -> bank_account_number = my_strdup ( bank_account_number );
return TRUE;
}
@@ -1598,12 +1873,12 @@ gboolean gsb_data_account_set_bank_account_number ( gint account_number,
* */
gchar *gsb_data_account_get_bank_account_key ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return NULL;
+ return NULL;
return account -> bank_account_key;
}
@@ -1621,20 +1896,20 @@ gchar *gsb_data_account_get_bank_account_key ( gint account_number )
gboolean gsb_data_account_set_bank_account_key ( gint account_number,
const gchar *bank_account_key )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
if ( account -> bank_account_key )
g_free ( account -> bank_account_key );
- if (!bank_account_key || !strlen (bank_account_key))
- account -> bank_account_key = NULL;
+ if ( !bank_account_key || !strlen ( bank_account_key ) )
+ account -> bank_account_key = NULL;
else
- account -> bank_account_key = my_strdup (bank_account_key);
+ account -> bank_account_key = my_strdup ( bank_account_key );
return TRUE;
}
@@ -1646,12 +1921,12 @@ gboolean gsb_data_account_set_bank_account_key ( gint account_number,
* */
gint gsb_data_account_get_closed_account ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> closed_account;
}
@@ -1665,12 +1940,12 @@ gint gsb_data_account_get_closed_account ( gint account_number )
gboolean gsb_data_account_set_closed_account ( gint account_number,
gint closed_account )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> closed_account = closed_account;
@@ -1684,12 +1959,12 @@ gboolean gsb_data_account_set_closed_account ( gint account_number,
* */
gchar *gsb_data_account_get_comment ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return NULL;
+ return NULL;
return account -> comment;
}
@@ -1707,15 +1982,15 @@ gchar *gsb_data_account_get_comment ( gint account_number )
gboolean gsb_data_account_set_comment ( gint account_number,
const gchar *comment )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
g_free ( account -> comment );
- account -> comment = my_strdup (comment);
+ account -> comment = my_strdup ( comment );
return TRUE;
}
@@ -1732,12 +2007,12 @@ gboolean gsb_data_account_set_comment ( gint account_number,
* */
gint gsb_data_account_get_reconcile_sort_type ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> reconcile_sort_type;
}
@@ -1755,12 +2030,12 @@ gint gsb_data_account_get_reconcile_sort_type ( gint account_number )
gboolean gsb_data_account_set_reconcile_sort_type ( gint account_number,
gint sort_type )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> reconcile_sort_type = sort_type;
@@ -1779,12 +2054,12 @@ gboolean gsb_data_account_set_reconcile_sort_type ( gint account_number,
* */
GSList *gsb_data_account_get_sort_list ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return NULL;
+ return NULL;
return account -> sort_list;
}
@@ -1802,12 +2077,12 @@ GSList *gsb_data_account_get_sort_list ( gint account_number )
gboolean gsb_data_account_set_sort_list ( gint account_number,
GSList *list )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> sort_list = list;
@@ -1826,15 +2101,14 @@ gboolean gsb_data_account_set_sort_list ( gint account_number,
gboolean gsb_data_account_sort_list_add ( gint account_number,
gint payment_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
- account -> sort_list = g_slist_append ( account -> sort_list,
- GINT_TO_POINTER (payment_number));
+ account -> sort_list = g_slist_append ( account -> sort_list, GINT_TO_POINTER ( payment_number ) );
return TRUE;
}
@@ -1850,15 +2124,14 @@ gboolean gsb_data_account_sort_list_add ( gint account_number,
gboolean gsb_data_account_sort_list_remove ( gint account_number,
gint payment_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
- account -> sort_list = g_slist_remove ( account -> sort_list,
- GINT_TO_POINTER (payment_number));
+ account -> sort_list = g_slist_remove ( account -> sort_list, GINT_TO_POINTER ( payment_number ) );
return TRUE;
}
@@ -1872,16 +2145,16 @@ gboolean gsb_data_account_sort_list_remove ( gint account_number,
* */
gboolean gsb_data_account_sort_list_free ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
- if (!account -> sort_list)
- return TRUE;
+ return FALSE;
+ if ( !account -> sort_list )
+ return TRUE;
- g_slist_free (account -> sort_list);
+ g_slist_free ( account -> sort_list );
account -> sort_list = NULL;
return TRUE;
}
@@ -1896,12 +2169,12 @@ gboolean gsb_data_account_sort_list_free ( gint account_number )
* */
gint gsb_data_account_get_split_neutral_payment ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> split_neutral_payment;
}
@@ -1918,12 +2191,12 @@ gint gsb_data_account_get_split_neutral_payment ( gint account_number )
gboolean gsb_data_account_set_split_neutral_payment ( gint account_number,
gint split_neutral_payment )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> split_neutral_payment = split_neutral_payment;
@@ -1940,12 +2213,12 @@ gboolean gsb_data_account_set_split_neutral_payment ( gint account_number,
* */
gchar *gsb_data_account_get_holder_name ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return NULL;
+ return NULL;
return account -> holder_name;
}
@@ -1963,19 +2236,19 @@ gchar *gsb_data_account_get_holder_name ( gint account_number )
gboolean gsb_data_account_set_holder_name ( gint account_number,
const gchar *holder_name )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
g_free ( account -> holder_name );
- if (!holder_name || !strlen (holder_name))
- account -> holder_name = NULL;
+ if ( !holder_name || !strlen ( holder_name ) )
+ account -> holder_name = NULL;
else
- account -> holder_name = my_strdup (holder_name);
+ account -> holder_name = my_strdup ( holder_name );
return TRUE;
}
@@ -1987,12 +2260,12 @@ gboolean gsb_data_account_set_holder_name ( gint account_number,
* */
gchar *gsb_data_account_get_holder_address ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return NULL;
+ return NULL;
return account -> holder_address;
}
@@ -2010,19 +2283,19 @@ gchar *gsb_data_account_get_holder_address ( gint account_number )
gboolean gsb_data_account_set_holder_address ( gint account_number,
const gchar *holder_address )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
g_free ( account -> holder_address );
- if (!holder_address || !strlen (holder_address))
- account -> holder_address = NULL;
+ if ( !holder_address || !strlen ( holder_address ) )
+ account -> holder_address = NULL;
else
- account -> holder_address = my_strdup (holder_address);
+ account -> holder_address = my_strdup (holder_address);
return TRUE;
}
@@ -2038,12 +2311,12 @@ gboolean gsb_data_account_set_holder_address ( gint account_number,
* */
gint gsb_data_account_get_default_debit ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> default_debit;
}
@@ -2060,12 +2333,12 @@ gint gsb_data_account_get_default_debit ( gint account_number )
gboolean gsb_data_account_set_default_debit ( gint account_number,
gint default_debit )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> default_debit = default_debit;
@@ -2083,12 +2356,12 @@ gboolean gsb_data_account_set_default_debit ( gint account_number,
* */
gint gsb_data_account_get_default_credit ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> default_credit;
}
@@ -2105,12 +2378,12 @@ gint gsb_data_account_get_default_credit ( gint account_number )
gboolean gsb_data_account_set_default_credit ( gint account_number,
gint default_credit )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> default_credit = default_credit;
@@ -2128,12 +2401,12 @@ gboolean gsb_data_account_set_default_credit ( gint account_number,
* */
gfloat gsb_data_account_get_row_align ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0.0;
+ return 0.0;
return account -> row_align;
}
@@ -2151,12 +2424,12 @@ gfloat gsb_data_account_get_row_align ( gint account_number )
gboolean gsb_data_account_set_row_align ( gint account_number,
gfloat row_align )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> row_align = row_align;
return TRUE;
@@ -2173,12 +2446,12 @@ gboolean gsb_data_account_set_row_align ( gint account_number,
* */
gint gsb_data_account_get_sort_type ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> sort_type;
}
@@ -2196,12 +2469,12 @@ gint gsb_data_account_get_sort_type ( gint account_number )
gboolean gsb_data_account_set_sort_type ( gint account_number,
gint sort_type )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> sort_type = sort_type;
@@ -2220,12 +2493,12 @@ gboolean gsb_data_account_set_sort_type ( gint account_number,
* */
gint gsb_data_account_get_sort_column ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> sort_column;
}
@@ -2243,12 +2516,12 @@ gint gsb_data_account_get_sort_column ( gint account_number )
gboolean gsb_data_account_set_sort_column ( gint account_number,
gint sort_column )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> sort_column = sort_column;
@@ -2266,12 +2539,12 @@ gboolean gsb_data_account_set_sort_column ( gint account_number,
* */
gpointer gsb_data_account_get_form_organization ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return NULL;
+ return NULL;
return account -> form_organization;
}
@@ -2288,12 +2561,12 @@ gpointer gsb_data_account_get_form_organization ( gint account_number )
gboolean gsb_data_account_set_form_organization ( gint account_number,
gpointer form_organization )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
g_free (account -> form_organization);
@@ -2314,16 +2587,21 @@ gboolean gsb_data_account_set_form_organization ( gint account_number,
* */
gboolean gsb_data_account_reorder ( GSList *new_order )
{
- GSList *last_list, *new_list_accounts = NULL, *list_tmp;
+ GSList *last_list;
+ GSList *list_accounts;
+ GSList *new_list_accounts = NULL;
+ GSList *list_tmp;
while ( new_order )
{
- new_list_accounts = g_slist_append ( new_list_accounts,
- gsb_data_account_get_structure ( GPOINTER_TO_INT (new_order -> data )));
- new_order = new_order -> next;
+ new_list_accounts = g_slist_append ( new_list_accounts,
+ gsb_data_account_get_structure (
+ GPOINTER_TO_INT ( new_order -> data ) ) );
+ new_order = new_order -> next;
}
- last_list = list_accounts;
+ last_list = gsb_data_account_get_list_accounts ();
+ gsb_data_account_set_list_accounts ( new_list_accounts );
list_accounts = new_list_accounts;
/* now we go to check if all accounts are in the list and
@@ -2332,17 +2610,17 @@ gboolean gsb_data_account_reorder ( GSList *new_order )
while ( list_tmp )
{
- struct_account *account = list_tmp -> data;
+ GsbDataAccount *account = list_tmp -> data;
- if ( ! g_slist_find ( list_accounts, account ) )
- {
- list_accounts = g_slist_append ( list_accounts, account );
- }
+ if ( !g_slist_find ( list_accounts, account ) )
+ {
+ list_accounts = g_slist_append ( list_accounts, account );
+ }
- list_tmp = list_tmp -> next;
+ list_tmp = list_tmp -> next;
}
- g_slist_free (last_list);
+ g_slist_free ( last_list );
gsb_file_set_modified ( TRUE );
@@ -2362,24 +2640,24 @@ gboolean gsb_data_account_reorder ( GSList *new_order )
gint gsb_data_account_compare_position ( gint account_number_1,
gint account_number_2 )
{
+ GSList *list_accounts;
gint pos_1, pos_2;
- struct_account *account_1;
- struct_account *account_2;
+ GsbDataAccount *account_1;
+ GsbDataAccount *account_2;
account_1 = gsb_data_account_get_structure ( account_number_1 );
account_2 = gsb_data_account_get_structure ( account_number_2 );
- if (!account_1
- ||
- !account_2 )
- return 0;
+ if (!account_1 || !account_2 )
+ return 0;
- pos_1 = g_slist_index (list_accounts, account_1);
- pos_2 = g_slist_index (list_accounts, account_2);
- if (pos_1 < pos_2)
- return -1;
+ list_accounts = gsb_data_account_get_list_accounts ();
+ pos_1 = g_slist_index ( list_accounts, account_1 );
+ pos_2 = g_slist_index ( list_accounts, account_2 );
+ if ( pos_1 < pos_2 )
+ return -1;
else
- return 1;
+ return 1;
}
@@ -2394,126 +2672,54 @@ gint gsb_data_account_compare_position ( gint account_number_1,
gboolean gsb_data_account_move_account ( gint account_number,
gint dest_account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
+ GSList *list_accounts;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
+ list_accounts = gsb_data_account_get_list_accounts ();
/* first, remove the account from the list */
- list_accounts = g_slist_remove ( list_accounts,
- account );
+ list_accounts = g_slist_remove ( list_accounts, account );
if (dest_account_number != -1)
{
- GSList *tmp_list;
-
- tmp_list = list_accounts;
- while ( tmp_list )
- {
- struct_account *account_tmp;
-
- account_tmp = tmp_list -> data;
-
- if (account_tmp -> account_number == dest_account_number)
- {
- list_accounts = g_slist_insert_before ( list_accounts,
- tmp_list,
- account );
- return FALSE;
- }
- tmp_list = tmp_list -> next;
- }
- }
-
- /* we move the account to the end */
- list_accounts = g_slist_append ( list_accounts,
- account );
+ GSList *tmp_list;
- return FALSE;
-}
-
-/**
- * initalize the sort variables for an account to the default value
- * used normally only when creating a new account if it's the first one
- * in all others cases, we will take a copy of that values of the previous account
- *
- * \param account_number
- *
- * \return FALSE
- * */
-gboolean gsb_data_account_set_default_sort_values ( gint account_number )
-{
- gint i, j;
- struct_account *account;
+ tmp_list = list_accounts;
+ while ( tmp_list )
+ {
+ GsbDataAccount *account_tmp;
- account = gsb_data_account_get_structure ( account_number );
+ account_tmp = tmp_list -> data;
- if ( !account )
- return FALSE;
+ if ( account_tmp -> account_number == dest_account_number )
+ {
+ list_accounts = g_slist_insert_before ( list_accounts, tmp_list, account );
+ return FALSE;
+ }
+ tmp_list = tmp_list -> next;
+ }
+ }
- for ( i = 0 ; i<TRANSACTION_LIST_ROWS_NB ; i++ )
- for ( j = 0 ; j<CUSTOM_MODEL_VISIBLE_COLUMNS ; j++ )
- {
- /* by default the sorting element will be the first found for each column */
- if ( !account -> column_element_sort[j]
- &&
- tab_affichage_ope[i][j]
- &&
- tab_affichage_ope[i][j] != ELEMENT_BALANCE )
- account -> column_element_sort[j] = tab_affichage_ope[i][j];
- }
+ /* we move the account to the end */
+ list_accounts = g_slist_append ( list_accounts, account );
- /* the default sort is by date and ascending */
- account -> sort_type = GTK_SORT_ASCENDING;
- account -> sort_column = CUSTOM_MODEL_COL_1;
return FALSE;
}
-
-/**
- * copy the sort values from an account to another
- *
- * \param origin_account
- * \param target_account
- *
- * \return TRUE ok, FALSE problem
- * */
-gboolean gsb_data_form_dup_sort_values ( gint origin_account,
- gint target_account )
-{
- gint j;
- struct_account *origin_account_ptr;
- struct_account *target_account_ptr;
-
- origin_account_ptr = gsb_data_account_get_structure (origin_account);
- target_account_ptr = gsb_data_account_get_structure (target_account);
-
- if (!origin_account_ptr
- ||
- !target_account_ptr)
- return FALSE;
-
- for ( j = 0 ; j<CUSTOM_MODEL_VISIBLE_COLUMNS ; j++ )
- target_account_ptr -> column_element_sort[j] = origin_account_ptr -> column_element_sort[j];
-
- target_account_ptr -> sort_type = origin_account_ptr -> sort_type;
- target_account_ptr -> sort_column = origin_account_ptr -> sort_column;
- return TRUE;
-}
-
-
/**
* get the icon_path of the account
- *
+ *
* \param account_number no of the account
- *
+ *
* \return icon_path or NULL if the account doesn't exist
* */
gchar *gsb_data_account_get_name_icon (gint account_number)
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -2536,7 +2742,7 @@ gchar *gsb_data_account_get_name_icon (gint account_number)
gboolean gsb_data_account_set_name_icon ( gint account_number,
const gchar *filename )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -2586,7 +2792,7 @@ GtkWidget *gsb_data_account_get_account_icon_image ( gint account_number )
* */
GdkPixbuf *gsb_data_account_get_account_icon_pixbuf ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -2609,7 +2815,7 @@ GdkPixbuf *gsb_data_account_get_account_icon_pixbuf ( gint account_number )
gboolean gsb_data_account_set_account_icon_pixbuf ( gint account_number,
GdkPixbuf *pixbuf )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -2630,10 +2836,10 @@ gboolean gsb_data_account_set_account_icon_pixbuf ( gint account_number,
/**
* get the default pixbuf icon for the kind_account
- *
+ *
* \param kind_account
- *
- * \return pixbuf icon
+ *
+ * \return pixbuf icon
* */
GdkPixbuf *gsb_data_account_get_account_standard_pixbuf ( kind_account account_kind )
@@ -2658,44 +2864,6 @@ GdkPixbuf *gsb_data_account_get_account_standard_pixbuf ( kind_account account_k
/**
- * 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:
- account_icon = "ac_bank.png";
- break;
- case GSB_TYPE_CASH:
- account_icon = "ac_cash.png";
- break;
- case GSB_TYPE_ASSET:
- account_icon = "ac_asset.png";
- break;
- case GSB_TYPE_LIABILITIES:
- account_icon = "ac_liability.png";
- break;
- default:
- account_icon = "ac_bank.png";
- break;
- }
-
- filename = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), account_icon, NULL );
-
- return filename;
-}
-
-
-/**
*
*
*
@@ -2754,7 +2922,7 @@ void gsb_data_account_change_account_icon ( GtkWidget *button, gpointer data )
* */
gchar *gsb_data_account_get_bank_account_iban (gint account_number)
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -2773,7 +2941,7 @@ gchar *gsb_data_account_get_bank_account_iban (gint account_number)
* */
gboolean gsb_data_account_set_bank_account_iban ( gint account_number, const gchar *iban )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -2832,11 +3000,11 @@ void gsb_data_account_colorize_current_balance ( gint account_number )
gsb_real gsb_data_account_calculate_current_day_balance ( gint account_number,
GDate *day )
{
- struct_account *account;
+ GsbDataAccount *account;
GDate *date_jour;
GSList *tmp_list;
gsb_real current_balance;
- gsb_real current_balance_later = null_real;
+ gsb_real current_balance_later = null_real;
gint floating_point;
account = gsb_data_account_get_structure ( account_number );
@@ -2846,8 +3014,7 @@ gsb_real gsb_data_account_calculate_current_day_balance ( gint account_number,
floating_point = gsb_data_currency_get_floating_point ( account -> currency );
- current_balance = gsb_real_adjust_exponent ( account -> init_balance,
- floating_point );
+ current_balance = gsb_real_adjust_exponent ( account -> init_balance, floating_point );
if ( day == NULL )
date_jour = gdate_today ( );
@@ -2900,7 +3067,7 @@ gsb_real gsb_data_account_calculate_current_day_balance ( gint account_number,
GDate *gsb_data_account_get_bet_start_date ( gint account_number )
{
GDate *date = NULL;
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -2932,7 +3099,7 @@ GDate *gsb_data_account_get_bet_start_date ( gint account_number )
* */
gboolean gsb_data_account_set_bet_start_date ( gint account_number, const GDate *date )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -2967,12 +3134,12 @@ gboolean gsb_data_account_set_bet_start_date ( gint account_number, const GDate
* */
gint gsb_data_account_get_bet_spin_range ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> bet_spin_range;
}
@@ -2985,12 +3152,12 @@ gint gsb_data_account_get_bet_spin_range ( gint account_number )
* */
gboolean gsb_data_account_set_bet_spin_range ( gint account_number, gint spin_range )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> bet_spin_range = spin_range;
@@ -3005,7 +3172,7 @@ gboolean gsb_data_account_set_bet_spin_range ( gint account_number, gint spin_ra
* */
gint gsb_data_account_get_bet_months ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -3026,7 +3193,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;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -3046,12 +3213,12 @@ gboolean gsb_data_account_set_bet_months ( gint account_number, gint months )
* */
gint gsb_data_account_get_bet_hist_data ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> bet_hist_data;
}
@@ -3064,12 +3231,12 @@ gint gsb_data_account_get_bet_hist_data ( gint account_number )
* */
gboolean gsb_data_account_set_bet_hist_data ( gint account_number, gint hist_data )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> bet_hist_data = hist_data;
@@ -3084,12 +3251,12 @@ gboolean gsb_data_account_set_bet_hist_data ( gint account_number, gint hist_dat
* */
gint gsb_data_account_get_bet_hist_fyear ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
return account -> bet_hist_fyear;
}
@@ -3102,12 +3269,12 @@ gint gsb_data_account_get_bet_hist_fyear ( gint account_number )
* */
gboolean gsb_data_account_set_bet_hist_fyear ( gint account_number, gint hist_fyear )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> bet_hist_fyear = hist_fyear;
@@ -3122,12 +3289,12 @@ gboolean gsb_data_account_set_bet_hist_fyear ( gint account_number, gint hist_fy
* */
gboolean gsb_data_account_get_bet_auto_inc_month ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
return account -> bet_auto_inc_month;
}
@@ -3141,12 +3308,12 @@ gboolean gsb_data_account_get_bet_auto_inc_month ( gint account_number )
gboolean gsb_data_account_set_bet_auto_inc_month ( gint account_number,
gboolean auto_inc_month )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> bet_auto_inc_month = auto_inc_month;
@@ -3161,12 +3328,12 @@ gboolean gsb_data_account_set_bet_auto_inc_month ( gint account_number,
* */
gint gsb_data_account_get_bet_select_label ( gint account_number, gint origine )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return 0;
+ return 0;
switch ( origine )
{
@@ -3194,12 +3361,12 @@ gboolean gsb_data_account_set_bet_select_label ( gint account_number,
gint origine,
gint type )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
switch ( origine )
{
@@ -3257,7 +3424,7 @@ gboolean gsb_data_account_bet_update_initial_date_if_necessary ( gint account_nu
* */
gint gsb_data_account_get_bet_use_budget ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
kind_account kind;
account = gsb_data_account_get_structure ( account_number );
@@ -3294,12 +3461,12 @@ gint gsb_data_account_get_bet_use_budget ( gint account_number )
* */
gboolean gsb_data_account_set_bet_use_budget ( gint account_number, gint value )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
if ( !account )
- return FALSE;
+ return FALSE;
account -> bet_use_budget = value;
@@ -3315,7 +3482,7 @@ gboolean gsb_data_account_set_bet_use_budget ( gint account_number, gint value )
* */
gint gsb_data_account_get_bet_maj ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -3334,7 +3501,7 @@ gint gsb_data_account_get_bet_maj ( gint account_number )
* */
gboolean gsb_data_account_set_bet_maj ( gint account_number, gint type_maj )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -3355,7 +3522,7 @@ gboolean gsb_data_account_set_bet_maj ( gint account_number, gint type_maj )
* */
gdouble gsb_data_account_get_bet_finance_capital ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -3374,7 +3541,7 @@ gdouble gsb_data_account_get_bet_finance_capital ( gint account_number )
* */
gboolean gsb_data_account_set_bet_finance_capital ( gint account_number, gdouble capital )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -3395,7 +3562,7 @@ gboolean gsb_data_account_set_bet_finance_capital ( gint account_number, gdouble
* */
gdouble gsb_data_account_get_bet_finance_taux_annuel ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -3414,7 +3581,7 @@ gdouble gsb_data_account_get_bet_finance_taux_annuel ( gint account_number )
* */
gboolean gsb_data_account_set_bet_finance_taux_annuel ( gint account_number, gdouble taux_annuel )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -3435,7 +3602,7 @@ gboolean gsb_data_account_set_bet_finance_taux_annuel ( gint account_number, gdo
* */
gdouble gsb_data_account_get_bet_finance_frais ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -3454,7 +3621,7 @@ gdouble gsb_data_account_get_bet_finance_frais ( gint account_number )
* */
gboolean gsb_data_account_set_bet_finance_frais ( gint account_number, gdouble frais )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -3474,7 +3641,7 @@ gboolean gsb_data_account_set_bet_finance_frais ( gint account_number, gdouble f
* */
gint gsb_data_account_get_bet_finance_type_taux ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -3492,7 +3659,7 @@ gint gsb_data_account_get_bet_finance_type_taux ( gint account_number )
* */
gboolean gsb_data_account_set_bet_finance_type_taux ( gint account_number, gint type_taux )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -3514,7 +3681,7 @@ gboolean gsb_data_account_set_bet_finance_type_taux ( gint account_number, gint
* */
gint gsb_data_account_get_currency_floating_point ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
gint floating_point;
account = gsb_data_account_get_structure ( account_number );
@@ -3538,7 +3705,7 @@ gint gsb_data_account_get_currency_floating_point ( gint account_number )
* */
gint gsb_data_account_get_bet_credit_card ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
kind_account kind;
account = gsb_data_account_get_structure ( account_number );
@@ -3578,7 +3745,7 @@ gint gsb_data_account_get_bet_credit_card ( gint account_number )
gboolean gsb_data_account_set_bet_credit_card ( gint account_number,
gint value )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -3596,11 +3763,11 @@ gboolean gsb_data_account_set_bet_credit_card ( gint account_number,
*
* \param account_number
*
- * \return enum bet_type_onglets
+ * \return enum BetTypeOnglets
* */
-bet_type_onglets gsb_data_account_get_bet_show_onglets ( gint account_number )
+BetTypeOnglets gsb_data_account_get_bet_show_onglets ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
account = gsb_data_account_get_structure ( account_number );
@@ -3620,7 +3787,7 @@ bet_type_onglets gsb_data_account_get_bet_show_onglets ( gint account_number )
* */
gboolean gsb_data_account_set_bet_show_onglets ( gint account_number )
{
- struct_account *account;
+ GsbDataAccount *account;
gint bet_use_budget;
kind_account kind;
GrisbiWindowEtat *etat;
@@ -3705,9 +3872,10 @@ gboolean gsb_data_account_set_bet_show_onglets_all_accounts ( void )
/**
*
*
+ * \param
*
- *
- * */
+ * \return
+ **/
/* Local Variables: */
/* c-basic-offset: 4 */
/* End: */
diff --git a/src/gsb_data_account.h b/src/gsb_data_account.h
index 887fbf6..2a55b92 100644
--- a/src/gsb_data_account.h
+++ b/src/gsb_data_a count.h nt.h b/src/gsb_data_account.h onglets_all_accounts ( void ) umber ) CHEE ) ) "), ort the list */ 0.116 79.1397 452.069 86.7836 439.542 94.0777C 431.026 99.0367 424.039 102.006 418.372 102.989C 408.222 105.278 402.304 102.038 402.304 102.038C 402.304 102.038 398.244 96.5717 397.68 94.3187C 397.599 93.9916 405.593 95.4567 414.434 93.8406C 420.781 92.6807 427.732 89.1977 434.674 85.2647C 444.488 79.7067 452.785 72.3438 457.511 65.9067C 460.786 61.4458 461.946 57.1367 462.354 55.3927z" .469 473.638 174.66 476.954 195.11z" 00.276L 739.074 500.276C 759.951 500.276 772.588 497.101 780.28 491.704C 787.789 486.466 790.719 478.846 790.719 470.274C 790.719 452.654 775.701 443.923 758.669 441.701L 758.67 441.384C 776.617 438.05 785.774 429.795 785.774 416.779C 785.774 397.413 768.01 390.428 739.074 390.428L 678.638 390.428z" 448.248 397.73 457.588 403.603 457.588 419.795C 457.588 432.97 451.728 442.495 433.231 442.495L 424.074 442.495L 424.074 403.921z
" 0.917 219.279 370.917 210.374 370.917C 211.781 365.753 214.086 356.583 221.45 328.186C 308.695 328.193 287.908 328.376 738.419 328.186C 758.428 305.835 765.635 297.207 781.185 279.244C 556.029 279.244 460.148 279.244 242.306 279.662C 245.081 270.432 254.544 256.995 269.786 241.767C 291.182 220.388 321.858 195.015 363.508 173.254C 423.726 141.792 503.084 117.043 587.218 117.712C 760.185 120.633 849.057 201.069 849.057 201.069z" ò* Ëøÿ pKáò* @Åøÿ Äøÿ kP1ò* 5 6 7 8 : < = > ? @ B D Ëøÿ Ëøÿ à}ªò* Ëøÿ u:1ò* URò* ÀÃøÿ }ò* e91ò* URò* Õ_ at fÆS Qöl±íÁyò* Ëøÿ à}ªò* PÆøÿ Åøÿ kP1ò* u]ÞÓ 4Q ÷U^Qʧ ¶uª¹ñìò*ÄvËøÿ Ëøÿ HÎvò* ³ò* ÀÌøÿ ¦
ò* ¦
ò* f°ò* OËøÿ Ìøÿ 8Ëøÿ Çøÿ Nò* u:1ò* ØNò* Îøÿ ¢
ò* ÐÌøÿ `Èøÿ
ÿÿÿÿÿÿÿÿ¢
ò* Ëøÿ ccount.h
@@ -9,21 +9,6 @@
/* END_INCLUDE_H */
-/** \struct
- * kind of the account
- * */
-
-enum _kind_account
-{
- GSB_TYPE_BALANCE = -1,
- GSB_TYPE_BANK = 0,
- GSB_TYPE_CASH = 1,
- GSB_TYPE_LIABILITIES = 2,
- GSB_TYPE_ASSET = 3
-};
-typedef enum _kind_account kind_account;
-
-
/* START_DECLARATION */
gboolean gsb_data_account_bet_update_initial_date_if_necessary ( gint account_number );
gsb_real gsb_data_account_calculate_current_and_marked_balances ( gint account_number );
@@ -57,7 +42,7 @@ gint gsb_data_account_get_bet_hist_fyear ( gint account_number );
gint gsb_data_account_get_bet_maj ( gint account_number );
gint gsb_data_account_get_bet_months ( gint account_number );
gint gsb_data_account_get_bet_select_label ( gint account_number, gint origine );
-bet_type_onglets gsb_data_account_get_bet_show_onglets ( gint account_number );
+BetTypeOnglets gsb_data_account_get_bet_show_onglets ( gint account_number );
gint gsb_data_account_get_bet_spin_range ( gint account_number );
GDate *gsb_data_account_get_bet_start_date ( gint account_number );
gint gsb_data_account_get_bet_use_budget ( gint account_number );
diff --git a/src/gsb_data_partial_balance.c b/src/gsb_data_partial_balance.c
index 677d30c..03e8e1a 100644
--- a/src/gsb_data_partial_balance.c
+++ b/src/gsb_data_partial_balance.c
@@ -42,7 +42,7 @@
#include "gsb_data_account.h"
#include "gsb_data_currency.h"
#include "gsb_data_currency_link.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "gsb_real.h"
#include "utils_real.h"
#include "utils_str.h"
diff --git a/src/gsb_file.c b/src/gsb_file.c
index d22d418..88bdc3c 100644
--- a/src/gsb_file.c
+++ b/src/gsb_file.c
@@ -48,11 +48,12 @@
#include "gsb_file_load.h"
#include "gsb_file_save.h"
#include "gsb_file_util.h"
+#include "gsb_navigation.h"
+#include "gsb_navigation_view.h"
#include "gsb_real.h"
#include "gsb_status.h"
#include "gsb_transactions_list.h"
#include "menu.h"
-#include "navigation.h"
#include "parametres.h"
#include "structures.h"
#include "traitement_variables.h"
@@ -136,7 +137,7 @@ gboolean gsb_file_new_finish ( void )
gsb_gui_new_gui ();
mise_a_jour_accueil ( TRUE );
- gsb_gui_navigation_set_selection ( GSB_HOME_PAGE, -1, NULL );
+ gsb_navigation_view_set_selection ( GSB_HOME_PAGE, -1, NULL );
gsb_file_set_modified ( TRUE );
return FALSE;
@@ -452,7 +453,7 @@ gboolean gsb_file_open_file ( gchar *filename )
run->is_loading = FALSE;
/* go to the home page */
- gsb_gui_navigation_set_selection ( GSB_HOME_PAGE, -1, NULL );
+ gsb_navigation_view_set_selection ( GSB_HOME_PAGE, -1, NULL );
/* set the focus to the selection tree at left */
gtk_widget_grab_focus ( gsb_gui_navigation_get_tree_view ( ) );
diff --git a/src/gsb_file_load.c b/src/gsb_file_load.c
index 3d01e66..1889894 100644
--- a/src/gsb_file_load.c
+++ b/src/gsb_file_load.c
@@ -70,12 +70,12 @@
#include "gsb_file.h"
#include "gsb_file_util.h"
#include "gsb_locale.h"
+#include "gsb_navigation.h"
#include "gsb_plugins.h"
#include "gsb_real.h"
#include "gsb_select_icon.h"
#include "gsb_scheduler_list.h"
#include "import.h"
-#include "navigation.h"
#include "structures.h"
#include "traitement_variables.h"
#include "utils.h"
@@ -918,7 +918,7 @@ void gsb_file_load_general_part ( const gchar **attribute_names,
GdkPixbuf *pixbuf = NULL;
gchar *chemin_logo = NULL;
- chemin_logo = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "grisbi-logo.png", NULL );
+ chemin_logo = g_build_filename ( gsb_dirs_get_pixmaps_dir (), "grisbi.svg", NULL );
pixbuf = gdk_pixbuf_new_from_file ( chemin_logo, NULL );
gtk_window_set_default_icon ( pixbuf );
gsb_select_icon_set_logo_pixbuf ( pixbuf );
@@ -939,8 +939,7 @@ void gsb_file_load_general_part ( const gchar **attribute_names,
case 'N':
if ( !strcmp ( attribute_names[i], "Navigation_list_order" ) )
- gsb_gui_navigation_set_page_list_order ( attribute_values[i] );
-
+ etat->navigation_list_order = my_strdup ( attribute_values[i] );
else if ( !strcmp ( attribute_names[i], "Name_logo" ) )
{
GdkPixbuf *pixbuf = NULL;
@@ -951,9 +950,9 @@ void gsb_file_load_general_part ( const gchar **attribute_names,
gchar *chemin_logo = NULL;
if ( etat->name_logo )
- chemin_logo = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), etat->name_logo, NULL );
+ chemin_logo = g_build_filename ( gsb_dirs_get_pixmaps_dir (), etat->name_logo, NULL );
else
- chemin_logo = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "grisbi-logo.png", NULL );
+ chemin_logo = g_build_filename ( gsb_dirs_get_pixmaps_dir (), "grisbi.svg", NULL );
if ( chemin_logo )
pixbuf = gdk_pixbuf_new_from_file ( chemin_logo, NULL );
if ( chemin_logo && strlen ( chemin_logo ) > 0 )
@@ -4229,23 +4228,23 @@ void gsb_file_load_bet_transfert_part ( const gchar **attribute_names,
continue;
}
- if ( !strcmp ( attribute_names[i], "Aim" ) )
+ if ( !strcmp ( attribute_names[i], "Dd" ) )
{
- transfert -> auto_inc_month = utils_str_atoi ( attribute_values[i] );
+ transfert->direct_debit = utils_str_atoi ( attribute_values[i] );
i++;
continue;
}
- if ( !strcmp ( attribute_names[i], "Dd" ) )
+ if ( !strcmp ( attribute_names[i], "Dtb" ) )
{
- transfert->direct_debit = utils_str_atoi ( attribute_values[i] );
+ transfert->date_bascule = gsb_parse_date_string_safe ( attribute_values[i] );
i++;
continue;
}
- if ( !strcmp ( attribute_names[i], "Dtb" ) )
+ if ( !strcmp ( attribute_names[i], "Pa" ) )
{
- transfert->date_bascule = gsb_parse_date_string_safe ( attribute_values[i] );
+ transfert -> payee_number = utils_str_atoi ( attribute_values[i] );
i++;
continue;
}
diff --git a/src/gsb_file_others.c b/src/gsb_file_others.c
index 3045f0f..5cc7d6d 100644
--- a/src/gsb_file_others.c
+++ b/src/gsb_file_others.c
@@ -43,7 +43,7 @@
#include "gsb_file.h"
#include "gsb_file_load.h"
#include "gsb_file_save.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "utils_str.h"
#include "traitement_variables.h"
#include "categories_onglet.h"
diff --git a/src/gsb_file_save.c b/src/gsb_file_save.c
index f9764b2..d3d9015 100644
--- a/src/gsb_file_save.c
+++ b/src/gsb_file_save.c
@@ -46,8 +46,10 @@
#include "bet_data.h"
#include "bet_data_finance.h"
#include "bet_graph.h"
+#include "custom_list.h"
#include "dialog.h"
#include "grisbi_app.h"
+#include "gsb_calendar.h"
#include "gsb_color.h"
#include "gsb_data_account.h"
#include "gsb_data_archive.h"
@@ -70,17 +72,16 @@
#include "gsb_data_scheduled.h"
#include "gsb_data_transaction.h"
#include "gsb_file.h"
-#include "utils_dates.h"
-#include "navigation.h"
#include "gsb_locale.h"
+#include "gsb_navigation.h"
+#include "gsb_navigation_view.h"
#include "gsb_plugins.h"
#include "gsb_real.h"
+#include "gsb_scheduler_list.h"
#include "gsb_select_icon.h"
-#include "utils_str.h"
#include "structures.h"
-#include "custom_list.h"
-#include "gsb_scheduler_list.h"
-#include "gsb_calendar.h"
+#include "utils_dates.h"
+#include "utils_str.h"
#include "erreur.h"
/*END_INCLUDE*/
@@ -660,7 +661,7 @@ gulong gsb_file_save_general_part ( gulong iterator,
transaction_column_align_write = utils_str_itoa ( transaction_col_align[i] );
/* prépare l'ordre des pages dans le panneau de gauche */
- tmp_queue = gsb_gui_navigation_get_pages_list ( );
+ tmp_queue = gsb_navigation_view_get_pages_list ();
for ( i = 0 ; i < tmp_queue -> length ; i++ )
{
@@ -1157,7 +1158,7 @@ gulong gsb_file_save_account_part ( gulong iterator,
if ( gsb_data_account_get_bet_use_budget ( account_number ) > 0 )
{
- bet_type_onglets bet_show_onglets;
+ BetTypeOnglets bet_show_onglets;
bet_show_onglets = gsb_data_account_get_bet_show_onglets ( account_number );
diff --git a/src/gsb_form.c b/src/gsb_form.c
index e493bfd..944ba28 100644
--- a/src/gsb_form.c
+++ b/src/gsb_form.c
@@ -63,6 +63,7 @@
#include "gsb_form_widget.h"
#include "gsb_fyear.h"
#include "gsb_locale.h"
+#include "gsb_navigation.h"
#include "gsb_payment_method.h"
#include "gsb_real.h"
#include "gsb_reconcile.h"
@@ -72,8 +73,6 @@
#include "gsb_transactions_list.h"
#include "gtk_combofix.h"
#include "menu.h"
-#include "mouse.h"
-#include "navigation.h"
#include "parametres.h"
#include "structures.h"
#include "tiers_onglet.h"
@@ -2801,7 +2800,7 @@ gboolean gsb_form_validate_form_transaction ( gint transaction_number,
if ( !gsb_date_check_entry ( date_widget ) )
{
tmpstr = g_strdup_printf ( _("Invalid date %s"),
- gtk_entry_get_text ( GTK_ENTRY ( date_widget ) ) );
+ gtk_entry_get_text ( GTK_ENTRY ( date_widget ) ) );
dialogue_error ( tmpstr );
g_free( tmpstr );
gtk_editable_select_region ( GTK_EDITABLE ( date_widget ), 0, -1 );
@@ -2819,7 +2818,11 @@ gboolean gsb_form_validate_form_transaction ( gint transaction_number,
/* work with value date */
widget = gsb_form_widget_get_widget ( TRANSACTION_FORM_VALUE_DATE );
- if ( widget && ! gsb_form_widget_check_empty ( widget ) )
+ if ( widget
+ &&
+ !gsb_form_widget_check_empty ( widget )
+ &&
+ strlen ( gtk_entry_get_text ( GTK_ENTRY ( widget ) ) ) > 0 )
{
if ( !gsb_date_check_entry ( widget ) )
{
@@ -3663,7 +3666,7 @@ gboolean gsb_form_button_press ( GtkWidget *vbox,
devel_debug (NULL);
- if ( ev -> button != RIGHT_BUTTON )
+ if ( ev -> button != GSB_RIGHT_BUTTON )
return FALSE;
menu = gtk_menu_new ();
diff --git a/src/gsb_form_config.c b/src/gsb_form_config.c
index f18d279..582b6e3 100644
--- a/src/gsb_form_config.c
+++ b/src/gsb_form_config.c
@@ -42,7 +42,7 @@
#include "gsb_file.h"
#include "gsb_form.h"
#include "gsb_form_widget.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "structures.h"
#include "traitement_variables.h"
#include "utils.h"
diff --git a/src/gsb_navigation.c b/src/gsb_navigation.c
new file mode 100644
index 0000000..3762075
--- /dev/null
+++ b/src/gsb_navigation.c
@@ -0,0 +1,1443 @@
+/* ************************************************************************** */
+/* */
+/* Copyright (C) 2000-2008 Cédric Auger (cedric at grisbi.org) */
+/* 2003-2008 Benjamin Drieu (bdrieu at april.org) */
+/* 2008-2012 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 */
+/* */
+/* ************************************************************************** */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "include.h"
+#include <gdk/gdkkeysyms.h>
+#include <glib/gi18n.h>
+
+/*START_INCLUDE*/
+#include "gsb_navigation.h"
+#include "accueil.h"
+#include "bet_data.h"
+#include "bet_finance_ui.h"
+#include "categories_onglet.h"
+#include "etats_onglet.h"
+#include "fenetre_principale.h"
+#include "grisbi_app.h"
+#include "gsb_account.h"
+#include "gsb_account_property.h"
+#include "gsb_assistant_account.h"
+#include "gsb_calendar.h"
+#include "gsb_data_account.h"
+#include "gsb_data_archive_store.h"
+#include "gsb_data_import_rule.h"
+#include "gsb_data_reconcile.h"
+#include "gsb_data_report.h"
+#include "gsb_dirs.h"
+#include "gsb_file.h"
+#include "gsb_form.h"
+#include "gsb_form_scheduler.h"
+#include "gsb_navigation_view.h"
+#include "gsb_real.h"
+#include "gsb_reconcile.h"
+#include "gsb_scheduler_list.h"
+#include "gsb_transactions_list.h"
+#include "imputation_budgetaire.h"
+#include "menu.h"
+#include "metatree.h"
+#include "structures.h"
+#include "tiers_onglet.h"
+#include "traitement_variables.h"
+#include "transaction_list_select.h"
+#include "transaction_list_sort.h"
+#include "utils.h"
+#include "utils_dates.h"
+#include "utils_real.h"
+#include "utils_str.h"
+#include "erreur.h"
+/*END_INCLUDE*/
+
+
+/*START_STATIC*/
+static gboolean gsb_gui_navigation_remove_account_iterator ( GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer data );
+static gboolean gsb_gui_navigation_remove_report_iterator ( GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer data );
+static void gsb_gui_navigation_update_account_iter ( GtkTreeModel *model,
+ GtkTreeIter * account_iter,
+ gint account_number );
+static gboolean gsb_gui_navigation_update_account_iterator ( GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer data );
+static void gsb_gui_navigation_update_report_iter ( GtkTreeModel *model,
+ GtkTreeIter * report_iter,
+ gint report_number );
+static gboolean gsb_gui_navigation_update_report_iterator ( GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer data );
+/*END_STATIC*/
+
+
+/*START_EXTERN*/
+extern GtkWidget *account_page;
+extern GtkWidget *label_last_statement;
+extern GtkWidget *menu_import_rules;
+extern gint mise_a_jour_liste_comptes_accueil;
+/*END_EXTERN*/
+
+
+/** Holds data for the navigation tree. */
+enum navigation_cols {
+ NAVIGATION_PIX,
+ NAVIGATION_PIX_VISIBLE,
+ NAVIGATION_TEXT,
+ NAVIGATION_FONT,
+ NAVIGATION_PAGE,
+ NAVIGATION_ACCOUNT,
+ NAVIGATION_REPORT,
+ NAVIGATION_SENSITIVE,
+ NAVIGATION_ORDRE, /* ordre des pages dans le modèle */
+ NAVIGATION_TOTAL,
+};
+
+/** Widget that hold the scheduler calendar. */
+static GtkWidget *scheduler_calendar = NULL;
+
+/** Widget that hold all reconciliation widgets. */
+GtkWidget *reconcile_panel;
+
+/* contains the number of the last account
+ * when switching between 2 accounts
+ * at the end of the switch, contains the current account number */
+static gint buffer_last_account = -1;
+
+/**
+ * Create the navigation pane on the left of the GUI. It contains
+ * account list as well as shortcuts.
+ *
+ * \param
+ *
+ * \return
+ */
+void gsb_gui_navigation_create_navigation_pane ( void )
+{
+ GtkWidget *vbox;
+ GtkWidget *sw;
+ GtkWidget *navigation_tree_view;
+ GtkWidget *scheduler_calendar;
+ GtkTreeModel *navigation_model;
+ GrisbiWindow *window;
+ GrisbiWindowEtat *etat;
+
+ window = grisbi_app_get_active_window ( grisbi_app_get_default ( TRUE ) );
+ etat = grisbi_window_get_struct_etat ();
+
+ vbox = grisbi_window_get_widget_by_name ( "vbox_left_panel" );
+ sw = grisbi_window_get_widget_by_name ( "sw_left_panel" );
+
+ navigation_tree_view = gsb_navigation_view_new ( etat->navigation_sorting_accounts );
+ grisbi_window_set_navigation_tree_view ( navigation_tree_view );
+ navigation_model = gtk_tree_view_get_model ( GTK_TREE_VIEW ( navigation_tree_view ) );
+
+ gtk_container_add ( GTK_CONTAINER ( sw ), navigation_tree_view );
+
+ /* Create calendar (hidden for now). */
+ scheduler_calendar = gsb_calendar_new ();
+ gtk_box_pack_end ( GTK_BOX ( vbox ), scheduler_calendar, FALSE, FALSE, 0 );
+ grisbi_window_set_scheduler_calendar ( window, scheduler_calendar );
+
+ gtk_widget_show ( navigation_tree_view );
+ gtk_widget_hide ( scheduler_calendar );
+}
+
+
+/**
+ * return the current page selected
+ * the value returned is defined by GSB_GENERAL_NOTEBOOK_PAGES
+ *
+ * \param
+ *
+ * \return a gint wich is the numero of the page, -1 if problem
+ *
+ * */
+gint gsb_gui_navigation_get_current_page ( void )
+{
+ GtkWidget *navigation_tree_view;
+ GtkTreeSelection *selection;
+ GtkTreeModel *navigation_model;
+ GtkTreeIter iter;
+ gint page;
+
+ navigation_tree_view = grisbi_window_get_navigation_tree_view ();
+ if ( !navigation_tree_view )
+ return -1;
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW ( navigation_tree_view ) );
+
+ if ( !gtk_tree_selection_get_selected ( selection, NULL, &iter ) )
+ return GSB_HOME_PAGE;
+
+ navigation_model = gtk_tree_view_get_model ( GTK_TREE_VIEW ( navigation_tree_view ) );
+ gtk_tree_model_get ( GTK_TREE_MODEL ( navigation_model ),
+ &iter,
+ NAVIGATION_PAGE, &page,
+ -1 );
+ return page;
+}
+
+
+
+/**
+ * return the account number selected
+ * rem : this is only for account number of the transactions list,
+ * if we want the current account number, for transactions or scheduled, go to
+ * see gsb_form_get_account_number
+ *
+ * \param
+ *
+ * \return a gint, the account number or -1 if none selected
+ * */
+gint gsb_gui_navigation_get_current_account ( void )
+{
+ GtkWidget *navigation_tree_view;
+ GtkTreeSelection *selection;
+ GtkTreeModel *navigation_model;
+ GtkTreeIter iter;
+ gint page;
+ gint account_number;
+
+ navigation_tree_view = grisbi_window_get_navigation_tree_view ();
+ if ( !navigation_tree_view )
+ return -1;
+
+ selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW ( navigation_tree_view ) );
+
+ if (! gtk_tree_selection_get_selected ( selection, NULL, &iter ) )
+ return -1;
+
+ navigation_model = gtk_tree_view_get_model ( GTK_TREE_VIEW ( navigation_tree_view ) );
+ gtk_tree_model_get ( GTK_TREE_MODEL ( navigation_model ),
+ &iter,
+ NAVIGATION_PAGE, &page,
+ NAVIGATION_ACCOUNT, &account_number,
+ -1 );
+
+ if ( page == GSB_ACCOUNT_PAGE )
+ return account_number;
+
+ return -1;
+}
+
+
+/*
+ * return the content of buffer_last_account
+ * used while changing an account, as long as the work
+ * is not finished, that variable contains the last account number
+ *
+ * \param
+ *
+ * \return the last account number (become the current account number once the
+ * switch is finished...)
+ *
+ * */
+gint gsb_gui_navigation_get_last_account ( void )
+{
+ return buffer_last_account;
+}
+
+
+/**
+ * Return the number of the current selected report
+ *
+ * \param
+ *
+ * \return the current number of the report, or 0 if none selected
+ * */
+gint gsb_gui_navigation_get_current_report ( void )
+{
+ GtkWidget *navigation_tree_view;
+ GtkTreeSelection *selection;
+ GtkTreeModel *navigation_model;
+ GtkTreeIter iter;
+ gint page;
+
+ navigation_tree_view = grisbi_window_get_navigation_tree_view ();
+ if ( !navigation_tree_view )
+ return 0;
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (navigation_tree_view));
+
+ if (! gtk_tree_selection_get_selected ( selection, NULL, &iter ) )
+ return 0;
+
+ navigation_model = gtk_tree_view_get_model ( GTK_TREE_VIEW ( navigation_tree_view ) );
+ gtk_tree_model_get ( GTK_TREE_MODEL ( navigation_model ),
+ &iter,
+ NAVIGATION_PAGE, &page,
+ -1 );
+
+ if ( page == GSB_REPORTS_PAGE )
+ {
+ gint report_number;
+
+ gtk_tree_model_get ( GTK_TREE_MODEL ( navigation_model ),
+ &iter,
+ NAVIGATION_REPORT, &report_number,
+ -1 );
+
+ return report_number;
+ }
+
+ return -1;
+}
+
+
+/**
+ * Iterator that iterates over the navigation pane model and update
+ * iter of account that is equal to `data'.
+ *
+ * \param tree_model Pointer to the model of the navigation tree.
+ * \param path Not used.
+ * \param iter Current iter to test.
+ * \param data Number of an account to match against the
+ * NAVIGATION_ACCOUNT column of current iter.
+ *
+ * \return TRUE if this iter matches.
+ */
+static gboolean gsb_gui_navigation_update_account_iterator ( GtkTreeModel *tree_model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer data )
+{
+ gint account_number;
+
+ gtk_tree_model_get ( GTK_TREE_MODEL ( tree_model ),
+ iter,
+ NAVIGATION_ACCOUNT, &account_number,
+ -1 );
+
+ if ( account_number == GPOINTER_TO_INT ( data ) )
+ {
+ gsb_gui_navigation_update_account_iter ( tree_model, iter, GPOINTER_TO_INT ( data ) );
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+/**
+ * Iterator that iterates over the navigation pane model and update
+ * iter of report that is equal to `data'.
+ *
+ * \param tree_model Pointer to the model of the navigation tree.
+ * \param path Not used.
+ * \param iter Current iter to test.
+ * \param data Number of an report to match against the
+ * NAVIGATION_REPORT column of current iter.
+ *
+ * \return TRUE if this iter matches.
+ */
+static gboolean gsb_gui_navigation_update_report_iterator ( GtkTreeModel *tree_model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer data )
+{
+ gint report_nb;
+
+ gtk_tree_model_get ( GTK_TREE_MODEL ( tree_model ),
+ iter,
+ NAVIGATION_REPORT, &report_nb,
+ -1 );
+
+ if ( report_nb == GPOINTER_TO_INT ( data ) )
+ {
+ gsb_gui_navigation_update_report_iter ( tree_model, iter, GPOINTER_TO_INT ( data ) );
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+/**
+ * Update information for an report in navigation pane.
+ *
+ * \param report_nb Number of the report that has to be updated.
+ */
+void gsb_gui_navigation_update_report ( gint report_number )
+{
+ GtkTreeModel *navigation_model;
+
+ navigation_model = gsb_gui_navigation_get_model ();
+
+ gtk_tree_model_foreach ( GTK_TREE_MODEL ( navigation_model ),
+ (GtkTreeModelForeachFunc) gsb_gui_navigation_update_report_iterator,
+ GINT_TO_POINTER ( report_number ) );
+}
+
+
+
+/**
+ * Update contents of an iter with report data.
+ *
+ * \param model Pointer to the model of the navigation tree.
+ * \param report_iter Iter to update.
+ * \param data Number of report as a reference.
+ */
+void gsb_gui_navigation_update_report_iter ( GtkTreeModel *model,
+ GtkTreeIter * report_iter,
+ gint report_number )
+{
+ gtk_tree_store_set(GTK_TREE_STORE(model), report_iter,
+ NAVIGATION_TEXT, gsb_data_report_get_report_name (report_number),
+ NAVIGATION_PAGE, GSB_REPORTS_PAGE,
+ NAVIGATION_REPORT, report_number,
+ NAVIGATION_ACCOUNT, -1,
+ NAVIGATION_SENSITIVE, 1,
+ -1 );
+}
+
+
+
+/**
+ * Iterator that iterates over the navigation pane model and remove
+ * iter of report that is equal to `data'.
+ *
+ * \param tree_model Pointer to the model of the navigation tree.
+ * \param path Not used.
+ * \param iter Current iter to test.
+ * \param data Number of an report to match against the
+ * NAVIGATION_REPORT column of current iter.
+ *
+ * \return TRUE if this iter matches.
+ */
+static gboolean gsb_gui_navigation_remove_report_iterator ( GtkTreeModel *tree_model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer data )
+{
+ gint report;
+
+ gtk_tree_model_get ( GTK_TREE_MODEL ( tree_model ), iter,
+ NAVIGATION_REPORT, &report,
+ -1 );
+
+ if ( report == GPOINTER_TO_INT (data))
+ {
+ gtk_tree_store_remove ( GTK_TREE_STORE ( tree_model ), iter );
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+/**
+ * Add an report to the navigation pane.
+ *
+ * \param report_nb Report ID to add.
+ */
+void gsb_gui_navigation_add_report ( gint report_number )
+{
+ GtkWidget *navigation_tree_view;
+ GtkTreeModel *navigation_model;
+ GtkTreeIter parent, iter;
+ GtkTreeSelection *selection;
+ GtkTreePath *path;
+
+ navigation_tree_view = grisbi_window_get_navigation_tree_view ();
+ navigation_model = gtk_tree_view_get_model ( GTK_TREE_VIEW ( navigation_tree_view ) );
+
+ path = gsb_navigation_view_get_page_path ( navigation_model, GSB_REPORTS_PAGE );
+ gtk_tree_model_get_iter ( GTK_TREE_MODEL( navigation_model ), &parent, path );
+ gtk_tree_store_append ( GTK_TREE_STORE ( navigation_model ), &iter, &parent );
+ gtk_tree_view_expand_to_path ( GTK_TREE_VIEW ( navigation_tree_view ), path );
+
+ gsb_gui_navigation_update_report_iter ( GTK_TREE_MODEL ( navigation_model ), &iter, report_number );
+
+ selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW ( navigation_tree_view ) );
+ gtk_tree_selection_select_iter ( selection, &iter );
+}
+
+
+
+/**
+ * Remove report from the navigation pane.
+ *
+ * \param report_nb Report ID to add.
+ */
+void gsb_gui_navigation_remove_report ( gint report_number )
+{
+ GtkTreeModel *navigation_model;
+
+ navigation_model = gsb_gui_navigation_get_model ();
+
+ gtk_tree_model_foreach ( GTK_TREE_MODEL ( navigation_model ),
+ (GtkTreeModelForeachFunc) gsb_gui_navigation_remove_report_iterator,
+ GINT_TO_POINTER ( report_number ) );
+}
+
+
+
+/**
+ * Update information for an account in navigation pane.
+ *
+ * \param account_number Number of the account that has to be updated.
+ */
+void gsb_gui_navigation_update_account ( gint account_number )
+{
+ GtkTreeModel *navigation_model;
+
+ navigation_model = gsb_gui_navigation_get_model ();
+
+ gtk_tree_model_foreach ( GTK_TREE_MODEL ( navigation_model ),
+ (GtkTreeModelForeachFunc) gsb_gui_navigation_update_account_iterator,
+ GINT_TO_POINTER ( account_number ) );
+}
+
+
+
+/**
+ * Update contents of an iter with account data.
+ *
+ * \param model Pointer to the model of the navigation tree.
+ * \param account_iter Iter to update.
+ * \param data Number of account as a reference.
+ */
+void gsb_gui_navigation_update_account_iter ( GtkTreeModel *model,
+ GtkTreeIter *account_iter,
+ gint account_number )
+{
+ GdkPixbuf * pixbuf = NULL;
+
+ pixbuf = gsb_data_account_get_account_icon_pixbuf ( account_number );
+
+ gtk_tree_store_set ( GTK_TREE_STORE ( model ), account_iter,
+ NAVIGATION_PIX, pixbuf,
+ NAVIGATION_PIX_VISIBLE, TRUE,
+ NAVIGATION_TEXT, gsb_data_account_get_name ( account_number ),
+ NAVIGATION_FONT, 400,
+ NAVIGATION_PAGE, GSB_ACCOUNT_PAGE,
+ NAVIGATION_ACCOUNT, account_number,
+ NAVIGATION_SENSITIVE, !gsb_data_account_get_closed_account ( account_number ),
+ NAVIGATION_REPORT, -1,
+ -1 );
+}
+
+
+
+/**
+ * Iterator that iterates over the navigation pane model and remove
+ * iter of account that is equal to `data'.
+ *
+ * \param tree_model Pointer to the model of the navigation tree.
+ * \param path Not used.
+ * \param iter Current iter to test.
+ * \param data Number of an account to match against the
+ * NAVIGATION_ACCOUNT column of current iter.
+ *
+ * \return TRUE if this iter matches.
+ */
+static gboolean gsb_gui_navigation_remove_account_iterator ( GtkTreeModel *tree_model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer data )
+{
+ gint account_number;
+
+ gtk_tree_model_get ( GTK_TREE_MODEL ( tree_model ),
+ iter,
+ NAVIGATION_ACCOUNT, &account_number,
+ -1 );
+
+ if ( account_number == GPOINTER_TO_INT ( data ) )
+ {
+ gtk_tree_store_remove ( GTK_TREE_STORE ( tree_model ), iter );
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+/**
+ * Add an account to the navigation pane.
+ *
+ * \param account_number Account ID to add.
+ * \param switch_to_account TRUE to show the account, FALSE to just create it
+ */
+void gsb_gui_navigation_add_account ( gint account_number,
+ gboolean switch_to_account )
+{
+ GtkTreeModel *navigation_model;
+ GtkTreeIter parent, iter;
+ GtkTreePath *path;
+
+ navigation_model = gsb_gui_navigation_get_model ();
+ path = gsb_navigation_view_get_page_path ( navigation_model, GSB_HOME_PAGE );
+ gtk_tree_model_get_iter ( GTK_TREE_MODEL( navigation_model ), &parent, path );
+ gtk_tree_store_append ( GTK_TREE_STORE ( navigation_model ), &iter, &parent );
+
+ gsb_gui_navigation_update_account_iter ( GTK_TREE_MODEL ( navigation_model ), &iter, account_number );
+
+ if ( switch_to_account )
+ {
+ GtkWidget *navigation_tree_view;
+ GtkTreeSelection * selection;
+
+ navigation_tree_view = grisbi_window_get_navigation_tree_view ();
+ selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW ( navigation_tree_view ) );
+ gtk_tree_selection_select_iter ( selection, &iter );
+ }
+}
+
+
+
+/**
+ * change the list of transactions, according to the new account
+ *
+ * \param no_account a pointer on the number of the account we want to see
+ *
+ * \return FALSE
+ * */
+gboolean navigation_change_account ( gint new_account )
+{
+ gint current_account;
+ gchar *tmp_menu_path;
+ GrisbiAppConf *conf;
+
+ conf = grisbi_app_get_conf ( );
+
+ devel_debug_int (new_account);
+
+ if ( new_account < 0 )
+ return FALSE;
+
+ /* the selection on the navigation bar has already changed, so
+ * have to use a buffer variable to get the last account */
+ current_account = gsb_gui_navigation_get_last_account ();
+
+ /* sensitive the last account in the menu */
+ tmp_menu_path = g_strconcat (
+ "/menubar/EditMenu/MoveToAnotherAccount/",
+ gsb_data_account_get_name (current_account),
+ NULL );
+ gsb_gui_sensitive_menu_item ( tmp_menu_path, TRUE );
+ g_free ( tmp_menu_path );
+ gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/NewTransaction", TRUE );
+
+ /* save the row_align of the last account */
+ gsb_data_account_set_row_align ( current_account,
+ gsb_transactions_list_get_row_align ( ) );
+
+ /* set the appearance of the list according to the new account */
+ transaction_list_sort_set_column ( gsb_data_account_get_sort_column ( new_account ),
+ gsb_data_account_get_sort_type ( new_account ) );
+ gsb_transactions_list_update_tree_view ( new_account, FALSE );
+ transaction_list_select ( gsb_data_account_get_current_transaction_number ( new_account ) );
+ gsb_transactions_list_set_row_align ( gsb_data_account_get_row_align ( new_account ) );
+
+ /* mise en place de la date du dernier relevé */
+ gsb_navigation_update_statement_label ( new_account );
+
+ tmp_menu_path = g_strconcat (
+ "/menubar/EditMenu/MoveToAnotherAccount/",
+ gsb_data_account_get_name (new_account),
+ NULL );
+ gsb_gui_sensitive_menu_item ( tmp_menu_path, FALSE );
+ g_free ( tmp_menu_path );
+
+ /* Sensitive menu items if something is selected. */
+ if ( gsb_data_account_get_current_transaction_number ( new_account ) == -1 )
+ gsb_menu_transaction_operations_set_sensitive ( FALSE );
+ else
+ gsb_menu_transaction_operations_set_sensitive ( TRUE );
+
+ /* show or hide the rules button in toolbar */
+ if ( gsb_data_import_rule_account_has_rule ( new_account ) )
+ gtk_widget_show ( menu_import_rules );
+ else
+ gtk_widget_hide ( menu_import_rules );
+
+ /* Update the title of the file if needed */
+ if ( conf->display_grisbi_title == GSB_ACCOUNT_HOLDER )
+ grisbi_window_set_active_title ( new_account );
+
+ bet_data_select_bet_pages ( new_account );
+
+ /* unset the last date written */
+ gsb_date_free_last_date ();
+
+ return FALSE;
+}
+
+
+/**
+ * update the statement label for the given account
+ *
+ * \param account_number
+ *
+ * \return
+ * */
+void gsb_navigation_update_statement_label ( gint account_number )
+{
+ gint reconcile_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 = utils_real_get_string_with_currency ( amount,
+ gsb_data_account_get_currency ( account_number ), TRUE );
+
+ tmp_str = g_strconcat ( _("Last statement: "), tmp_str1, " - ",
+ _("Reconciled balance: "), tmp_str2, NULL );
+ gtk_label_set_text ( GTK_LABEL ( label_last_statement ), tmp_str);
+ g_free ( tmp_str );
+ g_free ( tmp_str1 );
+ g_free ( tmp_str2 );
+ }
+ else if ( amount.mantissa != 0 )
+ {
+ tmp_str2 = utils_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") );
+}
+
+
+/**
+ * Update the account name in the heading bar
+ *
+ * \param account_number
+ *
+ * \return
+ */
+void gsb_navigation_update_account_label ( gint account_number )
+{
+ gchar * title = NULL;
+
+ title = g_strconcat ( _("Account"), " : ",
+ gsb_data_account_get_name ( account_number ),
+ NULL );
+ if ( gsb_data_account_get_closed_account ( account_number ) )
+ {
+ gchar* old_title = title;
+
+ title = g_strconcat ( title, " (", _("closed"), ")", NULL );
+ g_free ( old_title );
+ }
+
+ gsb_data_account_colorize_current_balance ( account_number );
+ gsb_gui_headings_update_title ( title );
+
+ g_free ( title );
+}
+
+
+/**
+ * Remove account from the navigation pane.
+ *
+ * \param account_number Account ID to remove.
+ */
+void gsb_gui_navigation_remove_account ( gint account_number )
+{
+ GtkTreeModel *navigation_model;
+
+ navigation_model = gsb_gui_navigation_get_model ();
+ gtk_tree_model_foreach ( GTK_TREE_MODEL ( navigation_model ),
+ (GtkTreeModelForeachFunc) gsb_gui_navigation_remove_account_iterator,
+ GINT_TO_POINTER ( account_number ) );
+}
+
+
+
+/**
+ * Callback executed when the selection of the navigation tree
+ * changed.
+ * we must write here the changes to do when changing something in that selection,
+ * not with a callback "switch-page" on the main notebook
+ *
+ * \param selection The selection that triggered event.
+ * \param model Tree model associated to selection.
+ *
+ * \return FALSE
+ */
+gboolean gsb_gui_navigation_select_line ( GtkTreeSelection *selection,
+ GtkTreeModel *model )
+{
+ gint account_number, page_number;
+ gint report_number;
+ gchar *title = NULL;
+ gboolean clear_suffix = TRUE;
+
+ devel_debug (NULL);
+
+ page_number = gsb_gui_navigation_get_current_page ();
+ gtk_notebook_set_current_page ( GTK_NOTEBOOK ( gsb_gui_get_general_notebook ( ) ), page_number );
+
+ if ( page_number != GSB_ACCOUNT_PAGE )
+ {
+ gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/NewTransaction", FALSE );
+ gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/RemoveAccount", FALSE );
+ menus_view_sensitifs ( FALSE );
+ }
+
+ if ( page_number != GSB_SCHEDULER_PAGE )
+ {
+ gtk_widget_hide ( scheduler_calendar );
+ }
+
+ switch ( page_number )
+ {
+ case GSB_HOME_PAGE:
+ notice_debug ("Home page selected");
+
+ title = g_strdup(_("My accounts"));
+
+ gsb_gui_sensitive_menu_item ( "/menubar/ViewMenu/ShowClosed", TRUE );
+
+ /* what to be done if switch to that page */
+ mise_a_jour_accueil ( FALSE );
+ gsb_form_set_expander_visible ( FALSE, FALSE );
+ break;
+
+ case GSB_ACCOUNT_PAGE:
+ notice_debug ("Account page selected");
+
+ menus_view_sensitifs ( TRUE );
+ gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/RemoveAccount", TRUE );
+
+ account_number = gsb_gui_navigation_get_current_account ();
+
+ /* update title now -- different from others */
+ gsb_navigation_update_account_label (account_number);
+
+ /* what to be done if switch to that page */
+ if (account_number >= 0 )
+ {
+ navigation_change_account ( account_number );
+ gsb_account_property_fill_page ();
+ clear_suffix = FALSE;
+ if ( gsb_data_archive_store_account_have_transactions_visibles ( account_number ) )
+ gsb_transaction_list_set_visible_archived_button ( TRUE );
+ else
+ gsb_transaction_list_set_visible_archived_button ( FALSE );
+ }
+ gsb_menu_update_accounts_in_menus ();
+ gsb_menu_update_view_menu ( account_number );
+
+ /* set the form */
+ gsb_gui_on_account_switch_page ( GTK_NOTEBOOK ( gsb_gui_on_account_get_notebook ( ) ),
+ NULL,
+ gtk_notebook_get_current_page ( GTK_NOTEBOOK ( gsb_gui_on_account_get_notebook ( ) ) ),
+ NULL );
+ /* gsb_form_show ( FALSE ); */
+
+ buffer_last_account = account_number;
+
+ break;
+
+ case GSB_SCHEDULER_PAGE:
+ notice_debug ("Scheduler page selected");
+
+ title = g_strdup(_("Scheduled transactions"));
+
+ /* what to be done if switch to that page */
+ /* update the list (can do that because short list, so very fast) */
+ gsb_scheduler_list_fill_list (gsb_scheduler_list_get_tree_view ());
+ gsb_scheduler_list_set_background_color (gsb_scheduler_list_get_tree_view ());
+
+ gsb_scheduler_list_select (gsb_scheduler_list_get_last_scheduled_number ());
+
+ /* set the form */
+ gsb_form_set_expander_visible (TRUE, FALSE );
+ gsb_form_scheduler_clean ();
+ gsb_form_show ( FALSE );
+
+ /* show the calendar */
+ gsb_calendar_update ();
+ gtk_widget_show_all ( scheduler_calendar );
+
+ /* show menu InitwidthCol */
+ gsb_gui_sensitive_menu_item ( "/menubar/ViewMenu/InitwidthCol", TRUE );
+ break;
+
+ case GSB_PAYEES_PAGE:
+ notice_debug ("Payee page selected");
+
+ /* what to be done if switch to that page */
+ gsb_form_set_expander_visible (FALSE, FALSE );
+ payees_fill_list ();
+ clear_suffix = FALSE;
+ break;
+
+ case GSB_SIMULATOR_PAGE:
+ notice_debug ("Credits simulator page selected");
+
+ 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");
+
+ /* what to be done if switch to that page */
+ gsb_form_set_expander_visible (FALSE, FALSE );
+ categories_fill_list ();
+ clear_suffix = FALSE;
+ break;
+
+ case GSB_BUDGETARY_LINES_PAGE:
+ notice_debug ("Budgetary page selected");
+
+ /* what to be done if switch to that page */
+ gsb_form_set_expander_visible (FALSE, FALSE );
+ budgetary_lines_fill_list ();
+ clear_suffix = FALSE;
+ break;
+
+ case GSB_REPORTS_PAGE:
+ notice_debug ("Reports page selected");
+
+ report_number = gsb_gui_navigation_get_current_report ();
+
+ if ( report_number >= 0 )
+ title = g_strconcat ( _("Report"), " : ", gsb_data_report_get_report_name (report_number), NULL );
+ else
+ title = g_strdup(_("Reports"));
+
+ /* what to be done if switch to that page */
+ gsb_form_set_expander_visible ( FALSE, FALSE );
+
+ if ( report_number > 0 )
+ gsb_gui_update_gui_to_report ( report_number );
+ else
+ gsb_gui_unsensitive_report_widgets ();
+ break;
+
+ default:
+ notice_debug ("B0rk page selected");
+ title = g_strdup("B0rk");
+ break;
+ }
+
+ /* title is set here if necessary */
+ if (title)
+ {
+ gsb_gui_headings_update_title ( title );
+ g_free ( title );
+ }
+ if (clear_suffix)
+ gsb_gui_headings_update_suffix ( "" );
+
+ return FALSE;
+}
+
+
+
+/**
+ * select l'item précédent d'un model
+ *
+ * \param
+ *
+ * \return
+ **/
+gboolean gsb_gui_navigation_select_prev ( void )
+{
+ GtkWidget *navigation_tree_view;
+ GtkTreeSelection * selection;
+ GtkTreePath * path;
+ GtkTreeModel * model;
+ GtkTreeIter iter;
+
+ navigation_tree_view = grisbi_window_get_navigation_tree_view ();
+ selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW(navigation_tree_view) );
+ g_return_val_if_fail ( selection, FALSE );
+
+ if ( !gtk_tree_selection_get_selected ( selection, &model, &iter ) )
+ return TRUE;
+ path = gtk_tree_model_get_path ( model, &iter );
+ g_return_val_if_fail ( path, TRUE );
+
+ if ( !gtk_tree_path_prev ( path ) )
+ {
+ if ( gtk_tree_path_get_depth ( path ) > 1 )
+ gtk_tree_path_up ( path );
+ }
+ else
+ {
+ gtk_tree_model_get_iter ( model, &iter, path );
+ /* if row has children and if row is expanded, go to the last child */
+ if ( gtk_tree_model_iter_has_child ( model, &iter )
+ && gtk_tree_view_row_expanded ( GTK_TREE_VIEW ( navigation_tree_view ), path ) )
+ {
+ GtkTreeIter parent = iter;
+
+ gtk_tree_model_iter_nth_child ( model, &iter, &parent,
+ gtk_tree_model_iter_n_children ( model,
+ &parent ) - 1 );
+ path = gtk_tree_model_get_path ( model, &iter );
+ }
+ }
+
+ gtk_tree_selection_select_path ( selection, path );
+ gtk_tree_path_free ( path );
+
+ return FALSE;
+}
+
+
+
+/**
+ * return l'item suivant d'un model
+ *
+ * \param
+ *
+ * \return gboolean
+ **/
+gboolean gsb_gui_navigation_select_next ( void )
+{
+ GtkWidget *navigation_tree_view;
+ GtkTreeSelection *selection;
+ GtkTreePath *path;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ navigation_tree_view = grisbi_window_get_navigation_tree_view ();
+ selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW(navigation_tree_view) );
+ g_return_val_if_fail ( selection, FALSE );
+
+ if ( !gtk_tree_selection_get_selected ( selection, &model, &iter ) )
+ return TRUE;
+
+ path = gtk_tree_model_get_path ( model, &iter );
+ g_return_val_if_fail ( path, TRUE );
+
+ if ( gtk_tree_model_iter_has_child ( model, &iter ) )
+ {
+ if ( gtk_tree_view_row_expanded ( GTK_TREE_VIEW ( navigation_tree_view ), path ) )
+ gtk_tree_path_down ( path );
+ else
+ gtk_tree_path_next ( path );
+ }
+ else
+ {
+ if ( !gtk_tree_model_iter_next ( model, &iter ) )
+ {
+ if ( gtk_tree_path_get_depth ( path ) > 1 )
+ {
+ gtk_tree_path_up ( path );
+ gtk_tree_path_next ( path );
+ }
+ else
+ {
+ gtk_tree_path_free ( path );
+ path = gtk_tree_path_new_first ( );
+ }
+ }
+ else
+ {
+ path = gtk_tree_model_get_path ( model, &iter );
+ }
+ }
+
+ gtk_tree_selection_select_path ( selection, path );
+ gtk_tree_path_free ( path );
+
+ return FALSE;
+}
+
+
+
+
+/**
+ * Met à jour la page d'accueil immédiatement si elle est affichée sinon plus tard
+ *
+ */
+void gsb_gui_navigation_update_home_page ( void )
+{
+ if ( gsb_gui_navigation_get_current_page ( ) == GSB_HOME_PAGE )
+ mise_a_jour_accueil ( TRUE );
+ else
+ mise_a_jour_liste_comptes_accueil = TRUE;
+}
+
+
+/**
+ *
+ *
+ *
+ */
+GtkWidget *gsb_gui_navigation_get_tree_view ( void )
+{
+ GtkWidget *navigation_tree_view;
+
+ navigation_tree_view = grisbi_window_get_navigation_tree_view ();
+
+ return navigation_tree_view;
+}
+
+
+/**
+ *
+ *
+ *
+ */
+GtkTreeModel *gsb_gui_navigation_get_model ( void )
+{
+ GtkWidget *navigation_tree_view;
+ GtkTreeModel *navigation_model;
+
+ navigation_tree_view = grisbi_window_get_navigation_tree_view ();
+ navigation_model = gtk_tree_view_get_model ( GTK_TREE_VIEW ( navigation_tree_view ) );
+
+ if ( navigation_model )
+ return navigation_model;
+ else
+ return NULL;
+}
+
+
+/**
+ * Pop up a menu with several actions to apply to array_list.
+ *
+ * \param gtk_tree_view
+ *
+ */
+void gsb_gui_navigation_context_menu ( GtkWidget *tree_view,
+ GtkTreePath *path )
+{
+ GtkWidget *image;
+ GtkWidget *menu = NULL;
+ GtkWidget *menu_item;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gchar *tmp_str;
+ gint type_page;
+ gint account_number;
+ gint report_number;
+
+ model = gtk_tree_view_get_model ( GTK_TREE_VIEW ( tree_view ) );
+
+ gtk_tree_model_get_iter ( model, &iter, path );
+ gtk_tree_model_get ( model, &iter,
+ NAVIGATION_PAGE, &type_page,
+ NAVIGATION_ACCOUNT, &account_number,
+ NAVIGATION_REPORT, &report_number,
+ -1 );
+
+ switch ( type_page )
+ {
+ case GSB_HOME_PAGE :
+ case GSB_ACCOUNT_PAGE :
+ menu = gtk_menu_new ();
+ menu_item = gtk_image_menu_item_new_with_label ( _("New account") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_NEW, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( gsb_assistant_account_run ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+ if ( account_number == -1 )
+ break;
+
+ /* Separator */
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), gtk_separator_menu_item_new() );
+
+ menu_item = gtk_image_menu_item_new_with_label ( _("Remove this account") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( gsb_account_delete ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ break;
+ case GSB_PAYEES_PAGE :
+ menu = gtk_menu_new ();
+ tmp_str = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "new-payee.png", NULL);
+ image = gtk_image_new_from_file ( tmp_str );
+ g_free ( tmp_str );
+ menu_item = gtk_image_menu_item_new_with_label ( _("New payee") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ), image );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( payees_new_payee ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ menu_item = gtk_image_menu_item_new_with_label ( _("Delete selected payee") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( payees_delete_payee ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ if ( gtk_tree_selection_count_selected_rows ( gtk_tree_view_get_selection (
+ GTK_TREE_VIEW ( payees_get_tree_view ( ) ) ) ) )
+ gtk_widget_set_sensitive ( menu_item, TRUE );
+ else
+ gtk_widget_set_sensitive ( menu_item, FALSE );
+
+ menu_item = gtk_image_menu_item_new_with_label ( _("Edit selected payee") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( payees_edit_payee ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ if ( gtk_tree_selection_count_selected_rows ( gtk_tree_view_get_selection (
+ GTK_TREE_VIEW ( payees_get_tree_view ( ) ) ) ) )
+ gtk_widget_set_sensitive ( menu_item, TRUE );
+ else
+ gtk_widget_set_sensitive ( menu_item, FALSE );
+
+ /* Separator */
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), gtk_separator_menu_item_new() );
+
+ tmp_str = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "new-payee.png", NULL);
+ image = gtk_image_new_from_file ( tmp_str );
+ g_free ( tmp_str );
+ menu_item = gtk_image_menu_item_new_with_label ( _("Manage payees") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ), image );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( payees_manage_payees ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ menu_item = gtk_image_menu_item_new_with_label ( _("Remove unused payees") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( payees_remove_unused_payees ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+ break;
+ case GSB_CATEGORIES_PAGE :
+ menu = gtk_menu_new ();
+ tmp_str = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "new-categ.png", NULL);
+ image = gtk_image_new_from_file ( tmp_str );
+ g_free ( tmp_str );
+ menu_item = gtk_image_menu_item_new_with_label ( _("New category") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ), image );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( categories_new_category ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ menu_item = gtk_image_menu_item_new_with_label ( _("Delete selected category") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( categories_delete_category ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ if ( gtk_tree_selection_count_selected_rows ( gtk_tree_view_get_selection (
+ GTK_TREE_VIEW ( categories_get_tree_view ( ) ) ) ) )
+ gtk_widget_set_sensitive ( menu_item, TRUE );
+ else
+ gtk_widget_set_sensitive ( menu_item, FALSE );
+
+ menu_item = gtk_image_menu_item_new_with_label ( _("Edit selected category") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( categories_edit_category ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ if ( gtk_tree_selection_count_selected_rows ( gtk_tree_view_get_selection (
+ GTK_TREE_VIEW ( categories_get_tree_view ( ) ) ) ) )
+ gtk_widget_set_sensitive ( menu_item, TRUE );
+ else
+ gtk_widget_set_sensitive ( menu_item, FALSE );
+
+ /* Separator */
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), gtk_separator_menu_item_new() );
+
+ menu_item = gtk_image_menu_item_new_with_label ( _("Import a file of categories (.cgsb)") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_NEW, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( categories_importer_list ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ menu_item = gtk_image_menu_item_new_with_label ( _("Export the list of categories (.cgsb)") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_NEW, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( categories_exporter_list ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+ break;
+ case GSB_BUDGETARY_LINES_PAGE :
+ menu = gtk_menu_new ();
+ tmp_str = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "new-ib.png", NULL);
+ image = gtk_image_new_from_file ( tmp_str );
+ g_free ( tmp_str );
+ menu_item = gtk_image_menu_item_new_with_label ( _("New budgetary line") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ), image );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( budgetary_lines_new_budgetary_line ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ menu_item = gtk_image_menu_item_new_with_label ( _("Delete selected budgetary line") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( budgetary_lines_delete_budgetary_line ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ if ( gtk_tree_selection_count_selected_rows ( gtk_tree_view_get_selection (
+ GTK_TREE_VIEW ( budgetary_lines_get_tree_view ( ) ) ) ) )
+ gtk_widget_set_sensitive ( menu_item, TRUE );
+ else
+ gtk_widget_set_sensitive ( menu_item, FALSE );
+
+ menu_item = gtk_image_menu_item_new_with_label ( _("Edit selected budgetary line") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( budgetary_lines_edit_budgetary_line ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ if ( gtk_tree_selection_count_selected_rows ( gtk_tree_view_get_selection (
+ GTK_TREE_VIEW ( budgetary_lines_get_tree_view ( ) ) ) ) )
+ gtk_widget_set_sensitive ( menu_item, TRUE );
+ else
+ gtk_widget_set_sensitive ( menu_item, FALSE );
+
+ /* Separator */
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), gtk_separator_menu_item_new() );
+
+ menu_item = gtk_image_menu_item_new_with_label ( _("Import a file of budgetary lines (.igsb)") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_NEW, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( budgetary_lines_importer_list ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ menu_item = gtk_image_menu_item_new_with_label ( _("Export the list of budgetary lines (.igsb)") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_NEW, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( budgetary_lines_exporter_list ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+ break;
+ case GSB_REPORTS_PAGE :
+ menu = gtk_menu_new ();
+ tmp_str = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "new-report.png", NULL);
+ image = gtk_image_new_from_file ( tmp_str );
+ g_free ( tmp_str );
+ menu_item = gtk_image_menu_item_new_with_label ( _("New report") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ), image );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( ajout_etat ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+ if ( report_number == -1 )
+ break;
+ /* Separator */
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), gtk_separator_menu_item_new() );
+
+ menu_item = gtk_image_menu_item_new_with_label ( _("Remove this report") );
+ gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
+ gtk_image_new_from_stock ( GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU ) );
+ g_signal_connect ( G_OBJECT ( menu_item ),
+ "activate",
+ G_CALLBACK ( efface_etat ),
+ NULL );
+ gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
+
+ break;
+ }
+
+ /* Finish all. */
+ if ( menu )
+ {
+ gtk_widget_show_all ( menu );
+ gtk_menu_popup ( GTK_MENU( menu ), NULL, NULL, NULL, NULL, 3, gtk_get_current_event_time ( ) );
+ }
+}
+
+
+/**
+ *
+ *
+ *
+ */
+
+
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* End: */
diff --git a/src/gsb_navigation.h b/src/gsb_navigation.h
new file mode 100644
index 0000000..599c03b
--- /dev/null
+++ b/src/gsb_navigation.h
@@ -0,0 +1,57 @@
+#ifndef NAVIGATION_H
+#define NAVIGATION_H
+
+#include <gtk/gtk.h>
+
+/** \struct describe a page
+ * */
+typedef struct
+{
+ gint ordre;
+ gint type_page; /* GSB_GENERAL_NOTEBOOK_PAGES */
+} struct_page;
+
+
+/* START_INCLUDE_H */
+/* END_INCLUDE_H */
+
+
+/* START_DECLARATION */
+void gsb_gui_navigation_add_account ( gint account_number,
+ gboolean switch_to_account );
+void gsb_gui_navigation_add_report ( gint report_number );
+gboolean gsb_gui_navigation_check_scroll ( GtkWidget *tree_view,
+ GdkEventScroll *ev );
+void gsb_gui_navigation_context_menu ( GtkWidget *tree_view,
+ GtkTreePath *path );
+void gsb_gui_navigation_create_navigation_pane ( void );
+void gsb_gui_navigation_free_pages_list ( void );
+gint gsb_gui_navigation_get_current_account ( void );
+gint gsb_gui_navigation_get_current_page ( void );
+gint gsb_gui_navigation_get_current_report ( void );
+gint gsb_gui_navigation_get_last_account ( void );
+GtkTreeModel *gsb_gui_navigation_get_model ( void );
+GQueue *gsb_gui_navigation_get_pages_list ( void );
+GtkWidget *gsb_gui_navigation_get_tree_view ( void );
+void gsb_gui_navigation_init_pages_list ( void );
+void gsb_gui_navigation_remove_account ( gint account_number );
+void gsb_gui_navigation_remove_report ( gint report_number );
+gboolean gsb_gui_navigation_select_line ( GtkTreeSelection *selection,
+ GtkTreeModel *model );
+gboolean gsb_gui_navigation_select_next ( void );
+gboolean gsb_gui_navigation_select_prev ( void );
+gboolean gsb_gui_navigation_set_page_list_order ( const gchar *order_list );
+gboolean gsb_gui_navigation_set_selection ( gint page,
+ gint account_number,
+ gpointer report );
+void gsb_gui_navigation_update_account ( gint account_number );
+void gsb_gui_navigation_update_home_page ( void );
+void gsb_gui_navigation_update_report ( gint report_number ) ;
+void gsb_navigation_update_account_label ( gint account_number );
+void gsb_navigation_update_statement_label ( gint account_number );
+gboolean navigation_change_account ( gint new_account );
+void gsb_gui_navigation_create_report_list ( GtkTreeModel *model );
+
+/* END_DECLARATION */
+
+#endif
diff --git a/src/gsb_navigation_view.c b/src/gsb_navigation_view.c
new file mode 100644
index 0000000..df1b3f0
--- /dev/null
+++ b/src/gsb_navigation_view.c
@@ -0,0 +1,1440 @@
+/* ************************************************************************** */
+/* */
+/* Copyright (C) 2000-2008 Cédric Auger (cedric at grisbi.org) */
+/* 2003-2008 Benjamin Drieu (bdrieu at april.org) */
+/* 2008-2012 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 */
+/* */
+/* ************************************************************************** */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib/gi18n.h>
+#include <gdk/gdkkeysyms.h>
+
+/*START_INCLUDE*/
+#include "gsb_navigation_view.h"
+#include "grisbi_app.h"
+#include "gsb_data_account.h"
+#include "gsb_data_report.h"
+#include "gsb_dirs.h"
+#include "gsb_navigation.h"
+#include "gsb_scheduler_list.h"
+#include "gsb_transactions_list.h"
+#include "structures.h"
+#include "utils.h"
+#include "utils_str.h"
+#include "erreur.h"
+/*END_INCLUDE*/
+
+
+#define GSB_NAVIGATION_VIEW_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object),\
+ GSB_TYPE_NAVIGATION_VIEW, GsbNavigationViewPrivate))
+
+
+/* Holds data for the navigation tree. */
+enum _gsb_navigation_view_cols {
+ GSB_NAVIGATION_VIEW_PIX,
+ GSB_NAVIGATION_VIEW_PIX_VISIBLE,
+ GSB_NAVIGATION_VIEW_TEXT,
+ GSB_NAVIGATION_VIEW_FONT,
+ GSB_NAVIGATION_VIEW_PAGE,
+ GSB_NAVIGATION_VIEW_ACCOUNT,
+ GSB_NAVIGATION_VIEW_REPORT,
+ GSB_NAVIGATION_VIEW_SENSITIVE,
+ GSB_NAVIGATION_VIEW_ORDRE, /* ordre des pages dans le modèle */
+ GSB_NAVIGATION_VIEW_TOTAL,
+};
+
+
+#define DEFAULT_NAVIGATION_ORDER_LIST "0-2-3-4-5-6-7"
+
+struct _GsbNavigationViewPrivate
+{
+ /** Model of the navigation tree. */
+ GtkTreeModel *model;
+
+ /* liste des pages */
+ GQueue *pages_list;
+
+ /* organisation des pages */
+ gint navigation_sorting_accounts;
+
+ /* expander */
+ gboolean account_expander;
+ gboolean report_expander;
+};
+
+G_DEFINE_TYPE(GsbNavigationView, gsb_navigation_view, GTK_TYPE_TREE_VIEW)
+
+
+static GtkTargetEntry row_targets[] =
+{
+ { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_WIDGET, 0 }
+};
+
+
+/* CALLBACKS */
+/**
+ * remplit le model
+ *
+ * \param window
+ * \param priv private structure of GsbNavigationView
+ *
+ * \return
+ **/
+static void gsb_navigation_view_realized ( GtkWidget *window,
+ GsbNavigationViewPrivate *priv )
+{
+
+ /* return */
+}
+
+
+/**
+ * Check the key pressed on the navigation tree view,
+ * if need, stop the event to do another thing with that key
+ *
+ * \param tree_view the navigation tree_view
+ * \param ev the key event pressed
+ * \param priv private structure of GsbNavigationView
+ *
+ * \return FALSE : the signal continue / TRUE : the signal is stopped here
+ * */
+static gboolean gsb_navigation_view_check_key_press ( GtkWidget *tree_view,
+ GdkEventKey *ev,
+ GsbNavigationViewPrivate *priv )
+{
+ gint page;
+ GtkTreeIter iter;
+ GtkTreePath *path;
+
+ if ( !gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( tree_view ) ),
+ NULL,
+ &iter ) )
+ return FALSE;
+
+ gtk_tree_model_get ( priv->model, &iter, GSB_NAVIGATION_VIEW_PAGE, &page, -1 );
+ path = gtk_tree_model_get_path ( GTK_TREE_MODEL ( priv->model ), &iter );
+
+ switch ( page )
+ {
+ case GSB_HOME_PAGE:
+ /* expand or collapse subtree */
+ if (ev -> keyval == GDK_KEY_Right)
+ {
+ gtk_tree_view_expand_row ( GTK_TREE_VIEW ( tree_view ), path, FALSE );
+ priv->account_expander = TRUE;
+ }
+ if (ev -> keyval == GDK_KEY_Left)
+ {
+ gtk_tree_view_collapse_row ( GTK_TREE_VIEW ( tree_view ), path );
+ priv->account_expander = FALSE;
+ }
+ if ( ev->keyval == GDK_KEY_space )
+ {
+ priv->account_expander = !priv->account_expander;
+ if ( priv->account_expander )
+ gtk_tree_view_expand_row ( GTK_TREE_VIEW ( tree_view ), path, FALSE );
+ else
+ gtk_tree_view_collapse_row ( GTK_TREE_VIEW ( tree_view ), path );
+ }
+ break;
+
+ case GSB_REPORTS_PAGE:
+ /* expand or collapse subtree */
+ if (ev -> keyval == GDK_KEY_Right)
+ {
+ gtk_tree_view_expand_row ( GTK_TREE_VIEW ( tree_view ), path, FALSE );
+ priv->report_expander = TRUE;
+ }
+ if (ev -> keyval == GDK_KEY_Left)
+ {
+ gtk_tree_view_collapse_row ( GTK_TREE_VIEW ( tree_view ), path );
+ priv->report_expander = FALSE;
+ }
+ if ( ev->keyval == GDK_KEY_space )
+ {
+ priv->report_expander = !priv->report_expander;
+ if ( priv->report_expander )
+ gtk_tree_view_expand_row ( GTK_TREE_VIEW ( tree_view ), path, FALSE );
+ else
+ gtk_tree_view_collapse_row ( GTK_TREE_VIEW ( tree_view ), path );
+ }
+ break;
+
+ case GSB_ACCOUNT_PAGE:
+ /* when come here, if we press the right key, give the focus to the list */
+ if (ev -> keyval == GDK_KEY_Right)
+ gtk_widget_grab_focus ( gsb_transactions_list_get_tree_view () );
+ break;
+
+ case GSB_PAYEES_PAGE:
+ /* nothing to do here for now */
+ break;
+
+ case GSB_CATEGORIES_PAGE:
+ /* nothing to do here for now */
+ break;
+
+ case GSB_BUDGETARY_LINES_PAGE:
+ /* nothing to do here for now */
+ break;
+
+ case GSB_SCHEDULER_PAGE:
+ /* when come here, if we press the right key, give the focus to the list */
+ if (ev -> keyval == GDK_KEY_Right)
+ gtk_widget_grab_focus ( gsb_scheduler_list_get_tree_view () );
+ break;
+ }
+
+ gtk_tree_path_free ( path );
+
+ return FALSE;
+}
+
+
+/**
+ * called when we press a button on the list
+ *
+ * \param tree_view
+ * \param ev
+ *
+ * \return FALSE
+ * */
+static gboolean gsb_navigation_view_button_press ( GtkWidget *tree_view,
+ GdkEventButton *ev,
+ gpointer null )
+{
+ /* show the popup */
+ if ( ev -> button == GSB_RIGHT_BUTTON )
+ {
+ GtkTreePath *path = NULL;
+
+ if ( gtk_tree_view_get_path_at_pos ( GTK_TREE_VIEW ( tree_view ), ev -> x, ev -> y, &path, NULL, NULL, NULL ) )
+ {
+ gsb_gui_navigation_context_menu ( tree_view, path );
+ gtk_tree_path_free ( path );
+
+ update_gui ( );
+
+ return FALSE;
+ }
+ }
+ if ( ev -> type == GDK_2BUTTON_PRESS )
+ {
+ GtkTreePath *path = NULL;
+
+ if ( gtk_tree_view_get_path_at_pos ( GTK_TREE_VIEW ( tree_view ), ev -> x, ev -> y, &path, NULL, NULL, NULL ) )
+ {
+ if ( gtk_tree_view_row_expanded ( GTK_TREE_VIEW ( tree_view ), path ) )
+ gtk_tree_view_collapse_row ( GTK_TREE_VIEW ( tree_view ), path );
+ else
+ gtk_tree_view_expand_row ( GTK_TREE_VIEW ( tree_view ), path, FALSE );
+
+ gtk_tree_path_free ( path );
+
+ return FALSE;
+ }
+ }
+
+ return FALSE;
+}
+
+
+/**
+ * fonction qui mémorise l'etat de l'expander pour les comptes et les états
+ *
+ * \param tree_view
+ * \param iter
+ * \param path
+ * \param priv private structure of GsbNavigationView
+ *
+ * \return
+ **/
+static void gsb_navigation_view_activate_expander ( GtkTreeView *tree_view,
+ GtkTreeIter *iter,
+ GtkTreePath *path,
+ GsbNavigationViewPrivate *priv )
+{
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter_selected;
+ GtkTreePath *path_selected = NULL;
+ gint type_page;
+ gint etat_expander;
+
+ etat_expander = gtk_tree_view_row_expanded ( GTK_TREE_VIEW ( tree_view ), path );
+ selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW ( tree_view ) );
+ if ( gtk_tree_selection_get_selected ( selection, &model, &iter_selected ) )
+ path_selected = gtk_tree_model_get_path ( model, &iter_selected );
+
+ gtk_tree_model_get ( model, iter, GSB_NAVIGATION_VIEW_PAGE, &type_page, -1 );
+
+ switch ( type_page )
+ {
+ case GSB_HOME_PAGE :
+ case GSB_ACCOUNT_PAGE :
+ priv->account_expander = etat_expander;
+ break;
+ case GSB_REPORTS_PAGE :
+ priv->report_expander = etat_expander;
+ break;
+ }
+
+ if ( etat_expander == 0 && path_selected == NULL )
+ gtk_tree_selection_select_iter ( selection, iter );
+}
+
+
+/* SELECTION */
+/**
+ * Set the selection of the navigation list depending on desired page
+ * and/or account or report, but only for a branch of the tree.
+ *
+ * \param selection Selection to set.
+ * \param iter Current iter to iterate over.
+ * \param page Page to switch to.
+ * \param account_number If page is GSB_ACCOUNT_PAGE, switch to given account.
+ * \param report If page is GSB_REPORTS, switch to given report.
+ *
+ * \return TRUE on success.
+ */
+static void gsb_navigation_view_set_selection_branch ( GtkTreeSelection *selection,
+ GtkTreeIter *iter,
+ gint page,
+ gint account_number,
+ gpointer report )
+{
+ GtkTreeModel *navigation_model;
+
+ navigation_model = gsb_gui_navigation_get_model ();
+
+ do
+ {
+ gint iter_page, iter_account_nb;
+ gpointer iter_report;
+
+ gtk_tree_model_get ( GTK_TREE_MODEL ( navigation_model ), iter,
+ GSB_NAVIGATION_VIEW_REPORT, &iter_report,
+ GSB_NAVIGATION_VIEW_ACCOUNT, &iter_account_nb,
+ GSB_NAVIGATION_VIEW_PAGE, &iter_page,
+ -1 );
+
+ if ( iter_page == page
+ &&
+ ! ( page == GSB_ACCOUNT_PAGE
+ &&
+ iter_account_nb != account_number )
+ &&
+ ! ( page == GSB_REPORTS_PAGE
+ &&
+ iter_report != report ) )
+ {
+ gtk_tree_selection_select_iter ( selection, iter );
+ }
+
+ if ( gtk_tree_model_iter_has_child ( GTK_TREE_MODEL ( navigation_model ), iter ) )
+ {
+ GtkTreeIter child;
+
+ gtk_tree_model_iter_children ( GTK_TREE_MODEL ( navigation_model ), &child, iter );
+ gsb_navigation_view_set_selection_branch ( selection, &child,
+ page, account_number, report );
+ }
+ }
+ while ( gtk_tree_model_iter_next ( GTK_TREE_MODEL ( navigation_model ), iter ) );
+
+ return;
+}
+
+
+/* ACCOUNTS */
+/**
+ * Update contents of an iter with account data.
+ *
+ * \param model Pointer to the model of the navigation tree.
+ * \param account_iter Iter to update.
+ * \param data Number of account as a reference.
+ *
+ * \return
+ */
+static void gsb_navigation_view_update_account_iter ( GtkTreeModel *model,
+ GtkTreeIter *account_iter,
+ gint account_number )
+{
+ GdkPixbuf * pixbuf = NULL;
+
+ pixbuf = gsb_data_account_get_account_icon_pixbuf ( account_number );
+
+ gtk_tree_store_set ( GTK_TREE_STORE ( model ), account_iter,
+ GSB_NAVIGATION_VIEW_PIX, pixbuf,
+ GSB_NAVIGATION_VIEW_PIX_VISIBLE, TRUE,
+ GSB_NAVIGATION_VIEW_TEXT, gsb_data_account_get_name ( account_number ),
+ GSB_NAVIGATION_VIEW_FONT, 400,
+ GSB_NAVIGATION_VIEW_PAGE, GSB_ACCOUNT_PAGE,
+ GSB_NAVIGATION_VIEW_ACCOUNT, account_number,
+ GSB_NAVIGATION_VIEW_SENSITIVE, !gsb_data_account_get_closed_account ( account_number ),
+ GSB_NAVIGATION_VIEW_REPORT, -1,
+ -1 );
+}
+
+
+/**
+ * Add an account to the navigation pane.
+ *
+ * \param tree_view
+ * \param account_number Account ID to add.
+ * \param switch_to_account TRUE to show the account, FALSE to just create it
+ *
+ * \return
+ */
+static void gsb_navigation_view_add_account ( GsbNavigationView *tree_view,
+ gint account_number,
+ gboolean switch_to_account )
+{
+ GtkTreeModel *model;
+ GtkTreeIter parent, iter;
+ GtkTreePath *path;
+
+ model = tree_view->priv->model;
+ path = gsb_navigation_view_get_page_path ( model, GSB_HOME_PAGE );
+ gtk_tree_model_get_iter ( GTK_TREE_MODEL( model ), &parent, path );
+ gtk_tree_store_append ( GTK_TREE_STORE ( model ), &iter, &parent );
+
+ gsb_navigation_view_update_account_iter ( GTK_TREE_MODEL ( model ), &iter, account_number );
+
+ if ( switch_to_account )
+ {
+ GtkTreeSelection * selection;
+
+ selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW ( tree_view ) );
+ gtk_tree_selection_select_iter ( selection, &iter );
+ }
+}
+
+
+/* REPORTS */
+/**
+ * Create a list of tree items that are shortcuts to reports.
+ *
+ * \param tree_view Tree model to insert items into.
+ *
+ * \return
+ */
+static void gsb_navigation_view_create_report_list ( GsbNavigationView *tree_view )
+{
+ GtkTreeModel *model;
+ GtkTreeIter parent, child;
+ GtkTreePath *path;
+ GSList *tmp_list;
+
+ devel_debug (NULL);
+ model = tree_view->priv->model;
+ path = gsb_navigation_view_get_page_path ( model, GSB_REPORTS_PAGE );
+ gtk_tree_model_get_iter ( GTK_TREE_MODEL( model ), &parent, path );
+
+ /* Remove childs if any. */
+ while ( gtk_tree_model_iter_children ( model, &child, &parent ) )
+ {
+ gtk_tree_store_remove ( GTK_TREE_STORE ( model ), &child );
+ }
+
+ /* Fill in with reports */
+ tmp_list = gsb_data_report_get_report_list ();
+
+ while ( tmp_list )
+ {
+ gint report_number;
+
+ report_number = gsb_data_report_get_report_number ( tmp_list -> data );
+
+ gtk_tree_store_append ( GTK_TREE_STORE ( model ), &child, &parent );
+ gtk_tree_store_set ( GTK_TREE_STORE ( model ), &child,
+ GSB_NAVIGATION_VIEW_PIX_VISIBLE, FALSE,
+ GSB_NAVIGATION_VIEW_TEXT, gsb_data_report_get_report_name ( report_number ),
+ GSB_NAVIGATION_VIEW_FONT, 400,
+ GSB_NAVIGATION_VIEW_PAGE, GSB_REPORTS_PAGE,
+ GSB_NAVIGATION_VIEW_ACCOUNT, -1,
+ GSB_NAVIGATION_VIEW_SENSITIVE, 1,
+ GSB_NAVIGATION_VIEW_REPORT, report_number,
+ -1 );
+
+ tmp_list = tmp_list -> next;
+ }
+
+ /* Expand stuff */
+ if ( tree_view->priv->report_expander )
+ {
+ path = gtk_tree_model_get_path ( GTK_TREE_MODEL ( model ), &parent );
+ gtk_tree_view_expand_to_path ( GTK_TREE_VIEW ( tree_view ), path );
+ gtk_tree_path_free ( path );
+ }
+}
+
+
+/* PAGES_LIST */
+/**
+ * insère dans le modèle le type de page passé en paramètre
+ *
+ * \param tree_view
+ * \param type de page
+ * \param ordre dans la liste
+ *
+ * \return
+ **/
+static void gsb_navigation_view_set_navigation_pages ( GsbNavigationView *tree_view,
+ gint type_page,
+ gint ordre )
+{
+ GdkPixbuf *pixbuf;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gchar *title = NULL;
+ gchar *tmp_str = NULL;
+
+ model = tree_view->priv->model;
+
+ switch ( type_page )
+ {
+ case GSB_HOME_PAGE :
+ tmp_str = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "ac_home.png", NULL );
+ title = g_strdup ( _("Accounts") );
+ break;
+ case GSB_SCHEDULER_PAGE :
+ tmp_str = g_build_filename( gsb_dirs_get_pixmaps_dir ( ), "scheduler.png", NULL );
+ title = g_strdup ( _("Scheduler") );
+ break;
+ case GSB_PAYEES_PAGE :
+ tmp_str = g_build_filename( gsb_dirs_get_pixmaps_dir ( ), "payees.png", NULL );
+ title = g_strdup ( _("Payees") );
+ break;
+ case GSB_SIMULATOR_PAGE :
+ tmp_str = g_build_filename( gsb_dirs_get_pixmaps_dir ( ), "ac_liability.png", NULL );
+ title = g_strdup ( _("Credits simulator") );
+ break;
+ case GSB_CATEGORIES_PAGE :
+ tmp_str = g_build_filename( gsb_dirs_get_pixmaps_dir ( ), "categories.png", NULL );
+ title = g_strdup ( _("Categories") );
+ break;
+ case GSB_BUDGETARY_LINES_PAGE :
+ tmp_str = g_build_filename( gsb_dirs_get_pixmaps_dir ( ), "budgetary_lines.png", NULL );
+ title = g_strdup ( _("Budgetary lines") );
+ break;
+ case GSB_REPORTS_PAGE :
+ tmp_str = g_build_filename( gsb_dirs_get_pixmaps_dir ( ), "reports.png", NULL );
+ title = g_strdup ( _("Reports") );
+ break;
+ }
+
+ pixbuf = gdk_pixbuf_new_from_file ( tmp_str , NULL );
+ gtk_tree_store_append ( GTK_TREE_STORE ( model ), &iter, NULL );
+ gtk_tree_store_set( GTK_TREE_STORE ( model ), &iter,
+ GSB_NAVIGATION_VIEW_PIX, pixbuf,
+ GSB_NAVIGATION_VIEW_TEXT, title,
+ GSB_NAVIGATION_VIEW_PIX_VISIBLE, TRUE,
+ GSB_NAVIGATION_VIEW_FONT, 800,
+ GSB_NAVIGATION_VIEW_PAGE, type_page,
+ GSB_NAVIGATION_VIEW_ACCOUNT, -1,
+ GSB_NAVIGATION_VIEW_REPORT, -1,
+ GSB_NAVIGATION_VIEW_SENSITIVE, 1,
+ GSB_NAVIGATION_VIEW_ORDRE, ordre,
+ -1);
+
+ g_free ( tmp_str );
+ g_free ( title );
+
+ switch ( type_page )
+ {
+ case GSB_HOME_PAGE :
+ gsb_navigation_view_create_account_list ( tree_view );
+ break;
+ case GSB_REPORTS_PAGE :
+ gsb_navigation_view_create_report_list ( tree_view );
+ break;
+ }
+
+}
+
+
+/**
+ * remplit la liste de l'ordre des pages
+ *
+ * \param priv private structure of GsbNavigationView
+ * \param ordre de la liste
+ *
+ * \return always TRUE
+ **/
+static gboolean gsb_navigation_view_set_page_list_order ( GsbNavigationViewPrivate *priv,
+ const gchar *order_list )
+{
+ gchar **pointeur_char;
+ gint i;
+ gint nbre_pages;
+
+ devel_debug (NULL);
+ pointeur_char = g_strsplit ( order_list, "-", 0 );
+
+ nbre_pages = g_strv_length ( pointeur_char );
+
+ if ( nbre_pages != ( GSB_GENERAL_NOTEBOOK_PAGES -1 ) )
+ {
+ g_strfreev ( pointeur_char );
+ pointeur_char = g_strsplit ( DEFAULT_NAVIGATION_ORDER_LIST, "-", 0 );
+ nbre_pages = GSB_GENERAL_NOTEBOOK_PAGES -1;
+ }
+
+ for ( i = 0 ; i < nbre_pages ; i++ )
+ {
+ struct_page *page;
+
+ page = g_malloc0 ( sizeof ( struct_page ) );
+ page -> ordre = i;
+ page -> type_page = utils_str_atoi ( pointeur_char[i] );
+
+ g_queue_push_tail ( priv->pages_list, page );
+ }
+
+ g_strfreev ( pointeur_char );
+
+ /* return */
+ return TRUE;
+}
+
+
+/**
+ * initialise la liste des pages du tree_view
+ *
+ * \param priv private structure of GsbNavigationView
+ *
+ * \return
+ **/
+static void gsb_navigation_view_init_pages_list ( GsbNavigationViewPrivate *priv )
+{
+ GQueue *new_queue;
+ GrisbiWindowEtat *etat;
+
+ devel_debug (NULL);
+ etat = grisbi_window_get_struct_etat ();
+
+ new_queue = g_queue_new ( );
+ priv->pages_list = new_queue;
+
+ if ( etat->navigation_list_order )
+ gsb_navigation_view_set_page_list_order ( priv, etat->navigation_list_order );
+ else
+ gsb_navigation_view_set_page_list_order ( priv, DEFAULT_NAVIGATION_ORDER_LIST );
+}
+
+
+/**
+ * free pages_list
+ *
+ * \param page list
+ *
+ * \return
+ **/
+static void gsb_navigation_view_free_pages_list ( GQueue *pages_list )
+{
+ if ( pages_list == NULL )
+ return;
+
+ g_queue_foreach ( pages_list, (GFunc) g_free, NULL );
+ g_queue_free ( pages_list );
+}
+
+
+/* TREE_MODEL */
+/**
+ * fonction de tri des items du model passé en paramètre
+ *
+ * \param model model
+ * \param iter a
+ * \param iter b
+ * \param user_data not use
+ *
+ * \return gint -1, 0 or 1, if a is < (before), == or > (after) than b.
+ **/
+static gint gsb_navigation_view_sort_column ( GtkTreeModel *model,
+ GtkTreeIter *a,
+ GtkTreeIter *b,
+ gpointer user_data )
+{
+ gint ordre_a, page_a, account_a, report_a;
+ gint ordre_b, page_b, account_b, report_b;
+
+ if ( ! model )
+ return FALSE;
+
+ gtk_tree_model_get ( model, a,
+ GSB_NAVIGATION_VIEW_PAGE, &page_a,
+ GSB_NAVIGATION_VIEW_ACCOUNT, &account_a,
+ GSB_NAVIGATION_VIEW_REPORT, &report_a,
+ GSB_NAVIGATION_VIEW_ORDRE, &ordre_a,
+ -1 );
+
+ gtk_tree_model_get ( model, b,
+ GSB_NAVIGATION_VIEW_PAGE, &page_b,
+ GSB_NAVIGATION_VIEW_ACCOUNT, &account_b,
+ GSB_NAVIGATION_VIEW_REPORT, &report_b,
+ GSB_NAVIGATION_VIEW_ORDRE, &ordre_b,
+ -1 );
+
+ if ( ordre_a < ordre_b )
+ return - 1;
+ if ( ordre_a > ordre_b )
+ return 1;
+
+ if ( page_a == GSB_ACCOUNT_PAGE && page_b == GSB_ACCOUNT_PAGE )
+ {
+ return gsb_data_account_compare_position (account_a, account_b);
+ }
+ else if ( page_a == GSB_REPORTS_PAGE && page_b == GSB_REPORTS_PAGE )
+ {
+ return gsb_data_report_compare_position (report_a, report_b);
+ }
+ else
+ return 0;
+}
+
+
+/**
+ * remplit le modèle
+ *
+ * \param tree_view
+ *
+ * \return
+ **/
+static void gsb_navigation_view_fill_model ( GsbNavigationView *tree_view )
+{
+ GQueue *tmp_queue;
+ gint i;
+
+ devel_debug (NULL);
+ tmp_queue = tree_view->priv->pages_list;
+
+ for ( i = 0 ; i < tmp_queue -> length ; i++ )
+ {
+ struct_page *page;
+
+ page = g_queue_peek_nth ( tmp_queue, i );
+ gsb_navigation_view_set_navigation_pages ( tree_view, page -> type_page, i );
+ }
+}
+
+
+/**
+ * create navigation_view model
+ *
+ * \param priv private structure of GsbNavigationView
+ *
+ * \return
+ **/
+static void gsb_navigation_view_create_model ( GsbNavigationViewPrivate *priv )
+{
+ GtkTreeStore *model;
+
+ devel_debug (NULL);
+ model = gtk_tree_store_new ( GSB_NAVIGATION_VIEW_TOTAL,
+ GDK_TYPE_PIXBUF, /* GSB_NAVIGATION_VIEW_PIX */
+ G_TYPE_BOOLEAN, /* GSB_NAVIGATION_VIEW_PIX_VISIBLE */
+ G_TYPE_STRING, /* GSB_NAVIGATION_VIEW_TEXT */
+ G_TYPE_INT, /* GSB_NAVIGATION_VIEW_FONT */
+ G_TYPE_INT, /* GSB_NAVIGATION_VIEW_PAGE */
+ G_TYPE_INT, /* GSB_NAVIGATION_VIEW_ACCOUNT */
+ G_TYPE_INT, /* GSB_NAVIGATION_VIEW_REPORT */
+ G_TYPE_INT, /* GSB_NAVIGATION_VIEW_SENSITIVE */
+ G_TYPE_INT ); /* GSB_NAVIGATION_VIEW_ORDRE */
+
+ gtk_tree_sortable_set_sort_column_id ( GTK_TREE_SORTABLE ( model ),
+ GSB_NAVIGATION_VIEW_ORDRE,
+ GTK_SORT_ASCENDING );
+ gtk_tree_sortable_set_sort_func ( GTK_TREE_SORTABLE ( model ),
+ GSB_NAVIGATION_VIEW_ORDRE,
+ gsb_navigation_view_sort_column,
+ NULL,
+ NULL );
+
+ priv->model = GTK_TREE_MODEL ( model );
+}
+
+
+/* DRAG AND DROP */
+/**
+ * change the position of an item in the list of pages
+ *
+ * \param src_ordre the position of item we want to move
+ * \param dest_ordre the position before we want to move, or -1 to set at the end of list
+ *
+ * \return FALSE
+ * */
+gboolean gsb_navigation_view_move_ordre ( gint src_ordre,
+ gint dst_ordre )
+{
+/* GQueue *tmp_queue;
+ * GList *dst_list;
+ * gint i;
+ * struct_page *page = NULL;
+ */
+/*
+ * tmp_queue = pages_list;
+ * for ( i = 0 ; i < tmp_queue -> length ; i++ )
+ * {
+ * page = g_queue_peek_nth ( tmp_queue, i );
+ * if ( page -> ordre == src_ordre )
+ * break;
+ * }
+ *
+ * g_queue_pop_nth ( pages_list, i );
+ *
+ * dst_list = g_queue_peek_nth_link ( pages_list, dst_ordre );
+ * if ( dst_list )
+ * g_queue_insert_before ( pages_list, dst_list, page );
+ * else
+ * g_queue_push_tail ( tmp_queue, page );
+ */
+
+ /* on reconstruit le modèle */
+/* gtk_tree_store_clear ( GTK_TREE_STORE ( navigation_model ) );
+ *
+ * tmp_queue = pages_list;
+ */
+
+/* for ( i = 0 ; i < tmp_queue -> length ; i++ )
+ * {
+ * page = g_queue_peek_nth ( tmp_queue, i );
+ * page -> ordre = i;
+ * gsb_gui_navigation_set_navigation_pages ( navigation_model, page -> type_page, i );
+ * }
+ */
+
+ /* return */
+ return FALSE;
+}
+
+
+/**
+ * Fill the drag & drop structure with the path of selected column.
+ * This is an interface function called from GTK, much like a callback.
+ *
+ * \param drag_source Not used.
+ * \param path Original path for the gtk selection.
+ * \param selection_data A pointer to the drag & drop structure.
+ *
+ * \return FALSE, to allow future processing by the callback chain.
+ */
+gboolean gsb_navigation_view_drag_data_get ( GtkTreeDragSource *drag_source,
+ GtkTreePath *path,
+ GtkSelectionData *selection_data )
+{
+ gchar *tmpstr = gtk_tree_path_to_string (path);
+ gchar *tmpstr2 = g_strdup_printf ( "Orig path : %s", tmpstr);
+ devel_debug (tmpstr2);
+ g_free (tmpstr);
+ g_free (tmpstr2);
+
+ if ( path )
+ {
+/* gtk_tree_set_row_drag_data ( selection_data, GTK_TREE_MODEL ( navigation_model ), path ); */
+ }
+
+ /* return */
+ return FALSE;
+}
+
+
+
+/**
+ * Performs the actions to do at the end of the drag and drop.
+ * This is an interface function called from GTK, much like a callback.
+ *
+ * \param drag_dest Not used.
+ * \param path Original path for the gtk selection.
+ * \param selection_data A pointer to the drag & drop structure.
+ *
+ * \return FALSE, to allow future processing by the callback chain.
+ */
+gboolean gsb_navigation_view_drag_data_received ( GtkTreeDragDest *drag_dest,
+ GtkTreePath *dest_path,
+ GtkSelectionData *selection_data )
+{
+ gchar *tmpstr = gtk_tree_path_to_string (dest_path);
+ gchar *tmpstr2 = g_strdup_printf ( "Dest path : %s", tmpstr);
+ devel_debug (tmpstr2);
+ g_free (tmpstr);
+ g_free (tmpstr2);
+
+ if ( dest_path && selection_data )
+ {
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GtkTreePath *orig_path;
+ gint src_report, dst_report = -1;
+ gint src_account, dst_account = -1;
+ gint src_ordre, dst_ordre = -1;
+
+ gtk_tree_get_row_drag_data (selection_data, &model, &orig_path);
+
+ if ( gtk_tree_model_get_iter ( GTK_TREE_MODEL(model), &iter, dest_path ) )
+ gtk_tree_model_get (model , &iter,
+ GSB_NAVIGATION_VIEW_REPORT, &dst_report,
+ GSB_NAVIGATION_VIEW_ACCOUNT, &dst_account,
+ GSB_NAVIGATION_VIEW_ORDRE, &dst_ordre,
+ -1 );
+
+ if ( gtk_tree_model_get_iter ( GTK_TREE_MODEL(model), &iter, orig_path ) )
+ gtk_tree_model_get ( model, &iter,
+ GSB_NAVIGATION_VIEW_REPORT, &src_report,
+ GSB_NAVIGATION_VIEW_ACCOUNT, &src_account,
+ GSB_NAVIGATION_VIEW_ORDRE, &src_ordre,
+ -1 );
+
+ /* at this stage, src_account or src_report contains the account/report we move
+ * and dst_account/dst_report the account/report destination we want to move before,
+ * or dst_account/dst_report can be -1 to set at the end of the list */
+ if ( src_account != -1 )
+ /* we moved an account */
+ gsb_data_account_move_account ( src_account, dst_account );
+ if ( src_report != -1 )
+ /* we moved a report */
+ gsb_data_report_move_report ( src_report, dst_report );
+ if ( src_ordre != -1 )
+ /* we moved a page */
+ gsb_navigation_view_move_ordre ( src_ordre, dst_ordre );
+
+ /* update the tree view */
+ gtk_tree_sortable_set_sort_column_id ( GTK_TREE_SORTABLE ( model ),
+ GSB_NAVIGATION_VIEW_ORDRE, GTK_SORT_ASCENDING );
+ gtk_tree_sortable_set_sort_func ( GTK_TREE_SORTABLE ( model ),
+ GSB_NAVIGATION_VIEW_ORDRE, gsb_navigation_view_sort_column,
+ NULL, NULL );
+
+ /* update the order of accounts in first page */
+/* mise_a_jour_liste_comptes_accueil = TRUE; */
+
+/* gsb_file_set_modified ( TRUE ); */
+ }
+ return FALSE;
+}
+
+
+/**
+ * Verifies that the actions to do at the end of the drag and drop are possible.
+ * This is an interface function called from GTK, much like a callback.
+ *
+ * \param drag_dest Not used.
+ * \param path Original path for the gtk selection.
+ * \param selection_data A pointer to the drag & drop structure.
+ *
+ * \return FALSE, to allow future processing by the callback chain.
+ */
+gboolean gsb_navigation_view_row_drop_possible ( GtkTreeDragDest *drag_dest,
+ GtkTreePath *dest_path,
+ GtkSelectionData *selection_data )
+{
+ if ( dest_path && selection_data )
+ {
+ GtkTreePath *orig_path;
+ GtkTreeModel *model;
+ gint src_report, dst_report = -1;
+ gint src_account, dst_account = -1;
+ gint src_ordre, dst_ordre = -1;
+ GtkTreeIter iter;
+
+ gtk_tree_get_row_drag_data ( selection_data, &model, &orig_path );
+
+ if ( gtk_tree_model_get_iter ( model, &iter, orig_path ) )
+ gtk_tree_model_get ( model, &iter,
+ GSB_NAVIGATION_VIEW_REPORT, &src_report,
+ GSB_NAVIGATION_VIEW_ACCOUNT, &src_account,
+ GSB_NAVIGATION_VIEW_ORDRE, &src_ordre,
+ -1 );
+
+ if ( gtk_tree_model_get_iter ( model, &iter, dest_path ) )
+ gtk_tree_model_get ( model, &iter,
+ GSB_NAVIGATION_VIEW_REPORT, &dst_report,
+ GSB_NAVIGATION_VIEW_ACCOUNT, &dst_account,
+ GSB_NAVIGATION_VIEW_ORDRE, &dst_ordre,
+ -1 );
+
+ /* We handle an account */
+ if ( src_account >= 0 && dst_account >= 0 )
+ {
+ return TRUE;
+ }
+ /* We handle a report */
+ else if ( src_report > 0 && dst_report > 0 )
+ {
+ return TRUE;
+ }
+ else if ( src_ordre >= 0 && dst_ordre >= 0 )
+ {
+ return TRUE;
+ }
+
+ }
+
+ return FALSE;
+}
+
+
+/* FONCTION DE DESTRUCTION */
+/**
+ * finalise GsbVavigationView
+ *
+ * \param object
+ *
+ * \return
+ */
+static void gsb_navigation_view_finalize ( GObject *object )
+{
+ GsbNavigationView *self;
+ GsbNavigationViewPrivate *priv;
+
+ self = GSB_NAVIGATION_VIEW ( object );
+ devel_debug (NULL);
+
+ priv = self->priv;
+
+ /* libération de la mémoire utilisée pour l'ordre des pages */
+ gsb_navigation_view_free_pages_list ( priv->pages_list );
+
+ /* libération de l'objet */
+ G_OBJECT_CLASS ( gsb_navigation_view_parent_class )->finalize ( object );
+}
+
+
+/* FONCTION DE CONSTRUCTION */
+/**
+ * Initialise GrisbiPrefsClass
+ *
+ * \param
+ *
+ * \return
+ */
+static void gsb_navigation_view_class_init ( GsbNavigationViewClass *klass )
+{
+ GObjectClass *object_class = G_OBJECT_CLASS ( klass );
+
+ object_class->finalize = gsb_navigation_view_finalize;
+
+ g_type_class_add_private ( object_class, sizeof ( GsbNavigationViewPrivate ) );
+}
+
+
+static void gsb_navigation_view_init ( GsbNavigationView *self )
+{
+ GtkCellRenderer *renderer;
+/* GtkTreeDragDestIface *navigation_dst_iface;
+ * GtkTreeDragSourceIface *navigation_src_iface;
+ */
+ GtkTreeViewColumn *column;
+ gint xpad;
+ gint ypad;
+ GsbNavigationViewPrivate *priv;
+ GrisbiAppConf *conf;
+
+ devel_debug (NULL);
+ self->priv = priv = GSB_NAVIGATION_VIEW_GET_PRIVATE ( self );
+
+ /* initialisation d'account_expander */
+ priv->account_expander = TRUE;
+
+ /* create model */
+ gsb_navigation_view_create_model ( priv );
+
+ /* initialise la liste des pages */
+ gsb_navigation_view_init_pages_list ( priv );
+
+ /* Enable drag & drop */
+ gtk_tree_view_enable_model_drag_source ( GTK_TREE_VIEW ( self ),
+ GDK_BUTTON1_MASK,
+ row_targets, 1,
+ GDK_ACTION_MOVE | GDK_ACTION_COPY );
+ gtk_tree_view_enable_model_drag_dest ( GTK_TREE_VIEW ( self ),
+ row_targets,
+ 1,
+ GDK_ACTION_MOVE | GDK_ACTION_COPY );
+
+ gtk_tree_view_set_reorderable ( GTK_TREE_VIEW ( self ), TRUE );
+ gtk_tree_selection_set_mode ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( self ) ),
+ GTK_SELECTION_SINGLE );
+ gtk_tree_view_set_headers_visible ( GTK_TREE_VIEW ( self ), FALSE );
+ gtk_tree_view_set_model ( GTK_TREE_VIEW ( self ), GTK_TREE_MODEL( priv->model ) );
+
+ /* Handle drag & drop */
+/* navigation_dst_iface = GTK_TREE_DRAG_DEST_GET_IFACE ( priv->model );
+ * if ( navigation_dst_iface )
+ * {
+ * navigation_dst_iface -> drag_data_received = &gsb_navigation_view_drag_data_received;
+ * navigation_dst_iface -> row_drop_possible = &gsb_navigation_view_row_drop_possible;
+ * }
+ */
+
+/* navigation_src_iface = GTK_TREE_DRAG_SOURCE_GET_IFACE ( priv->model );
+ * if ( navigation_src_iface )
+ * {
+ * gtk_selection_add_target ( self,
+ * GDK_SELECTION_PRIMARY,
+ * GDK_SELECTION_TYPE_ATOM,
+ * 1 );
+ * navigation_src_iface -> drag_data_get = &gsb_navigation_view_drag_data_get;
+ * }
+ */
+
+ /* Create column */
+ column = gtk_tree_view_column_new ();
+
+ /* Pixbuf renderer. */
+ renderer = gtk_cell_renderer_pixbuf_new ();
+ gtk_tree_view_column_pack_start ( GTK_TREE_VIEW_COLUMN ( column ), renderer, FALSE );
+ gtk_tree_view_column_add_attribute ( GTK_TREE_VIEW_COLUMN ( column ), renderer,
+ "pixbuf", GSB_NAVIGATION_VIEW_PIX );
+ gtk_tree_view_column_add_attribute ( GTK_TREE_VIEW_COLUMN ( column ), renderer,
+ "visible", GSB_NAVIGATION_VIEW_PIX_VISIBLE );
+ gtk_tree_view_column_set_expand ( column, FALSE );
+
+ /* Text renderer. */
+ renderer = gtk_cell_renderer_text_new ( );
+ gtk_cell_renderer_get_padding ( GTK_CELL_RENDERER ( renderer ), &xpad, &ypad );
+ gtk_cell_renderer_set_padding ( GTK_CELL_RENDERER ( renderer ), 6, ypad );
+
+ gtk_tree_view_column_pack_start ( GTK_TREE_VIEW_COLUMN ( column ), renderer, TRUE );
+ gtk_tree_view_column_add_attribute ( GTK_TREE_VIEW_COLUMN ( column ), renderer,
+ "text", GSB_NAVIGATION_VIEW_TEXT );
+ gtk_tree_view_column_add_attribute ( GTK_TREE_VIEW_COLUMN ( column ), renderer,
+ "weight", GSB_NAVIGATION_VIEW_FONT);
+ gtk_tree_view_column_add_attribute ( GTK_TREE_VIEW_COLUMN ( column ), renderer,
+ "sensitive", GSB_NAVIGATION_VIEW_SENSITIVE);
+
+ gtk_tree_view_append_column ( GTK_TREE_VIEW ( self ), GTK_TREE_VIEW_COLUMN ( column ) );
+
+ /* set the signals */
+ conf = grisbi_app_get_conf ();
+ g_signal_connect ( self,
+ "key-press-event",
+ G_CALLBACK ( gsb_navigation_view_check_key_press ),
+ priv );
+
+ g_signal_connect ( self,
+ "scroll-event",
+ G_CALLBACK ( gsb_navigation_view_check_scroll ),
+ NULL );
+
+ if ( conf->active_scrolling_left_pane == 0 )
+ g_signal_handlers_block_by_func ( self,
+ G_CALLBACK ( gsb_navigation_view_check_scroll ),
+ NULL );
+
+ g_signal_connect ( G_OBJECT ( self ),
+ "button-press-event",
+ G_CALLBACK ( gsb_navigation_view_button_press ),
+ NULL );
+
+ g_signal_connect ( G_OBJECT ( self ),
+ "row-collapsed",
+ G_CALLBACK ( gsb_navigation_view_activate_expander ),
+ priv );
+
+ g_signal_connect ( G_OBJECT ( self ),
+ "row-expanded",
+ G_CALLBACK ( gsb_navigation_view_activate_expander ),
+ priv );
+
+ g_signal_connect_after ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( self ) ),
+ "changed",
+ G_CALLBACK ( gsb_gui_navigation_select_line ),
+ priv->model );
+
+ g_signal_connect ( self,
+ "realize",
+ (GCallback) gsb_navigation_view_realized,
+ priv );
+
+}
+
+
+/* PUBLIC FUNCTIONS */
+/**
+ * crée un tree_view pour la navigation
+ *
+ * \param
+ *
+ * \return
+ **/
+GtkWidget *gsb_navigation_view_new ( gint navigation_sorting_accounts )
+{
+ GsbNavigationView *tree_view;
+
+ devel_debug (NULL);
+ tree_view = GSB_NAVIGATION_VIEW ( g_object_new ( GSB_TYPE_NAVIGATION_VIEW, NULL ) );
+
+ tree_view->priv->navigation_sorting_accounts = navigation_sorting_accounts;
+ gsb_navigation_view_fill_model ( tree_view );
+
+ return GTK_WIDGET ( tree_view );
+}
+
+
+/**
+ * retourne le type d'arrangement de la liste des comptes
+ *
+ * \param
+ *
+ * \return gint type de tri pour les comptes
+ **/
+gint gsb_navigation_view_get_navigation_sorting_accounts ( void )
+{
+ GsbNavigationView *tree_view;
+
+ tree_view = GSB_NAVIGATION_VIEW ( grisbi_window_get_navigation_tree_view () );
+ if ( tree_view )
+ return tree_view->priv->navigation_sorting_accounts;
+ else
+ return 0;
+}
+
+
+/**
+ * définit le type de tri pour les comptes
+ *
+ * \param gint type de tri pour les comptes
+ *
+ * \return TRUE if OK FALSE other
+ **/
+gboolean gsb_navigation_view_set_navigation_sorting_accounts ( gint navigation_sorting_accounts )
+{
+ GsbNavigationView *tree_view;
+
+ tree_view = GSB_NAVIGATION_VIEW ( grisbi_window_get_navigation_tree_view () );
+ if ( tree_view )
+ {
+ tree_view->priv->navigation_sorting_accounts = navigation_sorting_accounts;
+
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+
+/**
+ * création de la liste des comptes pour le navigation tree_view
+ *
+ * \param tree_view
+ *
+ * \return
+ **/
+void gsb_navigation_view_create_account_list ( GsbNavigationView *tree_view )
+{
+ GtkTreeModel *model;
+ GtkTreeIter parent, child;
+ GtkTreePath *path;
+ GSList *list_tmp;
+ GrisbiAppConf *conf;
+
+ devel_debug (NULL);
+ model = tree_view->priv->model;
+ conf = grisbi_app_get_conf ( );
+
+ path = gsb_navigation_view_get_page_path ( model, GSB_HOME_PAGE );
+ gtk_tree_model_get_iter ( GTK_TREE_MODEL( model ), &parent, path );
+
+ /* Remove childs if any. */
+ while ( gtk_tree_model_iter_children ( model, &child, &parent ) )
+ {
+ if ( gtk_tree_model_iter_has_child ( model, &child ) )
+ {
+ GtkTreeIter tmp_child;
+
+ while ( gtk_tree_model_iter_children ( model, &tmp_child, &child ) )
+ {
+ gtk_tree_store_remove ( GTK_TREE_STORE ( model ), &tmp_child );
+ }
+ }
+
+ gtk_tree_store_remove ( GTK_TREE_STORE ( model ), &child );
+ }
+
+ /* Fill in with accounts. */
+ list_tmp = gsb_data_account_get_list_accounts ();
+ while ( list_tmp )
+ {
+ gint i = gsb_data_account_get_no_account ( list_tmp -> data );
+
+ if ( conf->show_closed_accounts
+ ||
+ !gsb_data_account_get_closed_account ( i ) )
+ {
+ gsb_navigation_view_add_account ( tree_view, i, FALSE );
+ }
+
+ list_tmp = list_tmp -> next;
+ }
+
+ /* Expand stuff */
+ if ( tree_view->priv->account_expander )
+ {
+ path = gtk_tree_model_get_path ( GTK_TREE_MODEL ( model ), &parent );
+ gtk_tree_view_expand_to_path ( GTK_TREE_VIEW ( tree_view ), path );
+ gtk_tree_path_free ( path );
+ }
+}
+
+
+/**
+ * return a pointer on the first element of g_queue of navigation pages
+ *
+ * \param none
+ *
+ * \return a GList
+ * */
+GQueue *gsb_navigation_view_get_pages_list ( void )
+{
+ GsbNavigationView *tree_view;
+
+ tree_view = GSB_NAVIGATION_VIEW ( grisbi_window_get_navigation_tree_view () );
+ if ( tree_view )
+ {
+ return tree_view->priv->pages_list;
+
+ }
+ else
+ return NULL;
+}
+
+
+/**
+ * renvoie le path d'un item de la vue navigation
+ *
+ * \param tree_model to insert items into.
+ * \param type_page
+ *
+ * \return path or NULL
+ */
+GtkTreePath *gsb_navigation_view_get_page_path ( GtkTreeModel *model,
+ gint type_page )
+{
+ GtkTreeIter iter;
+
+ if ( gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( model ), &iter ) )
+ {
+ do
+ {
+ gint tmp_type_page;
+ GtkTreePath *path = NULL;
+
+ gtk_tree_model_get ( GTK_TREE_MODEL( model ), &iter, GSB_NAVIGATION_VIEW_PAGE, &tmp_type_page, -1 );
+ if ( tmp_type_page == type_page)
+ {
+ path = gtk_tree_model_get_path ( GTK_TREE_MODEL ( model ), &iter );
+ return path;
+ }
+ }
+ while ( gtk_tree_model_iter_next ( GTK_TREE_MODEL ( model ), &iter ) );
+ }
+
+ return NULL;
+}
+
+
+/**
+ * Check mouse scrolling on the navigation tree view.
+ *
+ * \param tree_view the navigation tree_view
+ * \param ev the scroll event
+ *
+ * \return FALSE : the signal continue / TRUE : the signal is stopped here
+ * */
+gboolean gsb_navigation_view_check_scroll ( GtkWidget *tree_view,
+ GdkEventScroll *ev )
+{
+ switch ( ev->direction )
+ {
+ case GDK_SCROLL_UP:
+ gsb_gui_navigation_select_prev ();
+ break;
+
+ case GDK_SCROLL_DOWN:
+ gsb_gui_navigation_select_next ();
+ break;
+
+ default:
+ break;
+ }
+
+ return FALSE;
+}
+
+
+/**
+ * Set the selection of the navigation list depending on desired
+ * page and/or account or report.
+ *
+ * \param page Page to switch to.
+ * \param account_number If page is GSB_ACCOUNT_PAGE, switch to given account.
+ *
+ * \param report If page is GSB_REPORTS, switch to given report.
+ *
+ * \return TRUE on success.
+ */
+gboolean gsb_navigation_view_set_selection ( gint page,
+ gint account_number,
+ gpointer report )
+{
+ GtkWidget *navigation_tree_view;
+ GtkTreeModel *navigation_model;
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+
+ navigation_tree_view = grisbi_window_get_navigation_tree_view ();
+ selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW ( navigation_tree_view ) );
+ g_return_val_if_fail ( selection, FALSE );
+
+ navigation_model = gtk_tree_view_get_model ( GTK_TREE_VIEW ( navigation_tree_view ) );
+
+ /* if we select an account, open the expander if necessary */
+ if ( page == GSB_ACCOUNT_PAGE )
+ {
+ GtkTreePath *path;
+
+
+ path = gsb_navigation_view_get_page_path ( navigation_model, GSB_HOME_PAGE );
+ gtk_tree_view_expand_row ( GTK_TREE_VIEW ( navigation_tree_view ), path, TRUE );
+ gtk_tree_path_free (path);
+ }
+
+ gtk_tree_model_get_iter_first ( GTK_TREE_MODEL(navigation_model), &iter );
+ gsb_navigation_view_set_selection_branch ( selection, &iter, page, account_number, report );
+
+ return TRUE;
+}
+
+
+/**
+ *
+ *
+ * \param
+ *
+ * \return
+ **/
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* End: */
diff --git a/src/gsb_navigation_view.h b/src/gsb_navigation_view.h
new file mode 100644
index 0000000..f9b0b68
--- /dev/null
+++ b/src/gsb_navigation_view.h
@@ -0,0 +1,55 @@
+#ifndef __GSB_NAVIGATION_VIEW_H__
+#define __GSB_NAVIGATION_VIEW_H__
+
+#include <gtk/gtk.h>
+
+/*START_INCLUDE*/
+/*END_INCLUDE*/
+
+
+G_BEGIN_DECLS
+
+#define GSB_TYPE_NAVIGATION_VIEW (gsb_navigation_view_get_type ())
+#define GSB_NAVIGATION_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSB_TYPE_NAVIGATION_VIEW, GsbNavigationView))
+#define GSB_NAVIGATION_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSB_TYPE_NAVIGATION_VIEW, GsbNavigationViewClass))
+#define GSB_IS_NAVIGATION_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSB_TYPE_NAVIGATION_VIEW))
+#define GSB_IS_NAVIGATION_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSB_TYPE_NAVIGATION_VIEW))
+#define GSB_NAVIGATION_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GSB_TYPE_NAVIGATION_VIEW, GsbNavigationViewClass))
+
+typedef struct _GsbNavigationView GsbNavigationView;
+typedef struct _GsbNavigationViewClass GsbNavigationViewClass;
+typedef struct _GsbNavigationViewPrivate GsbNavigationViewPrivate;
+
+struct _GsbNavigationView
+{
+ GtkTreeView parent;
+
+ /*< private > */
+ GsbNavigationViewPrivate *priv;
+};
+
+struct _GsbNavigationViewClass
+{
+ GtkTreeViewClass parent_class;
+};
+
+
+/* START_DECLARATION */
+GType gsb_navigation_view_get_type ( void ) G_GNUC_CONST;
+gboolean gsb_navigation_view_check_scroll ( GtkWidget *tree_view,
+ GdkEventScroll *ev );
+void gsb_navigation_view_create_account_list ( GsbNavigationView *tree_view );
+gint gsb_navigation_view_get_navigation_sorting_accounts ( void );
+GQueue *gsb_navigation_view_get_pages_list ( void );
+GtkTreePath *gsb_navigation_view_get_page_path ( GtkTreeModel *model,
+ gint type_page );
+GtkWidget*gsb_navigation_view_new ( gint navigation_sorting_accounts );
+gboolean gsb_navigation_view_set_navigation_sorting_accounts ( gint navigation_sorting_accounts );
+gboolean gsb_navigation_view_set_selection ( gint page,
+ gint account_number,
+ gpointer report );
+/* END_DECLARATION */
+
+G_END_DECLS
+
+#endif /* __GSB_NAVIGATION_VIEW_H__ */
diff --git a/src/gsb_reconcile.c b/src/gsb_reconcile.c
index 00b3519..3b661e6 100644
--- a/src/gsb_reconcile.c
+++ b/src/gsb_reconcile.c
@@ -50,12 +50,13 @@
#include "gsb_file.h"
#include "gsb_form.h"
#include "gsb_form_widget.h"
+#include "gsb_navigation.h"
+#include "gsb_navigation_view.h"
#include "gsb_real.h"
#include "gsb_reconcile_list.h"
#include "gsb_scheduler_list.h"
#include "gsb_transactions_list.h"
#include "menu.h"
-#include "navigation.h"
#include "structures.h"
#include "traitement_variables.h"
#include "transaction_list.h"
@@ -662,7 +663,7 @@ gboolean gsb_reconcile_finish_reconciliation ( GtkWidget *button,
if ( reconcile_save_la gsb_reconcile_finish_reconciliation ( GtkWidget *button, _accounts ); VIEW, GsbNavigationViewClass)) */ 0.116 79.1397 452.069 86.7836 439.542 94.0777C 431.026 99.0367 424.039 102.006 418.372 102.989C 408.222 105.278 402.304 102.038 402.304 102.038C 402.304 102.038 398.244 96.5717 397.68 94.3187C 397.599 93.9916 405.593 95.4567 414.434 93.8406C 420.781 92.6807 427.732 89.1977 434.674 85.2647C 444.488 79.7067 452.785 72.3438 457.511 65.9067C 460.786 61.4458 461.946 57.1367 462.354 55.3927z" .469 473.638 174.66 476.954 195.11z" 00.276L 739.074 500.276C 759.951 500.276 772.588 497.101 780.28 491.704C 787.789 486.466 790.719 478.846 790.719 470.274C 790.719 452.654 775.701 443.923 758.669 441.701L 758.67 441.384C 776.617 438.05 785.774 429.795 785.774 416.779C 785.774 397.413 768.01 390.428 739.074 390.428L 678.638 390.428z" 448.248 397.73 457.588 403.603 457.588 419.795C 457.588 432.97 451.728 442.495 433.231 442.495L 424.074 442.495L 424.074 403.921z
" 0.917 219.279 370.917 210.374 370.917C 211.781 365.753 214.086 356.583 221.45 328.186C 308.695 328.193 287.908 328.376 738.419 328.186C 758.428 305.835 765.635 297.207 781.185 279.244C 556.029 279.244 460.148 279.244 242.306 279.662C 245.081 270.432 254.544 256.995 269.786 241.767C 291.182 220.388 321.858 195.015 363.508 173.254C 423.726 141.792 503.084 117.043 587.218 117.712C 760.185 120.633 849.057 201.069 849.057 201.069z" ò* Ëøÿ pKáò* @Åøÿ Äøÿ kP1ò* 5 6 7 8 : < = > ? @ B D Ëøÿ Ëøÿ à}ªò* Ëøÿ u:1ò* URò* ÀÃøÿ }ò* e91ò* URò* Õ_ at fÆS Qöl±íÁyò* Ëøÿ à}ªò* PÆøÿ Åøÿ kP1ò* u]ÞÓ 4Q ÷U^Qʧ ¶uª¹ñìò*ÄvËøÿ Ëøÿ HÎvò* ³ò* ÀÌøÿ ¦
ò* ¦
ò* f°ò* OËøÿ Ìøÿ 8Ëøÿ Çøÿ Nò* u:1ò* ØNò* Îøÿ ¢
ò* ÐÌøÿ `Èøÿ
ÿÿÿÿÿÿÿÿ¢
ò* Ëøÿ st_scheduled_convert )
{
- gsb_gui_navigation_set_selection ( GSB_SCHEDULER_PAGE, 0, NULL );
+ gsb_navigation_view_set_selection ( GSB_SCHEDULER_PAGE, 0, NULL );
gsb_scheduler_list_select ( reconcile_save_last_scheduled_convert );
gsb_scheduler_list_edit_transaction ( reconcile_save_last_scheduled_convert );
reconcile_save_last_scheduled_convert = 0;
diff --git a/src/gsb_reconcile_config.c b/src/gsb_reconcile_config.c
index 10f0731..32e10a7 100644
--- a/src/gsb_reconcile_config.c
+++ b/src/gsb_reconcile_config.c
@@ -44,7 +44,7 @@
#include "gsb_file.h"
#include "gsb_real.h"
#include "gsb_transactions_list.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "structures.h"
#include "traitement_variables.h"
#include "utils.h"
diff --git a/src/gsb_reconcile_list.c b/src/gsb_reconcile_list.c
index 4e8a246..240c80d 100644
--- a/src/gsb_reconcile_list.c
+++ b/src/gsb_reconcile_list.c
@@ -37,7 +37,7 @@
#include "gsb_data_account.h"
#include "gsb_data_payment.h"
#include "gsb_data_transaction.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "gsb_transactions_list_sort.h"
#include "transaction_list.h"
#include "transaction_list_select.h"
diff --git a/src/gsb_scheduler_list.c b/src/gsb_scheduler_list.c
index e0b9ccc..8e2435b 100644
--- a/src/gsb_scheduler_list.c
+++ b/src/gsb_scheduler_list.c
@@ -57,8 +57,7 @@
#include "gsb_real.h"
#include "gsb_scheduler.h"
#include "gsb_transactions_list.h"
-#include "mouse.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "structures.h"
#include "traitement_variables.h"
#include "utils.h"
@@ -1810,7 +1809,7 @@ gboolean gsb_scheduler_list_button_press ( GtkWidget *tree_view,
GdkEventButton *ev )
{
/* show the popup */
- if ( ev -> button == RIGHT_BUTTON )
+ if ( ev -> button == GSB_RIGHT_BUTTON )
popup_scheduled_context_menu ( );
else if ( ev -> type == GDK_2BUTTON_PRESS )
{
diff --git a/src/gsb_select_icon.c b/src/gsb_select_icon.c
index 56378d7..265263a 100644
--- a/src/gsb_select_icon.c
+++ b/src/gsb_select_icon.c
@@ -98,7 +98,7 @@ enum {
*
*
* */
-gboolean gsb_select_icon_init_account_variables ( void )
+gboolean gsb_select_icon_delete_accounts_icons ( void )
{
if ( list_accounts_icon )
{
@@ -683,21 +683,27 @@ GdkPixbuf *gsb_select_icon_get_default_logo_pixbuf ( void )
{
GdkPixbuf *pixbuf = NULL;
GError *error = NULL;
+ gchar *string = NULL;
- pixbuf = gdk_pixbuf_new_from_file ( g_build_filename
- (gsb_dirs_get_pixmaps_dir ( ), "grisbi-logo.png", NULL), &error );
+ string = g_build_filename ( gsb_dirs_get_pixmaps_dir (), "grisbi.svg", NULL );
+ if ( g_file_test ( string, G_FILE_TEST_EXISTS ) )
+ pixbuf = gdk_pixbuf_new_from_file ( string, &error );
- if ( ! pixbuf )
+ g_free ( string );
+
+ if ( !pixbuf )
{
devel_debug ( error -> message );
g_error_free ( error );
+
+ return NULL;
}
if ( gdk_pixbuf_get_width (pixbuf) > LOGO_WIDTH ||
- gdk_pixbuf_get_height (pixbuf) > LOGO_HEIGHT )
+ gdk_pixbuf_get_height (pixbuf) > LOGO_HEIGHT )
{
return gsb_select_icon_resize_logo_pixbuf ( pixbuf );
- }
+ }
else
return pixbuf;
}
diff --git a/src/gsb_select_icon.h b/src/gsb_select_icon.h
index 88d607b..c1b7f2a 100644
--- a/src/gsb_select_icon.h
+++ b/src/gsb_select_icon.h
@@ -14,12 +14,12 @@ 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 );
+gboolean gsb_select_icon_delete_accounts_icons ( void );
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 );
diff --git a/src/gsb_transactions_list.c b/src/gsb_transactions_list.c
index 06943a8..2e3ef22 100644
--- a/src/gsb_transactions_list.c
+++ b/src/gsb_transactions_list.c
@@ -57,13 +57,13 @@
#include "gsb_file.h"
#include "gsb_form.h"
#include "gsb_form_transaction.h"
+#include "gsb_navigation.h"
+#include "gsb_navigation_view.h"
#include "gsb_real.h"
#include "gsb_reconcile.h"
#include "gsb_scheduler_list.h"
#include "import.h"
#include "menu.h"
-#include "mouse.h"
-#include "navigation.h"
#include "print_transactions_list.h"
#include "structures.h"
#include "traitement_variables.h"
@@ -717,8 +717,8 @@ gboolean gsb_transactions_list_create_tree_view ( GtkWidget *tree_view,
{
gint i;
- tree_view = gtk_tree_view_new ();
-
+/* tree_view = gtk_tree_view_new (); */
+devel_debug (NULL);
/* we cannot do a selection */
gtk_tree_selection_set_mode ( GTK_TREE_SELECTION ( gtk_tree_view_get_selection (
GTK_TREE_VIEW( tree_view ))),
@@ -1401,7 +1401,7 @@ gboolean gsb_transactions_list_button_press ( GtkWidget *tree_view,
NULL ))
{
/* show the partial popup */
- if ( ev -> button == RIGHT_BUTTON )
+ if ( ev -> button == GSB_RIGHT_BUTTON )
popup_transaction_context_menu ( FALSE, -1, -1 );
return (TRUE);
}
@@ -1469,7 +1469,7 @@ gboolean gsb_transactions_list_button_press ( GtkWidget *tree_view,
tree_column );
/* if it's the right click, show the good popup */
- if ( ev -> button == RIGHT_BUTTON )
+ if ( ev -> button == GSB_RIGHT_BUTTON )
{
if ( transaction_number == -1)
popup_transaction_context_menu ( FALSE, -1, -1 );
@@ -1678,7 +1678,7 @@ gboolean gsb_transactions_list_edit_transaction ( gint transaction_number )
{
devel_debug_int (transaction_number);
- gsb_gui_navigation_set_selection ( GSB_ACCOUNT_PAGE,
+ gsb_navigation_view_set_selection ( GSB_ACCOUNT_PAGE,
gsb_data_transaction_get_account_number ( transaction_number ),
NULL );
transaction_list_select ( transaction_number );
@@ -3059,7 +3059,7 @@ void schedule_selected_transaction ()
run = grisbi_window_get_struct_run ( NULL );
if ( run->equilibrage == 0 )
{
- gsb_gui_navigation_set_selection (GSB_SCHEDULER_PAGE, 0, NULL);
+ gsb_navigation_view_set_selection (GSB_SCHEDULER_PAGE, 0, NULL);
gsb_scheduler_list_select (scheduled_number);
gsb_scheduler_list_edit_transaction (scheduled_number);
}
@@ -4188,7 +4188,7 @@ void gsb_transactions_list_display_contra_transaction ( gint *element_ptr )
transaction_number = GPOINTER_TO_INT ( element_ptr );
target_account = gsb_data_transaction_get_account_number ( transaction_number );
- if ( gsb_gui_navigation_set_selection ( GSB_ACCOUNT_PAGE, target_account, NULL ) )
+ if ( gsb_navigation_view_set_selection ( GSB_ACCOUNT_PAGE, target_account, NULL ) )
{
/* If transaction is reconciled, show reconciled transactions. */
if ( gsb_data_transaction_get_marked_transaction ( transaction_number ) == OPERATION_RAPPROCHEE
diff --git a/src/gsb_transactions_list_sort.c b/src/gsb_transactions_list_sort.c
index 9bd804f..93c51c7 100644
--- a/src/gsb_transactions_list_sort.c
+++ b/src/gsb_transactions_list_sort.c
@@ -46,7 +46,7 @@
#include "gsb_data_payment.h"
#include "gsb_data_reconcile.h"
#include "gsb_data_transaction.h"
-#include "navigation.h"
+#include "gsb_navigation.h"
#include "gsb_real.h"
#include "gsb_transactions_list.h"
#include "structures.h"
diff --git a/src/import.c b/src/import.c
index d922df0..f6a2afb 100644
--- a/src/import.c
+++ b/src/import.c
@@ -60,6 +60,7 @@
#include "gsb_dirs.h"
#include "gsb_file.h"
#include "gsb_file_util.h"
+#include "gsb_navigation.h"
#include "gsb_form_scheduler.h"
#include "gsb_form_transaction.h"
#include "gsb_form_widget.h"
@@ -69,7 +70,6 @@
#include "gtk_combofix.h"
#include "import_csv.h"
#include "menu.h"
-#include "navigation.h"
#include "parametres.h"
#include "qif.h"
#include "structures.h"
diff --git a/src/imputation_budgetaire.c b/src/imputation_budgetaire.c
index 266b22e..1a16d9f 100644
--- a/src/imputation_budgetaire.c
+++ b/src/imputation_budgetaire.c
@@ -47,7 +47,6 @@
#include "gtk_combofix.h"
#include "meta_budgetary.h"
#include "metatree.h"
-#include "mouse.h"
#include "transaction_list.h"
#include "structures.h"
#include "utils.h"
@@ -1026,7 +1025,7 @@ gboolean budgetary_line_list_button_press ( GtkWidget *tree_view,
GdkEventButton *ev,
gpointer null )
{
- if ( ev -> button == RIGHT_BUTTON )
+ if ( ev -> button == GSB_RIGHT_BUTTON )
{
budgetary_line_list_popup_context_menu ( );
diff --git a/src/menu.c b/src/menu.c
index 776c937..c14b92b 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -38,9 +38,10 @@
#include "gsb_account.h"
#include "gsb_file.h"
#include "gsb_form.h"
+#include "gsb_navigation.h"
+#include "gsb_navigation_view.h"
#include "gsb_scheduler_list.h"
#include "gsb_transactions_list.h"
-#include "navigation.h"
#include "traitement_variables.h"
#include "utils.h"
#include "erreur.h"
@@ -397,12 +398,14 @@ gboolean gsb_gui_toggle_show_archived ( void )
*/
gboolean gsb_gui_toggle_show_closed_accounts ( void )
{
+ GsbNavigationView *tree_view;
GrisbiAppConf *conf;
conf = grisbi_app_get_conf ( );
- conf->show_closed_accounts = ! conf->show_closed_accounts;
+ conf->show_closed_accounts = !conf->show_closed_accounts;
- gsb_gui_navigation_create_account_list ( gsb_gui_navigation_get_model ( ) );
+ tree_view = GSB_NAVIGATION_VIEW ( grisbi_window_get_navigation_tree_view () );
+ gsb_navigation_view_create_account_list ( tree_view );
gsb_gui_navigation_update_home_page ( );
gsb_file_set_modified ( TRUE );
diff --git a/src/metatree.c b/src/metatree.c
index bdf906a..8b6d7a5 100644
--- a/src/metatree.c
+++ b/src/metatree.c
@@ -42,11 +42,12 @@
#include "gsb_data_scheduled.h"
#include "gsb_data_transaction.h"
#include "gsb_file.h"
+#include "gsb_navigation.h"
+#include "gsb_navigation_view.h"
#include "gsb_real.h"
#include "gsb_transactions_list.h"
#include "gtk_combofix.h"
#include "imputation_budgetaire.h"
-#include "navigation.h"
#include "structures.h"
#include "tiers_onglet.h"
#include "traitement_variables.h"
@@ -1189,9 +1190,9 @@ gboolean division_activated ( GtkTreeView * treeview, GtkTreePath * path,
navigation_change_account ( account_number );
gsb_account_property_fill_page ();
gsb_gui_notebook_change_page ( GSB_ACCOUNT_PAGE );
- gsb_gui_navigation_set_selection ( GSB_ACCOUNT_PAGE,
- gsb_data_transaction_get_account_number (transaction_number),
- NULL );
+ gsb_navigation_view_set_selection ( GSB_ACCOUNT_PAGE,
+ gsb_data_transaction_get_account_number ( transaction_number ),
+ NULL );
/* move selected iter */
path = gtk_tree_model_get_path ( model, &iter );
@@ -1218,52 +1219,49 @@ gboolean division_row_drop_possible ( GtkTreeDragDest *drag_dest,
{
if ( dest_path && selection_data )
{
- enum meta_tree_row_type orig_type, dest_type;
- GtkTreePath * orig_path;
- GtkTreeModel * model;
- gint orig_no_div, no_div;
- gint current_number;
+ enum meta_tree_row_type orig_type, dest_type;
+ GtkTreePath * orig_path;
+ GtkTreeModel * model;
+ gint orig_no_div, no_div;
+ gint current_number;
- gtk_tree_get_row_drag_data (selection_data, &model, &orig_path);
+ gtk_tree_get_row_drag_data (selection_data, &model, &orig_path);
- if ( model == GTK_TREE_MODEL( gsb_gui_navigation_get_model ( ) ) )
- {
- return navigation_row_drop_possible ( drag_dest, dest_path, selection_data );
- }
+ orig_type = metatree_get_row_type ( model, orig_path );
+ dest_type = metatree_get_row_type ( model, dest_path );
- orig_type = metatree_get_row_type ( model, orig_path );
- dest_type = metatree_get_row_type ( model, dest_path );
-
- if ( ! metatree_get ( model, dest_path, META_TREE_NO_DIV_COLUMN,
- &no_div ) ||
- ! metatree_get ( model, orig_path, META_TREE_NO_DIV_COLUMN,
- &orig_no_div ) ||
- ! metatree_get ( model, dest_path, META_TREE_POINTER_COLUMN,
- ¤t_number ) )
- {
- return FALSE;
- }
+ if ( !metatree_get ( model, dest_path, META_TREE_NO_DIV_COLUMN, &no_div )
+ ||
+ !metatree_get ( model, orig_path, META_TREE_NO_DIV_COLUMN, &orig_no_div )
+ ||
+ !metatree_get ( model, dest_path, META_TREE_POINTER_COLUMN, ¤t_number ) )
+ {
+ return FALSE;
+ }
- switch ( orig_type )
- {
- case META_TREE_SUB_DIV:
- if ( dest_type == META_TREE_DIV &&
- ! gtk_tree_path_is_ancestor ( dest_path, orig_path ) &&
- current_number &&
- orig_no_div != 0 &&
- no_div != 0 ) /* i.e. ancestor is no "No division" */
- return TRUE;
- break;
+ switch ( orig_type )
+ {
+ case META_TREE_SUB_DIV:
+ if ( dest_type == META_TREE_DIV
+ &&
+ !gtk_tree_path_is_ancestor ( dest_path, orig_path )
+ &&
+ current_number
+ &&
+ orig_no_div != 0
+ &&
+ no_div != 0 ) /* i.e. ancestor is no "No division" */
+ return TRUE;
+ break;
- case META_TREE_TRANSACTION:
- if ( dest_type == META_TREE_DIV ||
- dest_type == META_TREE_SUB_DIV )
- return TRUE;
- break;
+ case META_TREE_TRANSACTION:
+ if ( dest_type == META_TREE_DIV || dest_type == META_TREE_SUB_DIV )
+ return TRUE;
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
}
return FALSE;
@@ -1304,12 +1302,6 @@ gboolean division_drag_data_received ( GtkTreeDragDest *drag_dest,
/* get the orig_path */
gtk_tree_get_row_drag_data (selection_data, &model, &orig_path);
- /* if we are on the navigation list, work with it */
- if ( model == GTK_TREE_MODEL( gsb_gui_navigation_get_model ( ) ) )
- {
- return navigation_drag_data_received ( drag_dest, dest_path, selection_data );
- }
-
/* get metatree interface */
iface = g_object_get_data ( G_OBJECT(model), "metatree-interface" );
if ( ! iface )
diff --git a/src/mouse.h b/src/mouse.h
deleted file mode 100644
index 2dd226c..0000000
--- a/src/mouse.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _MOUSE_H
-#define _MOUSE_H (1)
-
-/* Fichier de définition de constantes relatives à la souris mouse.h */
-
-/* possible values for a GdkEventButton -> button
- * cf GdkEventButton structure in gnome library */
-#define LEFT_BUTTON 1
-#define MIDDLE_BUTTON 2
-#define RIGHT_BUTTON 3
-
-
-/* START_INCLUDE_H */
-/* END_INCLUDE_H */
-
-
-/*START_DECLARATION*/
-/*END_DECLARATION*/
-
-
-#endif
-
diff --git a/src/navigation.c b/src/navigation.c
deleted file mode 100644
index 7d7353d..0000000
--- a/src/navigation.c
+++ /dev/null
@@ -1,2443 +0,0 @@
-/* ************************************************************************** */
-/* */
-/* Copyright (C) 2000-2008 Cédric Auger (cedric at grisbi.org) */
-/* 2003-2008 Benjamin Drieu (bdrieu at april.org) */
-/* 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 */
-/* */
-/* ************************************************************************** */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "include.h"
-#include <gdk/gdkkeysyms.h>
-#include <glib/gi18n.h>
-
-/*START_INCLUDE*/
-#include "navigation.h"
-#include "accueil.h"
-#include "bet_data.h"
-#include "bet_finance_ui.h"
-#include "categories_onglet.h"
-#include "etats_onglet.h"
-#include "fenetre_principale.h"
-#include "grisbi_app.h"
-#include "grisbi_window.h"
-#include "gsb_account.h"
-#include "gsb_account_property.h"
-#include "gsb_assistant_account.h"
-#include "gsb_calendar.h"
-#include "gsb_data_account.h"
-#include "gsb_data_archive_store.h"
-#include "gsb_data_import_rule.h"
-#include "gsb_data_reconcile.h"
-#include "gsb_data_report.h"
-#include "gsb_dirs.h"
-#include "gsb_file.h"
-#include "gsb_form.h"
-#include "gsb_form_scheduler.h"
-#include "gsb_real.h"
-#include "gsb_reconcile.h"
-#include "gsb_scheduler_list.h"
-#include "gsb_transactions_list.h"
-#include "imputation_budgetaire.h"
-#include "menu.h"
-#include "metatree.h"
-#include "mouse.h"
-#include "structures.h"
-#include "tiers_onglet.h"
-#include "traitement_variables.h"
-#include "transaction_list_select.h"
-#include "transaction_list_sort.h"
-#include "utils.h"
-#include "utils_dates.h"
-#include "utils_real.h"
-#include "utils_str.h"
-#include "erreur.h"
-/*END_INCLUDE*/
-
-
-/*START_STATIC*/
-static void gsb_gui_navigation_activate_expander ( GtkTreeView *tree_view,
- GtkTreeIter *iter,
- GtkTreePath *path,
- gpointer user_data );
-static gboolean gsb_gui_navigation_button_press ( GtkWidget *tree_view,
- GdkEventButton *ev,
- gpointer null );
-static gboolean gsb_gui_navigation_check_key_press ( GtkWidget *tree_view,
- GdkEventKey *ev,
- GtkTreeModel *model );
-static void gsb_gui_navigation_clear_pages_list ( void );
-static void gsb_gui_navigation_context_menu ( GtkWidget *tree_view,
- GtkTreePath *path );
-static void gsb_gui_navigation_create_report_list ( GtkTreeModel *model );
-static GtkTreePath *gsb_gui_navigation_get_page_path ( GtkTreeModel *model,
- gint type_page );
-static gboolean gsb_gui_navigation_move_ordre ( gint src_ordre,
- gint dst_ordre );
-static gboolean gsb_gui_navigation_remove_account_iterator ( GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer data );
-static gboolean gsb_gui_navigation_remove_report_iterator ( GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer data );
-static gboolean gsb_gui_navigation_select_line ( GtkTreeSelection *selection,
- GtkTreeModel *model );
-static void gsb_gui_navigation_set_selection_branch ( GtkTreeSelection *selection,
- GtkTreeIter * iter, gint page,
- gint account_number, gpointer report );
-static void gsb_gui_navigation_set_navigation_pages ( GtkTreeModel *model,
- gint type_page,
- gint ordre );
-static void gsb_gui_navigation_set_selection_branch ( GtkTreeSelection *selection,
- GtkTreeIter *iter,
- gint page,
- gint account_number,
- gpointer report );
-static void gsb_gui_navigation_update_account_iter ( GtkTreeModel *model,
- GtkTreeIter * account_iter,
- gint account_number );
-static gboolean gsb_gui_navigation_update_account_iterator ( GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer data );
-static void gsb_gui_navigation_update_report_iter ( GtkTreeModel *model,
- GtkTreeIter * report_iter,
- gint report_number );
-static gboolean gsb_gui_navigation_update_report_iterator ( GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer data );
-static gboolean navigation_sort_column ( GtkTreeModel *model,
- GtkTreeIter *a,
- GtkTreeIter *b,
- gpointer user_data );
-static gboolean navigation_tree_drag_data_get ( GtkTreeDragSource *drag_source,
- GtkTreePath *path,
- GtkSelectionData *selection_data );
-/*END_STATIC*/
-
-
-/*START_EXTERN*/
-extern GtkWidget *account_page;
-extern GtkWidget *label_last_statement;
-extern GtkWidget *menu_import_rules;
-extern gint mise_a_jour_liste_comptes_accueil;
-/*END_EXTERN*/
-
-
-/** Holds data for the navigation tree. */
-enum navigation_cols {
- NAVIGATION_PIX,
- NAVIGATION_PIX_VISIBLE,
- NAVIGATION_TEXT,
- NAVIGATION_FONT,
- NAVIGATION_PAGE,
- NAVIGATION_ACCOUNT,
- NAVIGATION_REPORT,
- NAVIGATION_SENSITIVE,
- NAVIGATION_ORDRE, /* ordre des pages dans le modèle */
- NAVIGATION_TOTAL,
-};
-
-/** Model of the navigation tree. */
-static GtkTreeModel *navigation_model = NULL;
-
-/** Widget that hold the scheduler calendar. */
-static GtkWidget *scheduler_calendar = NULL;
-
-/** Widget that hold all reconciliation widgets. */
-GtkWidget *reconcile_panel;
-
-/* contains the number of the last account
- * when switching between 2 accounts
- * at the end of the switch, contains the current account number */
-static gint buffer_last_account = -1;
-
-/* contains a g_queue of struct_page */
-static GQueue *pages_list = NULL;
-
-/* nombre de pages du panneau de gauche */
-static gint navigation_nbre_pages = 7;
-
-/* ordre par défaut des pages du panneau de gauche */
-const gchar *default_navigation_order_list = "0-2-3-4-5-6-7";
-
-/* gestion des expandeurs */
-static gboolean account_expander = TRUE;
-static gboolean report_expander = FALSE;
-
-static GtkTargetEntry row_targets[] =
-{
- { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_WIDGET, 0 }
-};
-
-
-/**
- * Create the navigation pane on the left of the GUI. It contains
- * account list as well as shortcuts.
- *
- * \return The newly allocated pane.
- */
-void gsb_gui_navigation_create_navigation_pane ( void )
-{
- GtkWidget *vbox;
- GtkWidget *sw;
- GtkWidget *navigation_tree_view;
- GQueue *tmp_queue;
- GtkCellRenderer *renderer;
- GtkTreeDragDestIface *navigation_dst_iface;
- GtkTreeDragSourceIface *navigation_src_iface;
- GtkTreeViewColumn *column;
- gint i;
- gint xpad;
- gint ypad;
- GrisbiAppConf *conf;
-
- conf = grisbi_app_get_conf ( );
-
- vbox = grisbi_window_get_widget_by_name ( "vbox_left_panel" );
- sw = grisbi_window_get_widget_by_name ( "sw_left_panel" );
-
- /* Create the view */
- navigation_tree_view = grisbi_window_get_widget_by_name ( "treeview_left_panel" );
- gtk_tree_view_set_headers_visible ( GTK_TREE_VIEW(navigation_tree_view), FALSE );
-
- navigation_model = GTK_TREE_MODEL ( gtk_tree_store_new ( NAVIGATION_TOTAL,
- GDK_TYPE_PIXBUF, /* NAVIGATION_PIX */
- G_TYPE_BOOLEAN, /* NAVIGATION_PIX_VISIBLE */
- G_TYPE_STRING, /* NAVIGATION_TEXT */
- G_TYPE_INT, /* NAVIGATION_FONT */
- G_TYPE_INT, /* NAVIGATION_PAGE */
- G_TYPE_INT, /* NAVIGATION_ACCOUNT */
- G_TYPE_INT, /* NAVIGATION_REPORT */
- G_TYPE_INT, /* NAVIGATION_SENSITIVE */
- G_TYPE_INT ) ); /* NAVIGATION_ORDRE */
-
- gtk_tree_sortable_set_sort_column_id ( GTK_TREE_SORTABLE ( navigation_model ),
- NAVIGATION_ORDRE, GTK_SORT_ASCENDING );
- gtk_tree_sortable_set_sort_func ( GTK_TREE_SORTABLE ( navigation_model ),
- NAVIGATION_ORDRE, navigation_sort_column,
- NULL, NULL );
-
- /* Enable drag & drop */
- gtk_tree_view_enable_model_drag_source ( GTK_TREE_VIEW ( navigation_tree_view ),
- GDK_BUTTON1_MASK,
- row_targets, 1,
- GDK_ACTION_MOVE | GDK_ACTION_COPY );
- gtk_tree_view_enable_model_drag_dest ( GTK_TREE_VIEW ( navigation_tree_view ),
- row_targets,
- 1,
- GDK_ACTION_MOVE | GDK_ACTION_COPY );
- gtk_tree_view_set_reorderable ( GTK_TREE_VIEW ( navigation_tree_view ), TRUE );
- gtk_tree_selection_set_mode ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( navigation_tree_view ) ),
- GTK_SELECTION_SINGLE );
- gtk_tree_view_set_model ( GTK_TREE_VIEW ( navigation_tree_view ), GTK_TREE_MODEL( navigation_model ) );
-
- /* Handle drag & drop */
- navigation_dst_iface = GTK_TREE_DRAG_DEST_GET_IFACE ( navigation_model );
- if ( navigation_dst_iface )
- {
- navigation_dst_iface -> drag_data_received = &navigation_drag_data_received;
- navigation_dst_iface -> row_drop_possible = &navigation_row_drop_possible;
- }
-
- navigation_src_iface = GTK_TREE_DRAG_SOURCE_GET_IFACE (navigation_model);
- if ( navigation_src_iface )
- {
- gtk_selection_add_target (navigation_tree_view,
- GDK_SELECTION_PRIMARY,
- GDK_SELECTION_TYPE_ATOM,
- 1);
- navigation_src_iface -> drag_data_get = &navigation_tree_drag_data_get;
- }
-
- /* check the keyboard before all, if we need to move other things that the navigation
- * tree view (for example, up and down on transactions list) */
- g_signal_connect ( navigation_tree_view,
- "key-press-event",
- G_CALLBACK ( gsb_gui_navigation_check_key_press ),
- navigation_model );
-
- g_signal_connect ( navigation_tree_view,
- "scroll-event",
- G_CALLBACK ( gsb_gui_navigation_check_scroll ),
- NULL );
-
- if ( conf->active_scrolling_left_pane == 0 )
- g_signal_handlers_block_by_func ( gsb_gui_navigation_get_tree_view ( ),
- G_CALLBACK ( gsb_gui_navigation_check_scroll ),
- NULL );
-
- g_signal_connect_after ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( navigation_tree_view ) ),
- "changed",
- G_CALLBACK ( gsb_gui_navigation_select_line ),
- navigation_model );
-
- /* Create column */
- column = gtk_tree_view_column_new ( );
-
- /* Pixbuf renderer. */
- renderer = gtk_cell_renderer_pixbuf_new ();
- gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), renderer, FALSE);
- gtk_tree_view_column_add_attribute(GTK_TREE_VIEW_COLUMN(column), renderer,
- "pixbuf", NAVIGATION_PIX);
- gtk_tree_view_column_add_attribute(GTK_TREE_VIEW_COLUMN(column), renderer,
- "visible", NAVIGATION_PIX_VISIBLE);
- gtk_tree_view_column_set_expand ( column, FALSE );
-
- /* Text renderer. */
- renderer = gtk_cell_renderer_text_new ( );
-
- gtk_cell_renderer_get_padding ( GTK_CELL_RENDERER ( renderer ), &xpad, &ypad );
- gtk_cell_renderer_set_padding ( GTK_CELL_RENDERER ( renderer ), 6, ypad );
-
- gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), renderer, TRUE);
- gtk_tree_view_column_add_attribute(GTK_TREE_VIEW_COLUMN(column), renderer,
- "text", NAVIGATION_TEXT );
- gtk_tree_view_column_add_attribute(GTK_TREE_VIEW_COLUMN(column), renderer,
- "weight", NAVIGATION_FONT);
- gtk_tree_view_column_add_attribute(GTK_TREE_VIEW_COLUMN(column), renderer,
- "sensitive", NAVIGATION_SENSITIVE);
-
- gtk_tree_view_append_column ( GTK_TREE_VIEW ( navigation_tree_view ), GTK_TREE_VIEW_COLUMN ( column ) );
-
- /* crée les pages dans le panneau de gauche */
- tmp_queue = gsb_gui_navigation_get_pages_list ( );
-
- for ( i = 0 ; i < tmp_queue -> length ; i++ )
- {
- struct_page *page;
-
- page = g_queue_peek_nth ( tmp_queue, i );
- gsb_gui_navigation_set_navigation_pages ( navigation_model, page -> type_page, i );
- }
-
- /* Create calendar (hidden for now). */
- scheduler_calendar = gsb_calendar_new ();
- gtk_box_pack_end ( GTK_BOX(vbox), scheduler_calendar, FALSE, FALSE, 0 );
-
- /* Create reconcile stuff (hidden for now). */
- reconcile_panel = gsb_reconcile_create_box ();
- gtk_box_pack_end ( GTK_BOX(vbox), reconcile_panel, FALSE, FALSE, 0 );
-
- /* signals of tree_view */
- g_signal_connect ( G_OBJECT ( navigation_tree_view ),
- "button-press-event",
- G_CALLBACK ( gsb_gui_navigation_button_press ),
- NULL );
-
- g_signal_connect ( G_OBJECT ( navigation_tree_view ),
- "row-collapsed",
- G_CALLBACK ( gsb_gui_navigation_activate_expander ),
- GINT_TO_POINTER ( 0 ) );
- g_signal_connect ( G_OBJECT ( navigation_tree_view ),
- "row-expanded",
- G_CALLBACK ( gsb_gui_navigation_activate_expander ),
- GINT_TO_POINTER ( 1 ) );
-
- gtk_widget_hide ( scheduler_calendar );
- gtk_widget_hide ( reconcile_panel );
-
- /* return */
-}
-
-
-
-/**
- * return the current page selected
- * the value returned is defined by GSB_GENERAL_NOTEBOOK_PAGES
- *
- * \param
- *
- * \return a gint wich is the numero of the page, -1 if problem
- *
- * */
-gint gsb_gui_navigation_get_current_page ( void )
-{
- GtkWidget *navigation_tree_view;
- GtkTreeSelection *selection;
- GtkTreeIter iter;
- gint page;
-
- navigation_tree_view = grisbi_window_get_widget_by_name ( "treeview_left_panel" );
- if ( !navigation_tree_view )
- return -1;
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW ( navigation_tree_view ) );
-
- if ( !gtk_tree_selection_get_selected ( selection, NULL, &iter ) )
- return GSB_HOME_PAGE;
-
- gtk_tree_model_get ( GTK_TREE_MODEL ( navigation_model ),
- &iter,
- NAVIGATION_PAGE, &page,
- -1 );
- return page;
-}
-
-
-
-/**
- * return the account number selected
- * rem : this is only for account number of the transactions list,
- * if we want the current account number, for transactions or scheduled, go to
- * see gsb_form_get_account_number
- *
- * \param
- *
- * \return a gint, the account number or -1 if none selected
- * */
-gint gsb_gui_navigation_get_current_account ( void )
-{
- GtkWidget *navigation_tree_view;
- GtkTreeSelection *selection;
- GtkTreeIter iter;
- gint page;
- gint account_number;
-
- navigation_tree_view = grisbi_window_get_widget_by_name ( "treeview_left_panel" );
- if ( !navigation_tree_view )
- return -1;
-
- selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW ( navigation_tree_view ) );
-
- if (! gtk_tree_selection_get_selected ( selection, NULL, &iter ) )
- return -1;
-
- gtk_tree_model_get ( GTK_TREE_MODEL ( navigation_model ),
- &iter,
- NAVIGATION_PAGE, &page,
- NAVIGATION_ACCOUNT, &account_number,
- -1 );
-
- if ( page == GSB_ACCOUNT_PAGE )
- return account_number;
-
- return -1;
-}
-
-
-/*
- * return the content of buffer_last_account
- * used while changing an account, as long as the work
- * is not finished, that variable contains the last account number
- *
- * \param
- *
- * \return the last account number (become the current account number once the
- * switch is finished...)
- *
- * */
-gint gsb_gui_navigation_get_last_account ( void )
-{
- return buffer_last_account;
-}
-
-
-/**
- * Return the number of the current selected report
- *
- * \param
- *
- * \return the current number of the report, or 0 if none selected
- * */
-gint gsb_gui_navigation_get_current_report ( void )
-{
- GtkWidget *navigation_tree_view;
- GtkTreeSelection *selection;
- GtkTreeIter iter;
- gint page;
-
- navigation_tree_view = grisbi_window_get_widget_by_name ( "treeview_left_panel" );
- if ( !navigation_tree_view )
- return 0;
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (navigation_tree_view));
-
- if (! gtk_tree_selection_get_selected ( selection, NULL, &iter ) )
- return 0;
-
- gtk_tree_model_get ( GTK_TREE_MODEL ( navigation_model ),
- &iter,
- NAVIGATION_PAGE, &page,
- -1 );
-
- if ( page == GSB_REPORTS_PAGE )
- {
- gint report_number;
-
- gtk_tree_model_get ( GTK_TREE_MODEL ( navigation_model ),
- &iter,
- NAVIGATION_REPORT, &report_number,
- -1 );
-
- return report_number;
- }
-
- return -1;
-}
-
-
-
-
-/**
- * Create a list of tree items that are shortcuts to accounts.
- *
- * \param model Tree model to insert items into.
- * \param account_iter Parent iter.
- */
-void gsb_gui_navigation_create_account_list ( GtkTreeModel *model )
-{
- GSList *list_tmp;
- GtkTreeIter parent, child;
- GtkTreePath *path;
- GrisbiAppConf *conf;
-
- conf = grisbi_app_get_conf ( );
-
- path = gsb_gui_navigation_get_page_path ( model, GSB_HOME_PAGE );
- gtk_tree_model_get_iter ( GTK_TREE_MODEL( model ), &parent, path );
-
- /* Remove childs if any. */
- while ( gtk_tree_model_iter_children ( model, &child, &parent ) )
- {
- gtk_tree_store_remove ( GTK_TREE_STORE ( model ), &child );
- }
-
- /* Fill in with accounts. */
- list_tmp = gsb_data_account_get_list_accounts ();
- while ( list_tmp )
- {
- gint i = gsb_data_account_get_no_account ( list_tmp -> data );
-
- if ( conf->show_closed_accounts
- ||
- !gsb_data_account_get_closed_account ( i ) )
- {
- gsb_gui_navigation_add_account ( i, FALSE );
- }
-
- list_tmp = list_tmp -> next;
- }
-
- /* Expand stuff */
- if ( account_expander )
- {
- GtkWidget *navigation_tree_view;
-
- navigation_tree_view = grisbi_window_get_widget_by_name ( "treeview_left_panel" );
- path = gtk_tree_model_get_path ( GTK_TREE_MODEL ( model ), &parent );
- gtk_tree_view_expand_to_path ( GTK_TREE_VIEW ( navigation_tree_view ), path );
- gtk_tree_path_free ( path );
- }
-}
-
-
-
-/**
- * Create a list of tree items that are shortcuts to reports.
- *
- * \param model Tree model to insert items into.
- * \param reports_iter Parent iter.
- */
-void gsb_gui_navigation_create_report_list ( GtkTreeModel *model )
-{
- GSList *tmp_list;
- GtkTreeIter parent, child;
- GtkTreePath *path;
-
- path = gsb_gui_navigation_get_page_path ( model, GSB_REPORTS_PAGE );
- gtk_tree_model_get_iter ( GTK_TREE_MODEL( model ), &parent, path );
-
- /* Remove childs if any. */
- while ( gtk_tree_model_iter_children ( model, &child, &parent ) )
- {
- gtk_tree_store_remove ( GTK_TREE_STORE ( model ), &child );
- }
-
- /* Fill in with reports */
- tmp_list = gsb_data_report_get_report_list ();
-
- while ( tmp_list )
- {
- gint report_number;
-
- report_number = gsb_data_report_get_report_number ( tmp_list -> data );
-
- gtk_tree_store_append ( GTK_TREE_STORE ( model ), &child, &parent);
- gtk_tree_store_set(GTK_TREE_STORE(model), &child,
- NAVIGATION_PIX_VISIBLE, FALSE,
- NAVIGATION_TEXT, gsb_data_report_get_report_name ( report_number ),
- NAVIGATION_FONT, 400,
- NAVIGATION_PAGE, GSB_REPORTS_PAGE,
- NAVIGATION_ACCOUNT, -1,
- NAVIGATION_SENSITIVE, 1,
- NAVIGATION_REPORT, report_number,
- -1 );
-
- tmp_list = tmp_list -> next;
- }
-
- /* Expand stuff */
- if ( report_expander )
- {
- GtkWidget *navigation_tree_view;
-
- navigation_tree_view = grisbi_window_get_widget_by_name ( "treeview_left_panel" );
- path = gtk_tree_model_get_path ( GTK_TREE_MODEL ( model ), &parent );
- gtk_tree_view_expand_to_path ( GTK_TREE_VIEW ( navigation_tree_view ), path );
- gtk_tree_path_free ( path );
- }
-}
-
-
-
-
-/**
- *
- *
- *
- */
-gboolean navigation_sort_column ( GtkTreeModel *model,
- GtkTreeIter *a,
- GtkTreeIter *b,
- gpointer user_data )
-{
- gint ordre_a, page_a, account_a, report_a;
- gint ordre_b, page_b, account_b, report_b;
-
- if ( ! model )
- return FALSE;
-
- gtk_tree_model_get ( model, a,
- NAVIGATION_PAGE, &page_a,
- NAVIGATION_ACCOUNT, &account_a,
- NAVIGATION_REPORT, &report_a,
- NAVIGATION_ORDRE, &ordre_a,
- -1 );
-
- gtk_tree_model_get ( model, b,
- NAVIGATION_PAGE, &page_b,
- NAVIGATION_ACCOUNT, &account_b,
- NAVIGATION_REPORT, &report_b,
- NAVIGATION_ORDRE, &ordre_b,
- -1 );
-
- if ( ordre_a < ordre_b )
- return - 1;
- if ( ordre_a > ordre_b )
- return 1;
-
- if ( page_a == GSB_ACCOUNT_PAGE && page_b == GSB_ACCOUNT_PAGE )
- {
- return gsb_data_account_compare_position (account_a, account_b);
- }
- else if ( page_a == GSB_REPORTS_PAGE && page_b == GSB_REPORTS_PAGE )
- {
- return gsb_data_report_compare_position (report_a, report_b);
- }
- else
- return 0;
-}
-
-
-/**
- * Iterator that iterates over the navigation pane model and update
- * iter of account that is equal to `data'.
- *
- * \param tree_model Pointer to the model of the navigation tree.
- * \param path Not used.
- * \param iter Current iter to test.
- * \param data Number of an account to match against the
- * NAVIGATION_ACCOUNT column of current iter.
- *
- * \return TRUE if this iter matches.
- */
-static gboolean gsb_gui_navigation_update_account_iterator ( GtkTreeModel *tree_model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer data )
-{
- gint account_number;
-
- gtk_tree_model_get ( GTK_TREE_MODEL ( tree_model ),
- iter,
- NAVIGATION_ACCOUNT, &account_number,
- -1 );
-
- if ( account_number == GPOINTER_TO_INT ( data ) )
- {
- gsb_gui_navigation_update_account_iter ( tree_model, iter, GPOINTER_TO_INT ( data ) );
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-
-/**
- * Iterator that iterates over the navigation pane model and update
- * iter of report that is equal to `data'.
- *
- * \param tree_model Pointer to the model of the navigation tree.
- * \param path Not used.
- * \param iter Current iter to test.
- * \param data Number of an report to match against the
- * NAVIGATION_REPORT column of current iter.
- *
- * \return TRUE if this iter matches.
- */
-static gboolean gsb_gui_navigation_update_report_iterator ( GtkTreeModel *tree_model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer data )
-{
- gint report_nb;
-
- gtk_tree_model_get ( GTK_TREE_MODEL ( tree_model ),
- iter,
- NAVIGATION_REPORT, &report_nb,
- -1 );
-
- if ( report_nb == GPOINTER_TO_INT ( data ) )
- {
- gsb_gui_navigation_update_report_iter ( tree_model, iter, GPOINTER_TO_INT ( data ) );
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-
-/**
- * Update information for an report in navigation pane.
- *
- * \param report_nb Number of the report that has to be updated.
- */
-void gsb_gui_navigation_update_report ( gint report_number )
-{
- gtk_tree_model_foreach ( GTK_TREE_MODEL(navigation_model),
- (GtkTreeModelForeachFunc) gsb_gui_navigation_update_report_iterator,
- GINT_TO_POINTER ( report_number ) );
-}
-
-
-
-/**
- * Update contents of an iter with report data.
- *
- * \param model Pointer to the model of the navigation tree.
- * \param report_iter Iter to update.
- * \param data Number of report as a reference.
- */
-void gsb_gui_navigation_update_report_iter ( GtkTreeModel *model,
- GtkTreeIter * report_iter,
- gint report_number )
-{
- gtk_tree_store_set(GTK_TREE_STORE(model), report_iter,
- NAVIGATION_TEXT, gsb_data_report_get_report_name (report_number),
- NAVIGATION_PAGE, GSB_REPORTS_PAGE,
- NAVIGATION_REPORT, report_number,
- NAVIGATION_ACCOUNT, -1,
- NAVIGATION_SENSITIVE, 1,
- -1 );
-}
-
-
-
-/**
- * Iterator that iterates over the navigation pane model and remove
- * iter of report that is equal to `data'.
- *
- * \param tree_model Pointer to the model of the navigation tree.
- * \param path Not used.
- * \param iter Current iter to test.
- * \param data Number of an report to match against the
- * NAVIGATION_REPORT column of current iter.
- *
- * \return TRUE if this iter matches.
- */
-static gboolean gsb_gui_navigation_remove_report_iterator ( GtkTreeModel *tree_model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer data )
-{
- gint report;
-
- gtk_tree_model_get ( GTK_TREE_MODEL ( tree_model ), iter,
- NAVIGATION_REPORT, &report,
- -1 );
-
- if ( report == GPOINTER_TO_INT (data))
- {
- gtk_tree_store_remove ( GTK_TREE_STORE ( tree_model ), iter );
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-
-/**
- * Add an report to the navigation pane.
- *
- * \param report_nb Report ID to add.
- */
-void gsb_gui_navigation_add_report ( gint report_number )
-{
- GtkWidget *navigation_tree_view;
- GtkTreeIter parent, iter;
- GtkTreeSelection *selection;
- GtkTreePath *path;
-
- navigation_tree_view = grisbi_window_get_widget_by_name ( "treeview_left_panel" );
- path = gsb_gui_navigation_get_page_path ( navigation_model, GSB_REPORTS_PAGE );
- gtk_tree_model_get_iter ( GTK_TREE_MODEL( navigation_model ), &parent, path );
- gtk_tree_store_append ( GTK_TREE_STORE ( navigation_model ), &iter, &parent );
- gtk_tree_view_expand_to_path ( GTK_TREE_VIEW ( navigation_tree_view ), path );
-
- gsb_gui_navigation_update_report_iter ( GTK_TREE_MODEL ( navigation_model ), &iter, report_number );
-
- selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW ( navigation_tree_view ) );
- gtk_tree_selection_select_iter ( selection, &iter );
-}
-
-
-
-/**
- * Remove report from the navigation pane.
- *
- * \param report_nb Report ID to add.
- */
-void gsb_gui_navigation_remove_report ( gint report_number )
-{
- gtk_tree_model_foreach ( GTK_TREE_MODEL(navigation_model),
- (GtkTreeModelForeachFunc) gsb_gui_navigation_remove_report_iterator,
- GINT_TO_POINTER ( report_number ) );
-}
-
-
-
-/**
- * Update information for an account in navigation pane.
- *
- * \param account_number Number of the account that has to be updated.
- */
-void gsb_gui_navigation_update_account ( gint account_number )
-{
- gtk_tree_model_foreach ( GTK_TREE_MODEL(navigation_model),
- (GtkTreeModelForeachFunc) gsb_gui_navigation_update_account_iterator,
- GINT_TO_POINTER ( account_number ) );
-}
-
-
-
-/**
- * Update contents of an iter with account data.
- *
- * \param model Pointer to the model of the navigation tree.
- * \param account_iter Iter to update.
- * \param data Number of account as a reference.
- */
-void gsb_gui_navigation_update_account_iter ( GtkTreeModel *model,
- GtkTreeIter *account_iter,
- gint account_number )
-{
- GdkPixbuf * pixbuf = NULL;
-
- pixbuf = gsb_data_account_get_account_icon_pixbuf ( account_number );
-
- gtk_tree_store_set ( GTK_TREE_STORE ( model ), account_iter,
- NAVIGATION_PIX, pixbuf,
- NAVIGATION_PIX_VISIBLE, TRUE,
- NAVIGATION_TEXT, gsb_data_account_get_name ( account_number ),
- NAVIGATION_FONT, 400,
- NAVIGATION_PAGE, GSB_ACCOUNT_PAGE,
- NAVIGATION_ACCOUNT, account_number,
- NAVIGATION_SENSITIVE, !gsb_data_account_get_closed_account ( account_number ),
- NAVIGATION_REPORT, -1,
- -1 );
-}
-
-
-
-/**
- * Iterator that iterates over the navigation pane model and remove
- * iter of account that is equal to `data'.
- *
- * \param tree_model Pointer to the model of the navigation tree.
- * \param path Not used.
- * \param iter Current iter to test.
- * \param data Number of an account to match against the
- * NAVIGATION_ACCOUNT column of current iter.
- *
- * \return TRUE if this iter matches.
- */
-static gboolean gsb_gui_navigation_remove_account_iterator ( GtkTreeModel *tree_model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer data )
-{
- gint account_number;
-
- gtk_tree_model_get ( GTK_TREE_MODEL ( tree_model ),
- iter,
- NAVIGATION_ACCOUNT, &account_number,
- -1 );
-
- if ( account_number == GPOINTER_TO_INT ( data ) )
- {
- gtk_tree_store_remove ( GTK_TREE_STORE ( tree_model ), iter );
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-
-/**
- * Add an account to the navigation pane.
- *
- * \param account_number Account ID to add.
- * \param switch_to_account TRUE to show the account, FALSE to just create it
- */
-void gsb_gui_navigation_add_account ( gint account_number,
- gboolean switch_to_account )
-{
- GtkTreeIter parent, iter;
- GtkTreePath *path;
-
- path = gsb_gui_navigation_get_page_path ( navigation_model, GSB_HOME_PAGE );
- gtk_tree_model_get_iter ( GTK_TREE_MODEL( navigation_model ), &parent, path );
- gtk_tree_store_append ( GTK_TREE_STORE ( navigation_model ), &iter, &parent );
-
- gsb_gui_navigation_update_account_iter ( GTK_TREE_MODEL ( navigation_model ), &iter, account_number );
-
- if ( switch_to_account )
- {
- GtkWidget *navigation_tree_view;
- GtkTreeSelection * selection;
-
- navigation_tree_view = grisbi_window_get_widget_by_name ( "treeview_left_panel" );
- selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW ( navigation_tree_view ) );
- gtk_tree_selection_select_iter ( selection, &iter );
- }
-}
-
-
-
-/**
- * change the list of transactions, according to the new account
- *
- * \param no_account a pointer on the number of the account we want to see
- *
- * \return FALSE
- * */
-gboolean navigation_change_account ( gint new_account )
-{
- gint current_account;
- gchar *tmp_menu_path;
- GrisbiAppConf *conf;
-
- conf = grisbi_app_get_conf ( );
-
- devel_debug_int (new_account);
-
- if ( new_account < 0 )
- return FALSE;
-
- /* the selection on the navigation bar has already changed, so
- * have to use a buffer variable to get the last account */
- current_account = gsb_gui_navigation_get_last_account ();
-
- /* sensitive the last account in the menu */
- tmp_menu_path = g_strconcat (
- "/menubar/EditMenu/MoveToAnotherAccount/",
- gsb_data_account_get_name (current_account),
- NULL );
- gsb_gui_sensitive_menu_item ( tmp_menu_path, TRUE );
- g_free ( tmp_menu_path );
- gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/NewTransaction", TRUE );
-
- /* save the row_align of the last account */
- gsb_data_account_set_row_align ( current_account,
- gsb_transactions_list_get_row_align ( ) );
-
- /* set the appearance of the list according to the new account */
- transaction_list_sort_set_column ( gsb_data_account_get_sort_column ( new_account ),
- gsb_data_account_get_sort_type ( new_account ) );
- gsb_transactions_list_update_tree_view ( new_account, FALSE );
- transaction_list_select ( gsb_data_account_get_current_transaction_number ( new_account ) );
- gsb_transactions_list_set_row_align ( gsb_data_account_get_row_align ( new_account ) );
-
- /* mise en place de la date du dernier relevé */
- gsb_navigation_update_statement_label ( new_account );
-
- tmp_menu_path = g_strconcat (
- "/menubar/EditMenu/MoveToAnotherAccount/",
- gsb_data_account_get_name (new_account),
- NULL );
- gsb_gui_sensitive_menu_item ( tmp_menu_path, FALSE );
- g_free ( tmp_menu_path );
-
- /* Sensitive menu items if something is selected. */
- if ( gsb_data_account_get_current_transaction_number ( new_account ) == -1 )
- gsb_menu_transaction_operations_set_sensitive ( FALSE );
- else
- gsb_menu_transaction_operations_set_sensitive ( TRUE );
-
- /* show or hide the rules button in toolbar */
- if ( gsb_data_import_rule_account_has_rule ( new_account ) )
- gtk_widget_show ( menu_import_rules );
- else
- gtk_widget_hide ( menu_import_rules );
-
- /* Update the title of the file if needed */
- if ( conf->display_grisbi_title == GSB_ACCOUNT_HOLDER )
- grisbi_window_set_active_title ( new_account );
-
- bet_data_select_bet_pages ( new_account );
-
- /* unset the last date written */
- gsb_date_free_last_date ();
-
- return FALSE;
-}
-
-
-/**
- * update the statement label for the given account
- *
- * \param account_number
- *
- * \return
- * */
-void gsb_navigation_update_statement_label ( gint account_number )
-{
- gint reconcile_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 = utils_real_get_string_with_currency ( amount,
- gsb_data_account_get_currency ( account_number ), TRUE );
-
- tmp_str = g_strconcat ( _("Last statement: "), tmp_str1, " - ",
- _("Reconciled balance: "), tmp_str2, NULL );
- gtk_label_set_text ( GTK_LABEL ( label_last_statement ), tmp_str);
- g_free ( tmp_str );
- g_free ( tmp_str1 );
- g_free ( tmp_str2 );
- }
- else if ( amount.mantissa != 0 )
- {
- tmp_str2 = utils_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") );
-}
-
-
-/**
- * Update the account name in the heading bar
- *
- * \param account_number
- *
- * \return
- */
-void gsb_navigation_update_account_label ( gint account_number )
-{
- gchar * title = NULL;
-
- title = g_strconcat ( _("Account"), " : ",
- gsb_data_account_get_name ( account_number ),
- NULL );
- if ( gsb_data_account_get_closed_account ( account_number ) )
- {
- gchar* old_title = title;
-
- title = g_strconcat ( title, " (", _("closed"), ")", NULL );
- g_free ( old_title );
- }
-
- gsb_data_account_colorize_current_balance ( account_number );
- gsb_gui_headings_update_title ( title );
-
- g_free ( title );
-}
-
-
-/**
- * Remove account from the navigation pane.
- *
- * \param account_number Account ID to remove.
- */
-void gsb_gui_navigation_remove_account ( gint account_number )
-{
- gtk_tree_model_foreach ( GTK_TREE_MODEL(navigation_model),
- (GtkTreeModelForeachFunc) gsb_gui_navigation_remove_account_iterator,
- GINT_TO_POINTER ( account_number ) );
-}
-
-
-
-/**
- * Callback executed when the selection of the navigation tree
- * changed.
- * we must write here the changes to do when changing something in that selection,
- * not with a callback "switch-page" on the main notebook
- *
- * \param selection The selection that triggered event.
- * \param model Tree model associated to selection.
- *
- * \return FALSE
- */
-gboolean gsb_gui_navigation_select_line ( GtkTreeSelection *selection,
- GtkTreeModel *model )
-{
- gint account_number, page_number;
- gint report_number;
- gchar *title = NULL;
- gboolean clear_suffix = TRUE;
-
- devel_debug (NULL);
-
- page_number = gsb_gui_navigation_get_current_page ();
- gtk_notebook_set_current_page ( GTK_NOTEBOOK ( gsb_gui_get_general_notebook ( ) ), page_number );
-
- if ( page_number != GSB_ACCOUNT_PAGE )
- {
- gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/NewTransaction", FALSE );
- gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/RemoveAccount", FALSE );
- menus_view_sensitifs ( FALSE );
- }
-
- if ( page_number != GSB_SCHEDULER_PAGE )
- {
- gtk_widget_hide ( scheduler_calendar );
- }
-
- switch ( page_number )
- {
- case GSB_HOME_PAGE:
- notice_debug ("Home page selected");
-
- title = g_strdup(_("My accounts"));
-
- gsb_gui_sensitive_menu_item ( "/menubar/ViewMenu/ShowClosed", TRUE );
-
- /* what to be done if switch to that page */
- mise_a_jour_accueil ( FALSE );
- gsb_form_set_expander_visible ( FALSE, FALSE );
- break;
-
- case GSB_ACCOUNT_PAGE:
- notice_debug ("Account page selected");
-
- menus_view_sensitifs ( TRUE );
- gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/RemoveAccount", TRUE );
-
- account_number = gsb_gui_navigation_get_current_account ();
-
- /* update title now -- different from others */
- gsb_navigation_update_account_label (account_number);
-
- /* what to be done if switch to that page */
- if (account_number >= 0 )
- {
- navigation_change_account ( account_number );
- gsb_account_property_fill_page ();
- clear_suffix = FALSE;
- if ( gsb_data_archive_store_account_have_transactions_visibles ( account_number ) )
- gsb_transaction_list_set_visible_archived_button ( TRUE );
- else
- gsb_transaction_list_set_visible_archived_button ( FALSE );
- }
- gsb_menu_update_accounts_in_menus ();
- gsb_menu_update_view_menu ( account_number );
-
- /* set the form */
- gsb_gui_on_account_switch_page ( GTK_NOTEBOOK ( gsb_gui_on_account_get_notebook ( ) ),
- NULL,
- gtk_notebook_get_current_page ( GTK_NOTEBOOK ( gsb_gui_on_account_get_notebook ( ) ) ),
- NULL );
- /* gsb_form_show ( FALSE ); */
-
- buffer_last_account = account_number;
-
- break;
-
- case GSB_SCHEDULER_PAGE:
- notice_debug ("Scheduler page selected");
-
- title = g_strdup(_("Scheduled transactions"));
-
- /* what to be done if switch to that page */
- /* update the list (can do that because short list, so very fast) */
- gsb_scheduler_list_fill_list (gsb_scheduler_list_get_tree_view ());
- gsb_scheduler_list_set_background_color (gsb_scheduler_list_get_tree_view ());
-
- gsb_scheduler_list_select (gsb_scheduler_list_get_last_scheduled_number ());
-
- /* set the form */
- gsb_form_set_expander_visible (TRUE, FALSE );
- gsb_form_scheduler_clean ();
- gsb_form_show ( FALSE );
-
- /* show the calendar */
- gsb_calendar_update ();
- gtk_widget_show_all ( scheduler_calendar );
-
- /* show menu InitwidthCol */
- gsb_gui_sensitive_menu_item ( "/menubar/ViewMenu/InitwidthCol", TRUE );
- break;
-
- case GSB_PAYEES_PAGE:
- notice_debug ("Payee page selected");
-
- /* what to be done if switch to that page */
- gsb_form_set_expander_visible (FALSE, FALSE );
- payees_fill_list ();
- clear_suffix = FALSE;
- break;
-
- case GSB_SIMULATOR_PAGE:
- notice_debug ("Credits simulator page selected");
-
- 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");
-
- /* what to be done if switch to that page */
- gsb_form_set_expander_visible (FALSE, FALSE );
- categories_fill_list ();
- clear_suffix = FALSE;
- break;
-
- case GSB_BUDGETARY_LINES_PAGE:
- notice_debug ("Budgetary page selected");
-
- /* what to be done if switch to that page */
- gsb_form_set_expander_visible (FALSE, FALSE );
- budgetary_lines_fill_list ();
- clear_suffix = FALSE;
- break;
-
- case GSB_REPORTS_PAGE:
- notice_debug ("Reports page selected");
-
- report_number = gsb_gui_navigation_get_current_report ();
-
- if ( report_number >= 0 )
- title = g_strconcat ( _("Report"), " : ", gsb_data_report_get_report_name (report_number), NULL );
- else
- title = g_strdup(_("Reports"));
-
- /* what to be done if switch to that page */
- gsb_form_set_expander_visible ( FALSE, FALSE );
-
- if ( report_number > 0 )
- gsb_gui_update_gui_to_report ( report_number );
- else
- gsb_gui_unsensitive_report_widgets ();
- break;
-
- default:
- notice_debug ("B0rk page selected");
- title = g_strdup("B0rk");
- break;
- }
-
- /* title is set here if necessary */
- if (title)
- {
- gsb_gui_headings_update_title ( title );
- g_free ( title );
- }
- if (clear_suffix)
- gsb_gui_headings_update_suffix ( "" );
-
- return FALSE;
-}
-
-
-
-/**
- * Set the selection of the navigation list depending on desired
- * page and/or account or report.
- *
- * \param page Page to switch to.
- * \param account_number If page is GSB_ACCOUNT_PAGE, switch to given account.
- *
- * \param report If page is GSB_REPORTS, switch to given report.
- *
- * \return TRUE on success.
- */
-gboolean gsb_gui_navigation_set_selection ( gint page,
- gint account_number,
- gpointer report )
-{
- GtkWidget *navigation_tree_view;
- GtkTreeIter iter;
- GtkTreeSelection *selection;
-
- navigation_tree_view = grisbi_window_get_widget_by_name ( "treeview_left_panel" );
- selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW ( navigation_tree_view ) );
- g_return_val_if_fail ( selection, FALSE );
-
- /* if we select an account, open the expander if necessary */
- if ( page == GSB_ACCOUNT_PAGE )
- {
- GtkTreePath *path;
-
- path = gsb_gui_navigation_get_page_path ( navigation_model, GSB_HOME_PAGE );
- gtk_tree_view_expand_row ( GTK_TREE_VIEW ( navigation_tree_view ), path, TRUE );
- gtk_tree_path_free (path);
- }
-
- gtk_tree_model_get_iter_first ( GTK_TREE_MODEL(navigation_model), &iter );
- gsb_gui_navigation_set_selection_branch ( selection, &iter, page, account_number, report );
-
- return TRUE;
-}
-
-
-/**
- * Set the selection of the navigation list depending on desired page
- * and/or account or report, but only for a branch of the tree.
- *
- * \param selection Selection to set.
- * \param iter Current iter to iterate over.
- * \param page Page to switch to.
- * \param account_number If page is GSB_ACCOUNT_PAGE, switch to given account.
- * \param report If page is GSB_REPORTS, switch to given report.
- *
- * \return TRUE on success.
- */
-void gsb_gui_navigation_set_selection_branch ( GtkTreeSelection *selection,
- GtkTreeIter *iter,
- gint page,
- gint account_number,
- gpointer report )
-{
- do
- {
- gint iter_page, iter_account_nb;
- gpointer iter_report;
-
- gtk_tree_model_get ( GTK_TREE_MODEL ( navigation_model ), iter,
- NAVIGATION_REPORT, &iter_report,
- NAVIGATION_ACCOUNT, &iter_account_nb,
- NAVIGATION_PAGE, &iter_page,
- -1 );
-
- if ( iter_page == page
- &&
- ! ( page == GSB_ACCOUNT_PAGE
- &&
- iter_account_nb != account_number )
- &&
- ! ( page == GSB_REPORTS_PAGE
- &&
- iter_report != report ) )
- {
- gtk_tree_selection_select_iter ( selection, iter );
- }
-
- if ( gtk_tree_model_iter_has_child ( GTK_TREE_MODEL ( navigation_model ), iter ) )
- {
- GtkTreeIter child;
-
- gtk_tree_model_iter_children ( GTK_TREE_MODEL ( navigation_model ), &child, iter );
- gsb_gui_navigation_set_selection_branch ( selection, &child,
- page, account_number, report );
- }
- }
- while ( gtk_tree_model_iter_next ( GTK_TREE_MODEL ( navigation_model ), iter ) );
-
- return;
-}
-
-
-
-/**
- *
- *
- *
- */
-gboolean gsb_gui_navigation_select_prev ( void )
-{
- GtkWidget *navigation_tree_view;
- GtkTreeSelection * selection;
- GtkTreePath * path;
- GtkTreeModel * model;
- GtkTreeIter iter;
-
- navigation_tree_view = grisbi_window_get_widget_by_name ( "treeview_left_panel" );
- selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW(navigation_tree_view) );
- g_return_val_if_fail ( selection, FALSE );
-
- if ( !gtk_tree_selection_get_selected ( selection, &model, &iter ) )
- return TRUE;
- path = gtk_tree_model_get_path ( model, &iter );
- g_return_val_if_fail ( path, TRUE );
-
- if ( !gtk_tree_path_prev ( path ) )
- {
- if ( gtk_tree_path_get_depth ( path ) > 1 )
- gtk_tree_path_up ( path );
- }
- else
- {
- gtk_tree_model_get_iter ( model, &iter, path );
- /* if row has children and if row is expanded, go to the last child */
- if ( gtk_tree_model_iter_has_child ( model, &iter )
- && gtk_tree_view_row_expanded ( GTK_TREE_VIEW ( navigation_tree_view ), path ) )
- {
- GtkTreeIter parent = iter;
-
- gtk_tree_model_iter_nth_child ( model, &iter, &parent,
- gtk_tree_model_iter_n_children ( model,
- &parent ) - 1 );
- path = gtk_tree_model_get_path ( model, &iter );
- }
- }
-
- gtk_tree_selection_select_path ( selection, path );
- gtk_tree_path_free ( path );
-
- return FALSE;
-}
-
-
-
-/**
- *
- *
- *
- */
-gboolean gsb_gui_navigation_select_next ( void )
-{
- GtkWidget *navigation_tree_view;
- GtkTreeSelection *selection;
- GtkTreePath *path;
- GtkTreeModel *model;
- GtkTreeIter iter;
-
- navigation_tree_view = grisbi_window_get_widget_by_name ( "treeview_left_panel" );
- selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW(navigation_tree_view) );
- g_return_val_if_fail ( selection, FALSE );
-
- if ( !gtk_tree_selection_get_selected ( selection, &model, &iter ) )
- return TRUE;
-
- path = gtk_tree_model_get_path ( model, &iter );
- g_return_val_if_fail ( path, TRUE );
-
- if ( gtk_tree_model_iter_has_child ( model, &iter ) )
- {
- if ( gtk_tree_view_row_expanded ( GTK_TREE_VIEW ( navigation_tree_view ), path ) )
- gtk_tree_path_down ( path );
- else
- gtk_tree_path_next ( path );
- }
- else
- {
- if ( !gtk_tree_model_iter_next ( model, &iter ) )
- {
- if ( gtk_tree_path_get_depth ( path ) > 1 )
- {
- gtk_tree_path_up ( path );
- gtk_tree_path_next ( path );
- }
- else
- {
- gtk_tree_path_free ( path );
- path = gtk_tree_path_new_first ( );
- }
- }
- else
- {
- path = gtk_tree_model_get_path ( model, &iter );
- }
- }
-
- gtk_tree_selection_select_path ( selection, path );
- gtk_tree_path_free ( path );
-
- return FALSE;
-}
-
-
-
-/**
- * Check the key pressed on the navigation tree view,
- * if need, stop the event to do another thing with that key
- *
- * \param tree_view the navigation tree_view
- * \param ev the key event pressed
- * \param model
- *
- * \return FALSE : the signal continue / TRUE : the signal is stopped here
- * */
-gboolean gsb_gui_navigation_check_key_press ( GtkWidget *tree_view,
- GdkEventKey *ev,
- GtkTreeModel *model )
-{
- gint page;
- GtkTreeIter iter;
- GtkTreePath *path;
-
- if ( !gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( tree_view ) ),
- NULL,
- &iter ) )
- return FALSE;
-
- gtk_tree_model_get (model, &iter, NAVIGATION_PAGE, &page, -1 );
- path = gtk_tree_model_get_path ( GTK_TREE_MODEL ( model ), &iter );
-
- switch ( page )
- {
- case GSB_HOME_PAGE:
- case GSB_REPORTS_PAGE:
- /* expand or collapse subtree */
- if (ev -> keyval == GDK_KEY_Right)
- gtk_tree_view_expand_row ( GTK_TREE_VIEW ( tree_view ), path, FALSE );
- if (ev -> keyval == GDK_KEY_Left)
- gtk_tree_view_collapse_row ( GTK_TREE_VIEW ( tree_view ), path );
- break;
-
- case GSB_ACCOUNT_PAGE:
- /* when come here, if we press the right key, give the focus to the list */
- if (ev -> keyval == GDK_KEY_Right)
- gtk_widget_grab_focus (gsb_transactions_list_get_tree_view ());
- break;
-
- case GSB_PAYEES_PAGE:
- /* nothing to do here for now */
- break;
-
- case GSB_CATEGORIES_PAGE:
- /* nothing to do here for now */
- break;
-
- case GSB_BUDGETARY_LINES_PAGE:
- /* nothing to do here for now */
- break;
-
- case GSB_SCHEDULER_PAGE:
- /* when come here, if we press the right key, give the focus to the list */
- if (ev -> keyval == GDK_KEY_Right)
- gtk_widget_grab_focus (gsb_scheduler_list_get_tree_view ());
- break;
- }
-
- gtk_tree_path_free ( path );
-
- return FALSE;
-}
-
-
-
-/**
- * Check mouse scrolling on the navigation tree view.
- *
- * \param tree_view the navigation tree_view
- * \param ev the scroll event
- *
- * \return FALSE : the signal continue / TRUE : the signal is stopped here
- * */
-gboolean gsb_gui_navigation_check_scroll ( GtkWidget *tree_view,
- GdkEventScroll *ev )
-{
- switch ( ev -> direction )
- {
- case GDK_SCROLL_UP:
- gsb_gui_navigation_select_prev ();
- break;
-
- case GDK_SCROLL_DOWN:
- gsb_gui_navigation_select_next ();
- break;
-
- default:
- break;
- }
-
- return FALSE;
-}
-
-
-
-/**
- * Fill the drag & drop structure with the path of selected column.
- * This is an interface function called from GTK, much like a callback.
- *
- * \param drag_source Not used.
- * \param path Original path for the gtk selection.
- * \param selection_data A pointer to the drag & drop structure.
- *
- * \return FALSE, to allow future processing by the callback chain.
- */
-gboolean navigation_tree_drag_data_get ( GtkTreeDragSource *drag_source,
- GtkTreePath *path,
- GtkSelectionData *selection_data )
-{
- gchar *tmpstr = gtk_tree_path_to_string (path);
- gchar *tmpstr2 = g_strdup_printf ( "Orig path : %s", tmpstr);
- devel_debug (tmpstr2);
- g_free (tmpstr);
- g_free (tmpstr2);
-
- if ( path )
- {
- gtk_tree_set_row_drag_data ( selection_data, GTK_TREE_MODEL ( navigation_model ), path );
- }
-
- return FALSE;
-}
-
-
-
-/**
- *
- *
- */
-gboolean navigation_drag_data_received ( GtkTreeDragDest *drag_dest,
- GtkTreePath *dest_path,
- GtkSelectionData *selection_data )
-{
- gchar *tmpstr = gtk_tree_path_to_string (dest_path);
- gchar *tmpstr2 = g_strdup_printf ( "Dest path : %s", tmpstr);
- devel_debug (tmpstr2);
- g_free (tmpstr);
- g_free (tmpstr2);
-
- if ( dest_path && selection_data )
- {
- GtkTreeModel *model;
- GtkTreeIter iter;
- GtkTreePath *orig_path;
- gint src_report, dst_report = -1;
- gint src_account, dst_account = -1;
- gint src_ordre, dst_ordre = -1;
-
- gtk_tree_get_row_drag_data (selection_data, &model, &orig_path);
-
- if ( gtk_tree_model_get_iter ( GTK_TREE_MODEL(model), &iter, dest_path ) )
- gtk_tree_model_get (model , &iter,
- NAVIGATION_REPORT, &dst_report,
- NAVIGATION_ACCOUNT, &dst_account,
- NAVIGATION_ORDRE, &dst_ordre,
- -1 );
-
- if ( gtk_tree_model_get_iter ( GTK_TREE_MODEL(model), &iter, orig_path ) )
- gtk_tree_model_get ( model, &iter,
- NAVIGATION_REPORT, &src_report,
- NAVIGATION_ACCOUNT, &src_account,
- NAVIGATION_ORDRE, &src_ordre,
- -1 );
-
- /* at this stage, src_account or src_report contains the account/report we move
- * and dst_account/dst_report the account/report destination we want to move before,
- * or dst_account/dst_report can be -1 to set at the end of the list */
- if ( src_account != -1 )
- /* we moved an account */
- gsb_data_account_move_account ( src_account, dst_account );
- if ( src_report != -1 )
- /* we moved a report */
- gsb_data_report_move_report ( src_report, dst_report );
- if ( src_ordre != -1 )
- /* we moved a page */
- gsb_gui_navigation_move_ordre ( src_ordre, dst_ordre );
-
- /* update the tree view */
- gtk_tree_sortable_set_sort_column_id ( GTK_TREE_SORTABLE ( model ),
- NAVIGATION_ORDRE, GTK_SORT_ASCENDING );
- gtk_tree_sortable_set_sort_func ( GTK_TREE_SORTABLE ( model ),
- NAVIGATION_ORDRE, navigation_sort_column,
- NULL, NULL );
-
- /* update the order of accounts in first page */
- mise_a_jour_liste_comptes_accueil = TRUE;
-
- gsb_file_set_modified ( TRUE );
- }
- return FALSE;
-}
-
-
-
-/**
- *
- *
- */
-gboolean navigation_row_drop_possible ( GtkTreeDragDest *drag_dest,
- GtkTreePath *dest_path,
- GtkSelectionData *selection_data )
-{
- if ( dest_path && selection_data )
- {
- GtkTreePath *orig_path;
- GtkTreeModel *model;
- gint src_report, dst_report = -1;
- gint src_account, dst_account = -1;
- gint src_ordre, dst_ordre = -1;
- GtkTreeIter iter;
-
- gtk_tree_get_row_drag_data ( selection_data, &model, &orig_path );
-
- if ( gtk_tree_model_get_iter ( model, &iter, orig_path ) )
- gtk_tree_model_get ( model, &iter,
- NAVIGATION_REPORT, &src_report,
- NAVIGATION_ACCOUNT, &src_account,
- NAVIGATION_ORDRE, &src_ordre,
- -1 );
-
- if ( gtk_tree_model_get_iter ( model, &iter, dest_path ) )
- gtk_tree_model_get ( model, &iter,
- NAVIGATION_REPORT, &dst_report,
- NAVIGATION_ACCOUNT, &dst_account,
- NAVIGATION_ORDRE, &dst_ordre,
- -1 );
-
- /* We handle an account */
- if ( src_account >= 0 && dst_account >= 0 )
- {
- return TRUE;
- }
- /* We handle a report */
- else if ( src_report > 0 && dst_report > 0 )
- {
- return TRUE;
- }
- else if ( src_ordre >= 0 && dst_ordre >= 0 )
- {
- return TRUE;
- }
-
- }
-
- return FALSE;
-}
-
-
-/**
- * Met à jour la page d'accueil immédiatement si elle est affichée sinon plus tard
- *
- */
-void gsb_gui_navigation_update_home_page ( void )
-{
- if ( gsb_gui_navigation_get_current_page ( ) == GSB_HOME_PAGE )
- mise_a_jour_accueil ( TRUE );
- else
- mise_a_jour_liste_comptes_accueil = TRUE;
-}
-
-
-/**
- *
- *
- *
- */
-GtkWidget *gsb_gui_navigation_get_tree_view ( void )
-{
- GtkWidget *navigation_tree_view;
-
- navigation_tree_view = grisbi_window_get_widget_by_name ( "treeview_left_panel" );
- return navigation_tree_view;
-}
-
-
-/**
- * change the position of an item in the list of pages
- *
- * \param src_ordre the position of item we want to move
- * \param dest_ordre the position before we want to move, or -1 to set at the end of list
- *
- * \return FALSE
- * */
-gboolean gsb_gui_navigation_move_ordre ( gint src_ordre,
- gint dst_ordre )
-{
- GQueue *tmp_queue;
- GList *dst_list;
- gint i;
- struct_page *page = NULL;
-
- tmp_queue = pages_list;
- for ( i = 0 ; i < tmp_queue -> length ; i++ )
- {
- page = g_queue_peek_nth ( tmp_queue, i );
- if ( page -> ordre == src_ordre )
- break;
- }
-
- g_queue_pop_nth ( pages_list, i );
-
- dst_list = g_queue_peek_nth_link ( pages_list, dst_ordre );
- if ( dst_list )
- g_queue_insert_before ( pages_list, dst_list, page );
- else
- g_queue_push_tail ( tmp_queue, page );
-
- /* on reconstruit le modèle */
- gtk_tree_store_clear ( GTK_TREE_STORE ( navigation_model ) );
-
- tmp_queue = pages_list;
-
- for ( i = 0 ; i < tmp_queue -> length ; i++ )
- {
- page = g_queue_peek_nth ( tmp_queue, i );
- page -> ordre = i;
- gsb_gui_navigation_set_navigation_pages ( navigation_model, page -> type_page, i );
- }
-
- return FALSE;
-}
-
-
-/**
- *
- *
- *
- */
-GtkTreeModel *gsb_gui_navigation_get_model ( void )
-{
- if ( navigation_model )
- return navigation_model;
- else
- return NULL;
-}
-
-
-/**
- *
- *
- *
- */
-gboolean gsb_gui_navigation_set_page_list_order ( const gchar *order_list )
-{
- gchar **pointeur_char;
- gint i;
- gint nbre_pages;
-
- if ( pages_list )
- gsb_gui_navigation_clear_pages_list ( );
-
- pointeur_char = g_strsplit ( order_list, "-", 0 );
-
- nbre_pages = g_strv_length ( pointeur_char );
-
- if ( nbre_pages != navigation_nbre_pages )
- {
- g_strfreev ( pointeur_char );
- pointeur_char = g_strsplit ( default_navigation_order_list, "-", 0 );
- nbre_pages = navigation_nbre_pages;
- }
-
- for ( i = 0 ; i < nbre_pages ; i++ )
- {
- struct_page *page;
-
- page = g_malloc0 ( sizeof ( struct_page ) );
- page -> ordre = i;
- page -> type_page = utils_str_atoi ( pointeur_char[i] );
-
- g_queue_push_tail ( pages_list, page );
- }
-
- g_strfreev ( pointeur_char );
-
- return TRUE;
-}
-
-
-/**
- *
- *
- *
- */
-void gsb_gui_navigation_init_pages_list ( void )
-{
- GQueue *new_queue;
-
- new_queue = g_queue_new ( );
- pages_list = new_queue;
- gsb_gui_navigation_set_page_list_order ( default_navigation_order_list );
-}
-
-
-/**
- *
- *
- *
- */
-void gsb_gui_navigation_clear_pages_list ( void )
-{
- g_queue_foreach ( pages_list, (GFunc) g_free, NULL );
- g_queue_clear ( pages_list );
-}
-
-
-/**
- *
- *
- *
- */
-void gsb_gui_navigation_free_pages_list ( void )
-{
- if ( pages_list == NULL )
- return;
-
- g_queue_foreach ( pages_list, (GFunc) g_free, NULL );
- g_queue_free ( pages_list );
-}
-
-
-/**
- * return a pointer on the first element of g_queue of navigation pages
- *
- * \param none
- *
- * \return a GList
- * */
-GQueue *gsb_gui_navigation_get_pages_list ( void )
-{
- return pages_list;
-}
-
-
-/**
- *
- *
- *
- */
-void gsb_gui_navigation_set_navigation_pages ( GtkTreeModel *model,
- gint type_page,
- gint ordre )
-{
- GdkPixbuf *pixbuf;
- GtkTreeIter iter;
- gchar *title = NULL;
- gchar *tmp_str = NULL;
-
- switch ( type_page )
- {
- case GSB_HOME_PAGE :
- tmp_str = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "ac_home.png", NULL );
- title = g_strdup ( _("Accounts") );
- break;
- case GSB_SCHEDULER_PAGE :
- tmp_str = g_build_filename( gsb_dirs_get_pixmaps_dir ( ), "scheduler.png", NULL );
- title = g_strdup ( _("Scheduler") );
- break;
- case GSB_PAYEES_PAGE :
- tmp_str = g_build_filename( gsb_dirs_get_pixmaps_dir ( ), "payees.png", NULL );
- title = g_strdup ( _("Payees") );
- break;
- case GSB_SIMULATOR_PAGE :
- tmp_str = g_build_filename( gsb_dirs_get_pixmaps_dir ( ), "ac_liability.png", NULL );
- title = g_strdup ( _("Credits simulator") );
- break;
- case GSB_CATEGORIES_PAGE :
- tmp_str = g_build_filename( gsb_dirs_get_pixmaps_dir ( ), "categories.png", NULL );
- title = g_strdup ( _("Categories") );
- break;
- case GSB_BUDGETARY_LINES_PAGE :
- tmp_str = g_build_filename( gsb_dirs_get_pixmaps_dir ( ), "budgetary_lines.png", NULL );
- title = g_strdup ( _("Budgetary lines") );
- break;
- case GSB_REPORTS_PAGE :
- tmp_str = g_build_filename( gsb_dirs_get_pixmaps_dir ( ), "reports.png", NULL );
- title = g_strdup ( _("Reports") );
- break;
- }
-
- pixbuf = gdk_pixbuf_new_from_file ( tmp_str , NULL );
- gtk_tree_store_append ( GTK_TREE_STORE ( model ), &iter, NULL );
- gtk_tree_store_set( GTK_TREE_STORE ( navigation_model ), &iter,
- NAVIGATION_PIX, pixbuf,
- NAVIGATION_TEXT, title,
- NAVIGATION_PIX_VISIBLE, TRUE,
- NAVIGATION_FONT, 800,
- NAVIGATION_PAGE, type_page,
- NAVIGATION_ACCOUNT, -1,
- NAVIGATION_REPORT, -1,
- NAVIGATION_SENSITIVE, 1,
- NAVIGATION_ORDRE, ordre,
- -1);
-
- g_free ( tmp_str );
- g_free ( title );
-
- switch ( type_page )
- {
- case GSB_HOME_PAGE :
- gsb_gui_navigation_create_account_list ( GTK_TREE_MODEL( model ) );
- break;
- case GSB_REPORTS_PAGE :
- gsb_gui_navigation_create_report_list ( GTK_TREE_MODEL( model) );
- break;
- }
-
-}
-
-
-/**
- * renvoie le path d'un item de la vue navigation
- *
- *
- */
-GtkTreePath *gsb_gui_navigation_get_page_path ( GtkTreeModel *model, gint type_page )
-{
- GtkTreeIter iter;
-
- if ( gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( model ), &iter ) )
- {
- do
- {
- gint tmp_type_page;
- GtkTreePath *path = NULL;
-
- gtk_tree_model_get ( GTK_TREE_MODEL( model ), &iter, NAVIGATION_PAGE, &tmp_type_page, -1 );
- if ( tmp_type_page == type_page)
- {
- path = gtk_tree_model_get_path ( GTK_TREE_MODEL ( model ), &iter );
- return path;
- }
- }
- while ( gtk_tree_model_iter_next ( GTK_TREE_MODEL ( model ), &iter ) );
- }
-
- return NULL;
-}
-
-
-/**
- * called when we press a button on the list
- *
- * \param tree_view
- * \param ev
- *
- * \return FALSE
- * */
-gboolean gsb_gui_navigation_button_press ( GtkWidget *tree_view,
- GdkEventButton *ev,
- gpointer null )
-{
- /* show the popup */
- if ( ev -> button == RIGHT_BUTTON )
- {
- GtkTreePath *path = NULL;
-
- if ( gtk_tree_view_get_path_at_pos ( GTK_TREE_VIEW ( tree_view ), ev -> x, ev -> y, &path, NULL, NULL, NULL ) )
- {
- gsb_gui_navigation_context_menu ( tree_view, path );
- gtk_tree_path_free ( path );
-
- update_gui ( );
-
- return FALSE;
- }
- }
- if ( ev -> type == GDK_2BUTTON_PRESS )
- {
- GtkTreePath *path = NULL;
-
- if ( gtk_tree_view_get_path_at_pos ( GTK_TREE_VIEW ( tree_view ), ev -> x, ev -> y, &path, NULL, NULL, NULL ) )
- {
- if ( gtk_tree_view_row_expanded ( GTK_TREE_VIEW ( tree_view ), path ) )
- gtk_tree_view_collapse_row ( GTK_TREE_VIEW ( tree_view ), path );
- else
- gtk_tree_view_expand_row ( GTK_TREE_VIEW ( tree_view ), path, FALSE );
-
- gtk_tree_path_free ( path );
-
- return FALSE;
- }
- }
-
- return FALSE;
-}
-
-
-/**
- * Pop up a menu with several actions to apply to array_list.
- *
- * \param gtk_tree_view
- *
- */
-void gsb_gui_navigation_context_menu ( GtkWidget *tree_view,
- GtkTreePath *path )
-{
- GtkWidget *image;
- GtkWidget *menu = NULL;
- GtkWidget *menu_item;
- GtkTreeModel *model;
- GtkTreeIter iter;
- gchar *tmp_str;
- gint type_page;
- gint account_number;
- gint report_number;
-
- model = gtk_tree_view_get_model ( GTK_TREE_VIEW ( tree_view ) );
-
- gtk_tree_model_get_iter ( model, &iter, path );
- gtk_tree_model_get ( model, &iter,
- NAVIGATION_PAGE, &type_page,
- NAVIGATION_ACCOUNT, &account_number,
- NAVIGATION_REPORT, &report_number,
- -1 );
-
- switch ( type_page )
- {
- case GSB_HOME_PAGE :
- case GSB_ACCOUNT_PAGE :
- menu = gtk_menu_new ();
- menu_item = gtk_image_menu_item_new_with_label ( _("New account") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
- gtk_image_new_from_stock ( GTK_STOCK_NEW, GTK_ICON_SIZE_MENU ) );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( gsb_assistant_account_run ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
- if ( account_number == -1 )
- break;
-
- /* Separator */
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), gtk_separator_menu_item_new() );
-
- menu_item = gtk_image_menu_item_new_with_label ( _("Remove this account") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
- gtk_image_new_from_stock ( GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU ) );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( gsb_account_delete ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
-
- break;
- case GSB_PAYEES_PAGE :
- menu = gtk_menu_new ();
- tmp_str = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "new-payee.png", NULL);
- image = gtk_image_new_from_file ( tmp_str );
- g_free ( tmp_str );
- menu_item = gtk_image_menu_item_new_with_label ( _("New payee") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ), image );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( payees_new_payee ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
-
- menu_item = gtk_image_menu_item_new_with_label ( _("Delete selected payee") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
- gtk_image_new_from_stock ( GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU ) );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( payees_delete_payee ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
-
- if ( gtk_tree_selection_count_selected_rows ( gtk_tree_view_get_selection (
- GTK_TREE_VIEW ( payees_get_tree_view ( ) ) ) ) )
- gtk_widget_set_sensitive ( menu_item, TRUE );
- else
- gtk_widget_set_sensitive ( menu_item, FALSE );
-
- menu_item = gtk_image_menu_item_new_with_label ( _("Edit selected payee") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
- gtk_image_new_from_stock ( GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU ) );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( payees_edit_payee ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
-
- if ( gtk_tree_selection_count_selected_rows ( gtk_tree_view_get_selection (
- GTK_TREE_VIEW ( payees_get_tree_view ( ) ) ) ) )
- gtk_widget_set_sensitive ( menu_item, TRUE );
- else
- gtk_widget_set_sensitive ( menu_item, FALSE );
-
- /* Separator */
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), gtk_separator_menu_item_new() );
-
- tmp_str = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "new-payee.png", NULL);
- image = gtk_image_new_from_file ( tmp_str );
- g_free ( tmp_str );
- menu_item = gtk_image_menu_item_new_with_label ( _("Manage payees") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ), image );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( payees_manage_payees ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
-
- menu_item = gtk_image_menu_item_new_with_label ( _("Remove unused payees") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
- gtk_image_new_from_stock ( GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU ) );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( payees_remove_unused_payees ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
- break;
- case GSB_CATEGORIES_PAGE :
- menu = gtk_menu_new ();
- tmp_str = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "new-categ.png", NULL);
- image = gtk_image_new_from_file ( tmp_str );
- g_free ( tmp_str );
- menu_item = gtk_image_menu_item_new_with_label ( _("New category") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ), image );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( categories_new_category ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
-
- menu_item = gtk_image_menu_item_new_with_label ( _("Delete selected category") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
- gtk_image_new_from_stock ( GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU ) );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( categories_delete_category ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
-
- if ( gtk_tree_selection_count_selected_rows ( gtk_tree_view_get_selection (
- GTK_TREE_VIEW ( categories_get_tree_view ( ) ) ) ) )
- gtk_widget_set_sensitive ( menu_item, TRUE );
- else
- gtk_widget_set_sensitive ( menu_item, FALSE );
-
- menu_item = gtk_image_menu_item_new_with_label ( _("Edit selected category") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
- gtk_image_new_from_stock ( GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU ) );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( categories_edit_category ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
-
- if ( gtk_tree_selection_count_selected_rows ( gtk_tree_view_get_selection (
- GTK_TREE_VIEW ( categories_get_tree_view ( ) ) ) ) )
- gtk_widget_set_sensitive ( menu_item, TRUE );
- else
- gtk_widget_set_sensitive ( menu_item, FALSE );
-
- /* Separator */
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), gtk_separator_menu_item_new() );
-
- menu_item = gtk_image_menu_item_new_with_label ( _("Import a file of categories (.cgsb)") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
- gtk_image_new_from_stock ( GTK_STOCK_NEW, GTK_ICON_SIZE_MENU ) );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( categories_importer_list ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
-
- menu_item = gtk_image_menu_item_new_with_label ( _("Export the list of categories (.cgsb)") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
- gtk_image_new_from_stock ( GTK_STOCK_NEW, GTK_ICON_SIZE_MENU ) );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( categories_exporter_list ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
- break;
- case GSB_BUDGETARY_LINES_PAGE :
- menu = gtk_menu_new ();
- tmp_str = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "new-ib.png", NULL);
- image = gtk_image_new_from_file ( tmp_str );
- g_free ( tmp_str );
- menu_item = gtk_image_menu_item_new_with_label ( _("New budgetary line") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ), image );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( budgetary_lines_new_budgetary_line ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
-
- menu_item = gtk_image_menu_item_new_with_label ( _("Delete selected budgetary line") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
- gtk_image_new_from_stock ( GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU ) );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( budgetary_lines_delete_budgetary_line ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
-
- if ( gtk_tree_selection_count_selected_rows ( gtk_tree_view_get_selection (
- GTK_TREE_VIEW ( budgetary_lines_get_tree_view ( ) ) ) ) )
- gtk_widget_set_sensitive ( menu_item, TRUE );
- else
- gtk_widget_set_sensitive ( menu_item, FALSE );
-
- menu_item = gtk_image_menu_item_new_with_label ( _("Edit selected budgetary line") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
- gtk_image_new_from_stock ( GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU ) );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( budgetary_lines_edit_budgetary_line ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
-
- if ( gtk_tree_selection_count_selected_rows ( gtk_tree_view_get_selection (
- GTK_TREE_VIEW ( budgetary_lines_get_tree_view ( ) ) ) ) )
- gtk_widget_set_sensitive ( menu_item, TRUE );
- else
- gtk_widget_set_sensitive ( menu_item, FALSE );
-
- /* Separator */
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), gtk_separator_menu_item_new() );
-
- menu_item = gtk_image_menu_item_new_with_label ( _("Import a file of budgetary lines (.igsb)") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
- gtk_image_new_from_stock ( GTK_STOCK_NEW, GTK_ICON_SIZE_MENU ) );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( budgetary_lines_importer_list ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
-
- menu_item = gtk_image_menu_item_new_with_label ( _("Export the list of budgetary lines (.igsb)") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
- gtk_image_new_from_stock ( GTK_STOCK_NEW, GTK_ICON_SIZE_MENU ) );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( budgetary_lines_exporter_list ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
- break;
- case GSB_REPORTS_PAGE :
- menu = gtk_menu_new ();
- tmp_str = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "new-report.png", NULL);
- image = gtk_image_new_from_file ( tmp_str );
- g_free ( tmp_str );
- menu_item = gtk_image_menu_item_new_with_label ( _("New report") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ), image );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( ajout_etat ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
- if ( report_number == -1 )
- break;
- /* Separator */
- gt Separator */ r == -1 ) MENU_SHELL ( menu ), menu_item ); ), image ); NULL); s (.igsb)") ); LL ) ) ewClass)) */ 0.116 79.1397 452.069 86.7836 439.542 94.0777C 431.026 99.0367 424.039 102.006 418.372 102.989C 408.222 105.278 402.304 102.038 402.304 102.038C 402.304 102.038 398.244 96.5717 397.68 94.3187C 397.599 93.9916 405.593 95.4567 414.434 93.8406C 420.781 92.6807 427.732 89.1977 434.674 85.2647C 444.488 79.7067 452.785 72.3438 457.511 65.9067C 460.786 61.4458 461.946 57.1367 462.354 55.3927z" .469 473.638 174.66 476.954 195.11z" 00.276L 739.074 500.276C 759.951 500.276 772.588 497.101 780.28 491.704C 787.789 486.466 790.719 478.846 790.719 470.274C 790.719 452.654 775.701 443.923 758.669 441.701L 758.67 441.384C 776.617 438.05 785.774 429.795 785.774 416.779C 785.774 397.413 768.01 390.428 739.074 390.428L 678.638 390.428z" 448.248 397.73 457.588 403.603 457.588 419.795C 457.588 432.97 451.728 442.495 433.231 442.495L 424.074 442.495L 424.074 403.921z
" 0.917 219.279 370.917 210.374 370.917C 211.781 365.753 214.086 356.583 221.45 328.186C 308.695 328.193 287.908 328.376 738.419 328.186C 758.428 305.835 765.635 297.207 781.185 279.244C 556.029 279.244 460.148 279.244 242.306 279.662C 245.081 270.432 254.544 256.995 269.786 241.767C 291.182 220.388 321.858 195.015 363.508 173.254C 423.726 141.792 503.084 117.043 587.218 117.712C 760.185 120.633 849.057 201.069 849.057 201.069z" ò* Ëøÿ pKáò* @Åøÿ Äøÿ kP1ò* 5 6 7 8 : < = > ? @ B D Ëøÿ Ëøÿ à}ªò* Ëøÿ u:1ò* URò* ÀÃøÿ }ò* e91ò* URò* Õ_ at fÆS Qöl±íÁyò* Ëøÿ à}ªò* PÆøÿ Åøÿ kP1ò* u]ÞÓ 4Q ÷U^Qʧ ¶uª¹ñìò*ÄvËøÿ Ëøÿ HÎvò* ³ò* ÀÌøÿ ¦
ò* ¦
ò* f°ò* OËøÿ Ìøÿ 8Ëøÿ Çøÿ Nò* u:1ò* ØNò* Îøÿ ¢
ò* ÐÌøÿ `Èøÿ
ÿÿÿÿÿÿÿÿ¢
ò* Ëøÿ k_menu_shell_append ( GTK_MENU_SHELL ( menu ), gtk_separator_menu_item_new() );
-
- menu_item = gtk_image_menu_item_new_with_label ( _("Remove this report") );
- gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),
- gtk_image_new_from_stock ( GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU ) );
- g_signal_connect ( G_OBJECT ( menu_item ),
- "activate",
- G_CALLBACK ( efface_etat ),
- NULL );
- gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), menu_item );
-
- break;
- }
-
- /* Finish all. */
- if ( menu )
- {
- gtk_widget_show_all ( menu );
- gtk_menu_popup ( GTK_MENU( menu ), NULL, NULL, NULL, NULL, 3, gtk_get_current_event_time ( ) );
- }
-}
-
-
-void gsb_gui_navigation_activate_expander ( GtkTreeView *tree_view,
- GtkTreeIter *iter,
- GtkTreePath *path,
- gpointer user_data )
-{
- GtkTreeSelection *selection;
- GtkTreeModel *model;
- GtkTreeIter iter_selected;
- GtkTreePath *path_selected = NULL;
- gint type_page;
- gint etat_expander;
-
- etat_expander = GPOINTER_TO_INT ( user_data );
- selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW ( tree_view ) );
- if ( gtk_tree_selection_get_selected ( selection, &model, &iter_selected ) )
- path_selected = gtk_tree_model_get_path ( model, &iter_selected);
-
- gtk_tree_model_get ( model, iter, NAVIGATION_PAGE, &type_page, -1 );
-
- switch ( type_page )
- {
- case GSB_HOME_PAGE :
- case GSB_ACCOUNT_PAGE :
- account_expander = etat_expander;
- break;
- case GSB_REPORTS_PAGE :
- report_expander = etat_expander;
- break;
- }
-
- if ( etat_expander == 0 && path_selected == NULL )
- gtk_tree_selection_select_iter ( selection, iter );
-}
-
-
-/**
- *
- *
- *
- */
-
-
-/* Local Variables: */
-/* c-basic-offset: 4 */
-/* End: */
diff --git a/src/navigation.h b/src/navigation.h
deleted file mode 100644
index d0fe439..0000000
--- a/src/navigation.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef NAVIGATION_H
-#define NAVIGATION_H
-
-#include <gtk/gtk.h>
-
-/** \struct describe a page
- * */
-typedef struct
-{
- gint ordre;
- gint type_page; /* GSB_GENERAL_NOTEBOOK_PAGES */
-} struct_page;
-
-
-/* START_INCLUDE_H */
-/* END_INCLUDE_H */
-
-
-/* START_DECLARATION */
-void gsb_gui_navigation_add_account ( gint account_number,
- gboolean switch_to_account );
-void gsb_gui_navigation_add_report ( gint report_number );
-gboolean gsb_gui_navigation_check_scroll ( GtkWidget *tree_view,
- GdkEventScroll *ev );
-void gsb_gui_navigation_create_account_list ( GtkTreeModel *model );
-void gsb_gui_navigation_create_navigation_pane ( void );
-void gsb_gui_navigation_free_pages_list ( void );
-gint gsb_gui_navigation_get_current_account ( void );
-gint gsb_gui_navigation_get_current_page ( void );
-gint gsb_gui_navigation_get_current_report ( void );
-gint gsb_gui_navigation_get_last_account ( void );
-GtkTreeModel *gsb_gui_navigation_get_model ( void );
-GQueue *gsb_gui_navigation_get_pages_list ( void );
-GtkWidget *gsb_gui_navigation_get_tree_view ( void );
-void gsb_gui_navigation_init_pages_list ( void );
-void gsb_gui_navigation_remove_account ( gint account_number );
-void gsb_gui_navigation_remove_report ( gint report_number );
-gboolean gsb_gui_navigation_select_next ( void );
-gboolean gsb_gui_navigation_select_prev ( void );
-gboolean gsb_gui_navigation_set_page_list_order ( const gchar *order_list );
-gboolean gsb_gui_navigation_set_selection ( gint page,
- gint account_number,
- gpointer report );
-void gsb_gui_navigation_update_account ( gint account_number );
-void gsb_gui_navigation_update_home_page ( void );
-void gsb_gui_navigation_update_report ( gint report_number ) ;
-void gsb_navigation_update_account_label ( gint account_number );
-void gsb_navigation_update_statement_label ( gint account_number );
-gboolean navigation_change_account ( gint new_account );
-gboolean navigation_drag_data_received ( GtkTreeDragDest *drag_dest,
- GtkTreePath *dest_path,
- GtkSelectionData *selection_data );
-gboolean navigation_row_drop_possible ( GtkTreeDragDest *drag_dest,
- GtkTreePath *dest_path,
- GtkSelectionData *selection_data );
-/* END_DECLARATION */
-
-#endif
diff --git a/src/parametres.c b/src/parametres.c
index bab4dfa..a50e4f6 100644
--- a/src/parametres.c
+++ b/src/parametres.c
@@ -56,6 +56,7 @@
#include "gsb_form_config.h"
#include "gsb_fyear_config.h"
#include "gsb_locale.h"
+#include "gsb_navigation.h"
#include "gsb_payment_method_config.h"
#include "gsb_real.h"
#include "gsb_reconcile_config.h"
@@ -66,7 +67,6 @@
#include "import.h"
#include "imputation_budgetaire.h"
#include "menu.h"
-#include "navigation.h"
#include "structures.h"
#include "tiers_onglet.h"
#include "traitement_variables.h"
diff --git a/src/structures.h b/src/structures.h
index 62df337..af225d5 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -8,6 +8,7 @@
/* contient presque toutes les structures du prog */
+/*DEFINITIONS */
/* the VERSION_FICHIER is in fact the lowest version which can be used to open the
* file, so each time we make an incompatibility issue, VERSION_FICHIER must be set
* to VERSION_GRISBI */
@@ -19,56 +20,46 @@
#define CSV_MAX_TOP_LINES 10 /** How many lines to show in CSV preview. */
-typedef struct gsb_conf_t GrisbiAppConf;
-typedef struct gsb_etat_t GrisbiWindowEtat;
-typedef struct gsb_run_t GrisbiWindowRun;
+/* possible values for a GdkEventButton -> button */
+#define GSB_RIGHT_BUTTON 3
-typedef enum _bet_type_onglets bet_type_onglets;
+
+/* STRUCTURES */
+typedef struct gsb_conf_t GrisbiAppConf;
+typedef struct gsb_etat_t GrisbiWindowEtat;
+typedef struct gsb_run_t GrisbiWindowRun;
/** structure etat
- * variables contenant juste 0 ou 1
- * */
+ * variables sauvegardées dans le fichier de comptes
+ **/
struct gsb_etat_t
{
- gint is_archive; /** TRUE if the file is an archive, FALSE else */
-
- gboolean debug_mode; /* TRUE in debug mode, FALSE for normale mode */
-
/* files and backup part */
+ gint is_archive; /* TRUE if the file is an archive, FALSE else */
gint crypt_file; /* TRUE if we want to crypt the file */
gint fichier_deja_ouvert; /* à un si lors de l'ouverture, le fichier semblait déjà ouvert */
/* reconciliation */
gint reconcile_end_date; /* Date initiale + 1 mois par défaut */
- /* formulaire */
- gint affiche_nb_ecritures_listes;
- gint retient_affichage_par_compte; /* à 1 si les caractéristiques de l'affichage (R, non R ...) diffèrent par compte */
-
/* Fonts & logo */
gint utilise_logo;
gboolean is_pixmaps_dir; /* TRUE if path_icon == gsb_dirs_get_pixmaps_dir ( ) */
gchar *name_logo;
-
- gboolean automatic_separator; /* TRUE if do automatic separator */
- /* Various display message stuff */
- gint display_message_lock_active;
- gint display_message_file_readable;
- gint display_message_minimum_alert;
- gint display_message_no_budgetary_line;
- gint display_message_qif_export_currency;
- gint display_message_ofx_security;
+ /* navigation pane */
+ gint navigation_sorting_accounts; /* organisation des comptes : 0 classique, 1 par type de compte, 2 par solde partiel */
+ gchar *navigation_list_order; /* ordre de la liste des comptes */
/* import files */
-
gint valeur_echelle_recherche_date_import; /* nbre de jours pour la recherche des opérations importées */
gint get_extract_number_for_check; /* TRUE if Extracting a number and save it in the field No Cheque/Virement */
gint get_fusion_import_transactions; /* TRUE if merge transactions imported with transactions found */
gint get_categorie_for_payee; /* TRUE to automatically retrieve the category of the payee if it exists */
gint get_fyear_by_value_date; /* TRUE to get the fyear by value date, FALSE by date */
+ /* csv files */
gchar *csv_separator; /* CSV separator to use while parsing a CSV file. */
gboolean csv_skipped_lines [ CSV_MAX_TOP_LINES ]; /* Contains a pointer to skipped lines in CSV preview. */
@@ -76,6 +67,10 @@ struct gsb_etat_t
gint export_file_format; /* EXPORT_QIF or EXPORT_CSV */
gboolean export_files_traitement; /* 0 = traitement individuel, 1 = traitement automatique */
+ /* formulaire */
+ gint retient_affichage_par_compte; /* à 1 si les caractéristiques de l'affichage (R, non R ...) diffèrent par compte */
+ gboolean automatic_separator; /* TRUE if do automatic separator */
+
/* combofix configuration */
gint combofix_mixed_sort; /* TRUE for no separation between the categories */
gint combofix_max_item; /* maximum number of items we want before showing the popup */
@@ -84,11 +79,6 @@ struct gsb_etat_t
gint combofix_force_payee; /* TRUE if no new item can be appended in the payee combofix */
gint combofix_force_category; /* TRUE if no new item can be appended in the category and budget combofix */
- /* width panned */
- gint largeur_colonne_echeancier;
- gint largeur_colonne_comptes_comptes;
- gint largeur_colonne_etat;
-
/* variables sur l'échéancier */
gint affichage_commentaire_echeancier; /* à 1 si le commentaire est affiché */
@@ -115,10 +105,8 @@ struct gsb_etat_t
/** structure conf
- * variables containing just 0 or 1
- * configured by the file grisbi.conf
- *
- */
+ * variables configured by the file grisbi.conf
+ **/
struct gsb_conf_t
{
/* IHM */
@@ -137,7 +125,7 @@ struct gsb_conf_t
gint prefs_height; /* preferences height */
gint prefs_panel_width; /* prefs hpaned width */
- /* left_panel */
+ /* navigation pane */
gint panel_width; /* left hpanel width */
gboolean active_scrolling_left_pane; /* active mouse scrolling in the left panel. */
@@ -213,10 +201,8 @@ struct gsb_conf_t
/** structure run
- * variables containing just 0 or 1
- * générées pendant l'exécution du programme
- *
- */
+ * variables générées pendant l'exécution du programme
+ **/
struct gsb_run_t
{
@@ -246,24 +232,31 @@ struct struct_payee_asso
};
+/* ENUMERATIONS */
+typedef enum _bet_type_onglets BetTypeOnglets;
+typedef enum _etats_alignement EtatsAlignment;
+typedef enum _gsb_general_notebook_pages GsbGeneralNotebookPages;
+typedef enum _kind_account kind_account;
+
+
/* définition du titre de grisbi */
-typedef enum GSB_TITLE_NAME
+enum _gsb_title_name
{
GSB_ACCOUNTS_TITLE,
GSB_ACCOUNT_HOLDER,
GSB_ACCOUNTS_FILE,
-} GsbTitleType;
+};
/* définition de l'alignement */
-enum alignement
+enum _etats_alignement
{
ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT,
};
/* definition of the columns of model for the left panel */
-enum left_panel_tree_columns
+enum _left_panel_tree_columns
{
LEFT_PANEL_TREE_TEXT_COLUMN,
LEFT_PANEL_TREE_PAGE_COLUMN,
@@ -274,7 +267,7 @@ enum left_panel_tree_columns
/* définition du type d'origine pour les données du module budgétaire */
-enum bet_array_origin_data
+enum _bet_array_origin_data
{
SPP_ORIGIN_TRANSACTION, /* Ligne issue d'une opération */
SPP_ORIGIN_SCHEDULED, /* Ligne issue d'une opération plannifiée */
@@ -290,7 +283,7 @@ enum bet_array_origin_data
/* définition du type de mise à jour en fonction des données du module budgétaire */
-enum bet_type_maj
+enum _bet_type_maj
{
BET_MAJ_FALSE = 0,
BET_MAJ_ESTIMATE,
@@ -300,7 +293,8 @@ enum bet_type_maj
};
/* définition du type de mouvement */
-enum direction_move {
+enum _direction_move
+{
GSB_LEFT = 0,
GSB_RIGHT,
GSB_UP,
@@ -308,13 +302,14 @@ enum direction_move {
};
-typedef enum GSB_FILE_ERROR
+/* définition du type d'erreur lors du chargement d'un fichier */
+enum _gsb_file_error
{
GSB_PLUGIN_SSL_EXIST = 1 << 6,
GSB_FAILED_LOAD_ACCOUNTS = 1 << 7,
GSB_FAILED_LOAD_WITH_BACKUP = 1 << 8,
GSB_FAILED_LOAD_WITHOUT_BACKUP = 1 << 9
-} GsbFileErrorType;
+};
/* définition du type d'onglets du module budgétaire affiché */
@@ -327,4 +322,29 @@ enum _bet_type_onglets
BET_ONGLETS_CAP,
};
+
+/* struct kind of the account */
+enum _kind_account
+{
+ GSB_TYPE_BALANCE = -1,
+ GSB_TYPE_BANK = 0,
+ GSB_TYPE_CASH = 1,
+ GSB_TYPE_LIABILITIES = 2,
+ GSB_TYPE_ASSET = 3
+};
+
+
+enum _gsb_general_notebook_pages
+{
+ GSB_HOME_PAGE,
+ GSB_ACCOUNT_PAGE,
+ GSB_SCHEDULER_PAGE,
+ GSB_PAYEES_PAGE,
+ GSB_SIMULATOR_PAGE,
+ GSB_CATEGORIES_PAGE,
+ GSB_BUDGETARY_LINES_PAGE,
+ GSB_REPORTS_PAGE,
+ GSB_GENERAL_NOTEBOOK_PAGES
+};
+
#endif
diff --git a/src/traitement_variables.c b/src/traitement_variables.c
index 6a0998b..425058c 100644
--- a/src/traitement_variables.c
+++ b/src/traitement_variables.c
@@ -70,6 +70,7 @@
#include "gsb_form_widget.h"
#include "gsb_fyear.h"
#include "gsb_locale.h"
+#include "gsb_navigation.h"
#include "gsb_real.h"
#include "gsb_regex.h"
#include "gsb_report.h"
@@ -78,7 +79,6 @@
#include "gsb_transactions_list.h"
#include "import.h"
#include "menu.h"
-#include "navigation.h"
#include "transaction_model.h"
#include "utils_dates.h"
#include "utils_str.h"
@@ -149,14 +149,10 @@ void init_variables ( GrisbiWindowEtat *etat,
/* init the decimal point and the thousands separator. */
initialise_number_separators ( );
- /* initialise l'ordre des pages du panneau de gauche */
- gsb_gui_navigation_init_pages_list ( );
-
/* if ever there is still something from the previous list,
* erase now */
transaction_model_initialize();
- gsb_data_account_init_variables ();
gsb_data_transaction_init_variables ();
gsb_data_payee_init_variables ();
gsb_data_category_init_variables ();
@@ -270,9 +266,9 @@ void init_variables ( GrisbiWindowEtat *etat,
void free_variables ( void )
{
gsb_data_print_config_free ();
- gsb_gui_navigation_free_pages_list ( );
- gsb_regex_destroy ( );
- struct_free_bet_graph_prefs ( );
+ gsb_data_account_init_variables ();
+ gsb_regex_destroy ();
+ struct_free_bet_graph_prefs ();
}
diff --git a/src/transaction_list.c b/src/transaction_list.c
index aa49b61..3850c9b 100644
--- a/src/transaction_list.c
+++ b/src/transaction_list.c
@@ -49,10 +49,10 @@
#include "gsb_data_archive_store.h"
#include "gsb_data_currency.h"
#include "gsb_data_transaction.h"
+#include "gsb_navigation.h"
#include "gsb_real.h"
#include "gsb_transactions_list.h"
#include "gsb_transactions_list_sort.h"
-#include "navigation.h"
#include "structures.h"
#include "transaction_list_select.h"
#include "transaction_list_sort.h"
diff --git a/src/transaction_list_sort.c b/src/transaction_list_sort.c
index fcac605..a299490 100644
--- a/src/transaction_list_sort.c
+++ b/src/transaction_list_sort.c
@@ -39,10 +39,10 @@
#include "custom_list.h"
#include "gsb_data_account.h"
#include "gsb_data_transaction.h"
+#include "gsb_navigation.h"
#include "gsb_reconcile_list.h"
#include "gsb_transactions_list.h"
#include "gsb_transactions_list_sort.h"
-#include "navigation.h"
#include "transaction_model.h"
#include "utils_dates.h"
#include "erreur.h"
diff --git a/src/ui/grisbi.ui b/src/ui/grisbi.ui
index 98cccf6..fd4792d 100644
--- a/src/ui/grisbi.ui
+++ b/src/ui/grisbi.ui
@@ -235,10 +235,7 @@
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
- <object class="GtkTreeView" id="treeview_left_panel">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </object>
+ <placeholder/>
</child>
</object>
<packing>
diff --git a/src/ui/grisbi_prefs.ui b/src/ui/grisbi_prefs.ui
index 7e6221a..7d2d7ae 100644
--- a/src/ui/grisbi_prefs.ui
+++ b/src/ui/grisbi_prefs.ui
@@ -1166,12 +1166,6 @@
<property name="tab_fill">False</property>
</packing>
</child>
- <child>
- <placeholder/>
- </child>
- <child type="tab">
- <placeholder/>
- </child>
</object>
<packing>
<property name="expand">True</property>
diff --git a/src/utils_dates.c b/src/utils_dates.c
index 5dc3d60..d2f85e4 100644
--- a/src/utils_dates.c
+++ b/src/utils_dates.c
@@ -287,11 +287,11 @@ gboolean gsb_date_check_entry ( GtkWidget *entry )
const gchar *string;
if (!entry)
- return FALSE;
+ return FALSE;
string = gtk_entry_get_text ( GTK_ENTRY (entry));
if (!string)
- return FALSE;
+ return FALSE;
if ( strlen (string))
{
@@ -307,8 +307,9 @@ gboolean gsb_date_check_entry ( GtkWidget *entry )
buffer_entry_date -> date_string = g_strdup ( string );
buffer_entry_date -> last_entry_date = date;
}
+ return ( TRUE );
}
- return ( TRUE );
+ return ( FALSE );
}
hooks/post-receive
--
grisbi
More information about the cvs
mailing list