/** Clear the displayed currency of the widget. * * This will clear the currency being displayed just like when first created * but it still returns the default currency as usual * * @param gce The currency editor widget whose values should be retrieved. */ void gnc_currency_edit_clear_display (GNCCurrencyEdit *gce) { GtkTreeModel *model; GtkWidget *entry; g_return_if_fail(gce != NULL); g_return_if_fail(GNC_IS_CURRENCY_EDIT(gce)); model = gtk_combo_box_get_model (GTK_COMBO_BOX(gce)); entry = gtk_bin_get_child (GTK_BIN(gce)); g_object_ref (model); g_signal_handlers_block_by_func (G_OBJECT(gce), G_CALLBACK(gnc_currency_edit_active_changed), gce); gtk_combo_box_set_model (GTK_COMBO_BOX(gce), NULL); gtk_entry_set_text (GTK_ENTRY(entry),""); gtk_combo_box_set_active (GTK_COMBO_BOX(gce), -1); gtk_combo_box_set_model (GTK_COMBO_BOX(gce), model); g_signal_handlers_block_by_func (G_OBJECT(gce), G_CALLBACK(gnc_currency_edit_active_changed), gce); g_object_unref (model); }
/* Set the widget to display a certain currency name. * * @param gce The currency editor widget to set. * * @param currency The currency to set as the displayed/selected * value of the widget. */ void gnc_currency_edit_set_currency (GNCCurrencyEdit *gce, const gnc_commodity *currency) { const gchar *printname; g_return_if_fail(gce != NULL); g_return_if_fail(GNC_IS_CURRENCY_EDIT(gce)); g_return_if_fail(currency != NULL); printname = gnc_commodity_get_printname(currency); gnc_cbwe_set_by_string(GTK_COMBO_BOX(gce), printname); }
/** Connect a GncCurrencyEdit widget to its stored value in the preferences database. * * @internal * * @param gce A pointer to the currency_edit that should be connected. */ static void gnc_prefs_connect_currency_edit (GNCCurrencyEdit *gce, const gchar *boxname ) { gchar *group, *pref; g_return_if_fail(GNC_IS_CURRENCY_EDIT(gce)); gnc_prefs_split_widget_name (boxname, &group, &pref); gnc_prefs_bind (group, pref, G_OBJECT (gce), "mnemonic"); g_free (group); g_free (pref); gtk_widget_show_all(GTK_WIDGET(gce)); }
/** Finalize the GncCurrencyEdit object. This function is called from * the G_Object level to complete the destruction of the object. It * should release any memory not previously released by the destroy * function (i.e. the private data structure), then chain up to the * parent's destroy function. * * @param object The object being destroyed. * * @internal */ static void gnc_currency_edit_finalize (GObject *object) { GNCCurrencyEditPrivate *priv; GNCCurrencyEdit *period; g_return_if_fail (object != NULL); g_return_if_fail (GNC_IS_CURRENCY_EDIT (object)); period = GNC_CURRENCY_EDIT(object); priv = GET_PRIVATE(period); g_free (priv->mnemonic); /* Do not free the private data structure itself. It is part of * a larger memory block allocated by the type system. */ if (G_OBJECT_CLASS(parent_class)->finalize) (* G_OBJECT_CLASS(parent_class)->finalize) (object); }
/* Retrieve the displayed currency of the widget. * * @param gce The currency editor widget whose values should be retrieved. * * @return A pointer to the selected currency (a gnc_commodity * structure). */ gnc_commodity * gnc_currency_edit_get_currency (GNCCurrencyEdit *gce) { gnc_commodity *commodity; const char *fullname; char *mnemonic, *name; GtkTreeModel *model; GtkTreeIter iter; GValue value = { 0 }; g_return_val_if_fail(gce != NULL, NULL); g_return_val_if_fail(GNC_IS_CURRENCY_EDIT(gce), NULL); if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(gce), &iter)) { model = gtk_combo_box_get_model(GTK_COMBO_BOX(gce)); gtk_tree_model_get_value(model, &iter, 0, &value); fullname = g_value_get_string(&value); mnemonic = g_strdup(fullname); g_value_unset(&value); name = strchr(mnemonic, ' '); if (name != NULL) *name = '\0'; commodity = gnc_commodity_table_lookup (gnc_get_current_commodities (), GNC_COMMODITY_NS_CURRENCY, mnemonic); g_free(mnemonic); } else { g_warning("Combo box returned 'inactive'. Using locale default currency."); commodity = gnc_locale_default_currency(); } return commodity; }
/** Connect one dialog widget to the appropriate callback function for * its type. * * @internal * * @param name The name of the widget. * * @param widget A pointer to the widget. * * @param dialog A pointer to the dialog. */ static void gnc_prefs_connect_one (const gchar *name, GtkWidget *widget, gpointer user_data) { /* These tests must be ordered from more specific widget to less * specific widget. */ if (GTK_IS_FONT_BUTTON(widget)) { DEBUG(" %s - entry", name); gnc_prefs_connect_font_button(GTK_FONT_BUTTON(widget)); } else if (GTK_IS_RADIO_BUTTON(widget)) { DEBUG(" %s - radio button", name); gnc_prefs_connect_radio_button(GTK_RADIO_BUTTON(widget)); } else if (GTK_IS_CHECK_BUTTON(widget)) { DEBUG(" %s - check button", name); gnc_prefs_connect_check_button(GTK_CHECK_BUTTON(widget)); } else if (GTK_IS_SPIN_BUTTON(widget)) { DEBUG(" %s - spin button", name); gnc_prefs_connect_spin_button(GTK_SPIN_BUTTON(widget)); } else if (GTK_IS_COMBO_BOX(widget)) { DEBUG(" %s - combo box", name); gnc_prefs_connect_combo_box(GTK_COMBO_BOX(widget)); } else if (GTK_IS_ENTRY(widget)) { DEBUG(" %s - entry", name); gnc_prefs_connect_entry(GTK_ENTRY(widget)); } else if (GTK_IS_HBOX(widget)) { /* Test custom widgets are all children of a hbox */ GtkWidget *widget_child; GList* child = gtk_container_get_children(GTK_CONTAINER(widget)); widget_child = child->data; g_list_free(child); DEBUG(" %s - hbox", name); DEBUG("Hbox widget type is %s and name is %s", gtk_widget_get_name(GTK_WIDGET(widget_child)), name); if (GNC_IS_CURRENCY_EDIT(widget_child)) { DEBUG(" %s - currency_edit", name); gnc_prefs_connect_currency_edit(GNC_CURRENCY_EDIT(widget_child), name ); } else if (GNC_IS_PERIOD_SELECT(widget_child)) { DEBUG(" %s - period_Select", name); gnc_prefs_connect_period_select(GNC_PERIOD_SELECT(widget_child), name ); } else if (GNC_IS_DATE_EDIT(widget_child)) { DEBUG(" %s - date_edit", name); gnc_prefs_connect_date_edit(GNC_DATE_EDIT(widget_child), name ); } } else { DEBUG(" %s - unsupported %s", name, G_OBJECT_TYPE_NAME(G_OBJECT(widget))); } }