1 #ifndef _STRUCTURES_H
2 #define _STRUCTURES_H
3 
4 #include <glib.h>
5 #include <gtk/gtk.h>
6 
7 /* fichier d'en tête structures.h */
8 /* contient presque toutes les structures et enum du prog */
9 
10 
11 /* the VERSION_FICHIER is in fact the lowest version which can be used to open the */
12 /* file, so each time we make an incompatibility issue, VERSION_FICHIER must be set */
13 /* to VERSION_GRISBI */
14 #define VERSION_FICHIER         "1.2.1"
15 #define OLD_VERSION_FICHIER		"0.6.0"
16 
17 #define VERSION_FICHIER_ETAT    "0.6.0"
18 #define VERSION_FICHIER_CATEG   "0.6.0"
19 #define VERSION_FICHIER_IB      "0.6.0"
20 
21 #define CSV_MAX_TOP_LINES       10	                /** How many lines to show in CSV preview.  */
22 #define GSB_EPSILON             0.0000005           /* Sert à comparer des doubles */
23 #define GSB_MAX_SPIN_BUTTON     100000000000000.0   /* Dimensionne la largeur naturelle maxi des spin_button */
24 #ifdef __APPLE__
25 #define ETAT_WWW_BROWSER        "open"				/* définit le browser par défaut */
26 #else
27 #define ETAT_WWW_BROWSER        "xdg-open"          /* définit le browser par défaut */
28 #endif
29 
30 /* Nbre de messages de delete et de warnings */
31 #define NBRE_MSG_WARNINGS		9
32 #define NBRE_MSG_DELETE			7
33 
34 /* Sorting option for the transactions. Used in gsb_transactions_list_display_sort_changed () */
35 #define PRIMARY_SORT            0
36 #define SECONDARY_SORT          1
37 
38 /* definitions pour le basculement en basse résolution */
39 #define LOW_DEF_HEIGHT_HIGH		900
40 #define LOW_DEF_WIDTH_HIGH		1600
41 
42 /* Dimensions min et position de la fenetre de l'application */
43 #define WIN_MIN_HEIGHT			700
44 #define WIN_MIN_WIDTH			1030
45 #define WIN_POS_X				10
46 #define WIN_POS_Y				10
47 
48 /* Largeur min du panel de gauche de la fenetre principale */
49 #define PANEL_MIN_WIDTH			250
50 
51 /* margin for widgets */
52 #define MARGIN_BOX				 5				/* spacing for gtk_box_new () */
53 #define MARGIN_END              10
54 #define MARGIN_START            10
55 #define MARGIN_TOP              10
56 #define MARGIN_BOTTOM           10
57 #define MARGIN_PADDING_BOX      15
58 
59 /* width for widget */
60 #define BOX_BORDER_WIDTH		10
61 #define ENTRY_MIN_WIDTH_1		100
62 #define FORM_COURT_WIDTH		120				/* largeur minimale demandée pour les champs courts du formulaire */
63 #define FORM_LONG_WIDTH			200				/* largeur minimale demandée pour les champs longs du formulaire */
64 
65 /* constants for Preferences */
66 #define PREFS_PANED_MIN_WIDTH	235				/* Largeur Min du panel gauche des preferences */
67 #define PREFS_WIN_MIN_HEIGHT	605				/* Hauteur Min de la fenetre des preferences */
68 #define PREFS_WIN_MIN_WIDTH		910				/* Largeur Min de la fenetre des preferences */
69 #define SW_MAX_CONTENT_WIDTH	600				/* Since Gtk-3.22 */
70 #define SW_MIN_HEIGHT			150
71 
72 /* used for gtk_tree_view_column_set_alignment() */
73 #define COLUMN_LEFT				0.0
74 #define COLUMN_CENTER			0.5
75 #define COLUMN_RIGHT			1.0
76 
77 /* used for labels alignment */
78 #define GSB_LEFT 				0
79 #define GSB_CENTER 				0.5
80 #define GSB_RIGHT 				1
81 #define GSB_TOP 				0
82 #define GSB_BOTTOM 				1
83 
84 /* valeurs pour le logo de grisbi */
85 #define LOGO_WIDTH 				48
86 #define LOGO_HEIGHT 			48
87 
88  /* définitions pour les noms de fichier dans les boutons de la vue accueil */
89 #define GSB_NBRE_CHAR_TRUNC		15
90 #define GSB_NBRE_LIGNES_BOUTON	 6
91 
92 /* troncature des titres de colonnes pour l'affichage de la composition */
93 #define	TRUNC_FORM_FIELD		20 		/* du formulaire */
94 #define TRUNC_LIST_COL_NAME		 8		/* de la liste des ope */
95 
96 /* définitions pour les tableaux des transactions */
97 #define CUSTOM_MODEL_VISIBLE_COLUMNS	7		/* number of visible columns */
98 #define TRANSACTION_LIST_ROWS_NB 		4		/* definition of the number of max rows for a line, for now limit to 4 */
99 
100 /*START_EXTERN*/
101 /* variables initialisées lors de l'exécution de grisbi PROVISOIRE */
102 extern struct _GrisbiWinRun run;				/* declared in grisbi_win.c */
103 extern struct _GrisbiWinEtat etat;				/* declared in grisbi_win.c */
104 /*END_EXTERN*/
105 
106 /******************************************************************************/
107 /* Structures                                                                 */
108 /******************************************************************************/
109 typedef struct _GrisbiAppConf			GrisbiAppConf;
110 typedef struct _GrisbiWinEtat			GrisbiWinEtat;
111 typedef struct _GrisbiWinRun			GrisbiWinRun;
112 
113 /* structure etat variables configurées par le fichier de comptes */
114 struct _GrisbiWinEtat
115 {
116 	/* variables generales */
117     gchar *		accounting_entity;
118 	gchar *		adr_common;
119 	gchar *		adr_secondary;
120 	gchar *		date_format;								/* format local d'affichage des dates */
121     gint		is_archive;									/** TRUE if the file is an archive, FALSE else */
122 
123 	/* files and backup part */
124 	gint 		crypt_file;									/* TRUE if we want to crypt the file */
125     gint 		fichier_deja_ouvert;						/* à un si lors de l'ouverture, le fichier semblait déjà ouvert */
126 
127     /* devises pour les catégories, imputations budgétaires et les tiers */
128     gint		no_devise_totaux_categ;
129     gint		no_devise_totaux_ib;
130     gint		no_devise_totaux_tiers;
131 
132     /* reconciliation */
133     gint		reconcile_end_date;							/* Date initiale + 1 mois par défaut */
134     gboolean	reconcile_sort;								/* TRUE = Sort by descending date the reconciliations */
135 
136     /* formulaire */
137     gint		affiche_nb_ecritures_listes;
138     gint		retient_affichage_par_compte;				/* à 1 si les caractéristiques de l'affichage (R, non R ...) diffèrent par compte */
139 	gboolean	form_date_force_prev_year;					/* FALSE = default année en cours TRUE = forcer l'année précédente pour les dates futures */
140 
141     /* Fonts & logo */
142     gint		utilise_logo;
143     gchar		*name_logo;
144 
145     gboolean	automatic_separator;   						/* TRUE if do automatic separator */
146 
147     /* import files */
148     gint		extract_number_for_check;      				/* TRUE if Extracting a number and save it in the field No Cheque/Virement */
149     gint		copy_payee_in_note;            				/* TRUE si recopie le tiers dans les notes FALSE par défaut */
150     gint		fusion_import_transactions;    				/* TRUE if merge transactions imported with transactions found*/
151     gint		associate_categorie_for_payee;				/* TRUE to automatically retrieve the category of the payee if it exists */
152     gint		get_fyear_by_value_date;					/* TRUE to get the fyear by value date, FALSE by date */
153 	gint		import_files_nb_days;						/* Number of days for search transactions */
154 
155     gchar *		csv_separator;                              /* CSV separator to use while parsing a CSV file. */
156     gboolean	csv_skipped_lines [ CSV_MAX_TOP_LINES ];	/* Contains a pointer to skipped lines in CSV preview. */
157 	gboolean	csv_force_date_valeur_with_date;			/* force la date de valeur si non présente dans le fichier */
158     gboolean	qif_no_import_categories;					/* TRUE if no new item can be appended in the categories divisions */
159     gint		qif_use_field_extract_method_payment;      	/* use the field 'N' to define the method of payment */
160 
161     /* export files */
162     gint		export_file_format;							/* EXPORT_QIF or EXPORT_CSV */
163     gboolean	export_files_traitement;					/* 0 = traitement individuel, 1 = traitement automatique */
164 	gboolean	export_force_US_dates;						/* 0 = format interne 1 = format US */
165 	gboolean	export_force_US_numbers;					/* 0 = format interne 1 = format US */
166 	gboolean	export_quote_dates;							/* "cite les dates" TRUE par défaut */
167 
168     /* combofix configuration */
169     gint		combofix_mixed_sort;						/* TRUE for no separation between the categories */
170     gint		combofix_case_sensitive;					/* TRUE if case sensitive */
171     gint		combofix_force_payee;						/* TRUE if no new item can be appended in the payee combofix */
172     gint		combofix_force_category;					/* TRUE if no new item can be appended in the category and budget combofix */
173 
174     /* width panned */
175     gint		largeur_colonne_echeancier;
176     gint		largeur_colonne_comptes_comptes;
177     gint		largeur_colonne_etat;
178 
179     /* variables sur l'échéancier */
180     gint		affichage_commentaire_echeancier;			/* à 1 si le commentaire est affiché */
181     gint		affichage_echeances;						/* affichage de la période affichée dans la vue échéancier */
182     gint		affichage_echeances_perso_nb_libre;			/* nombre de périodicité des échéances personnalisées */
183     gint		affichage_echeances_perso_j_m_a;			/* type de périodicité des échéances personnalisées */
184 	gboolean	scheduler_set_default_account;				/* set default account for the scheduled form */
185 	gint		scheduler_default_account_number;			/* default account number for the scheduled form */
186 	gboolean	scheduler_set_fixed_date;					/* set fixed date for the scheduled transaction */
187 	gint		scheduler_set_fixed_date_day;				/* day of fixed date for the scheduled transaction (28, 29, 30 or 31) */
188 
189     /* variables pour les metatree */
190     gint		metatree_add_archive_in_totals;				/* Add transactions archived in the totals */
191 	gboolean	metatree_assoc_mode;						/* Remplace Revenus/Dépenses par Produits/Charges */
192     gint		metatree_sort_transactions;					/* 1 = sorting by increasing date 2 = Sort by date descending */
193 	gboolean	metatree_unarchived_payees;					/* TRUE = limit the list of payees for combofix */
194 
195     /* variables for the module estimate balance */
196     gint		bet_debut_period;
197     gint		bet_cash_account_option;				/* ajoute l'onglet prévision aux comptes de caisse */
198 
199     /* variables pour le simulateur de crédits */
200     gdouble		bet_capital;
201     gint		bet_currency;
202     gdouble		bet_taux_annuel;
203     gint		bet_index_duree;
204     gdouble		bet_frais;
205     gint		bet_type_taux;
206 
207     /* largeur des colonnes */
208     gchar *		transaction_column_width;
209     gchar *		scheduler_column_width;
210 };
211 
212 /* structure conf variables configured by gsettings or grisbi.conf */
213 struct _GrisbiAppConf
214 {
215 /* root part*/
216     gint        first_use;                                  /* première utilisation ou réinitialisation de grisbi */
217 
218 /* backup part */
219     gboolean    compress_backup;                            /* TRUE if we want to compress the backup */
220     gboolean    make_backup_every_minutes;                  /* TRUE to make backup every x mn */
221     gint        make_backup_nb_minutes;                     /* the number of minutes we want to make a backup */
222     gboolean    make_bakup_single_file;                     /* TRUE if a single backup file */
223     gboolean    sauvegarde_demarrage;                       /* utilisé pour enregistrer le fichier s'il s'est bien ouvert */
224 	gboolean	sauvegarde_fermeture;						/* TRUE to create a backup when save file */
225 	gboolean	remove_backup_files;						/* removing automatically backup files */
226 	guint		remove_backup_months;						/* Number of months before removing backup files */
227 
228 /* display part */
229     gint        display_window_title;                       /* selection du titre principal de grisbi */
230     gint		display_toolbar;                            /* Display mode of toolbar. */
231     gboolean    formulaire_toujours_affiche;                /* TRUE formulaire toujours affiché */
232     gboolean    group_partial_balance_under_accounts;       /* TRUE = in home page group the partial balance with accounts */
233     gboolean    show_headings_bar;                          /* Show headings bar or not. */
234     gboolean    show_closed_accounts;
235 
236 /* files part */
237     gboolean    compress_file;                              /* TRUE if we want to compress the Grisbi file */
238     gint        dernier_fichier_auto;                       /* chargement du dernier fichier utilisé */
239     gboolean    force_enregistrement;                       /* à un si on force l'enregistrement */
240     gchar *     last_open_file;                             /* dernier fichier ouvert */
241     gint        nb_max_derniers_fichiers_ouverts;           /* contient le nb max que peut contenir nb_derniers_fichiers_ouverts */
242     gint        nb_derniers_fichiers_ouverts;               /* contient le nb de derniers fichiers ouverts */
243     gboolean    sauvegarde_auto;                            /* utilisé pour enregistrer le fichier automatiquementà la fermeture */
244 	gboolean	force_import_directory;						/* force l'utilisation d'un répertoire pour l'importation des fichiers */
245 	gchar *     import_directory;                          	/* répertoire par défaut pour l'importation des fichiers */
246 	gboolean	import_remove_file;							/* remove file after import */
247 
248 /* archive stuff */
249     gboolean    archives_check_auto;                  		/* TRUE if we want to check the number of non archived transactions at the opening */
250     gint        max_non_archived_transactions_for_check;    /* the max number of transaction before grisbi warm at the opening */
251 
252 /* form part*/
253     gboolean    affichage_exercice_automatique;             /* automatic fyear :0 to set according to the date, 1 according to value date */
254     gboolean    automatic_completion_payee;                 /* 1 pour autoriser la completion automatique des opérations */
255     gboolean    automatic_erase_credit_debit;               /* 1 pour effacer les champs crédit et débit */
256     gboolean    automatic_recover_splits;                   /* 1 pour recréer automatiquement les sous opérations */
257 	gint		completion_minimum_key_length;				/* Minimum length of the search key in characters */
258     gboolean    form_enter_key;								/* si TRUE, la touche entrée finit l'opération */
259 	gboolean	form_validate_split;						/* 0 select a new transaction, 1 select the mother transaction */
260     gint        fyear_combobox_sort_order;                  /* fyear combobox type sort, GTK_SORT_ASCENDING by default */
261     gboolean    limit_completion_to_current_account;        /* Limit payee completion to current account or do a full search. */
262 
263 /* general part */
264     gchar *     browser_command;
265     gboolean    custom_fonte_listes;                        /* TRUE to use a custom font for the lists */
266     gchar *     font_string;                                /* contain the description of the font, or NULL */
267 	gchar *		language_chosen;							/* choix de la langue : NULL par défaut = langue système */
268 	gchar *		current_theme;
269 	gint		force_type_theme;							/* 0 = auto, 1 = standard 2 = dark theme 3 = light theme */
270 	gint		use_type_theme;								/* 1 = standard 2 = dark theme 3 = light theme */
271 
272     /* Home page */
273     gint        pluriel_final;                              /* 0 = finals 1 = finaux */
274 
275     /* variables for the list of categories */
276     gint        metatree_action_2button_press;              /* 0 default gtk, 1 edit_function, 2 manage division if possible */
277 
278 	/* variables for the list of transactions */
279     gboolean    show_transaction_gives_balance;             /* TRUE si on visualise l'opération qui donne le solde du jour */
280     gboolean    show_transaction_selected_in_form;          /* TRUE will show the selected transaction in the form */
281     gint		transactions_list_primary_sorting;          /* Primary sorting option for the transactions */
282     gint    	transactions_list_secondary_sorting;        /* Secondary sorting option for the transactions */
283 
284 /* geometry part */
285     gint        x_position;                                 /* main_window x position */
286     gint        y_position;                                 /* main_window y position */
287     gint        main_width;                                 /* main_window width */
288     gint        main_height;                                /* main_window height */
289 	gboolean	low_definition_screen;						/* TRUE use a low resolution screen */
290     gboolean    full_screen;                                /* TRUE to full screen, 0 else */
291     gboolean    maximize_screen;                            /* TRUE to maximize screen, 0 else */
292 
293 /* panel part */
294     gboolean 	active_scrolling_left_pane;                 /* active mouse scrolling in the left_pane. */
295     gint        panel_width;                                /* navigation paned width */
296 
297 /* prefs part */
298 	gboolean	prefs_archives_sort_order;					/* archive sort order, GTK_SORT_ASCENDING by default */
299     gboolean	prefs_fyear_sort_order;                     /* fyear type sort, GTK_SORT_ASCENDING by default */
300 	gint		prefs_height;								/* preferences height */
301 	gint		prefs_panel_width;							/* preferences paned width */
302     gint        prefs_width;                                /* preferences width */
303 
304 /* scheduled part */
305     gboolean    balances_with_scheduled;                    /* TRUE = the balance incorporates the scheduled operations */
306     gboolean    execute_scheduled_of_month;                 /* warn/execute scheduled at expiration (FALSE) or of the month (TRUE) */
307 	gboolean	select_scheduled_in_list;					/* TRUE = select last scheduled in list TRUE by default */
308 	gint		nb_days_before_scheduled;					/* nombre de jours avant relance des opérations planifiées */
309 	gboolean	scheduler_set_fixed_day;					/* Si coché le nombre est considéré comme un jour fixe */
310 	gint		scheduler_fixed_day;
311 
312     /* Tips */
313     gint        last_tip;
314     gboolean    show_tip;
315 
316 	/* NOT SAVED */
317 	/* CSS data */
318 	gint		prefs_change_css_data;						/* compteur de modification d'une règle CSS */
319 	gboolean	use_css_local_file;							/* TRUE si utilisation du fichier css local NOT SAVED*/
320 };
321 
322 /* structure run
323  * variables containing just 0 or 1
324  * générées pendant l'exécution du programme
325  *
326  */
327 struct _GrisbiWinRun
328 {
329 	gboolean	definition_screen_toggled;					/* force l'utilisation des dimensions par defaut */
330 
331 	/* old version of file */
332     gboolean	old_version;								/* TRUE if file version < 0.6 */
333 	gboolean	account_number_is_0;						/* TRUE si an account has 0 for number */
334 
335     /* initialisation variables */
336     gboolean	new_crypted_file;							/* 0 à l'exécution de init_variables () 1 si new crypted file*/
337 	gboolean	new_account_file;							/* 0 à l'exécution de init_variables () 1 si new account file */
338 
339 	/* backup */
340 	gboolean	remove_backup_files;						/* on ne fait cette sauvegarde qu'une fois par session */
341 
342     /* file stuff */
343     time_t		file_modification;
344     gboolean	file_is_saving;
345     gboolean	file_is_loading;
346     gboolean	menu_save;
347 
348     /* reconciliation */
349     gint		equilibrage;
350     gint		reconcile_account_number;					/* Save the last reconciliation try: account */
351     gchar *		reconcile_final_balance;					/* final balance amount */
352     GDate *		reconcile_new_date;							/* new date */
353 
354     /* home page - accueil */
355     /* ces 5 variables sont mises à 1 lorsqu'il est nécessaire de rafraichir cette */
356     /* partie la prochaine fois qu'on va sur l'accueil */
357 
358     gboolean	mise_a_jour_liste_comptes_accueil;
359     gboolean	mise_a_jour_liste_echeances_manuelles_accueil;
360     gboolean	mise_a_jour_liste_echeances_auto_accueil;
361     gboolean	mise_a_jour_soldes_minimaux;
362     gboolean	mise_a_jour_fin_comptes_passifs;
363 
364 	/* MAJ des liens entre devises */
365 	gboolean	block_update_links;							/* block la mise à jour des liens en cas d'ajout ou de suppression de devise */
366 
367 	/* payees: variables pour les associations de tiers */
368 	gboolean 	import_asso_case_insensitive;				/* TRUE = ne tient pas compte de la casse */
369 	gboolean	import_asso_use_regex;						/* TRUE = la chaine de recherche est une expression régulière */
370 	gboolean	import_asso_replace_rule;					/* TRUE = remplacela règle existante */
371 
372 	/* prefs */
373 	guint		prefs_css_rules_tab;						/* mémorise l'onglet css rules sélectionné */
374 	guint		prefs_divers_tab;							/* memorise l'onglet du notebook divers options */
375 	gboolean	prefs_expand_tree;							/* memorise le choix du bouton expand collapse du treeview des preferences */
376 	guint		prefs_import_tab;							/* mémorise l'onglet import sélectionné */
377 	gchar *		prefs_selected_row;							/* memorise l'onglet selectionné du treeview des preferences */
378 
379 	/* Reports */
380 	gboolean	no_show_prefs;								/* si VRAI = ne pas montrer les préférences de l'état */
381 	gboolean	empty_report;								/* Si VRAI remplace la mise à jour de l'état sélectionné par un état vide */
382 															/* permet de gagner du temps exemple état vide et état recherche */
383 
384 	/* Transactions */
385 	gint		display_one_line;			/* 1 fixes bug 1875 */
386 	gint		display_two_lines;			/* 1-2, 1-3, "1-4 */
387 	gint		display_three_lines;		/* 1-2-3, 1-2-4, 1-3-4 */
388 
389 };
390 
391 /** Contain pre-defined CSV separators */
392 struct CsvSeparators
393 {
394     const gchar *name;		/** Visible name of CSV separator */
395     const gchar *value; 	/** Real value */
396 };
397 
398 /******************************************************************************/
399 /* Enum                                                                       */
400 /******************************************************************************/
401 typedef enum 	_ComboColumns			ComboColumns;
402 typedef enum	_CustomModelOpeColumns	CustomModelOpeColumns;
403 typedef enum 	_GsbTransactionType		GsbTransactionType;
404 typedef enum 	_GsbTitleType	 		GsbTitleType;
405 typedef enum 	_MetatreeContent		MetatreeContent;
406 typedef enum 	_SettingsSchema 		SettingsSchema;
407 typedef enum	_TransactionsField		TransactionsField;
408 
409 /* définition du titre de grisbi */
410 enum _GsbTitleType
411 {
412     GSB_ACCOUNT_ENTITY,
413     GSB_ACCOUNT_HOLDER,
414     GSB_ACCOUNT_FILENAME
415 };
416 
417 /* definition of the columns of model for the left panel  */
418 enum LeftPanelTreeColumns
419 {
420     LEFT_PANEL_TREE_TEXT_COLUMN,
421     LEFT_PANEL_TREE_PAGE_COLUMN,
422     LEFT_PANEL_TREE_BOLD_COLUMN,
423     LEFT_PANEL_TREE_ITALIC_COLUMN,
424     LEFT_PANEL_TREE_NUM_COLUMNS
425 };
426 
427 
428 /* définition du type d'origine pour les données du module budgétaire */
429 enum BetArrayOriginData
430 {
431     SPP_ORIGIN_TRANSACTION,             /* Ligne issue d'une opération */
432     SPP_ORIGIN_SCHEDULED,               /* Ligne issue d'une opération plannifiée */
433     SPP_ORIGIN_FUTURE,                  /* Ligne issue d'une opération future */
434     SPP_ORIGIN_HISTORICAL,              /* Ligne issue d'une donnée historique */
435     SPP_ORIGIN_ACCOUNT,                 /* Ligne issue d'un compte */
436     SPP_ORIGIN_ARRAY,                   /* Donnée provenant du tableau de prévision (duration_widget) */
437     SPP_ORIGIN_CONFIG,                  /* Donnée provenant de la page des préférences (duration_widget) */
438     SPP_ORIGIN_SIMULATOR,               /* Donnée provenant du tableau du simulateur de crédit */
439     SPP_ORIGIN_FINANCE,                 /* Donnée provenant du tableau d'amortissement du simulateur */
440 	SPP_ORIGIN_INVERSE_FINANCE,			/* Donnée provenant du tableau d'amortissement du simulateur */
441 	 									/* AVEC INVERSION de colonnes */
442     SPP_ORIGIN_SOLDE                    /* Ligne de solde au premier du mois  */
443 };
444 
445 
446 /* définition du type de mise à jour en fonction des données du module budgétaire */
447 enum BetTypeMaj
448 {
449     BET_MAJ_FALSE = 0,
450     BET_MAJ_ESTIMATE,
451     BET_MAJ_HISTORICAL,
452     BET_MAJ_FINANCIAL,
453     BET_MAJ_ALL
454 };
455 
456 
457 /* recopie des types de transaction de la libofx en attendant une version propre */
458 enum _GsbTransactionType
459 {
460     GSB_CREDIT,     /**< Generic credit */
461     GSB_DEBIT,      /**< Generic debit */
462     GSB_INT,        /**< Interest earned or paid (Note: Depends on signage of amount) */
463     GSB_DIV,        /**< Dividend */
464     GSB_FEE,        /**< FI fee */
465     GSB_SRVCHG,     /**< Service charge */
466     GSB_DEP,        /**< Deposit */
467     GSB_ATM,        /**< ATM debit or credit (Note: Depends on signage of amount) */
468     GSB_POS,        /**< Point of sale debit or credit (Note: Depends on signage of amount) */
469     GSB_XFER,       /**< Transfer */
470     GSB_CHECK,      /**< Check */
471     GSB_PAYMENT,    /**< Electronic payment */
472     GSB_CASH,       /**< Cash withdrawal */
473     GSB_DIRECTDEP,  /**< Direct deposit */
474     GSB_DIRECTDEBIT,/**< Merchant initiated debit */
475     GSB_REPEATPMT,  /**< Repeating payment/standing order */
476     GSB_OTHER       /**< Somer other type of transaction */
477   };
478 
479 
480 enum _SettingsSchema
481 {
482     SETTINGS_ROOT = 0,
483     SETTINGS_FILES_BACKUP,
484     SETTINGS_DISPLAY,
485     SETTINGS_FILES_FILE,
486     SETTINGS_FORM,
487     SETTINGS_GENERAL,
488     SETTINGS_GEOMETRY,
489     SETTINGS_MESSAGES_DELETE,
490     SETTINGS_MESSAGES_TIPS,
491     SETTINGS_MESSAGES_WARNINGS,
492     SETTINGS_PANEL,
493     SETTINGS_PREFS,
494     SETTINGS_SCHEDULED
495 };
496 
497 enum FormatDateOrder
498 {
499     ORDER_DD_MM_YY = 0,
500     ORDER_MM_DD_YY,
501     ORDER_YY_MM_DD,
502     ORDER_YY_DD_MM,
503     ORDER_DD_YY_MM,
504     ORDER_MM_YY_DD,
505     ORDER_MAX
506 };
507 
508 enum _ComboColumns
509 {
510     COMBO_COL_VISIBLE_STRING = 0,    /* string : what we see in the combofix */
511     COMBO_COL_REAL_STRING,           /* string : what we set in the entry when selecting something */
512     COMBO_COL_VISIBLE,               /* boolean : if that line has to be showed */
513     COMBO_COL_LIST_NUMBER,           /* int : the number of the list 0, 1 ou 2 (CREDIT DEBIT SPECIAL) */
514     COMBO_COL_SEPARATOR,             /* TRUE : if this is a separator */
515     COMBO_N_COLUMNS
516 };
517 
518 enum _CustomModelOpeColumns			/* The data columns that we export via the tree model interface */
519 {
520     /* for the 6 first col, this can be changed by user,
521      * so juste name col_x, and comment the by default */
522     CUSTOM_MODEL_COL_0 = 0,	/* by default, check */
523     CUSTOM_MODEL_COL_1,		/* by default, date */
524     CUSTOM_MODEL_COL_2,		/* by default, payee */
525     CUSTOM_MODEL_COL_3,		/* by default, P/R */
526     CUSTOM_MODEL_COL_4,		/* by default, debit */
527     CUSTOM_MODEL_COL_5,		/* by default, credit */
528     CUSTOM_MODEL_COL_6,		/* by default, balance */
529 
530     CUSTOM_MODEL_BACKGROUND,			/*< color of the background (a GdkRGBA) */
531     CUSTOM_MODEL_SAVE_BACKGROUND, 		/*< when selection, save of the normal color of background (a GdkRGBA) */
532     CUSTOM_MODEL_AMOUNT_COLOR,			/*< color of the amount (a string like "red" or NULL)*/
533     CUSTOM_MODEL_TEXT_COLOR,			/*< color of the text */
534     CUSTOM_MODEL_TRANSACTION_ADDRESS,		/* pointer to the transaction structure */
535     CUSTOM_MODEL_WHAT_IS_LINE,			/*< on what the address point to ? IS_TRANSACTION, IS_ARCHIVE (see below) */
536     CUSTOM_MODEL_FONT, 				/*< PangoFontDescription if used */
537     CUSTOM_MODEL_TRANSACTION_LINE, 		/*< the line in the transaction (0, 1, 2 or 3) */
538     CUSTOM_MODEL_VISIBLE, 			/*< whether that transaction is visible or not */
539     CUSTOM_MODEL_CHECKBOX_VISIBLE,   		/*< whether the checkbox is visible or not */
540     CUSTOM_MODEL_CHECKBOX_VISIBLE_RECONCILE,   	/*< whether the checkbox is visible or not during reconciliation */
541     CUSTOM_MODEL_CHECKBOX_ACTIVE,   		/*< whether the checkbox is active or not */
542 
543     CUSTOM_MODEL_N_COLUMNS
544 };
545 
546 enum _MetatreeContent				/* content of the metatree : 0 : payee, 1 : category, 2 : budget */
547 {
548 	METATREE_PAYEE,
549 	METATREE_CATEGORY,
550 	METATREE_BUDGET
551 };
552 
553 enum _TransactionsField				/* the element number for each showable in the list */
554 {
555     ELEMENT_DATE = 1,
556     ELEMENT_VALUE_DATE,
557     ELEMENT_PARTY,
558     ELEMENT_BUDGET,
559     ELEMENT_DEBIT,
560     ELEMENT_CREDIT,
561     ELEMENT_BALANCE,
562     ELEMENT_AMOUNT,
563     ELEMENT_PAYMENT_TYPE,
564     ELEMENT_RECONCILE_NB,
565     ELEMENT_EXERCICE,
566     ELEMENT_CATEGORY,
567     ELEMENT_MARK,
568     ELEMENT_VOUCHER,
569     ELEMENT_NOTES,
570     ELEMENT_BANK,
571     ELEMENT_NO,
572     ELEMENT_CHQ
573 };
574 
575 
576 #endif
577