X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-var-sheet.c;h=df4718696dbd29faf01b8432287c34ff5f4a3c03;hb=79100bdd30230890345c1c5a09ae57a19c1e408b;hp=016824d42863d23a9d80de1ac269ea834121943a;hpb=bb748df7e4165e0c58692f6506026359b740f34d;p=pspp diff --git a/src/ui/gui/psppire-var-sheet.c b/src/ui/gui/psppire-var-sheet.c index 016824d428..df4718696d 100644 --- a/src/ui/gui/psppire-var-sheet.c +++ b/src/ui/gui/psppire-var-sheet.c @@ -54,7 +54,8 @@ enum vs_column VS_MISSING, VS_COLUMNS, VS_ALIGN, - VS_MEASURE + VS_MEASURE, + VS_ROLE }; G_DEFINE_TYPE (PsppireVarSheet, psppire_var_sheet, PSPP_TYPE_SHEET_VIEW); @@ -274,6 +275,21 @@ on_var_column_edited (GtkCellRendererText *cell, else if (!strcmp (new_text, measure_to_string (MEASURE_SCALE))) var_set_measure (var, MEASURE_SCALE); break; + + case VS_ROLE: + if (!strcmp (new_text, var_role_to_string (ROLE_NONE))) + var_set_role (var, ROLE_NONE); + else if (!strcmp (new_text, var_role_to_string (ROLE_INPUT))) + var_set_role (var, ROLE_INPUT); + else if (!strcmp (new_text, var_role_to_string (ROLE_OUTPUT))) + var_set_role (var, ROLE_OUTPUT); + else if (!strcmp (new_text, var_role_to_string (ROLE_BOTH))) + var_set_role (var, ROLE_BOTH); + else if (!strcmp (new_text, var_role_to_string (ROLE_PARTITION))) + var_set_role (var, ROLE_PARTITION); + else if (!strcmp (new_text, var_role_to_string (ROLE_SPLIT))) + var_set_role (var, ROLE_SPLIT); + break; } } @@ -293,6 +309,25 @@ render_popup_cell (PsppSheetViewColumn *tree_column, NULL); } +const char * +get_var_align_stock_id (const struct variable *var) +{ + switch (var_get_alignment (var)) + { + case ALIGN_LEFT: + return GTK_STOCK_JUSTIFY_LEFT; + + case ALIGN_CENTRE: + return GTK_STOCK_JUSTIFY_CENTER; + + case ALIGN_RIGHT: + return GTK_STOCK_JUSTIFY_RIGHT; + + default: + g_return_val_if_reached (""); + } +} + static void render_var_cell (PsppSheetViewColumn *tree_column, GtkCellRenderer *cell, @@ -413,10 +448,13 @@ render_var_cell (PsppSheetViewColumn *tree_column, break; case VS_ALIGN: - g_object_set (cell, - "text", alignment_to_string (var_get_alignment (var)), - "editable", TRUE, - NULL); + if (GTK_IS_CELL_RENDERER_TEXT (cell)) + g_object_set (cell, + "text", alignment_to_string (var_get_alignment (var)), + "editable", TRUE, + NULL); + else + g_object_set (cell, "stock-id", get_var_align_stock_id (var), NULL); break; case VS_MEASURE: @@ -430,6 +468,13 @@ render_var_cell (PsppSheetViewColumn *tree_column, psppire_dict_view_get_var_measurement_stock_id (var), NULL); break; + + case VS_ROLE: + g_object_set (cell, + "text", var_role_to_string (var_get_role (var)), + "editable", TRUE, + NULL); + break; } } @@ -1230,11 +1275,17 @@ psppire_var_sheet_init (PsppireVarSheet *obj) add_spin_column (obj, VS_COLUMNS, _("Columns"), 3); - add_combo_column (obj, VS_ALIGN, _("Align"), 6, - alignment_to_string (ALIGN_LEFT), ALIGN_LEFT, - alignment_to_string (ALIGN_CENTRE), ALIGN_CENTRE, - alignment_to_string (ALIGN_RIGHT), ALIGN_RIGHT, - NULL); + column + = add_combo_column (obj, VS_ALIGN, _("Align"), 8, + alignment_to_string (ALIGN_LEFT), ALIGN_LEFT, + alignment_to_string (ALIGN_CENTRE), ALIGN_CENTRE, + alignment_to_string (ALIGN_RIGHT), ALIGN_RIGHT, + NULL); + cell = gtk_cell_renderer_pixbuf_new (); + g_object_set (cell, "width", 16, "height", 16, NULL); + pspp_sheet_view_column_pack_end (column, cell, FALSE); + pspp_sheet_view_column_set_cell_data_func ( + column, cell, render_var_cell, obj, NULL); column = add_combo_column (obj, VS_MEASURE, _("Measure"), 12, @@ -1243,10 +1294,20 @@ psppire_var_sheet_init (PsppireVarSheet *obj) measure_to_string (MEASURE_SCALE), MEASURE_SCALE, NULL); cell = gtk_cell_renderer_pixbuf_new (); + g_object_set (cell, "width", 16, "height", 16, NULL); pspp_sheet_view_column_pack_end (column, cell, FALSE); pspp_sheet_view_column_set_cell_data_func ( column, cell, render_var_cell, obj, NULL); + add_combo_column (obj, VS_ROLE, _("Role"), 12, + var_role_to_string (ROLE_NONE), ROLE_NONE, + var_role_to_string (ROLE_INPUT), ROLE_INPUT, + var_role_to_string (ROLE_OUTPUT), ROLE_OUTPUT, + var_role_to_string (ROLE_BOTH), ROLE_BOTH, + var_role_to_string (ROLE_PARTITION), ROLE_PARTITION, + var_role_to_string (ROLE_SPLIT), ROLE_SPLIT, + NULL); + pspp_sheet_view_set_rubber_banding (sheet_view, TRUE); pspp_sheet_selection_set_mode (pspp_sheet_view_get_selection (sheet_view), PSPP_SHEET_SELECTION_MULTIPLE);