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)
{
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));
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);
}
+
+void
+psppire_var_sheet_set_may_create_vars (PsppireVarSheet *sheet,
+ gboolean may_create_vars)
+{
+ sheet->may_create_vars = may_create_vars;
+}