uint -> guint
[pspp] / src / ui / gui / psppire-variable-sheet.c
index 84774741b7ecac3d8fb0ae53582c2e391de5e14d..9278582f388a124af8ecb292ebfe4bfd554e3d80 100644 (file)
@@ -34,7 +34,7 @@
 #define P_(X) (X)
 
 
-G_DEFINE_TYPE (PsppireVariableSheet, psppire_variable_sheet, JMD_TYPE_SHEET)
+G_DEFINE_TYPE (PsppireVariableSheet, psppire_variable_sheet, SSW_TYPE_SHEET)
 
 static void
 set_var_type (GtkCellRenderer *renderer,
@@ -44,7 +44,7 @@ set_var_type (GtkCellRenderer *renderer,
 {
   PsppireVariableSheet *sheet = PSPPIRE_VARIABLE_SHEET (user_data);
   gint row = -1, col = -1;
-  jmd_sheet_get_active_cell (JMD_SHEET (sheet), &col, &row);
+  ssw_sheet_get_active_cell (SSW_SHEET (sheet), &col, &row);
 
   PsppireDict *dict = NULL;
   g_object_get (sheet, "data-model", &dict, NULL);
@@ -69,7 +69,7 @@ set_missing_values (GtkCellRenderer *renderer,
 {
   PsppireVariableSheet *sheet = PSPPIRE_VARIABLE_SHEET (user_data);
   gint row = -1, col = -1;
-  jmd_sheet_get_active_cell (JMD_SHEET (sheet), &col, &row);
+  ssw_sheet_get_active_cell (SSW_SHEET (sheet), &col, &row);
 
   PsppireDict *dict = NULL;
   g_object_get (sheet, "data-model", &dict, NULL);
@@ -96,7 +96,7 @@ set_value_labels (GtkCellRenderer *renderer,
 {
   PsppireVariableSheet *sheet = PSPPIRE_VARIABLE_SHEET (user_data);
   gint row = -1, col = -1;
-  jmd_sheet_get_active_cell (JMD_SHEET (sheet), &col, &row);
+  ssw_sheet_get_active_cell (SSW_SHEET (sheet), &col, &row);
 
   PsppireDict *dict = NULL;
   g_object_get (sheet, "data-model", &dict, NULL);
@@ -213,8 +213,8 @@ select_renderer_func (PsppireVariableSheet *sheet, gint col, gint row, GType typ
 \f
 
 static void
-show_variables_row_popup (JmdSheet *sheet, int row, uint button,
-                         uint state, gpointer p)
+show_variables_row_popup (SswSheet *sheet, int row, guint button,
+                         guint state, gpointer p)
 {
   PsppireVariableSheet *var_sheet = PSPPIRE_VARIABLE_SHEET (sheet);
   GListModel *vmodel = NULL;
@@ -253,9 +253,9 @@ insert_new_variable_var (PsppireVariableSheet *var_sheet)
 
 
 static void
-delete_variables (JmdSheet *sheet)
+delete_variables (SswSheet *sheet)
 {
-  JmdRange *range = sheet->selection;
+  SswRange *range = sheet->selection;
 
   PsppireDict *dict = NULL;
   g_object_get (sheet, "data-model", &dict, NULL);
@@ -296,10 +296,10 @@ create_var_row_header_popup_menu (PsppireVariableSheet *var_sheet)
 
 
 static void
-set_var_popup_sensitivity (JmdSheet *sheet, gpointer selection, gpointer p)
+set_var_popup_sensitivity (SswSheet *sheet, gpointer selection, gpointer p)
 {
   PsppireVariableSheet *var_sheet = PSPPIRE_VARIABLE_SHEET (sheet);
-  JmdRange *range = selection;
+  SswRange *range = selection;
   gint width = gtk_tree_model_get_n_columns (sheet->data_model);
 
   gboolean whole_row_selected = (range->start_x == 0 &&
@@ -381,7 +381,7 @@ change_var_property (PsppireVariableSheet *var_sheet, gint col, gint row, const
 }
 
 static gchar *
-var_sheet_data_to_string (JmdSheet *sheet, GtkTreeModel *m,
+var_sheet_data_to_string (SswSheet *sheet, GtkTreeModel *m,
                          gint col, gint row, const GValue *in)
 {
   if (col >= n_DICT_COLS - 1) /* -1 because psppire-dict has an extra column */
@@ -413,7 +413,7 @@ var_sheet_data_to_string (JmdSheet *sheet, GtkTreeModel *m,
       return text;
     }
 
-  return jmd_sheet_default_forward_conversion (sheet, m, col, row, in);
+  return ssw_sheet_default_forward_conversion (sheet, m, col, row, in);
 }
 
 \f
@@ -443,6 +443,8 @@ psppire_variable_sheet_class_init (PsppireVariableSheetClass *class)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (class);
   object_class->dispose = psppire_variable_sheet_dispose;
+
+  parent_class = g_type_class_peek_parent (class);
 }
 
 GtkWidget*
@@ -456,11 +458,35 @@ psppire_variable_sheet_new (void)
                  "select-renderer-func", select_renderer_func,
                  "hmodel", vsh,
                  "forward-conversion", var_sheet_data_to_string,
+                 "editable", TRUE,
+                 "vertical-draggable", TRUE,
                  NULL);
 
   return GTK_WIDGET (obj);
 }
 
+static void
+move_variable (PsppireVariableSheet *sheet, gint from, gint to, gpointer ud)
+{
+  PsppireDict *dict = NULL;
+  g_object_get (sheet, "data-model", &dict, NULL);
+
+  if (dict == NULL)
+    return;
+
+  struct variable *var = psppire_dict_get_variable (dict, from);
+
+  if (var == NULL)
+    return;
+  gint new_pos = to;
+  /* The index refers to the final position, so if the source
+     is less than the destination, then we must subtract 1, to
+     account for the position vacated by the source */
+  if (from < to)
+    new_pos--;
+  dict_reorder_var (dict->dict, var, new_pos);
+}
+
 static void
 psppire_variable_sheet_init (PsppireVariableSheet *sheet)
 {
@@ -492,4 +518,7 @@ psppire_variable_sheet_init (PsppireVariableSheet *sheet)
 
   g_signal_connect_swapped (sheet, "value-changed",
                            G_CALLBACK (change_var_property), sheet);
+
+  g_signal_connect (sheet, "row-moved",
+                   G_CALLBACK (move_variable), NULL);
 }