X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-variable-sheet.c;h=9278582f388a124af8ecb292ebfe4bfd554e3d80;hb=86454c8ab63804d02cb4f08e8b5e45299b8eb810;hp=84774741b7ecac3d8fb0ae53582c2e391de5e14d;hpb=7d4150d7cba15550753a0a574685de26656c0633;p=pspp diff --git a/src/ui/gui/psppire-variable-sheet.c b/src/ui/gui/psppire-variable-sheet.c index 84774741b7..9278582f38 100644 --- a/src/ui/gui/psppire-variable-sheet.c +++ b/src/ui/gui/psppire-variable-sheet.c @@ -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 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); } @@ -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); }