static void gnc_ui_to_job (JobWindow *jw, GncJob *job) { gnc_suspend_gui_refresh (); gncJobBeginEdit (job); qof_event_gen(QOF_INSTANCE(job), QOF_EVENT_ADD, NULL); gncJobSetID (job, gtk_editable_get_chars (GTK_EDITABLE (jw->id_entry), 0, -1)); gncJobSetName (job, gtk_editable_get_chars (GTK_EDITABLE (jw->name_entry), 0, -1)); gncJobSetReference (job, gtk_editable_get_chars (GTK_EDITABLE (jw->desc_entry), 0, -1)); gncJobSetActive (job, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (jw->active_check))); { GncOwner * old = gncJobGetOwner (job); gnc_owner_get_owner (jw->cust_edit, &(jw->owner)); if (! gncOwnerEqual (old, &(jw->owner))) gncJobSetOwner (job, &(jw->owner)); } gncJobCommitEdit (job); gnc_resume_gui_refresh (); }
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 gncOwnerBeginEdit (GncOwner *owner) { if (!owner) return; switch (owner->type) { case GNC_OWNER_NONE : case GNC_OWNER_UNDEFINED : break; case GNC_OWNER_CUSTOMER : { gncCustomerBeginEdit(owner->owner.customer); break; } case GNC_OWNER_JOB : { gncJobBeginEdit(owner->owner.job); break; } case GNC_OWNER_VENDOR : { gncVendorBeginEdit(owner->owner.vendor); break; } case GNC_OWNER_EMPLOYEE : { gncEmployeeBeginEdit(owner->owner.employee); break; } } }
void gncJobSetActive (GncJob *job, gboolean active) { if (!job) return; if (active == job->active) return; gncJobBeginEdit (job); job->active = active; mark_job (job); gncJobCommitEdit (job); }
static void qofJobSetOwner (GncJob *job, QofInstance *ent) { if (!job || !ent) { return; } gncJobBeginEdit (job); qofOwnerSetEntity(&job->owner, ent); mark_job (job); gncJobCommitEdit (job); }
void gncJobSetOwner (GncJob *job, GncOwner *owner) { if (!job) return; if (!owner) return; if (gncOwnerEqual (owner, &(job->owner))) return; switch (gncOwnerGetType (owner)) { case GNC_OWNER_CUSTOMER: case GNC_OWNER_VENDOR: break; default: PERR("Unsupported Owner type: %d", gncOwnerGetType(owner)); return; } gncJobBeginEdit (job); switch (gncOwnerGetType (&(job->owner))) { case GNC_OWNER_CUSTOMER: gncCustomerRemoveJob (gncOwnerGetCustomer(&job->owner), job); break; case GNC_OWNER_VENDOR: gncVendorRemoveJob (gncOwnerGetVendor(&job->owner), job); break; default: break; } gncOwnerCopy (owner, &(job->owner)); switch (gncOwnerGetType (&(job->owner))) { case GNC_OWNER_CUSTOMER: gncCustomerAddJob (gncOwnerGetCustomer(&job->owner), job); break; case GNC_OWNER_VENDOR: gncVendorAddJob (gncOwnerGetVendor(&job->owner), job); break; default: break; } mark_job (job); gncJobCommitEdit (job); }
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; }