dance a widget shuffle when rebuilding the order and invoice dialogs

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@6710 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Derek Atkins 2002-02-11 04:32:45 +00:00
parent 22bb2807ec
commit fe68be2d9a
2 changed files with 67 additions and 29 deletions

View File

@ -50,11 +50,14 @@ typedef struct _invoice_window {
GtkWidget * id_entry;
GtkWidget * terms_entry;
GtkWidget * owner_choice;
GtkWidget * notes_text;
GtkWidget * opened_date;
GtkWidget * active_check;
GtkWidget * owner_box;
GtkWidget * owner_label;
GtkWidget * owner_choice;
GnucashRegister * reg;
GncEntryLedger * ledger;
@ -295,10 +298,10 @@ gnc_invoice_window_pay_invoice_cb (GtkWidget *widget, gpointer data)
acct_label = _("Pay to Account");
/* Add "appropriate" accounts */
acct_types = g_list_prepend (NULL, BANK);
acct_types = g_list_prepend (acct_types, CASH);
acct_types = g_list_prepend (acct_types, ASSET);
acct_types = g_list_prepend (acct_types, LIABILITY);
acct_types = g_list_prepend (NULL, (gpointer)BANK);
acct_types = g_list_prepend (acct_types, (gpointer)CASH);
acct_types = g_list_prepend (acct_types, (gpointer)ASSET);
acct_types = g_list_prepend (acct_types, (gpointer)LIABILITY);
timespecFromTime_t (&paid_date, time(NULL));
if (!gnc_dialog_date_acct_parented (iw->dialog, message, date_label,
@ -445,6 +448,29 @@ gnc_invoice_update_window (InvoiceWindow *iw)
invoice = iw_get_invoice (iw);
owner = gncInvoiceGetOwner (invoice);
if (iw->owner_choice) {
gtk_container_remove (GTK_CONTAINER (iw->owner_box), iw->owner_choice);
gtk_object_destroy (GTK_OBJECT (iw->owner_choice));
}
switch (iw->dialog_type) {
case VIEW_INVOICE:
case EDIT_INVOICE:
iw->owner_choice =
gnc_owner_edit_create (iw->owner_label, iw->owner_box, iw->book,
owner);
break;
case NEW_INVOICE:
iw->owner_choice =
gnc_owner_select_create (iw->owner_label, iw->owner_box, iw->book,
owner);
break;
}
gtk_signal_connect (GTK_OBJECT (iw->owner_choice), "changed",
GTK_SIGNAL_FUNC (gnc_invoice_owner_changed_cb),
iw);
gtk_widget_show_all (iw->dialog);
paid_date = glade_xml_get_widget (iw->xml, "paid_date");
@ -587,7 +613,7 @@ gnc_invoice_new_window (GtkWidget *parent, GNCBook *bookp,
{
InvoiceWindow *iw;
GladeXML *xml;
GtkWidget *label, *hbox, *vbox, *regWidget;
GtkWidget *vbox, *regWidget;
GncEntryLedger *entry_ledger = NULL;
GnomeDialog *iwd;
@ -618,9 +644,8 @@ gnc_invoice_new_window (GtkWidget *parent, GNCBook *bookp,
iw->notes_text = glade_xml_get_widget (xml, "notes_text");
iw->opened_date = glade_xml_get_widget (xml, "opened_date");
iw->active_check = glade_xml_get_widget (xml, "active_check");
hbox = glade_xml_get_widget (xml, "owner_hbox");
label = glade_xml_get_widget (xml, "owner_label");
iw->owner_box = glade_xml_get_widget (xml, "owner_hbox");
iw->owner_label = glade_xml_get_widget (xml, "owner_label");
/* default to ok */
gnome_dialog_editable_enters (iwd, GTK_EDITABLE (iw->id_entry));
@ -694,7 +719,6 @@ gnc_invoice_new_window (GtkWidget *parent, GNCBook *bookp,
class_name = DIALOG_VIEW_INVOICE_CM_CLASS;
/* FALLTHROUGH */
case EDIT_INVOICE:
iw->owner_choice = gnc_owner_edit_create (label, hbox, bookp, owner);
gtk_entry_set_text (GTK_ENTRY (iw->id_entry), gncInvoiceGetID (invoice));
if (class_name == NULL)
@ -702,7 +726,6 @@ gnc_invoice_new_window (GtkWidget *parent, GNCBook *bookp,
break;
case NEW_INVOICE:
iw->owner_choice = gnc_owner_select_create (label, hbox, bookp, owner);
gtk_entry_set_text (GTK_ENTRY (iw->id_entry),
g_strdup_printf ("%.6d", gncInvoiceNextID(bookp)));
@ -721,10 +744,6 @@ gnc_invoice_new_window (GtkWidget *parent, GNCBook *bookp,
GNC_INVOICE_MODULE_NAME,
GNC_EVENT_MODIFY | GNC_EVENT_DESTROY);
gtk_signal_connect (GTK_OBJECT (iw->owner_choice), "changed",
GTK_SIGNAL_FUNC (gnc_invoice_owner_changed_cb),
iw);
gnc_table_realize_gui (gnc_entry_ledger_get_table (entry_ledger));
/* Now fill in a lot of the pieces and display properly */

View File

@ -51,12 +51,15 @@ typedef struct _order_window {
GtkWidget * id_entry;
GtkWidget * ref_entry;
GtkWidget * owner_choice;
GtkWidget * notes_text;
GtkWidget * opened_date;
GtkWidget * closed_date;
GtkWidget * active_check;
GtkWidget * owner_box;
GtkWidget * owner_label;
GtkWidget * owner_choice;
GnucashRegister * reg;
GncEntryLedger * ledger;
@ -416,6 +419,29 @@ gnc_order_update_window (OrderWindow *ow)
order = ow_get_order (ow);
owner = gncOrderGetOwner (order);
if (ow->owner_choice) {
gtk_container_remove (GTK_CONTAINER (ow->owner_box), ow->owner_choice);
gtk_object_destroy (GTK_OBJECT (ow->owner_choice));
}
switch (ow->dialog_type) {
case VIEW_ORDER:
case EDIT_ORDER:
ow->owner_choice =
gnc_owner_edit_create (ow->owner_label, ow->owner_box, ow->book,
owner);
break;
case NEW_ORDER:
ow->owner_choice =
gnc_owner_select_create (ow->owner_label, ow->owner_box, ow->book,
owner);
break;
}
gtk_signal_connect (GTK_OBJECT (ow->owner_choice), "changed",
GTK_SIGNAL_FUNC (gnc_order_owner_changed_cb),
ow);
gtk_widget_show_all (ow->dialog);
{
@ -495,7 +521,7 @@ gnc_order_new_window (GtkWidget *parent, GNCBook *bookp,
{
OrderWindow *ow;
GladeXML *xml;
GtkWidget *label, *hbox, *vbox, *regWidget;
GtkWidget *vbox, *regWidget;
GncEntryLedger *entry_ledger = NULL;
GnomeDialog *owd;
@ -527,9 +553,8 @@ gnc_order_new_window (GtkWidget *parent, GNCBook *bookp,
ow->opened_date = glade_xml_get_widget (xml, "opened_date");
ow->closed_date = glade_xml_get_widget (xml, "closed_date");
ow->active_check = glade_xml_get_widget (xml, "active_check");
hbox = glade_xml_get_widget (xml, "owner_hbox");
label = glade_xml_get_widget (xml, "owner_label");
ow->owner_box = glade_xml_get_widget (xml, "owner_hbox");
ow->owner_label = glade_xml_get_widget (xml, "owner_label");
/* default to ok */
gnome_dialog_editable_enters (owd, GTK_EDITABLE (ow->id_entry));
@ -600,7 +625,6 @@ gnc_order_new_window (GtkWidget *parent, GNCBook *bookp,
class_name = DIALOG_VIEW_ORDER_CM_CLASS;
/* FALLTHROUGH */
case EDIT_ORDER:
ow->owner_choice = gnc_owner_edit_create (label, hbox, bookp, owner);
gtk_entry_set_text (GTK_ENTRY (ow->id_entry), gncOrderGetID (order));
if (class_name == NULL)
@ -608,7 +632,6 @@ gnc_order_new_window (GtkWidget *parent, GNCBook *bookp,
break;
case NEW_ORDER:
ow->owner_choice = gnc_owner_select_create (label, hbox, bookp, owner);
gtk_entry_set_text (GTK_ENTRY (ow->id_entry),
g_strdup_printf ("%.6d", gncOrderNextID(bookp)));
@ -623,18 +646,14 @@ gnc_order_new_window (GtkWidget *parent, GNCBook *bookp,
ow);
}
gtk_signal_connect (GTK_OBJECT (ow->owner_choice), "changed",
GTK_SIGNAL_FUNC (gnc_order_owner_changed_cb),
ow);
gnc_table_realize_gui (gnc_entry_ledger_get_table (entry_ledger));
/* Set the Reference */
gnc_order_owner_changed_cb (ow->owner_choice, ow);
/* Now fill in a lot of the pirces and display properly */
gnc_order_update_window (ow);
/* Set the Reference */
gnc_order_owner_changed_cb (ow->owner_choice, ow);
return ow;
}