/* HomeBank -- Free, easy, personal accounting for everyone.
* Copyright (C) 1995-2019 Maxime DOYEN
*
* This file is part of HomeBank.
*
* HomeBank is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* HomeBank is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#ifndef _HOMEBANK_H_
#define _HOMEBANK_H_
#ifdef HAVE_CONFIG_H
#include
#endif
#include /* isprint */
#include
#include
#include
#include
#include /* atoi, atof, atol */
#include /* memset, memcpy, strcmp, strcpy */
#include
#include
#include
#include
#include "enums.h"
#include "hb-preferences.h"
#include "hb-transaction.h"
#include "hb-currency.h"
#include "hb-account.h"
#include "hb-archive.h"
#include "hb-assign.h"
#include "hb-category.h"
#include "hb-encoding.h"
#include "hb-export.h"
#include "hb-filter.h"
#include "hb-import.h"
#include "hb-misc.h"
#include "hb-payee.h"
#include "hb-report.h"
#include "hb-tag.h"
#include "hb-hbfile.h"
#include "hb-xml.h"
#include "ui-dialogs.h"
#include "ui-pref.h"
#include "ui-widgets.h"
#define _(str) gettext (str)
#define gettext_noop(str) (str)
#define N_(str) gettext_noop (str)
/* = = = = = = = = = = = = = = = = */
/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
#define HB_UNSTABLE FALSE
#define HB_UNSTABLE_SHOW FALSE
#define HB_VERSION_MAJOR 5
#define HB_VERSION_MINOR 2
#define HB_VERSION_MICRO 6
#define HB_VERSION "5.2.6"
#define HB_VERSION_NUM (HB_VERSION_MAJOR*10000) + (HB_VERSION_MINOR*100) + HB_VERSION_MICRO
#define FILE_VERSION 1.3
#define PREF_VERSION 526
#if HB_UNSTABLE == FALSE
#define PROGNAME "HomeBank"
#define HB_DATA_PATH "homebank"
#else
#define PROGNAME "HomeBank " HB_VERSION " (unstable)"
#define HB_DATA_PATH "homebank_unstable"
#endif
#ifdef G_OS_WIN32
#define GETTEXT_PACKAGE "homebank"
#define LOCALE_DIR "locale"
#define PIXMAPS_DIR "images"
#define HELP_DIR "help"
#define PACKAGE_VERSION HB_VERSION
#define PACKAGE "homebank"
#define VERSION HB_VERSION
//#define PORTABLE_APP
//#define NOOFX
#define ENABLE_NLS 1
#endif
/* container spacing */
#define SPACING_TINY 3
#define SPACING_SMALL 6
#define SPACING_POPOVER 10
#define SPACING_MEDIUM 12
#define SPACING_LARGE 18
#define HB_DATE_MAX_GAP 7
// those 2 line are duplicated into dateentry
#define HB_MINDATE 693596 //01/01/1900
#define HB_MAXDATE 803533 //31/12/2200
/* widget minimum width */
#define HB_MINWIDTH_LIST 161
#define HB_MINHEIGHT_LIST 260
#define HB_MINWIDTH_SEARCH 240
#define HB_MINWIDTH_COLUMN 48
/* miscellaneous */
#define PHI 1.61803399
#define HB_NUMBER_SAMPLE 1234567.89
typedef enum
{
FILETYPE_UNKNOWN,
FILETYPE_HOMEBANK,
FILETYPE_OFX,
FILETYPE_QIF,
FILETYPE_CSV_HB,
// FILETYPE_AMIGA_HB,
NUM_FILETYPE
} HbFileType;
/* ---- icon size as defined into gtkiconfactory.c ---- */
/* GTK_ICON_SIZE_MENU 16
* GTK_ICON_SIZE_BUTTON 20
* GTK_ICON_SIZE_SMALL_TOOLBAR 18
* GTK_ICON_SIZE_LARGE_TOOLBAR 24 (default for toolbar)
* GTK_ICON_SIZE_DND 32
* GTK_ICON_SIZE_DIALOG 48
*/
/* -------- named icons (Standard Icon Name) -------- */
//obsolete, as since since gtk3.10 : no more icons for dialogs and menu
#define ICONNAME_SAVE_AS "document-save-as" //obsolete
#define ICONNAME_REVERT "document-revert" //obsolete
#define ICONNAME_PROPERTIES "document-properties" //obsolete
#define ICONNAME_CLOSE "window-close" //obsolete
#define ICONNAME_QUIT "application-exit" //obsolete
#define ICONNAME_HELP "help-browser" //obsolete
#define ICONNAME_ABOUT "help-about" //obsolete
#define ICONNAME_PREFERENCES "preferences-system" //obsolete
//#define ICONNAME_FIND "edit-find" //unused
//#define ICONNAME_CLEAR "edit-clear" //unused
//#define ICONNAME_HB_SCHED_SKIP "media-skip-forward"
//#define ICONNAME_HB_SCHED_POST "media-playback-start"
//in 5.2 no themeable icon to keep a consistent iconset
#define ICONNAME_WARNING "dialog-warning"
#define ICONNAME_ERROR "dialog-error"
#define ICONNAME_INFO "dialog-information"
#define ICONNAME_FOLDER "folder-symbolic"
#define ICONNAME_EMBLEM_OK "emblem-ok-symbolic"
#define ICONNAME_EMBLEM_SYSTEM "emblem-system-symbolic"
#define ICONNAME_WINDOW_CLOSE "window-close-symbolic"
#define ICONNAME_LIST_ADD "list-add-symbolic"
#define ICONNAME_LIST_REMOVE "list-remove-symbolic"
#define ICONNAME_LIST_REMOVE_ALL "list-remove-all-symbolic"
#define ICONNAME_CHANGES_PREVENT "changes-prevent-symbolic"
#define ICONNAME_SYSTEM_SEARCH "system-search-symbolic"
// custom or gnome not found
#define ICONNAME_HB_BUTTON_MENU "open-menu-symbolic"
#define ICONNAME_HB_BUTTON_COLLAPSE "list-collapse-all-symbolic"
#define ICONNAME_HB_BUTTON_EXPAND "list-expand-all-symbolic"
#define ICONNAME_HB_BUTTON_SPLIT "edit-split-symbolic"
#define ICONNAME_HB_TOGGLE_SIGN "toggle-sign-symbolic"
/* -------- named icons (Custom to homebank) -------- */
#define ICONNAME_HB_CURRENCY "hb-currency"
#define ICONNAME_HB_ACCOUNT "hb-account"
#define ICONNAME_HB_ARCHIVE "hb-archive"
#define ICONNAME_HB_ASSIGN "hb-assign"
#define ICONNAME_HB_BUDGET "hb-budget"
#define ICONNAME_HB_CATEGORY "hb-category"
#define ICONNAME_HB_PAYEE "hb-payee"
#define ICONNAME_HB_OPE_SHOW "hb-ope-show" //? "view-register
#define ICONNAME_HB_REP_STATS "hb-rep-stats"
#define ICONNAME_HB_REP_TIME "hb-rep-time"
#define ICONNAME_HB_REP_BALANCE "hb-rep-balance"
#define ICONNAME_HB_REP_BUDGET "hb-rep-budget"
#define ICONNAME_HB_REP_CAR "hb-rep-vehicle"
#define ICONNAME_HB_VIEW_LIST "hb-view-list" //"view-list-text"
#define ICONNAME_HB_VIEW_BAR "hb-view-bar" //"view-chart-bar"
#define ICONNAME_HB_VIEW_COLUMN "hb-view-column" //"view-chart-column"
#define ICONNAME_HB_VIEW_LINE "hb-view-line" //"view-chart-line"
#define ICONNAME_HB_VIEW_STACK "hb-view-stack" //"view-chart-stack"
#define ICONNAME_HB_VIEW_PIE "hb-view-pie" //"view-chart-pie"
#define ICONNAME_HB_VIEW_DONUT "hb-view-donut" //"view-chart-donut"
#define ICONNAME_HB_SHOW_LEGEND "hb-legend" //"view-legend"
#define ICONNAME_HB_SHOW_RATE "hb-rate" // obsolete ?
#define ICONNAME_HB_REFRESH "hb-view-refresh" //"view-refresh"
#define ICONNAME_HB_FILTER "hb-filter" //"edit-filter"
#define ICONNAME_HB_FILE_NEW "hb-document-new" //document-new
#define ICONNAME_HB_FILE_OPEN "hb-document-open" //document-open
#define ICONNAME_HB_FILE_SAVE "hb-document-save" //document-save
//#define ICONNAME_PRINT "document-print"
#define ICONNAME_HB_FILE_IMPORT "hb-file-import" //document-import
#define ICONNAME_HB_FILE_EXPORT "hb-file-export" //document-export
#define ICONNAME_HB_FILE_VALID "hb-file-valid"
#define ICONNAME_HB_FILE_INVALID "hb-file-invalid"
#define ICONNAME_HB_OPE_AUTO "hb-ope-auto" //?
#define ICONNAME_HB_OPE_BUDGET "hb-ope-budget" //?
#define ICONNAME_HB_OPE_ADD "hb-ope-add" //? "edit-add"
#define ICONNAME_HB_OPE_HERIT "hb-ope-herit" //? "edit-clone"
#define ICONNAME_HB_OPE_EDIT "hb-ope-edit" //
#define ICONNAME_HB_OPE_MULTIEDIT "hb-ope-multiedit" //
#define ICONNAME_HB_OPE_DELETE "hb-ope-delete" //? "edit-delete"
#define ICONNAME_CONVERT "hb-ope-convert" // obsolete ?
#define ICONNAME_HB_ASSIGN_RUN "hb-assign-run"
#define ICONNAME_HB_OPE_NEW "hb-ope-new"
// edit is defined above
#define ICONNAME_HB_OPE_REMIND "hb-ope-remind"
#define ICONNAME_HB_OPE_SIMILAR "hb-ope-similar"
#define ICONNAME_HB_OPE_CLEARED "hb-ope-cleared"
#define ICONNAME_HB_OPE_RECONCILED "hb-ope-reconciled"
#define ICONNAME_HB_OPE_FUTURE "hb-ope-future"
/*
** Global application datas
*/
struct HomeBank
{
// hbfile storage
GHashTable *h_cur; //currencies
GHashTable *h_acc; //accounts
GHashTable *h_pay; //payees
GHashTable *h_cat; //categories
GHashTable *h_tag; //tags
GHashTable *h_rul; //assign rules
GHashTable *h_memo; //memo/description
GList *arc_list; //archives
//#1419304 we keep the deleted txn to a stack trash
GTrashStack *txn_stk;
// hbfile (saved properties)
gchar *owner;
gshort auto_smode;
gshort auto_weekday;
gshort auto_nbdays;
guint32 vehicle_category;
guint32 kcur; // base currency
// hbfile (unsaved properties)
guint changes_count;
gboolean hbfile_is_new;
gboolean hbfile_is_bak;
gchar *xhb_filepath;
gboolean xhb_hasrevert; //file has backup (*.xhb~) used for revert menu sensitivity
guint64 xhb_timemodified;
// really global stuffs
gboolean first_run;
guint32 today; //today's date
gint define_off; //>0 when a stat, account window is opened
gboolean minor;
GtkWidget *mainwindow; //should be global to access attached window data
GtkWidget *alltxnwindow; //window to mutex all txn show
GtkIconTheme *icontheme;
//GdkPixbuf *lst_pixbuf[NUM_LST_PIXBUF];
//gint lst_pixbuf_maxwidth;
};
gchar *homebank_filepath_with_extention(gchar *path, gchar *extension);
gchar *homebank_filename_without_extention(gchar *path);
void homebank_file_ensure_xhb(gchar *filename);
void homebank_backup_current_file(void);
gboolean homebank_util_url_show (const gchar *url);
gchar *homebank_lastopenedfiles_load(void);
gboolean homebank_lastopenedfiles_save(void);
void homebank_window_set_icon_from_file(GtkWindow *window, gchar *filename);
const gchar *homebank_app_get_config_dir (void);
const gchar *homebank_app_get_images_dir (void);
const gchar *homebank_app_get_pixmaps_dir (void);
const gchar *homebank_app_get_locale_dir (void);
const gchar *homebank_app_get_help_dir (void);
const gchar *homebank_app_get_datas_dir (void);
const gchar *homebank_app_get_pkglib_dir (void);
guint32 homebank_app_date_get_julian(void);
/* - - - - obsolete things - - - - */
/*
typedef struct _budget Budget;
struct _budget
{
guint key;
gushort flags;
guint cat_key;
guint year;
gdouble value[13];
};
*/
/*
struct _investment
{
guint date;
gdouble buy_amount;
gdouble curr_amount;
gdouble commission;
guint number;
guint account;
gchar *name;
gchar *symbol;
gchar *note;
};
*/
#endif