[grisbi-cvs] [SCM] grisbi branch, master, updated. upstream_version_0_9_4-40-g03a109a
Pierre Biava
nobody at users.sourceforge.net
Thu Sep 29 08:40:38 CEST 2011
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "grisbi".
The branch, master has been updated
via 03a109a38430bef61561b03fd7c80ceae94f2876 (commit)
via 3a23f15b9c1ed9c880b6d5d8554015048f842566 (commit)
via 432710b70cdb34ee5a3801a07c51086d7c8dc785 (commit)
via 886cff23f45e91748c3c5e25a1a08bc54285cab4 (commit)
via dadc7019c0a1dbefb00b8f076a3ba5ceb3ad1e93 (commit)
via 2130df9fbb5db14c5ab285382a7db6308f2f452f (commit)
via 56337effd60d2d670a745440d0b1f704bf06bb8a (commit)
via 7bbb4cab2c195090605fb37328ada146f88fb4db (commit)
from 7e4ecf79d4ababf86c259b5fbf935cc7ee742ca6 (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 -----------------------------------------------------------------
-----------------------------------------------------------------------
Changes:
diff --git a/src/Makefile.am b/src/Makefile.am
index 0558329..ebde1e9 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,6 +1,6 @@
# Process this file with automake to produce Makefile.in
-AM_CPPFLAGS = -I$(top_srcdir) $(GRISBI_CFLAGS) $(IGE_MAC_CFLAGS) -DLOCALEDIR=\"$(localedir)\" -DPIXMAPS_DIR="\"$(datadir)/pixmaps/@PACKAGE@\"" -DPLUGINS_DIR="\"$(plugindir)\"" -DLOGO_PATH="\"$(datadir)/pixmaps/@PACKAGE@/grisbi-logo.png\"" -DDATA_PATH="\"$(datadir)/@PACKAGE@\"" -DHELP_PATH="\"$(docdir)\""
+AM_CPPFLAGS = -I$(top_srcdir) $(GRISBI_CFLAGS) $(IGE_MAC_CFLAGS) -DLOCALEDIR=\"$(localedir)\" -DPIXMAPS_DIR="\"$(datadir)/pixmaps/@PACKAGE@\"" -DPLUGINS_DIR="\"$(plugindir)\"" -DLOGO_PATH="\"$(datadir)/pixmaps/@PACKAGE@/grisbi-logo.png\"" -DDATA_PATH="\"$(datadir)/@PACKAGE@\"" -DHELP_PATH="\"$(docdir)\"" -DUI_DIR="\"$(datadir)/@PACKAGE@/ui\""
if HAVE_GOFFICE
AM_CPPFLAGS += $(GOFFICE_CFLAGS)
diff --git a/src/bet_graph.c b/src/bet_graph.c
index cddbfb8..bc178b8 100644
--- a/src/bet_graph.c
+++ b/src/bet_graph.c
@@ -40,6 +40,7 @@
#include "gsb_data_account.h"
#include "gsb_data_fyear.h"
#include "gsb_dirs.h"
+#include "gsb_file.h"
#include "navigation.h"
#include "structures.h"
#include "utils_gtkbuilder.h"
@@ -59,13 +60,14 @@ struct _struct_bet_graph_data
GtkTreeView *tree_view;
GtkNotebook *notebook;
gint account_number;
+ gint currency_number;
/* Données pour le graphique */
GtkWidget *widget;
GogChart *chart;
GogPlot *plot;
gchar *title;
- gchar *service_id; /* définit le type de graphique */
+ gchar *service_id; /* définit le type de graphique : GogPiePlot, GogLinePlot, GogBarColPlot = défaut */
gboolean is_legend;
/* données communes */
@@ -100,6 +102,7 @@ struct _struct_bet_graph_button
struct _struct_bet_graph_prefs
{
+ gint type_graph; /* type de graphique : -1 secteurs, 1 ligne, 0 barres par défaut */
gboolean major_tick_out; /* TRUE par défaut */
gboolean major_tick_in; /* FALSE par défaut */
gboolean major_tick_labeled; /* affichage des libellés de l'axe X. TRUE par défaut*/
@@ -109,7 +112,8 @@ struct _struct_bet_graph_prefs
gint degrees; /* rotation des étiquettes de l'axe X en degrés. 90° par défaut */
gint gap_spinner; /* espace entre deux barres en %. 50 par défaut*/
gboolean before_grid; /* les étiquettes sont cachées par les barres par défaut */
-
+ gboolean major_grid_y; /* ajoute une grille principale sur l'axe Y */
+ gboolean minor_grid_y; /* ajoute une grille secondaire sur l'axe Y */
};
@@ -207,7 +211,7 @@ gboolean bet_graph_on_motion ( GtkWidget *event_box,
else
buf = g_strdup_printf ("date %s : solde %s", self->tab_vue_libelle[index],
utils_real_get_string_with_currency_from_double (
- self->tab_Y[index], self->account_number ) );
+ self->tab_Y[index], self->currency_number ) );
}
else if ( strcmp ( self->service_id, "GogLinePlot") == 0 )
@@ -232,7 +236,7 @@ gboolean bet_graph_on_motion ( GtkWidget *event_box,
buf = g_strdup_printf ("date %s : solde %s", self->tab_vue_libelle[index-1],
utils_real_get_string_with_currency_from_double (
- self->tab_Y[index-1], self->account_number ) );
+ self->tab_Y[index-1], self->currency_number ) );
}
else
buf = NULL;
@@ -246,7 +250,7 @@ gboolean bet_graph_on_motion ( GtkWidget *event_box,
else
buf = g_strdup_printf ("%s : %s (%.2f%%)", self->tab_vue_libelle[index],
utils_real_get_string_with_currency_from_double (
- self->tab_Y[index], self->account_number ),
+ self->tab_Y[index], self->currency_number ),
( 100*self->tab_Y[index]/self->montant ) );
}
@@ -364,6 +368,7 @@ void bet_graph_sectors_graph_new ( GtkWidget *button,
gchar *title;
gint result;
gint account_number;
+ gint currency_number;
struct_bet_graph_data *self_credit;
struct_bet_graph_data *self_debit;
@@ -400,12 +405,14 @@ void bet_graph_sectors_graph_new ( GtkWidget *button,
/* initialisation des structures de données */
account_number = gsb_gui_navigation_get_current_account ( );
+ currency_number = gsb_data_account_get_currency ( account_number );
/* Set the graph for debit */
self_debit = struct_initialise_bet_graph_data ( );
self_debit->notebook = GTK_NOTEBOOK ( notebook );
self_debit->tree_view = tree_view;
self_debit->account_number = account_number;
+ self_debit->currency_number = currency_number;
self_debit->type_infos = 1;
self_debit->title = g_strdup ( _("Expenses") );
self_debit->service_id = g_strdup ( "GogPiePlot" );
@@ -429,6 +436,7 @@ void bet_graph_sectors_graph_new ( GtkWidget *button,
self_credit->notebook = GTK_NOTEBOOK ( notebook );
self_credit->tree_view = tree_view;
self_credit->account_number = account_number;
+ self_credit->currency_number = currency_number;
self_credit->type_infos = 0;
self_credit->title = g_strdup ( _("Incomes") );
self_credit->service_id = g_strdup ( "GogPiePlot" );
@@ -583,6 +591,7 @@ void bet_graph_line_graph_new ( GtkWidget *button, GtkTreeView *tree_view )
gchar *service_id;
gint result;
gint account_number;
+ gint currency_number;
struct_bet_graph_data *self;
devel_debug (NULL);
@@ -596,11 +605,13 @@ void bet_graph_line_graph_new ( GtkWidget *button, GtkTreeView *tree_view )
prefs_lines = struct_initialise_bet_graph_prefs ( );
account_number = gsb_gui_navigation_get_current_account ( );
+ currency_number = gsb_data_account_get_currency ( account_number );
service_id = g_object_get_data ( G_OBJECT ( button ), "service_id" );
self = struct_initialise_bet_graph_data ( );
self->tree_view = tree_view;
self->account_number = account_number;
+ self->currency_number = currency_number;
self->service_id = g_strdup ( service_id );
/* Création de la fenêtre de dialogue pour le graph */
@@ -648,7 +659,6 @@ void bet_graph_line_graph_new ( GtkWidget *button, GtkTreeView *tree_view )
/* free the data */
struct_free_bet_graph_data ( self );
g_object_unref ( G_OBJECT ( bet_graph_builder ) );
-
gtk_widget_destroy ( dialog );
}
@@ -794,6 +804,7 @@ gboolean bet_graph_affiche_XY_line ( struct_bet_graph_data *self )
GOStyle *style;
GogObject *axis;
GogObject *axis_line = NULL;
+ GogObject *grid_line;
GError *error = NULL;
gchar *position;
@@ -805,7 +816,6 @@ gboolean bet_graph_affiche_XY_line ( struct_bet_graph_data *self )
/* on met en vertical les libellés de l'axe X */
axis = gog_object_get_child_by_name ( GOG_OBJECT ( self->chart ), "X-Axis" );
style = go_styled_object_get_style ( GO_STYLED_OBJECT ( axis ) );
-
go_style_set_text_angle ( style, prefs_lines->degrees );
/* on positionne l'axe des x sur le 0 par défaut */
@@ -831,6 +841,7 @@ gboolean bet_graph_affiche_XY_line ( struct_bet_graph_data *self )
g_object_set ( G_OBJECT ( axis ),
"major-tick-in", prefs_lines->major_tick_in,
"major-tick-out", prefs_lines->major_tick_out,
+ "minor-tick-out", prefs_lines->major_tick_out,
"major-tick-labeled", prefs_lines->major_tick_labeled,
NULL);
@@ -846,19 +857,34 @@ gboolean bet_graph_affiche_XY_line ( struct_bet_graph_data *self )
NULL );
}
- /* affichage de la grille au dessus ou en dessous des barres */
- /* sert aussi à afficher les étiquettes au dessus des barres à cause d'un bug de goffice */
- if ( prefs_lines->before_grid )
+ if ( prefs_lines->type_graph == 0 )
{
- g_object_set ( G_OBJECT ( self->plot ),
+ /* affichage de la grille au dessus ou en dessous des barres */
+ /* sert aussi à afficher les étiquettes au dessus des barres à cause d'un bug de goffice */
+ if ( prefs_lines->before_grid )
+ g_object_set ( G_OBJECT ( self->plot ),
"before-grid", TRUE,
NULL );
- }
- /* modification du ratio de largeur des barres. 0 pas d'espace entre deux barres */
- g_object_set ( G_OBJECT ( self->plot ),
+ /* modification du ratio de largeur des barres. 0 pas d'espace entre deux barres */
+ g_object_set ( G_OBJECT ( self->plot ),
"gap-percentage", prefs_lines->gap_spinner,
NULL );
+ }
+
+ /* on ajoute une grille pour l'axe Y si necessaire */
+ if ( prefs_lines->major_grid_y || prefs_lines->minor_grid_y )
+ {
+ axis = gog_object_get_child_by_name ( GOG_OBJECT ( self->chart ), "Y-Axis" );
+
+ if ( prefs_lines->major_grid_y )
+ {
+ grid_line = gog_object_add_by_name ( GOG_OBJECT ( axis ), "MajorGrid", NULL );
+
+ if ( prefs_lines->minor_grid_y )
+ grid_line = gog_object_add_by_name ( GOG_OBJECT ( axis ), "MinorGrid", NULL );
+ }
+ }
/* on met à jour les données à afficher */
series = GOG_SERIES ( gog_plot_new_series ( GOG_PLOT ( cur_plot ) ) );
@@ -909,20 +935,23 @@ GtkWidget *bet_graph_button_menu_new ( GsbButtonStyle style,
self->callback = callback;
self->box = box_button;
self->tree_view = tree_view;
- self->is_visible = TRUE;
- self->button = gsb_automem_imagefile_button_new ( style,
+ if ( prefs_lines->type_graph == 0 )
+ {
+ self->is_visible = TRUE;
+ self->button = gsb_automem_imagefile_button_new ( style,
self->name,
self->filename,
NULL,
NULL );
- g_object_set_data ( G_OBJECT ( self->button ), "service_id", self->service_id );
- g_signal_connect ( G_OBJECT ( self->button ),
+ g_object_set_data ( G_OBJECT ( self->button ), "service_id", self->service_id );
+ g_signal_connect ( G_OBJECT ( self->button ),
"clicked",
self->callback,
self->tree_view );
- gtk_box_pack_start ( GTK_BOX ( self->box ), self->button, TRUE, TRUE, 0 );
+ gtk_box_pack_start ( GTK_BOX ( self->box ), self->button, TRUE, TRUE, 0 );
+ }
liste = g_list_append ( liste, self );
self = struct_initialise_bet_graph_button ( );
@@ -933,8 +962,24 @@ GtkWidget *bet_graph_button_menu_new ( GsbButtonStyle style,
self->callback = callback;
self->box = box_button;
self->tree_view = tree_view;
- self->is_visible = FALSE;
+ if ( prefs_lines->type_graph == 1 )
+ {
+ self->is_visible = TRUE;
+
+ self->button = gsb_automem_imagefile_button_new ( style,
+ self->name,
+ self->filename,
+ NULL,
+ NULL );
+
+ g_object_set_data ( G_OBJECT ( self->button ), "service_id", self->service_id );
+ g_signal_connect ( G_OBJECT ( self->button ),
+ "clicked",
+ self->callback,
+ self->tree_view );
+ gtk_box_pack_start ( GTK_BOX ( self->box ), self->button, TRUE, TRUE, 0 );
+ }
liste = g_list_append ( liste, self );
}
@@ -1050,6 +1095,8 @@ void bet_graph_popup_choix_graph_activate ( GtkMenuItem *menuitem,
self->tree_view );
gtk_box_pack_start ( GTK_BOX ( self->box ), self->button, TRUE, TRUE, 0 );
+
+ gsb_file_set_modified ( TRUE );
}
@@ -1062,6 +1109,7 @@ void bet_graph_popup_choix_graph_activate ( GtkMenuItem *menuitem,
GtkWidget *bet_graph_create_line_preferences ( struct_bet_graph_data *self )
{
GtkWidget *box_prefs_line;
+ GtkWidget *box_options_col;
GtkWidget *rot_align;
GtkWidget *widget;
GtkWidget *button_1;
@@ -1070,12 +1118,22 @@ GtkWidget *bet_graph_create_line_preferences ( struct_bet_graph_data *self )
GtkWidget *rotation;
box_prefs_line = GTK_WIDGET ( gtk_builder_get_object ( bet_graph_builder, "box_prefs_line") );
+ box_options_col = GTK_WIDGET ( gtk_builder_get_object ( bet_graph_builder, "box_options_col") );
rot_align = GTK_WIDGET ( gtk_builder_get_object ( bet_graph_builder, "rot_align") );
+ /* définition du type de graphique */
+ if ( strcmp ( self->service_id, "GogLinePlot" ) == 0 )
+ prefs_lines->type_graph = 1;
+ else if ( strcmp ( self->service_id, "GogPiePlot" ) == 0 )
+ prefs_lines->type_graph = -1;
+ else
+ prefs_lines->type_graph = 0;
+
+ /* configuration de l'axe X */
/* configure les options d'affichage de l'axe X */
widget = GTK_WIDGET ( gtk_builder_get_object ( bet_graph_builder, "major_tick_out" ) );
if ( prefs_lines->major_tick_out )
- gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widget ), prefs_lines->major_tick_out );
+ gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widget ), TRUE );
g_object_set_data ( G_OBJECT ( widget ), "rang", GINT_TO_POINTER ( 0 ) );
g_signal_connect ( widget,
@@ -1085,7 +1143,7 @@ GtkWidget *bet_graph_create_line_preferences ( struct_bet_graph_data *self )
widget = GTK_WIDGET ( gtk_builder_get_object ( bet_graph_builder, "major_tick_in" ) );
if ( prefs_lines->major_tick_in )
- gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widget ), prefs_lines->major_tick_in );
+ gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widget ), TRUE );
g_object_set_data ( G_OBJECT ( widget ), "rang", GINT_TO_POINTER ( 1 ) );
g_signal_connect ( widget,
@@ -1095,7 +1153,7 @@ GtkWidget *bet_graph_create_line_preferences ( struct_bet_graph_data *self )
widget = GTK_WIDGET ( gtk_builder_get_object ( bet_graph_builder, "major_tick_labeled" ) );
if ( prefs_lines->major_tick_labeled )
- gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widget ), prefs_lines->major_tick_labeled );
+ gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widget ), TRUE );
g_object_set_data ( G_OBJECT ( widget ), "rang", GINT_TO_POINTER ( 2 ) );
g_signal_connect ( widget,
@@ -1119,7 +1177,10 @@ GtkWidget *bet_graph_create_line_preferences ( struct_bet_graph_data *self )
widget = GTK_WIDGET ( gtk_builder_get_object ( bet_graph_builder, "new_axis_line" ) );
g_object_set_data ( G_OBJECT ( widget ), "rang", GINT_TO_POINTER ( 6 ) );
+
+ /* on lie les deux boutons pour les retrouver plus tard */
g_object_set_data ( G_OBJECT ( widget ), "other_axis", button_3 );
+ g_object_set_data ( G_OBJECT ( button_3 ), "other_axis", widget );
if ( prefs_lines->new_axis_line )
{
@@ -1133,8 +1194,6 @@ GtkWidget *bet_graph_create_line_preferences ( struct_bet_graph_data *self )
gtk_widget_set_sensitive ( widget, FALSE );
}
- g_object_set_data ( G_OBJECT ( button_3 ), "other_axis", widget );
-
/* set the signal */
g_signal_connect ( button_1,
"toggled",
@@ -1166,24 +1225,57 @@ GtkWidget *bet_graph_create_line_preferences ( struct_bet_graph_data *self )
gtk_container_add ( GTK_CONTAINER ( rot_align ), rotation );
- /* configure la visibilité de la grille et provisoirement des étiquettes de l'axe X (bug goffice) */
- widget = GTK_WIDGET ( gtk_builder_get_object ( bet_graph_builder, "before_grid" ) );
- g_object_set_data ( G_OBJECT ( widget ), "rang", GINT_TO_POINTER ( 7 ) );
- if ( prefs_lines->before_grid )
- gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widget ), TRUE );
- g_signal_connect ( widget,
+ if ( prefs_lines->type_graph == 0 )
+ {
+ /* configure la visibilité de la grille et provisoirement des étiquettes de l'axe X (bug goffice) */
+ widget = GTK_WIDGET ( gtk_builder_get_object ( bet_graph_builder, "before_grid" ) );
+ g_object_set_data ( G_OBJECT ( widget ), "rang", GINT_TO_POINTER ( 7 ) );
+ if ( prefs_lines->before_grid )
+ gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widget ), TRUE );
+ g_signal_connect ( widget,
"toggled",
G_CALLBACK ( bet_graph_toggle_button_changed ),
self );
- /* configure la valeur de la largeur des colonnes du graph */
- widget = GTK_WIDGET ( gtk_builder_get_object ( bet_graph_builder, "gap_spinner" ) );
- if ( prefs_lines->gap_spinner )
- gtk_spin_button_set_value ( GTK_SPIN_BUTTON ( widget ), prefs_lines->gap_spinner );
- g_signal_connect ( widget,
+ /* configure la valeur de la largeur des colonnes du graph */
+ widget = GTK_WIDGET ( gtk_builder_get_object ( bet_graph_builder, "gap_spinner" ) );
+ if ( prefs_lines->gap_spinner )
+ gtk_spin_button_set_value ( GTK_SPIN_BUTTON ( widget ), prefs_lines->gap_spinner );
+ g_signal_connect ( widget,
"value-changed",
G_CALLBACK ( bet_graph_gap_spinner_changed ),
self );
+ }
+ else
+ gtk_widget_hide ( box_options_col );
+
+ /* configuration de l'axe Y */
+ /* onfiguration de la grille */
+ button_1 = GTK_WIDGET ( gtk_builder_get_object ( bet_graph_builder, "major_grid_y" ) );
+ g_object_set_data ( G_OBJECT ( button_1 ), "rang", GINT_TO_POINTER ( 8 ) );
+ g_signal_connect ( button_1,
+ "toggled",
+ G_CALLBACK ( bet_graph_toggle_button_changed ),
+ self );
+
+ button_2 = GTK_WIDGET ( gtk_builder_get_object ( bet_graph_builder, "minor_grid_y" ) );
+ if ( prefs_lines->minor_grid_y )
+ gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON (button_2 ), TRUE );
+
+ g_object_set_data ( G_OBJECT ( button_2 ), "rang", GINT_TO_POINTER ( 9 ) );
+ g_signal_connect ( button_2,
+ "toggled",
+ G_CALLBACK ( bet_graph_toggle_button_changed ),
+ self );
+
+ /* on lie les deux boutons pour les retrouver plus tard */
+ g_object_set_data ( G_OBJECT ( button_1 ), "grid_y", button_2 );
+
+ if ( prefs_lines->major_grid_y )
+ gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( button_1 ), TRUE );
+ else
+ gtk_widget_set_sensitive ( button_2, FALSE );
+
return box_prefs_line;
}
@@ -1236,6 +1328,14 @@ void bet_graph_toggle_button_changed ( GtkToggleButton *togglebutton,
case 7:
prefs_lines->before_grid = active;
break;
+ case 8:
+ prefs_lines->major_grid_y = active;
+ button = g_object_get_data ( G_OBJECT ( togglebutton ), "grid_y" );
+ gtk_widget_set_sensitive ( button, active );
+ break;
+ case 9:
+ prefs_lines->minor_grid_y = active;
+ break;
}
/* on met à jour le graph */
@@ -1292,6 +1392,70 @@ void bet_graph_update_graph ( struct_bet_graph_data *self )
gtk_widget_show_all ( GTK_WIDGET ( self->notebook ) );
bet_graph_affiche_XY_line ( self );
+
+ gsb_file_set_modified ( TRUE );
+}
+
+
+/**
+ * sérialise les préférences des graphes
+ *
+ *
+ * \return a newly allocated string which must be freed when no more used.
+ * */
+gchar *bet_graph_get_configuration_string ( void )
+{
+ gchar *new_str = NULL;
+
+ if ( prefs_lines == NULL )
+ return NULL;
+
+ new_str = g_markup_printf_escaped ( "\t<Bet_graph prefs=\"%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d\" />\n",
+ prefs_lines->type_graph,
+ prefs_lines->major_tick_out,
+ prefs_lines->major_tick_in,
+ prefs_lines->major_tick_labeled,
+ prefs_lines->position,
+ prefs_lines->new_axis_line,
+ prefs_lines->cross_entry,
+ prefs_lines->degrees,
+ prefs_lines->gap_spinner,
+ prefs_lines->before_grid,
+ prefs_lines->major_grid_y,
+ prefs_lines->minor_grid_y );
+
+ return new_str;
+}
+
+
+/**
+ *
+ *
+ *
+ *
+ * */
+void bet_graph_set_configuration_variables ( const gchar *string )
+{
+ gchar **tab;
+
+ /* initialisation des préférences si nécessaire */
+ if ( prefs_lines == NULL )
+ prefs_lines = struct_initialise_bet_graph_prefs ( );
+
+ tab = g_strsplit ( string, ":", 0 );
+
+ prefs_lines->type_graph = utils_str_atoi ( tab[0] );
+ prefs_lines->major_tick_out = utils_str_atoi ( tab[1] );
+ prefs_lines->major_tick_in = utils_str_atoi ( tab[2] );
+ prefs_lines->major_tick_labeled = utils_str_atoi ( tab[3] );
+ prefs_lines->position = utils_str_atoi ( tab[4] );
+ prefs_lines->new_axis_line = utils_str_atoi ( tab[5] );
+ prefs_lines->cross_entry = utils_str_atoi ( tab[6] );
+ prefs_lines->degrees = utils_str_atoi ( tab[7] );
+ prefs_lines->gap_spinner = utils_str_atoi ( tab[8] );
+ prefs_lines->before_grid = utils_str_atoi ( tab[9] );
+ prefs_lines->major_grid_y = utils_str_atoi ( tab[10] );
+ prefs_lines->minor_grid_y = utils_str_atoi ( tab[11] );
}
@@ -1398,7 +1562,7 @@ void struct_free_bet_graph_prefs ( struct_bet_graph_prefs *self )
/**
- *
+ * free the gtk_builder
*
*
*
diff --git a/src/bet_graph.h b/src/bet_graph.h
index 4fc1e1a..c77bb2a 100644
--- a/src/bet_graph.h
+++ b/src/bet_graph.h
@@ -28,11 +28,13 @@ GtkWidget *bet_graph_button_menu_new ( GsbButtonStyle style,
GCallback callback,
GtkWidget *tree_view );
void bet_graph_free_builder ( void );
+gchar *bet_graph_get_configuration_string ( void );
void bet_graph_line_graph_new ( GtkWidget *button,
GtkTreeView *tree_view );
void bet_graph_sectors_graph_new ( GtkWidget *button,
GtkTreeView *tree_view );
GtkWidget *bet_graph_sectors_graph_new_new ( void );
+void bet_graph_set_configuration_variables ( const gchar *string );
/* END_DECLARATION */
#endif /* HAVE_GOFFICE */
diff --git a/src/gsb_dirs.c b/src/gsb_dirs.c
index 666ae44..a757ae4 100644
--- a/src/gsb_dirs.c
+++ b/src/gsb_dirs.c
@@ -34,6 +34,7 @@
static gchar *locale_dir;
static gchar *pixmaps_dir;
static gchar *plugins_dir;
+static gchar *ui_dir;
static gchar *_C_GRISBIRC;
static gchar *_C_OLD_GRISBIRC;
static gchar *_C_PATH_CONFIG;
@@ -56,6 +57,8 @@ void gsb_dirs_init ( void )
locale_dir = g_strconcat (res_path, "/share/locale", NULL );
pixmaps_dir = g_strconcat (res_path, "/share/pixmaps/grisbi", NULL );
plugins_dir = g_strconcat (res_path, "/lib/grisbi", NULL );
+ plugins_dir = g_strconcat (res_path, "/share/grisbi/ui", NULL );
+
g_free ( res_path );
}
else
@@ -64,6 +67,7 @@ void gsb_dirs_init ( void )
locale_dir = g_strdup ( LOCALEDIR );
pixmaps_dir = g_strdup ( PIXMAPS_DIR );
plugins_dir = g_strdup ( PLUGINS_DIR );
+ ui_dir = g_strdup ( UI_DIR );
}
/*
@@ -124,6 +128,7 @@ void gsb_dirs_shutdown ( void )
g_free ( locale_dir );
g_free ( pixmaps_dir );
g_free ( plugins_dir );
+ g_free ( ui_dir );
g_free ( _C_GRISBIRC );
g_free ( _C_OLD_GRISBIRC );
g_free ( _C_PATH_CONFIG );
@@ -154,6 +159,12 @@ const gchar *gsb_dirs_get_plugins_dir ( void )
}
+const gchar *gsb_dirs_get_ui_dir ( void )
+{
+ return ui_dir;
+}
+
+
const gchar *C_GRISBIRC ( void )
{
return _C_GRISBIRC;
diff --git a/src/gsb_dirs.h b/src/gsb_dirs.h
index 2ec5531..ee9b43d 100644
--- a/src/gsb_dirs.h
+++ b/src/gsb_dirs.h
@@ -8,6 +8,7 @@ void gsb_dirs_shutdown ( void );
const gchar *gsb_dirs_get_locale_dir ( void );
const gchar *gsb_dirs_get_pixmaps_dir ( void );
const gchar *gsb_dirs_get_plugins_dir ( void );
+const gchar *gsb_dirs_get_ui_dir ( void );
const gchar *C_GRISBIRC ( void );
const gchar *C_OLD_GRISBIRC ( void );
const gchar *C_PATH_CONFIG ( void );
diff --git a/src/gsb_file_load.c b/src/gsb_file_load.c
index 7d43174..31a76c7 100644
--- a/src/gsb_file_load.c
+++ b/src/gsb_file_load.c
@@ -32,6 +32,9 @@
#include <glib/gi18n.h>
#include <glib/gstdio.h>
#include <gio/gio.h>
+#ifdef HAVE_GOFFICE
+#include "bet_graph.h"
+#endif /* HAVE_GOFFICE */
/*START_INCLUDE*/
#include "gsb_file_load.h"
@@ -101,6 +104,8 @@ static void gsb_file_load_bet_historical ( const gchar **attribute_names,
const gchar **attribute_values );
static void gsb_file_load_bet_part ( const gchar **attribute_names,
const gchar **attribute_values );
+static void gsb_file_load_bet_graph_part ( const gchar **attribute_names,
+ const gchar **attribute_values );
static void gsb_file_load_bet_transfert_part ( const gchar **attribute_names,
const gchar **attribute_values );
static gboolean gsb_file_load_check_new_structure ( gchar *file_content );
@@ -631,6 +636,14 @@ void gsb_file_load_start_element ( GMarkupParseContext *context,
return;
}
+#ifdef HAVE_GOFFICE
+ if ( !strcmp ( element_name, "Bet_graph" ) )
+ {
+ gsb_file_load_bet_graph_part ( attribute_names, attribute_values );
+ return;
+ }
+#endif /* HAVE_GOFFICE */
+
if ( !strcmp ( element_name, "Bet_historical" ) )
{
gsb_file_load_bet_historical ( attribute_names, attribute_values );
@@ -3894,6 +3907,48 @@ void gsb_file_load_bet_part ( const gchar **attribute_names,
/**
+ * load the bet_graph preferences in the grisbi file
+ *
+ * \param attribute_names
+ * \param attribute_values
+ *
+ * */
+void gsb_file_load_bet_graph_part ( const gchar **attribute_names,
+ const gchar **attribute_values )
+{
+ gint i=0;
+
+ if ( !attribute_names[i] )
+ return;
+
+ do
+ {
+ /* we test at the beginning if the attribute_value is NULL, if yes, */
+ /* go to the next */
+ if ( !strcmp ( attribute_values[i], "(null)") )
+ {
+ i++;
+ continue;
+ }
+
+ if ( !strcmp ( attribute_names[i], "prefs" ) )
+ {
+#ifdef HAVE_GOFFICE
+ bet_graph_set_configuration_variables ( attribute_values[i] );
+#endif /* HAVE_GOFFICE */
+ i++;
+ continue;
+ }
+
+ /* normally, shouldn't come here */
+ i++;
+ }
+
+ while ( attribute_names[i] );
+}
+
+
+/**
* load the historical balance part in the grisbi file
*
* \param attribute_names
diff --git a/src/gsb_file_save.c b/src/gsb_file_save.c
index 322568d..9546a7a 100644
--- a/src/gsb_file_save.c
+++ b/src/gsb_file_save.c
@@ -40,6 +40,10 @@
# include <io.h> // for _chmod()
#endif /*_MSC_VER */
#include <zlib.h>
+#ifdef HAVE_GOFFICE
+#include "bet_graph.h"
+#endif /* HAVE_GOFFICE */
+
/*START_INCLUDE*/
#include "gsb_file_save.h"
@@ -98,6 +102,9 @@ static gulong gsb_file_save_bank_part ( gulong iterator,
static gulong gsb_file_save_bet_part ( gulong iterator,
gulong *length_calculated,
gchar **file_content );
+static gulong gsb_file_save_bet_graph_part ( gulong iterator,
+ gulong *length_calculated,
+ gchar **file_content );
static gulong gsb_file_save_color_part ( gulong iterator,
gulong *length_calculated,
gchar **file_content,
@@ -209,6 +216,9 @@ gboolean gsb_file_save_save_file ( const gchar *filename,
gint logo_part = 65536;
gint account_icon_part = 4500;
gint bet_part = 500;
+#ifdef HAVE_GOFFICE
+ gint bet_graph_part = 100;
+#endif /* HAVE_GOFFICE */
struct stat buf;
@@ -254,7 +264,12 @@ gboolean gsb_file_save_save_file ( const gchar *filename,
+ partial_balance_part * g_slist_length ( gsb_data_partial_balance_get_list ())
+ logo_part
+ account_icon_part * g_slist_length ( gsb_select_icon_list_accounts_icon () )
+#ifdef HAVE_GOFFICE
+ + bet_part
+ + bet_graph_part;
+#else
+ bet_part;
+#endif /* HAVE_GOFFICE */
iterator = 0;
file_content = g_malloc0 ( length_calculated * sizeof ( gchar ) );
@@ -349,6 +364,12 @@ gboolean gsb_file_save_save_file ( const gchar *filename,
&length_calculated,
&file_content );
+#ifdef HAVE_GOFFICE
+ iterator = gsb_file_save_bet_graph_part ( iterator,
+ &length_calculated,
+ &file_content );
+#endif /* HAVE_GOFFICE */
+
iterator = gsb_file_save_report_part ( iterator,
&length_calculated,
&file_content,
@@ -2843,6 +2864,37 @@ gulong gsb_file_save_bet_part ( gulong iterator,
}
+/**
+ * save the bet graph preferences part
+ *
+ * \param iterator the current iterator
+ * \param length_calculated a pointer to the variable lengh_calculated
+ * \param file_content a pointer to the variable file_content
+ *
+ * \return the new iterator
+ * */
+gulong gsb_file_save_bet_graph_part ( gulong iterator,
+ gulong *length_calculated,
+ gchar **file_content )
+{
+#ifdef HAVE_GOFFICE
+ gchar *new_string = NULL;
+
+ /* save the preferences */
+ new_string = bet_graph_get_configuration_string ( );
+
+ /* append the new string to the file content */
+ iterator = gsb_file_save_append_part ( iterator,
+ length_calculated,
+ file_content,
+ new_string );
+#endif /* HAVE_GOFFICE */
+
+ /* and return the new iterator */
+ return iterator;
+}
+
+
/* Local Variables: */
/* c-basic-offset: 4 */
/* End: */
diff --git a/src/ui/bet_graph.ui b/src/ui/bet_graph.ui
index 10f5f71..2a02e73 100644
--- a/src/ui/bet_graph.ui
+++ b/src/ui/bet_graph.ui
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <requires lib="gtk+" version="2.16"/>
+ <requires lib="gtk+" version="2.24"/>
<!-- interface-naming-policy project-wide -->
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">500</property>
@@ -121,10 +121,10 @@
<property name="can_focus">False</property>
<property name="spacing">5</property>
<child>
- <object class="GtkLabel" id="label1">
+ <object class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes"><b>Options for the X axis</b></property>
+ <property name="label" translatable="yes"><b>Options for the axis</b></property>
<property name="use_markup">True</property>
</object>
<packing>
@@ -135,7 +135,7 @@
</packing>
</child>
<child>
- <object class="GtkHSeparator" id="hseparator1">
+ <object class="GtkHSeparator" id="hseparator5">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
@@ -146,59 +146,64 @@
</packing>
</child>
<child>
- <object class="GtkHBox" id="box_options">
+ <object class="GtkHBox" id="box_options_axes">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
- <object class="GtkVBox" id="axis_base_pref_box">
+ <object class="GtkVBox" id="vbox3">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="border_width">12</property>
- <property name="spacing">12</property>
<child>
- <object class="GtkHBox" id="hbox3">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes"><b>Options for the X axis</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="box_options_x">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">24</property>
<child>
- <object class="GtkVBox" id="major_tick_box">
+ <object class="GtkVBox" id="axis_base_pref_box_x">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <property name="spacing">12</property>
<child>
- <object class="GtkLabel" id="label3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Major ticks</b></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkAlignment" id="alignment12">
+ <object class="GtkHBox" id="hbox3">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
+ <property name="spacing">24</property>
<child>
- <object class="GtkVBox" id="vbox13">
+ <object class="GtkVBox" id="major_tick_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">6</property>
<child>
- <object class="GtkCheckButton" id="major_tick_out">
- <property name="label" translatable="yes">Outside</property>
+ <object class="GtkLabel" id="label3">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Major ticks</b></property>
+ <property name="use_markup">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -207,14 +212,68 @@
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="major_tick_in">
- <property name="label" translatable="yes">Inside</property>
+ <object class="GtkAlignment" id="alignment12">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkCheckButton" id="major_tick_out">
+ <property name="label" translatable="yes">Outside</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="major_tick_in">
+ <property name="label" translatable="yes">Inside</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="major_tick_labeled">
+ <property name="label" translatable="yes">Show Labels</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
</object>
<packing>
<property name="expand">False</property>
@@ -222,89 +281,312 @@
<property name="position">1</property>
</packing>
</child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="position_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Position</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
<child>
- <object class="GtkCheckButton" id="major_tick_labeled">
- <property name="label" translatable="yes">Show Labels</property>
+ <object class="GtkVBox" id="vbox19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkVBox" id="cross_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkRadioButton" id="axis_low">
+ <property name="label" translatable="yes">Low</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="axis_high">
+ <property name="label" translatable="yes">High</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">axis_low</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkAlignment" id="alignment15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
+ <child>
+ <object class="GtkRadioButton" id="axis_cross">
+ <property name="label" translatable="yes">Crosses the Y axis at 0</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">axis_low</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Additional line</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkCheckButton" id="new_axis_line">
+ <property name="label" translatable="yes">Crosses the Y axis at 0</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
<property name="draw_indicator">True</property>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
</child>
</object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">1</property>
+ <property name="position">2</property>
</packing>
</child>
</object>
<packing>
- <property name="expand">False</property>
+ <property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
+ <child>
+ <object class="GtkVSeparator" id="vseparator1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="rot_align">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="yalign">0</property>
+ <property name="yscale">0</property>
+ <property name="top_padding">12</property>
+ <property name="left_padding">12</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVSeparator" id="vseparator2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes"><b>Options for the Y axis</b></property>
+ <property name="use_markup">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="padding">5</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkVBox" id="position_box">
+ <object class="GtkHSeparator" id="hseparator4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="box_options_y">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
- <object class="GtkLabel" id="label5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Position</b></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkAlignment" id="alignment14">
+ <object class="GtkVBox" id="axis_base_pref_box_y">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
+ <property name="border_width">12</property>
+ <property name="spacing">12</property>
<child>
- <object class="GtkVBox" id="vbox19">
+ <object class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">6</property>
+ <property name="spacing">24</property>
<child>
- <object class="GtkVBox" id="cross_box">
+ <object class="GtkVBox" id="grid_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">6</property>
<child>
- <object class="GtkRadioButton" id="axis_low">
- <property name="label" translatable="yes">Low</property>
+ <object class="GtkLabel" id="label9">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Grid</b></property>
+ <property name="use_markup">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -313,130 +595,82 @@
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="axis_high">
- <property name="label" translatable="yes">High</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- <property name="group">axis_low</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox4">
+ <object class="GtkAlignment" id="alignment3">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">6</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
<child>
- <object class="GtkAlignment" id="alignment15">
+ <object class="GtkVBox" id="vbox5">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
+ <property name="spacing">6</property>
<child>
- <object class="GtkRadioButton" id="axis_cross">
- <property name="label" translatable="yes">Crosses the Y axis at 0</property>
+ <object class="GtkCheckButton" id="major_grid_y">
+ <property name="label" translatable="yes">Major grid</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="minor_grid_y">
+ <property name="label" translatable="yes">Minor grid</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_action_appearance">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- <property name="group">axis_low</property>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
</child>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">2</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="expand">True</property>
+ <property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Additional line</b></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkAlignment" id="alignment2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <object class="GtkCheckButton" id="new_axis_line">
- <property name="label" translatable="yes">Crosses the Y axis at 0</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="draw_indicator">True</property>
- </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
- <property name="position">1</property>
+ <property name="position">0</property>
</packing>
</child>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
@@ -444,175 +678,158 @@
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
- <property name="position">0</property>
+ <property name="position">2</property>
</packing>
</child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="box_options_col">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
<child>
- <object class="GtkVSeparator" id="vseparator1">
+ <object class="GtkHSeparator" id="hseparator2">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">1</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkAlignment" id="rot_align">
+ <object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="yalign">0</property>
- <property name="yscale">0</property>
- <property name="top_padding">12</property>
- <property name="left_padding">12</property>
- <child>
- <placeholder/>
- </child>
+ <property name="no_show_all">True</property>
+ <property name="label" translatable="yes"><b>Options for the columns</b></property>
+ <property name="use_markup">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkHSeparator" id="hseparator2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- <property name="label" translatable="yes"><b>Options for the columns</b></property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkHSeparator" id="hseparator3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkAlignment" id="alignment1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- <property name="xscale">0</property>
<child>
- <object class="GtkTable" id="gog_barcol_prefs">
+ <object class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="border_width">12</property>
- <property name="n_rows">2</property>
- <property name="n_columns">3</property>
- <property name="column_spacing">12</property>
- <property name="row_spacing">6</property>
- <child>
- <object class="GtkLabel" id="label61">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="label" translatable="yes">Gap:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">gap_spinner</property>
- </object>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
+ <property name="no_show_all">True</property>
+ <property name="xscale">0</property>
<child>
- <object class="GtkLabel" id="label63">
+ <object class="GtkTable" id="gog_barcol_prefs">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">%</property>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="gap_spinner">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">â¢</property>
- <property name="invisible_char_set">True</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
- <property name="adjustment">adjustment1</property>
- <property name="climb_rate">10</property>
- <property name="snap_to_ticks">True</property>
- <property name="numeric">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="before_grid">
- <property name="label" translatable="yes">Display the grids above the plot</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</property>
- <property name="yalign">0.46000000834465027</property>
- <property name="draw_indicator">True</property>
+ <property name="border_width">12</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">3</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label61">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
+ <property name="label" translatable="yes">Gap:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">gap_spinner</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label63">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">%</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="gap_spinner">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">â¢</property>
+ <property name="invisible_char_set">True</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="climb_rate">10</property>
+ <property name="snap_to_ticks">True</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="before_grid">
+ <property name="label" translatable="yes">Display the grids above the plot</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ <property name="yalign">0.46000000834465027</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"></property>
+ <property name="y_options"></property>
+ </packing>
+ </packing> name="y_options"></property> ty> y> erty> ds above the plot</property> operty> perty> aps/@PACKAGE@\"" -DPLUGINS_DIR="\"$(plugindir)\"" -DLOGO_PATH="\"$(datadir)/pixmaps/@PACKAGE@/grisbi-logo.png\"" -DDATA_PATH="\"$(datadir)/@PACKAGE@\"" -DHELP_PATH="\"$(docdir)\"" -DUI_DIR="\"$(datadir)/@PACKAGE@/ui\"" ÿ R*+ p*+ ß.ÿ `R*+ ßß.ÿ À.,+ uZ*+ .,+ Ø.,+ ¨.,+ z®*+ x$Ê++ ß.ÿ Ðß.ÿ kp*+ à! à! ß.ÿ ß.ÿ Hî©++ àß.ÿ R*+ p*+ ß.ÿ `R*+ ßß.ÿ Ðß.ÿ Èß.ÿ 8{Î*+ p ß.ÿ uZ*+ z®*+ àß.ÿ °ß.ÿ kp*+ G H I J K M N O P ß.ÿ ß.ÿ H¥++ ß.ÿ R*+ p*+ ß.ÿ 0.,+ uZ*+ 0Ê++ Ù]++ .,+ Ø.,+ ¨.,+ z®*+ H¥++ ß.ÿ
Àß.ÿ kp*+ 8¥++ ß.ÿ ðß.ÿ kp*+ (¥++ ß.ÿ ß.ÿ kp*+ ¥++ ß.ÿ Pß.ÿ kp*+ ¨.,+ uZ*+ ¨.,+ Ðß.ÿ (^++ eY*+ Ø.,+ ðß.ÿ y(^++ eY*+ .,+ ß.ÿ Z(^++ eY*+ ØÔ]++ 0Ê++ Ù]++ .,+ Ø4Ê++ Ø.,+ ¨.,+ z®*+ 8{Î*+ )++ ß.ÿ pk]++ Ðß.ÿ ß.ÿ kp*+ 5 6 7 8 : < = > ? @ B D ß.ÿ ß.ÿ à&++ ß.ÿ uZ*+ uÎ*+ Pß.ÿ )++ eY*+ uÎ*+ Õ_ at fÆS Qöl±íÁ³õ*+ ß.ÿ à&++ àß.ÿ °ß.ÿ kp*+ u]ÞÓ 4Q ÷U^Qʧ ¶uª¹ñìò*Äv ß.ÿ ß.ÿ Hîò*+ 4/++ Pß.ÿ ¦@,+ ¦@,+ ,++ ßß.ÿ ß.ÿ Èß.ÿ 0ß.ÿ ?Ê++ uZ*+ Ø4Ê++ ß.ÿ ¢@,+ `ß.ÿ ðß.
ÿ ÿÿÿÿÿÿÿÿ¢@,+ ß.ÿ </child>
</object>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options"></property>
- <property name="y_options"></property>
- </packing>
</child>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
</child>
</object>
<packing>
<property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">6</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
</packing>
</child>
</object>
diff --git a/src/utils_gtkbuilder.c b/src/utils_gtkbuilder.c
index fe97af9..37ecec9 100644
--- a/src/utils_gtkbuilder.c
+++ b/src/utils_gtkbuilder.c
@@ -31,6 +31,7 @@
/*START_INCLUDE*/
#include "utils_gtkbuilder.h"
#include "dialog.h"
+#include "gsb_dirs.h"
/*END_INCLUDE*/
/*START_STATIC*/
@@ -50,7 +51,7 @@ gchar *utils_gtkbuilder_get_full_path ( const gchar *name )
{
gchar *filename;
- filename = g_build_filename ( DATA_PATH, "/ui", name, NULL );
+ filename = g_build_filename ( gsb_dirs_get_ui_dir ( ), name, NULL );
return filename;
}
diff --git a/src/utils_real.c b/src/utils_real.c
index 83ce770..7427447 100644
--- a/src/utils_real.c
+++ b/src/utils_real.c
@@ -145,12 +145,10 @@ gsb_real utils_real_get_from_string ( const gchar *string )
* \return A newly allocated string of the number
* */
gchar *utils_real_get_string_with_currency_from_double ( gdouble number,
- gint account_number )
+ gint currency_number )
{
- gint currency_number;
gsb_real real;
- currency_number = gsb_data_account_get_currency ( account_number );
real = gsb_real_double_to_real ( number );
return utils_real_get_string_with_currency ( real, currency_number, TRUE );
diff --git a/src/utils_real.h b/src/utils_real.h
index 5345a9b..a163a4e 100644
--- a/src/utils_real.h
+++ b/src/utils_real.h
@@ -11,7 +11,7 @@ gchar *utils_real_get_string_with_currency ( gsb_real number,
gboolean show_symbol );
gchar *utils_real_get_string_with_currency_from_double ( gdouble number,
- gint account_number );
+ gint currency_number );
gsb_real utils_real_get_from_string ( const gchar *string );
hooks/post-receive
--
grisbi
More information about the cvs
mailing list