+ gchar *text = g_strdup_printf (_("Weight by %s"), var_get_name (var));
+
+ gtk_label_set_text (GTK_LABEL (weight_status_area), text);
+
+ g_free (text);
+ }
+}
+
+
+static void
+weight_cases_dialog (GObject *o, gpointer data)
+{
+ gint response;
+ struct data_editor *de = data;
+ GtkSheet *var_sheet =
+ GTK_SHEET (get_widget_assert (de->xml, "variable_sheet"));
+
+
+ GladeXML *xml = glade_xml_new (PKGDATADIR "/psppire.glade",
+ "weight-cases-dialog", NULL);
+
+
+ GtkWidget *treeview = get_widget_assert (xml, "treeview");
+ GtkWidget *entry = get_widget_assert (xml, "entry1");
+
+
+ PsppireVarStore *vs = PSPPIRE_VAR_STORE (gtk_sheet_get_model (var_sheet));
+
+ PsppireVarSelect *select = psppire_var_select_new (treeview,
+ entry, vs->dict);
+
+
+ PsppireDialog *dialog = create_weight_dialog (select, xml);
+
+ response = psppire_dialog_run (dialog);
+
+ g_object_unref (xml);
+
+ if (response == GTK_RESPONSE_OK)
+ {
+ const GList *list = psppire_var_select_get_variables (select);
+
+ g_assert ( g_list_length (list) <= 1 );
+
+ if ( list == NULL)
+ psppire_dict_set_weight_variable (select->dict, NULL);
+ else
+ {
+ struct variable *var = list->data;
+
+ psppire_dict_set_weight_variable (select->dict, var);
+ }
+ }