Consolidate multiple messages into single message dialog. Patch
[pspp-builds.git] / src / ui / gui / helper.c
index 5ed0e98845c9b8e74282e07deb14dc5e256e2f24..bc197e63adcd2a7c7416a7b1da41f19522ed22ae 100644 (file)
@@ -129,17 +129,16 @@ pspp_locale_to_utf8 (const gchar *text, gssize len, GError **err)
 static void
 give_help (void)
 {
-  static struct msg m = {
-    MSG_GENERAL,
-    MSG_NOTE,
-    {0, -1},
-    0,
-  };
-
-  if (! m.text)
-    m.text=g_strdup (_("Sorry. The help system hasn't yet been implemented."));
-
-  popup_message (&m);
+  GtkWidget *dialog;
+
+  dialog = gtk_message_dialog_new (NULL,
+                                   GTK_DIALOG_MODAL,
+                                   GTK_MESSAGE_INFO,
+                                   GTK_BUTTONS_CLOSE,
+                                   _("Sorry. The help system hasn't yet "
+                                     "been implemented."));
+  gtk_dialog_run (GTK_DIALOG (dialog));
+  gtk_widget_destroy (dialog);
 }
 
 void
@@ -297,3 +296,48 @@ marshaller_VOID__INT_INT_INT (GClosure     *closure,
             g_marshal_value_peek_int (param_values + 3),
             data2);
 }
+
+/* Create a deep copy of SRC */
+GtkListStore *
+clone_list_store (const GtkListStore *src)
+{
+  GtkTreeIter src_iter;
+  gboolean ok;
+  gint i;
+  const gint n_cols =  gtk_tree_model_get_n_columns (GTK_TREE_MODEL (src));
+  GType *types = g_malloc (sizeof (*types) *  n_cols);
+
+  int row = 0;
+  GtkListStore *dest;
+
+  for (i = 0 ; i < n_cols; ++i )
+    types[i] = gtk_tree_model_get_column_type (GTK_TREE_MODEL (src), i);
+
+  dest = gtk_list_store_newv (n_cols, types);
+
+  for (ok = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (src),
+                                          &src_iter);
+       ok;
+       ok = gtk_tree_model_iter_next (GTK_TREE_MODEL (src), &src_iter))
+    {
+      GtkTreeIter dest_iter;
+      gtk_list_store_append  (dest, &dest_iter);
+
+      for (i = 0 ; i < n_cols; ++i )
+       {
+         GValue val = {0};
+
+         gtk_tree_model_get_value (GTK_TREE_MODEL (src), &src_iter, i, &val);
+         gtk_list_store_set_value (dest, &dest_iter, i, &val);
+
+         g_value_unset (&val);
+       }
+      row++;
+    }
+
+  g_free (types);
+
+  return dest;
+}
+
+