-static GtkWidget *
-make_data_sheet (PsppireDataEditor *de, GtkTreeViewGridLines grid_lines,
- gboolean show_value_labels)
-{
- PsppSheetSelection *selection;
- GtkWidget *ds;
-
- ds = psppire_data_sheet_new ();
- pspp_sheet_view_set_grid_lines (PSPP_SHEET_VIEW (ds), grid_lines);
- psppire_data_sheet_set_value_labels (PSPPIRE_DATA_SHEET (ds),
- show_value_labels);
-
- g_signal_connect_swapped (ds, "notify::value-labels",
- G_CALLBACK (refresh_entry), de);
- g_signal_connect (ds, "var-double-clicked",
- G_CALLBACK (on_data_sheet_var_double_clicked), de);
-
- selection = pspp_sheet_view_get_selection (PSPP_SHEET_VIEW (ds));
- g_signal_connect (selection, "changed",
- G_CALLBACK (on_data_sheet_selection_changed), de);
-
- return ds;
-}
-
-static GtkWidget *
-make_single_datasheet (PsppireDataEditor *de, GtkTreeViewGridLines grid_lines,
- gboolean show_value_labels)
-{
- GtkWidget *data_sheet_scroller;
-
- de->data_sheets[0] = make_data_sheet (de, grid_lines, show_value_labels);
- de->data_sheets[1] = de->data_sheets[2] = de->data_sheets[3] = NULL;
-
- /* Put data sheet in scroller. */
- data_sheet_scroller = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (data_sheet_scroller),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_container_add (GTK_CONTAINER (data_sheet_scroller), de->data_sheets[0]);
-
- return data_sheet_scroller;
-}
-
-static GtkWidget *
-make_split_datasheet (PsppireDataEditor *de, GtkTreeViewGridLines grid_lines,
- gboolean show_value_labels)
-{
- /* Panes, in the order in which we want to create them. */
- enum
- {
- TL, /* top left */
- TR, /* top right */
- BL, /* bottom left */
- BR /* bottom right */
- };
-
- PsppSheetView *ds[4];
- GtkXPaned *xpaned;
- int i;
-
- xpaned = GTK_XPANED (gtk_xpaned_new ());
-
- for (i = 0; i < 4; i++)
- {
- GtkAdjustment *hadjust, *vadjust;
- GtkPolicyType hpolicy, vpolicy;
- GtkWidget *scroller;
-
- de->data_sheets[i] = make_data_sheet (de, grid_lines, show_value_labels);
- ds[i] = PSPP_SHEET_VIEW (de->data_sheets[i]);
-
- if (i == BL)
- hadjust = pspp_sheet_view_get_hadjustment (ds[TL]);
- else if (i == BR)
- hadjust = pspp_sheet_view_get_hadjustment (ds[TR]);
- else
- hadjust = NULL;
-
- if (i == TR)
- vadjust = pspp_sheet_view_get_vadjustment (ds[TL]);
- else if (i == BR)
- vadjust = pspp_sheet_view_get_vadjustment (ds[BL]);
- else
- vadjust = NULL;
-
- scroller = gtk_scrolled_window_new (hadjust, vadjust);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroller),
- GTK_SHADOW_ETCHED_IN);
- hpolicy = i == TL || i == TR ? GTK_POLICY_NEVER : GTK_POLICY_ALWAYS;
- vpolicy = i == TL || i == BL ? GTK_POLICY_NEVER : GTK_POLICY_ALWAYS;
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroller),
- hpolicy, vpolicy);
- gtk_container_add (GTK_CONTAINER (scroller), GTK_WIDGET (ds[i]));
-
- switch (i)
- {
- case TL:
- gtk_xpaned_pack_top_left (xpaned, scroller, TRUE, TRUE);
- break;
-
- case TR:
- gtk_xpaned_pack_top_right (xpaned, scroller, TRUE, TRUE);
- break;
-
- case BL:
- gtk_xpaned_pack_bottom_left (xpaned, scroller, TRUE, TRUE);
- break;
-
- case BR:
- gtk_xpaned_pack_bottom_right (xpaned, scroller, TRUE, TRUE);
- break;
-
- default:
- g_warn_if_reached ();
- }
- }
-
- /* Bottom sheets don't display variable names. */
- pspp_sheet_view_set_headers_visible (ds[BL], FALSE);
- pspp_sheet_view_set_headers_visible (ds[BR], FALSE);
-
- /* Right sheets don't display case numbers. */
- psppire_data_sheet_set_case_numbers (PSPPIRE_DATA_SHEET (ds[TR]), FALSE);
- psppire_data_sheet_set_case_numbers (PSPPIRE_DATA_SHEET (ds[BR]), FALSE);
-
- g_signal_connect (ds[TL], "notify::fixed-height",
- G_CALLBACK (on_data_sheet_fixed_height_notify), de);
-
- return GTK_WIDGET (xpaned);
-}