static gboolean job_guid_handler (xmlNodePtr node, gpointer job_pdata) { struct job_pdata *pdata = job_pdata; GncGUID *guid; GncJob *job; guid = dom_tree_to_guid(node); g_return_val_if_fail(guid, FALSE); job = gncJobLookup (pdata->book, guid); if (job) { gncJobDestroy (pdata->job); pdata->job = job; gncJobBeginEdit (job); } else { gncJobSetGUID(pdata->job, guid); } g_free(guid); return TRUE; }
void gncOwnerDestroy (GncOwner *owner) { if (!owner) return; switch (owner->type) { case GNC_OWNER_NONE : case GNC_OWNER_UNDEFINED : break; case GNC_OWNER_CUSTOMER : { gncCustomerDestroy(owner->owner.customer); break; } case GNC_OWNER_JOB : { gncJobDestroy(owner->owner.job); break; } case GNC_OWNER_VENDOR : { gncVendorDestroy(owner->owner.vendor); break; } case GNC_OWNER_EMPLOYEE : { gncEmployeeDestroy(owner->owner.employee); break; } } }
void gnc_job_window_destroy_cb (GtkWidget *widget, gpointer data) { JobWindow *jw = data; GncJob *job = jw_get_job (jw); gnc_suspend_gui_refresh (); if (jw->dialog_type == NEW_JOB && job != NULL) { gncJobBeginEdit (job); gncJobDestroy (job); jw->job_guid = *guid_null (); } gnc_unregister_gui_component (jw->component_id); gnc_resume_gui_refresh (); g_free (jw); }
static GncJob* dom_tree_to_job (xmlNodePtr node, QofBook *book) { struct job_pdata job_pdata; gboolean successful; job_pdata.job = gncJobCreate(book); job_pdata.book = book; gncJobBeginEdit (job_pdata.job); successful = dom_tree_generic_parse (node, job_handlers_v2, &job_pdata); if (successful) gncJobCommitEdit (job_pdata.job); else { PERR ("failed to parse job tree"); gncJobDestroy (job_pdata.job); job_pdata.job = NULL; } return job_pdata.job; }