|
GnuCash 2.4.99
|
00001 /********************************************************************\ 00002 * split-register.h -- split register API * 00003 * * 00004 * This program is free software; you can redistribute it and/or * 00005 * modify it under the terms of the GNU General Public License as * 00006 * published by the Free Software Foundation; either version 2 of * 00007 * the License, or (at your option) any later version. * 00008 * * 00009 * This program is distributed in the hope that it will be useful, * 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00012 * GNU General Public License for more details. * 00013 * * 00014 * You should have received a copy of the GNU General Public License* 00015 * along with this program; if not, contact: * 00016 * * 00017 * Free Software Foundation Voice: +1-617-542-5942 * 00018 * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 * 00019 * Boston, MA 02110-1301, USA gnu@gnu.org * 00020 * * 00021 \********************************************************************/ 00140 #ifndef SPLIT_REGISTER_H 00141 #define SPLIT_REGISTER_H 00142 00143 #include <glib.h> 00144 00145 #include "Transaction.h" 00146 #include "table-allgui.h" 00147 00152 typedef enum 00153 { 00154 BANK_REGISTER, 00155 CASH_REGISTER, 00156 ASSET_REGISTER, 00157 CREDIT_REGISTER, 00158 LIABILITY_REGISTER, 00159 INCOME_REGISTER, 00160 EXPENSE_REGISTER, 00161 EQUITY_REGISTER, 00162 STOCK_REGISTER, 00163 CURRENCY_REGISTER, 00164 RECEIVABLE_REGISTER, 00165 PAYABLE_REGISTER, 00166 TRADING_REGISTER, 00167 NUM_SINGLE_REGISTER_TYPES, 00168 00169 GENERAL_LEDGER = NUM_SINGLE_REGISTER_TYPES, 00170 INCOME_LEDGER, 00171 PORTFOLIO_LEDGER, 00172 SEARCH_LEDGER, 00173 00174 NUM_REGISTER_TYPES 00175 } SplitRegisterType; 00176 00178 typedef enum 00179 { 00180 REG_STYLE_LEDGER, 00181 REG_STYLE_AUTO_LEDGER, 00182 REG_STYLE_JOURNAL 00183 } SplitRegisterStyle; 00184 00189 #define ACTN_CELL "action" 00190 #define BALN_CELL "balance" 00191 #define CRED_CELL "credit" 00192 #define DATE_CELL "date" 00193 #define DDUE_CELL "date-due" 00194 #define DEBT_CELL "debit" 00195 #define DESC_CELL "description" 00196 #define FCRED_CELL "credit-formula" 00197 #define FDEBT_CELL "debit-formula" 00198 #define MEMO_CELL "memo" 00199 #define MXFRM_CELL "transfer" 00200 #define NOTES_CELL "notes" 00201 #define NUM_CELL "num" 00202 #define PRIC_CELL "price" 00203 #define RATE_CELL "exchrate" 00204 #define RECN_CELL "reconcile" 00205 #define SHRS_CELL "shares" 00206 #define TBALN_CELL "trans-balance" 00207 #define TCRED_CELL "trans-credit" 00208 #define TDEBT_CELL "trans-debit" 00209 #define TSHRS_CELL "trans-shares" 00210 #define TYPE_CELL "split-type" 00211 #define XFRM_CELL "account" 00212 #define VNOTES_CELL "void-notes" 00213 #define RBALN_CELL "reg-run-balance" 00214 00219 #define CURSOR_SINGLE_LEDGER "cursor-single-ledger" 00220 #define CURSOR_DOUBLE_LEDGER "cursor-double-ledger" 00221 #define CURSOR_SINGLE_JOURNAL "cursor-single-journal" 00222 #define CURSOR_DOUBLE_JOURNAL "cursor-double-journal" 00223 #define CURSOR_SPLIT "cursor-split" 00224 00228 typedef enum 00229 { 00230 CURSOR_CLASS_NONE = -1, 00231 CURSOR_CLASS_SPLIT, 00232 CURSOR_CLASS_TRANS, 00233 NUM_CURSOR_CLASSES 00234 } CursorClass; 00235 00236 typedef struct split_register_colors 00237 { 00238 guint32 header_bg_color; 00239 00240 guint32 primary_bg_color; 00241 guint32 secondary_bg_color; 00242 00243 guint32 primary_active_bg_color; 00244 guint32 secondary_active_bg_color; 00245 00246 guint32 split_bg_color; 00247 guint32 split_active_bg_color; 00248 } SplitRegisterColors; 00249 00250 00252 typedef struct split_register SplitRegister; 00253 typedef struct sr_info SRInfo; 00254 00256 struct split_register 00257 { 00258 Table * table; 00260 SplitRegisterType type; 00261 SplitRegisterStyle style; 00262 00263 gboolean use_double_line; 00264 gboolean is_template; 00265 gboolean do_auto_complete; 00267 SRInfo * sr_info; 00268 }; 00269 00271 typedef GtkWidget *(*SRGetParentCallback) (gpointer user_data); 00272 00273 00274 /* Prototypes ******************************************************/ 00275 00289 SplitRegister * gnc_split_register_new (SplitRegisterType type, 00290 SplitRegisterStyle style, 00291 gboolean use_double_line, 00292 gboolean is_template); 00293 00298 void gnc_split_register_destroy (SplitRegister *reg); 00299 00311 void gnc_split_register_config (SplitRegister *reg, 00312 SplitRegisterType type, 00313 SplitRegisterStyle style, 00314 gboolean use_double_line); 00315 00322 void gnc_split_register_set_auto_complete(SplitRegister *reg, 00323 gboolean do_auto_complete); 00324 00331 void gnc_split_register_set_read_only (SplitRegister *reg, gboolean read_only); 00332 00333 00340 void gnc_split_register_set_template_account (SplitRegister *reg, 00341 Account *template_account); 00342 00344 void gnc_split_register_set_data (SplitRegister *reg, gpointer user_data, 00345 SRGetParentCallback get_parent); 00346 00353 CursorClass gnc_split_register_get_current_cursor_class (SplitRegister *reg); 00354 00363 CursorClass gnc_split_register_get_cursor_class 00364 (SplitRegister *reg, 00365 VirtualCellLocation vcell_loc); 00366 00374 Transaction * gnc_split_register_get_current_trans (SplitRegister *reg); 00375 00386 Split * 00387 gnc_split_register_get_current_trans_split (SplitRegister *reg, 00388 VirtualCellLocation *vcell_loc); 00389 00397 Split * gnc_split_register_get_current_split (SplitRegister *reg); 00398 00406 Split * gnc_split_register_get_blank_split (SplitRegister *reg); 00407 00422 gboolean 00423 gnc_split_register_get_split_virt_loc (SplitRegister *reg, Split *split, 00424 VirtualCellLocation *vcell_loc); 00425 00438 gboolean 00439 gnc_split_register_get_split_amount_virt_loc (SplitRegister *reg, Split *split, 00440 VirtualLocation *virt_loc); 00441 00446 Split * gnc_split_register_duplicate_current (SplitRegister *reg); 00447 00450 void gnc_split_register_copy_current (SplitRegister *reg); 00451 00454 void gnc_split_register_cut_current (SplitRegister *reg); 00455 00458 void gnc_split_register_paste_current (SplitRegister *reg); 00459 00462 void gnc_split_register_delete_current_split (SplitRegister *reg); 00463 00466 void gnc_split_register_delete_current_trans (SplitRegister *reg); 00467 00470 void gnc_split_register_void_current_trans (SplitRegister *reg, 00471 const char *reason); 00472 00475 void gnc_split_register_unvoid_current_trans (SplitRegister *reg); 00476 00479 void gnc_split_register_empty_current_trans_except_split (SplitRegister *reg, Split *split); 00480 void gnc_split_register_empty_current_trans (SplitRegister *reg); 00481 00485 void gnc_split_register_cancel_cursor_split_changes (SplitRegister *reg); 00486 00490 void gnc_split_register_cancel_cursor_trans_changes (SplitRegister *reg); 00491 00509 void gnc_split_register_load (SplitRegister *reg, GList * slist, 00510 Account *default_account); 00511 00519 gboolean gnc_split_register_save (SplitRegister *reg, gboolean do_commit); 00520 00522 void gnc_split_register_redraw (SplitRegister *reg); 00523 00525 gboolean gnc_split_register_changed (SplitRegister *reg); 00526 00530 void gnc_split_register_show_present_divider (SplitRegister *reg, 00531 gboolean show_present); 00532 00534 void gnc_split_register_expand_current_trans (SplitRegister *reg, 00535 gboolean expand); 00536 00538 void gnc_split_register_collapse_current_trans (SplitRegister *reg); 00539 00541 gboolean gnc_split_register_current_trans_expanded (SplitRegister *reg); 00542 00544 const char * gnc_split_register_get_debit_string (SplitRegister *reg); 00545 00547 const char * gnc_split_register_get_credit_string (SplitRegister *reg); 00548 00549 00555 gboolean 00556 gnc_split_register_handle_exchange (SplitRegister *reg, gboolean force_dialog); 00557 00558 /* returns TRUE if begin_edit was aborted */ 00559 gboolean 00560 gnc_split_register_begin_edit_or_warn(SRInfo *info, Transaction *trans); 00561 00566 /* -------------------------------------------------------------- */ 00567 00569 gboolean gnc_split_register_full_refresh_ok (SplitRegister *reg); 00570 00572 void gnc_copy_trans_onto_trans (Transaction *from, Transaction *to, 00573 gboolean use_cut_semantics, 00574 gboolean do_commit); 00575 00576 #endif
1.7.4