X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fvar-sheet.c;h=ac6ce929049edea2659586876f004e631a6bce32;hb=04752a092964c66d468ca820ff066aac42a38cb0;hp=9e73cce6220a8cc358e9e7f255de35fb7f4b62e7;hpb=3af9bac9f7828e3a98bb6a76bd6cf63e8d834a70;p=pspp-builds.git diff --git a/src/ui/gui/var-sheet.c b/src/ui/gui/var-sheet.c index 9e73cce6..ac6ce929 100644 --- a/src/ui/gui/var-sheet.c +++ b/src/ui/gui/var-sheet.c @@ -90,6 +90,13 @@ const gchar *const measures[n_MEASURES + 1]={ 0 }; +G_DEFINE_TYPE (PsppireVarSheet, psppire_var_sheet, GTK_TYPE_SHEET); + +static void +psppire_var_sheet_class_init (PsppireVarSheetClass *class) +{ +} + static GtkListStore * create_label_list (const gchar *const *labels) { @@ -150,10 +157,14 @@ traverse_cell_callback (GtkSheet * sheet, gint *new_row, gint *new_column ) { + PsppireVarSheet *var_sheet = PSPPIRE_VAR_SHEET (sheet); PsppireVarStore *var_store = PSPPIRE_VAR_STORE (gtk_sheet_get_model (sheet)); gint n_vars = psppire_var_store_get_var_cnt (var_store); + if (*new_row >= n_vars && !var_sheet->may_create_vars) + return FALSE; + if ( row == n_vars && *new_row >= n_vars) { GtkEntry *entry = GTK_ENTRY (gtk_sheet_get_entry (sheet)); @@ -415,58 +426,73 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column, return TRUE; } +static void +psppire_var_sheet_init (PsppireVarSheet *self) +{ + self->may_create_vars = true; -extern PsppireVarStore *the_var_store; + g_signal_connect (self, "activate", + GTK_SIGNAL_FUNC (var_sheet_cell_entry_enter), + 0); + g_signal_connect (self, "deactivate", + GTK_SIGNAL_FUNC (var_sheet_cell_entry_leave), + 0); -/* Create the var sheet */ -G_MODULE_EXPORT GtkWidget* -psppire_variable_sheet_create (gchar *widget_name, - gchar *string1, - gchar *string2, - gint int1, gint int2) + g_signal_connect (self, "traverse", + GTK_SIGNAL_FUNC (traverse_cell_callback), 0); +} + +GtkWidget * +psppire_var_sheet_new_with_var_store (PsppireVarStore *var_store) { - gchar *codeset; - gint i; GtkWidget *sheet; + gint i; + GObject *geo = g_sheet_hetero_column_new (75, n_COLS); + g_assert (var_store); - g_assert (the_var_store); + sheet = g_object_new (PSPPIRE_TYPE_VAR_SHEET, + "row-geometry", var_store, + "column-geometry", geo, + NULL); - sheet = gtk_sheet_new (G_SHEET_ROW (the_var_store), - G_SHEET_COLUMN (geo), - "variable sheet", 0); + gtk_sheet_set_model (GTK_SHEET (sheet), G_SHEET_MODEL (var_store)); - g_signal_connect (GTK_OBJECT (sheet), "activate", - GTK_SIGNAL_FUNC (var_sheet_cell_entry_enter), - 0); + for (i = 0 ; i < n_COLS ; ++i ) + { + g_sheet_hetero_column_set_button_label (G_SHEET_HETERO_COLUMN (geo), i, + gettext (column_def[i].label)); - g_signal_connect (GTK_OBJECT (sheet), "deactivate", - GTK_SIGNAL_FUNC (var_sheet_cell_entry_leave), - 0); + g_sheet_hetero_column_set_width (G_SHEET_HETERO_COLUMN (geo), i, + column_def[i].width); + } - g_signal_connect (GTK_OBJECT (sheet), "traverse", - GTK_SIGNAL_FUNC (traverse_cell_callback), 0); - gtk_sheet_set_model (GTK_SHEET (sheet), G_SHEET_MODEL (the_var_store)); + return sheet; +} +/* Create the var sheet */ +G_MODULE_EXPORT GtkWidget* +psppire_variable_sheet_create (gchar *widget_name, + gchar *string1, + gchar *string2, + gint int1, gint int2) +{ + gchar *codeset; + GtkWidget *sheet; + extern PsppireVarStore *the_var_store; /* Since this happens inside glade_xml_new, we must prevent strings from * being re-encoded twice */ codeset = xstrdup (bind_textdomain_codeset (PACKAGE, 0)); bind_textdomain_codeset (PACKAGE, locale_charset ()); - for (i = 0 ; i < n_COLS ; ++i ) - { - g_sheet_hetero_column_set_button_label (G_SHEET_HETERO_COLUMN (geo), i, - gettext (column_def[i].label)); - g_sheet_hetero_column_set_width (G_SHEET_HETERO_COLUMN (geo), i, - column_def[i].width); - } + sheet = psppire_var_sheet_new_with_var_store (the_var_store); bind_textdomain_codeset (PACKAGE, codeset); free (codeset); @@ -477,3 +503,10 @@ psppire_variable_sheet_create (gchar *widget_name, } + +void +psppire_var_sheet_set_may_create_vars (PsppireVarSheet *sheet, + gboolean may_create_vars) +{ + sheet->may_create_vars = may_create_vars; +}