mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Add kvp data to sessions.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@5745 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
b67097586a
commit
9aac6d6fd0
@ -63,6 +63,9 @@ struct gnc_session_struct
|
||||
char *fullpath;
|
||||
char *logpath;
|
||||
|
||||
/* kvp database for per-session data for user code */
|
||||
kvp_frame * kvp_data;
|
||||
|
||||
/* ---------------------------------------------------- */
|
||||
/* This struct member applies for network, rpc and SQL i/o */
|
||||
/* It is not currently used for file i/o, but it should be. */
|
||||
|
@ -126,6 +126,8 @@ gnc_session_init (GNCSession *session)
|
||||
session->logpath = NULL;
|
||||
session->backend = NULL;
|
||||
|
||||
session->kvp_data = kvp_frame_new ();
|
||||
|
||||
gnc_session_clear_error (session);
|
||||
}
|
||||
|
||||
@ -160,6 +162,13 @@ gnc_session_set_book (GNCSession *session, GNCBook *book)
|
||||
gnc_book_set_backend (book, session->backend);
|
||||
}
|
||||
|
||||
kvp_frame *
|
||||
gnc_session_get_slots (GNCSession *session)
|
||||
{
|
||||
if (!session) return NULL;
|
||||
return session->kvp_data;
|
||||
}
|
||||
|
||||
GNCEntityTable *
|
||||
gnc_session_get_entity_table (GNCSession *session)
|
||||
{
|
||||
@ -595,6 +604,9 @@ gnc_session_destroy (GNCSession *session)
|
||||
xaccEntityTableDestroy (session->entity_table);
|
||||
session->entity_table = NULL;
|
||||
|
||||
kvp_frame_delete (session->kvp_data);
|
||||
session->kvp_data = NULL;
|
||||
|
||||
xaccLogEnable();
|
||||
|
||||
g_free (session);
|
||||
@ -607,21 +619,26 @@ gnc_session_swap_data (GNCSession *session_1, GNCSession *session_2)
|
||||
{
|
||||
GNCBook *book_1, *book_2;
|
||||
GNCEntityTable *entity_table_1, *entity_table_2;
|
||||
kvp_frame *kvp_1, *kvp_2;
|
||||
|
||||
if (session_1 == session_2) return;
|
||||
if (!session_1 || !session_2) return;
|
||||
|
||||
book_1 = session_1->book;
|
||||
entity_table_1 = session_1->entity_table;
|
||||
kvp_1 = session_1->kvp_data;
|
||||
|
||||
book_2 = session_2->book;
|
||||
entity_table_2 = session_2->entity_table;
|
||||
kvp_2 = session_2->kvp_data;
|
||||
|
||||
session_1->book = book_2;
|
||||
session_1->entity_table = entity_table_2;
|
||||
session_1->kvp_data = kvp_2;
|
||||
|
||||
session_2->book = book_1;
|
||||
session_2->entity_table = entity_table_1;
|
||||
session_2->kvp_data = kvp_1;
|
||||
|
||||
gnc_book_set_backend (book_1, session_2->backend);
|
||||
gnc_book_set_backend (book_2, session_1->backend);
|
||||
|
@ -122,6 +122,8 @@ GNCBackendError gnc_session_pop_error (GNCSession *session);
|
||||
GNCBook * gnc_session_get_book (GNCSession *session);
|
||||
void gnc_session_set_book (GNCSession *session, GNCBook *book);
|
||||
|
||||
/* Return the kvp data for the session */
|
||||
kvp_frame * gnc_session_get_slots (GNCSession *session);
|
||||
|
||||
/* The gnc_session_get_file_path() routine returns the fully-qualified file
|
||||
* path for the session. That is, if a relative or partial filename
|
||||
|
Loading…
Reference in New Issue
Block a user