#include "ui/gui/psppire-value-entry.h"
#include "ui/gui/psppire-var-sheet.h"
#include "ui/gui/psppire.h"
+#include "ui/gui/psppire-conf.h"
#include <gettext.h>
#define _(msgid) gettext (msgid)
static void
psppire_data_editor_switch_page (GtkNotebook *notebook,
- GtkNotebookPage *page,
+ GtkWidget *w,
guint page_num)
{
- GTK_NOTEBOOK_CLASS (parent_class)->switch_page (notebook, page, page_num);
+ GTK_NOTEBOOK_CLASS (parent_class)->switch_page (notebook, w, page_num);
psppire_data_editor_update_ui_manager (PSPPIRE_DATA_EDITOR (notebook));
}
PSPPIRE_DATA_EDITOR_DATA_VIEW);
data_sheet = psppire_data_editor_get_active_data_sheet (de);
- psppire_data_sheet_show_variable (data_sheet, dict_index);
+ psppire_data_sheet_goto_variable (data_sheet, dict_index);
return TRUE;
}
}
static GtkWidget *
-make_data_sheet (PsppireDataEditor *de, GtkTreeViewGridLines grid_lines)
+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);
}
static GtkWidget *
-make_single_datasheet (PsppireDataEditor *de, GtkTreeViewGridLines grid_lines)
+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);
+ 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. */
}
static GtkWidget *
-make_split_datasheet (PsppireDataEditor *de, GtkTreeViewGridLines grid_lines)
+make_split_datasheet (PsppireDataEditor *de, GtkTreeViewGridLines grid_lines,
+ gboolean show_value_labels)
{
/* Panes, in the order in which we want to create them. */
enum
GtkPolicyType hpolicy, vpolicy;
GtkWidget *scroller;
- de->data_sheets[i] = make_data_sheet (de, grid_lines);
+ 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)
return GTK_WIDGET (xpaned);
}
+static void set_font_recursively (GtkWidget *w, gpointer data);
+
static void
psppire_data_editor_init (PsppireDataEditor *de)
{
GtkWidget *var_sheet_scroller;
GtkWidget *hbox;
+ gchar *fontname = NULL;
de->font = NULL;
de->ui_manager = NULL;
+ de->old_vbox_widget = NULL;
g_object_set (de, "tab-pos", GTK_POS_BOTTOM, NULL);
de->split = FALSE;
de->datasheet_vbox_widget
- = make_single_datasheet (de, GTK_TREE_VIEW_GRID_LINES_BOTH);
+ = make_single_datasheet (de, GTK_TREE_VIEW_GRID_LINES_BOTH, FALSE);
de->vbox = gtk_vbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (de->vbox), hbox, FALSE, FALSE, 0);
g_object_set (de, "can-focus", FALSE, NULL);
+ if (psppire_conf_get_string (psppire_conf_new (),
+ "Data Editor", "font",
+ &fontname) )
+ {
+ de->font = pango_font_description_from_string (fontname);
+ g_free (fontname);
+ set_font_recursively (GTK_WIDGET (de), de->font);
+ }
+
psppire_data_editor_update_ui_manager (de);
}
void
psppire_data_editor_set_font (PsppireDataEditor *de, PangoFontDescription *font_desc)
{
+ gchar *font_name;
set_font_recursively (GTK_WIDGET (de), font_desc);
if (de->font)
pango_font_description_free (de->font);
de->font = pango_font_description_copy (font_desc);
+ font_name = pango_font_description_to_string (de->font);
+
+ psppire_conf_set_string (psppire_conf_new (),
+ "Data Editor", "font",
+ font_name);
+
}
/* If SPLIT is TRUE, splits DE's data sheet into four panes.
psppire_data_editor_split_window (PsppireDataEditor *de, gboolean split)
{
GtkTreeViewGridLines grid_lines;
+ gboolean labels;
if (split == de->split)
return;
grid_lines = pspp_sheet_view_get_grid_lines (
PSPP_SHEET_VIEW (de->data_sheets[0]));
+ labels = psppire_data_sheet_get_value_labels (PSPPIRE_DATA_SHEET (
+ de->data_sheets[0]));
disconnect_data_sheets (de);
- gtk_widget_destroy (de->datasheet_vbox_widget);
+ if (de->old_vbox_widget)
+ g_object_unref (de->old_vbox_widget);
+ de->old_vbox_widget = de->datasheet_vbox_widget;
+ g_object_ref (de->old_vbox_widget);
+ /* FIXME: old_vbox_widget needs to be unreffed in dispose.
+ (currently it seems to provoke an error if I do that.
+ I don't know why. */
+ gtk_container_remove (GTK_CONTAINER (de->vbox), de->datasheet_vbox_widget);
if (split)
- de->datasheet_vbox_widget = make_split_datasheet (de, grid_lines);
+ de->datasheet_vbox_widget = make_split_datasheet (de, grid_lines, labels);
else
- de->datasheet_vbox_widget = make_single_datasheet (de, grid_lines);
+ de->datasheet_vbox_widget = make_single_datasheet (de, grid_lines, labels);
+
psppire_data_editor_refresh_model (de);
gtk_box_pack_start (GTK_BOX (de->vbox), de->datasheet_vbox_widget,
{
case PSPPIRE_DATA_EDITOR_DATA_VIEW:
data_sheet = psppire_data_editor_get_active_data_sheet (de);
- psppire_data_sheet_show_variable (data_sheet, dict_index);
+ psppire_data_sheet_goto_variable (data_sheet, dict_index);
break;
case PSPPIRE_DATA_EDITOR_VARIABLE_VIEW: