void glade_psppire_acr_post_create (GladeWidgetAdaptor *adaptor, GObject *object, GladeCreateReason reason) { GladeWidget *widget ; PsppireAcr *acr = PSPPIRE_ACR (object); g_return_if_fail (PSPPIRE_IS_ACR (acr)); widget = glade_widget_get_from_gobject (GTK_WIDGET (acr)); if (!widget) return; if (reason == GLADE_CREATE_USER) { /* HIG complient border-width defaults on acrs */ glade_widget_property_set (widget, "border-width", 5); } }
static void recode_dialog (PsppireDataWindow *de, gboolean diff) { gint response; struct recode_dialog rd; GtkBuilder *builder = builder_new ("recode.ui"); GtkWidget *selector = get_widget_assert (builder, "psppire-selector1"); GtkWidget *oldandnew = get_widget_assert (builder, "button1"); GtkWidget *output_variable_box = get_widget_assert (builder,"frame4"); PsppireVarStore *vs = NULL; g_object_get (de->data_editor, "var-store", &vs, NULL); rd.change_button = get_widget_assert (builder, "change-button"); rd.varmap = NULL; rd.dialog = get_widget_assert (builder, "recode-dialog"); rd.dict_treeview = get_widget_assert (builder, "treeview1"); rd.variable_treeview = get_widget_assert (builder, "treeview2"); rd.new_name_entry = get_widget_assert (builder, "dest-name-entry"); rd.new_label_entry = get_widget_assert (builder, "dest-label-entry"); g_object_get (vs, "dictionary", &rd.dict, NULL); rd.value_map = gtk_list_store_new (2, old_value_get_type (), new_value_get_type () ); g_object_set (output_variable_box, "visible", diff, NULL); if ( diff ) gtk_window_set_title (GTK_WINDOW (rd.dialog), _("Recode into Different Variables")); else gtk_window_set_title (GTK_WINDOW (rd.dialog), _("Recode into Same Variables")); rd.different = diff; gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), GTK_WINDOW (de)); g_object_set (rd.dict_treeview, "model", rd.dict, NULL); if (rd.different) { GtkTreeSelection *sel; GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); GtkTreeViewColumn *col = gtk_tree_view_column_new_with_attributes (_("New"), renderer, "text", NULL, NULL); gtk_tree_view_column_set_cell_data_func (col, renderer, render_new_var_name, &rd, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (rd.variable_treeview), col); col = gtk_tree_view_get_column (GTK_TREE_VIEW (rd.variable_treeview), 0); g_object_set (col, "title", _("Old"), NULL); g_object_set (rd.variable_treeview, "headers-visible", TRUE, NULL); rd.varmap = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, nlp_destroy); sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (rd.variable_treeview)); g_signal_connect (sel, "changed", G_CALLBACK (on_selection_change), &rd); g_signal_connect (rd.change_button, "clicked", G_CALLBACK (on_change_clicked), &rd); } psppire_selector_set_allow (PSPPIRE_SELECTOR (selector), homogeneous_types); /* Set up the Old & New Values subdialog */ { rd.string_button = get_widget_assert (builder, "checkbutton1"); rd.width_entry = get_widget_assert (builder, "spinbutton1"); rd.convert_button = get_widget_assert (builder, "checkbutton2"); rd.old_value_chooser = get_widget_assert (builder, "val-chooser"); rd.new_value_entry = get_widget_assert (builder, "entry1"); rd.toggle[BUTTON_NEW_VALUE] = get_widget_assert (builder, "radiobutton1"); rd.toggle[BUTTON_NEW_SYSMIS] = get_widget_assert (builder, "radiobutton2"); rd.toggle[BUTTON_NEW_COPY] = get_widget_assert (builder, "radiobutton3"); rd.new_copy_label = get_widget_assert (builder, "label3"); rd.strings_box = get_widget_assert (builder, "table3"); rd.old_and_new_dialog = PSPPIRE_DIALOG (get_widget_assert (builder, "old-new-values-dialog")); gtk_window_set_transient_for (GTK_WINDOW (rd.old_and_new_dialog), GTK_WINDOW (de)); rd.acr = PSPPIRE_ACR (get_widget_assert (builder, "psppire-acr1")); g_signal_connect_swapped (rd.toggle[BUTTON_NEW_VALUE], "toggled", G_CALLBACK (set_acr), &rd); g_signal_connect_swapped (rd.new_value_entry, "changed", G_CALLBACK (set_acr), &rd); { GtkTreeSelection *sel; /* Remove the ACR's default column. We don't like it */ GtkTreeViewColumn *column = gtk_tree_view_get_column (rd.acr->tv, 0); gtk_tree_view_remove_column (rd.acr->tv, column); column = gtk_tree_view_column_new_with_attributes (_("Old"), gtk_cell_renderer_text_new (), "text", 0, NULL); gtk_tree_view_append_column (rd.acr->tv, column); column = gtk_tree_view_column_new_with_attributes (_("New"), gtk_cell_renderer_text_new (), "text", 1, NULL); gtk_tree_view_append_column (rd.acr->tv, column); g_object_set (rd.acr->tv, "headers-visible", TRUE, NULL); sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (rd.acr->tv)); g_signal_connect (sel, "changed", G_CALLBACK (on_acr_selection_change), &rd); } g_signal_connect_swapped (oldandnew, "clicked", G_CALLBACK (run_old_and_new_dialog), &rd); g_signal_connect (rd.toggle[BUTTON_NEW_VALUE], "toggled", G_CALLBACK (toggle_sensitivity), rd.new_value_entry); g_signal_connect (rd.string_button, "toggled", G_CALLBACK (toggle_sensitivity), rd.width_entry); g_signal_connect (rd.string_button, "toggled", G_CALLBACK (on_string_toggled), &rd); g_signal_connect (rd.convert_button, "toggled", G_CALLBACK (on_convert_toggled), &rd); g_signal_connect_swapped (rd.old_and_new_dialog, "show", G_CALLBACK (on_old_new_show), &rd); } g_signal_connect (rd.dialog, "refresh", G_CALLBACK (refresh), &rd); psppire_dialog_set_valid_predicate (PSPPIRE_DIALOG (rd.dialog), dialog_state_valid, &rd); response = psppire_dialog_run (PSPPIRE_DIALOG (rd.dialog)); switch (response) { case GTK_RESPONSE_OK: g_free (execute_syntax_string (de, generate_syntax (&rd))); break; case PSPPIRE_RESPONSE_PASTE: g_free (paste_syntax_to_window (generate_syntax (&rd))); break; default: break; } if (rd.varmap) g_hash_table_destroy (rd.varmap); gtk_list_store_clear (GTK_LIST_STORE (rd.value_map)); g_object_unref (rd.value_map); g_object_unref (builder); }