gtk_widget_unmap (sheet->button);
}
+/* get cell attributes of the given cell */
+/* TRUE means that the cell is currently allocated */
+static gboolean psppire_sheet_get_attributes (const PsppireSheet *sheet,
+ gint row, gint col,
+ PsppireSheetCellAttr *attributes);
+
+
static void
psppire_sheet_cell_draw (PsppireSheet *sheet, gint row, gint col)
}
}
-gboolean
+static gboolean
psppire_sheet_get_attributes (const PsppireSheet *sheet, gint row, gint col,
PsppireSheetCellAttr *attr)
{
attr->border.mask = 0;
attr->border.color = GTK_WIDGET (sheet)->style->black;
- attr->is_editable = psppire_sheet_model_is_editable (sheet->model, row, col);
-
colormap = gtk_widget_get_colormap (GTK_WIDGET (sheet));
fg = psppire_sheet_model_get_foreground (sheet->model, row, col);
if ( fg )
GdkColor foreground;
GdkColor background;
PsppireSheetCellBorder border;
- gboolean is_editable;
};
struct _PsppireSheetHoverTitle
gchar *psppire_sheet_cell_get_text (const PsppireSheet *sheet, gint row, gint col);
-/* get cell attributes of the given cell */
-/* TRUE means that the cell is currently allocated */
-gboolean psppire_sheet_get_attributes (const PsppireSheet *sheet,
- gint row, gint col,
- PsppireSheetCellAttr *attributes);
-
void psppire_sheet_set_model (PsppireSheet *sheet,
PsppireSheetModel *model);
$(top_builddir)/src/ui/gui/syntax-editor.ui \
$(top_builddir)/src/ui/gui/text-data-import.ui \
$(top_builddir)/src/ui/gui/t-test.ui \
- $(top_builddir)/src/ui/gui/var-sheet-dialogs.ui
+ $(top_builddir)/src/ui/gui/var-sheet-dialogs.ui \
+ $(top_builddir)/src/ui/gui/variable-info-dialog.ui
dist_src_ui_gui_psppire_DATA = \
src/ui/gui/descriptives-dialog.h \
src/ui/gui/dialog-common.c \
src/ui/gui/dialog-common.h \
- src/ui/gui/dict-display.c \
src/ui/gui/dict-display.h \
+ src/ui/gui/dict-display.c \
src/ui/gui/examine-dialog.c \
src/ui/gui/examine-dialog.h \
src/ui/gui/find-dialog.c \
src/ui/gui/psppire-dialog.h \
src/ui/gui/psppire-dict.c \
src/ui/gui/psppire-dict.h \
+ src/ui/gui/psppire-dictview.c \
+ src/ui/gui/psppire-dictview.h \
src/ui/gui/psppire-hbuttonbox.h \
src/ui/gui/psppire-keypad.h \
src/ui/gui/psppire-output-window.c \
src/ui/gui/syntax-editor.glade \
src/ui/gui/text-data-import.glade \
src/ui/gui/t-test.glade \
- src/ui/gui/var-sheet-dialogs.glade
+ src/ui/gui/var-sheet-dialogs.glade \
+ src/ui/gui/variable-info-dialog.glade
nodist_src_ui_gui_psppire_SOURCES = \
#include "psppire-keypad.h"
#include "psppire-data-window.h"
#include "psppire-var-store.h"
+#include "psppire-selector.h"
#include "dialog-common.h"
-#include "dict-display.h"
#include <language/expressions/public.h>
#include <language/syntax-string-source.h>
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
-
- attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
- vs->dict,
- GTK_SELECTION_SINGLE, NULL);
-
+ g_object_set (dict_view,
+ "model", vs->dict,
+ "selection-mode", GTK_SELECTION_SINGLE,
+ NULL);
psppire_selector_set_subjects (PSPPIRE_SELECTOR (var_selector),
dict_view, syntax_area,
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
- vs->dict,
- GTK_SELECTION_MULTIPLE, NULL);
+ g_object_set (source, "model", vs->dict, NULL);
set_dest_model (GTK_TREE_VIEW (dest_rows), vs->dict);
set_dest_model (GTK_TREE_VIEW (dest_cols), vs->dict);
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
<child>
- <widget class="GtkTreeView" id="dict-treeview">
+ <widget class="PsppireDictView" id="dict-treeview">
<property name="visible">True</property>
<property name="headers_visible">False</property>
</widget>
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
- vs->dict,
- GTK_SELECTION_MULTIPLE, var_is_numeric);
+ g_object_set (source, "model", vs->dict,
+ "predicate", var_is_numeric, NULL);
set_dest_model (GTK_TREE_VIEW (dest), vs->dict);
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
<child>
- <widget class="GtkTreeView" id="all-variables">
+ <widget class="PsppireDictView" id="all-variables">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
#define _(msgid) gettext (msgid)
#define N_(msgid) msgid
-
-/* A GtkTreeModelFilterVisibleFunc to filter lines in the treeview */
-static gboolean
-filter_variables (GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
-{
- var_predicate_func *predicate = data;
- struct variable *var;
- PsppireDict *dict = PSPPIRE_DICT (model);
-
- GtkTreePath *path = gtk_tree_model_get_path (model, iter);
-
- gint *idx = gtk_tree_path_get_indices (path);
-
- var = psppire_dict_get_variable (dict, *idx);
-
- gtk_tree_path_free (path);
-
- return predicate (var);
-}
-
-/* A GtkTreeCellDataFunc which sets the icon appropriate to the type
- of variable */
static void
-var_icon_cell_data_func (GtkTreeViewColumn *col,
- GtkCellRenderer *cell,
- GtkTreeModel *model,
- GtkTreeIter *iter,
- gpointer data)
-{
- struct variable *var;
- gtk_tree_model_get (model, iter, DICT_TVM_COL_VAR, &var, -1);
-
- if ( var_is_alpha (var))
- {
- g_object_set (cell, "stock-id", "var-string", NULL);
- }
- else
- {
- const struct fmt_spec *fs = var_get_write_format (var);
- int cat = fmt_get_category (fs->type);
- switch ( var_get_measure (var))
- {
- case MEASURE_NOMINAL:
- g_object_set (cell, "stock-id", "var-nominal", NULL);
- break;
- case MEASURE_ORDINAL:
- g_object_set (cell, "stock-id", "var-ordinal", NULL);
- break;
- case MEASURE_SCALE:
- if ( ( FMT_CAT_DATE | FMT_CAT_TIME ) & cat )
- g_object_set (cell, "stock-id", "var-date-scale", NULL);
- else
- g_object_set (cell, "stock-id", "var-scale", NULL);
- break;
- default:
- g_assert_not_reached ();
- };
- }
-}
-
-
-void
get_base_model (GtkTreeModel *top_model, GtkTreeIter *top_iter,
GtkTreeModel **model, GtkTreeIter *iter
)
g_assert (PSPPIRE_IS_DICT (*model));
}
-/* A GtkTreeCellDataFunc which renders the name and/or label of the
- variable */
-static void
-var_description_cell_data_func (GtkTreeViewColumn *col,
- GtkCellRenderer *cell,
- GtkTreeModel *top_model,
- GtkTreeIter *top_iter,
- gpointer data)
-{
- struct variable *var;
- GtkTreeIter iter;
- GtkTreeModel *model;
- gboolean prefer_labels = FALSE;
-
- PsppireConf *conf = psppire_conf_new ();
-
- psppire_conf_get_boolean (conf, "dialog-boxes", "prefer-labels",
- &prefer_labels);
-
- get_base_model (top_model, top_iter, &model, &iter);
-
- g_assert (PSPPIRE_IS_DICT (model));
-
-
- gtk_tree_model_get (model,
- &iter, DICT_TVM_COL_VAR, &var, -1);
-
- if ( var_has_label (var) && prefer_labels)
- {
- gchar *text = g_strdup_printf (
- "<span stretch=\"condensed\">%s</span>",
- var_get_label (var));
-
- char *utf8 = pspp_locale_to_utf8 (text, -1, NULL);
-
- g_free (text);
- g_object_set (cell, "markup", utf8, NULL);
- g_free (utf8);
- }
- else
- {
- char *name = pspp_locale_to_utf8 (var_get_name (var), -1, NULL);
- g_object_set (cell, "text", name, NULL);
- g_free (name);
- }
-}
-
-
-/* Sets the tooltip to be the name of the variable under the cursor */
-static gboolean
-set_tooltip_for_variable (GtkTreeView *treeview,
- gint x,
- gint y,
- gboolean keyboard_mode,
- GtkTooltip *tooltip,
- gpointer user_data)
-
-{
- gint bx, by;
- GtkTreeIter iter;
- GtkTreePath *path;
- GtkTreeModel *tree_model;
- struct variable *var = NULL;
- gboolean ok;
-
-
- gtk_tree_view_convert_widget_to_bin_window_coords (treeview,
- x, y, &bx, &by);
-
- if (!gtk_tree_view_get_path_at_pos (treeview, bx, by,
- &path, NULL, NULL, NULL))
- return FALSE;
-
- tree_model = gtk_tree_view_get_model (treeview);
-
-
- gtk_tree_view_set_tooltip_row (treeview, tooltip, path);
-
- ok = gtk_tree_model_get_iter (tree_model, &iter, path);
-
- gtk_tree_path_free (path);
- if (!ok)
- return FALSE;
-
-
- gtk_tree_model_get (tree_model, &iter, DICT_TVM_COL_VAR, &var, -1);
-
- if ( ! var_has_label (var))
- return FALSE;
-
- {
- gchar *tip ;
- gboolean prefer_labels = FALSE;
-
- PsppireConf *conf = psppire_conf_new ();
-
- psppire_conf_get_boolean (conf, "dialog-boxes", "prefer-labels",
- &prefer_labels);
-
- if ( prefer_labels )
- tip = pspp_locale_to_utf8 (var_get_name (var), -1, NULL);
- else
- tip = pspp_locale_to_utf8 (var_get_label (var), -1, NULL);
-
- gtk_tooltip_set_text (tooltip, tip);
-
- g_free (tip);
- }
-
- return TRUE;
-}
-
- /* Sets up TREEVIEW to display the variables of DICT.
- MODE is the selection mode for TREEVIEW.
- PREDICATE determines which variables should be visible, or NULL if
- all are to be visible.
- */
-void
-attach_dictionary_to_treeview (GtkTreeView *treeview, PsppireDict *dict,
- GtkSelectionMode mode,
- var_predicate_func *predicate
- )
-{
- GtkTreeViewColumn *col;
-
- GtkTreeSelection *selection =
- gtk_tree_view_get_selection (treeview);
-
- GtkCellRenderer *renderer;
-
- GtkTreeModel *model ;
-
- if ( predicate )
- {
- model = gtk_tree_model_filter_new (GTK_TREE_MODEL (dict),
- NULL);
-
- gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (model),
- filter_variables,
- predicate,
- NULL);
- }
- else
- {
- model = GTK_TREE_MODEL (dict);
- }
-
- gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), model);
-
-
- col = gtk_tree_view_column_new ();
- gtk_tree_view_column_set_title (col, _("Variable"));
-
- renderer = gtk_cell_renderer_pixbuf_new ();
- gtk_tree_view_column_pack_start (col, renderer, FALSE);
-
- gtk_tree_view_column_set_cell_data_func (col, renderer,
- var_icon_cell_data_func,
- NULL, NULL);
-
-
- renderer = gtk_cell_renderer_text_new ();
- gtk_tree_view_column_pack_start (col, renderer, TRUE);
- gtk_tree_view_column_set_cell_data_func (col, renderer,
- var_description_cell_data_func,
- NULL, NULL);
-
- g_object_set (renderer, "ellipsize-set", TRUE, NULL);
- g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_MIDDLE, NULL);
-
- gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_FIXED);
-
- /* FIXME: make this a value in terms of character widths */
- gtk_tree_view_column_set_min_width (col, 150);
-
- gtk_tree_view_append_column (treeview, col);
-
- gtk_tree_selection_set_mode (selection, mode);
-
- g_object_set (treeview, "has-tooltip", TRUE, NULL);
-
-#if GTK_CHECK_VERSION (2, 12, 0)
- g_signal_connect (treeview, "query-tooltip", G_CALLBACK (set_tooltip_for_variable), NULL);
-#endif
-}
void
}
+
#include <gtk/gtk.h>
#include "psppire-selector.h"
-#include "psppire-dict.h"
-#include <data/variable.h>
-
-/* Sets up TREEVIEW to display the variables of DICT.
- MODE is the selection mode for TREEVIEW.
- PREDICATE determines which variables should be visible, or NULL if
- all are to be visible.
- */
-void attach_dictionary_to_treeview (GtkTreeView *treeview, PsppireDict *dict,
- GtkSelectionMode mode,
- var_predicate_func *predicate
- );
/* A SelectItemsFunc function for GtkTreeView widgets */
PsppireSelector *selector);
-void get_base_model (GtkTreeModel *top_model, GtkTreeIter *top_iter,
- GtkTreeModel **model, GtkTreeIter *iter
- );
gtk_window_set_transient_for (GTK_WINDOW (ex_d.stats_dialog), GTK_WINDOW (de));
gtk_window_set_transient_for (GTK_WINDOW (ex_d.opts_dialog), GTK_WINDOW (de));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
- vs->dict,
- GTK_SELECTION_MULTIPLE, NULL);
-
+ g_object_set (source, "model", vs->dict, NULL);
set_dest_model (GTK_TREE_VIEW (ex_d.dep_list), vs->dict);
ex_d.dict = vs->dict;
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
<child>
- <widget class="GtkTreeView" id="treeview1">
+ <widget class="PsppireDictView" id="treeview1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
- fd.dict,
- GTK_SELECTION_SINGLE,
- NULL);
+ g_object_set (source, "model", fd.dict,
+ "selection-mode", GTK_SELECTION_SINGLE,
+ NULL);
psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
source,
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
- vs->dict,
- GTK_SELECTION_MULTIPLE, NULL);
+ g_object_set (source, "model", vs->dict, NULL);
set_dest_model (GTK_TREE_VIEW (dest), vs->dict);
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
<child>
- <widget class="GtkTreeView" id="dict-treeview">
+ <widget class="PsppireDictView" id="dict-treeview">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
#include "psppire-data-window.h"
#include "psppire-dialog.h"
#include "dialog-common.h"
-#include "dict-display.h"
#include "psppire-acr.h"
+#include "psppire-selector.h"
+#include "dict-display.h"
#include <language/syntax-string-source.h>
gtk_window_set_transient_for (ow.dialog, GTK_WINDOW (de));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
- vs->dict,
- GTK_SELECTION_MULTIPLE, NULL);
+ g_object_set (dict_view, "model", vs->dict, NULL);
set_dest_model (GTK_TREE_VIEW (ow.vars_treeview), vs->dict);
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
<child>
- <widget class="GtkTreeView" id="oneway-anova-treeview1">
+ <widget class="PsppireDictView" id="oneway-anova-treeview1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
g_param_spec_flags ("buttons",
_("Buttons"),
_("The mask that decides what buttons appear in the button box"),
- G_TYPE_PSPPIRE_BUTTON_MASK,
+ PSPPIRE_TYPE_BUTTON_MASK,
PSPPIRE_BUTTON_OK_MASK |
PSPPIRE_BUTTON_CANCEL_MASK |
PSPPIRE_BUTTON_RESET_MASK |
int *width,
-#define G_TYPE_PSPPIRE_BUTTON_MASK \
+#define PSPPIRE_TYPE_BUTTON_MASK \
(psppire_button_flags_get_type())
int *height);
const gchar *name, gboolean *value)
{
gboolean ok;
+ gboolean b;
GError *err = NULL;
conf_read (conf);
- *value = g_key_file_get_boolean (conf->keyfile,
- base,
- name, &err);
+ b = g_key_file_get_boolean (conf->keyfile,
+ base,
+ name, &err);
ok = (err == NULL);
if ( err != NULL )
g_error_free (err);
+ if (ok)
+ *value = b;
+
return ok;
}
GDK_WINDOW_STATE_MAXIMIZED )
return;
- if ( event->send_event )
- return;
-
psppire_conf_set_int (conf, base, "height", event->height);
psppire_conf_set_int (conf, base, "width", event->width);
default:
break;
};
+
}
de->vaxis[0] = psppire_axis_impl_new ();
de->vaxis[1] = psppire_axis_impl_new ();
- /* Txoxovhere's only one horizontal axis, since the
+ /* There's only one horizontal axis, since the
column widths are parameters of the variables */
de->haxis = psppire_axis_impl_new ();
-
de->split = TRUE;
de->paned = gtk_xpaned_new ();
#include "crosstabs-dialog.h"
#include "frequencies-dialog.h"
#include "examine-dialog.h"
-#include "dict-display.h"
#include "regression-dialog.h"
#include "oneway-anova-dialog.h"
#include "t-test-independent-samples-dialog.h"
g_type_add_interface_static (dialog_type,
GTK_TYPE_BUILDABLE,
&buildable_info);
-
}
return dialog_type;
enum
{
PROP_0,
- PROP_ORIENTATION
+ PROP_ORIENTATION,
+ PROP_SLIDING
};
{
case PROP_ORIENTATION:
{
- if ( GTK_IS_VBOX (dialog->box) )
+ if ( GTK_IS_VBOX (dialog->box) || GTK_VPANED (dialog->box))
g_value_set_enum (value, PSPPIRE_VERTICAL);
- else if ( GTK_IS_HBOX (dialog->box))
+ else if ( GTK_IS_HBOX (dialog->box) || GTK_HPANED (dialog->box))
g_value_set_enum (value, PSPPIRE_HORIZONTAL);
else if ( GTK_IS_TABLE (dialog->box))
g_value_set_enum (value, PSPPIRE_TABULAR);
}
break;
+ case PROP_SLIDING:
+ g_value_set_boolean (value, dialog->slidable);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
static void
-dialog_set_orientation (PsppireDialog *dialog, const GValue *orval)
+dialog_set_container (PsppireDialog *dialog)
{
- PsppireOrientation orientation = g_value_get_enum (orval);
-
if ( dialog->box != NULL)
{
gtk_container_remove (GTK_CONTAINER (dialog), dialog->box);
}
- switch ( orientation )
+ switch (dialog->orientation)
{
case PSPPIRE_HORIZONTAL:
- dialog->box = gtk_hbox_new (FALSE, 5);
+ if ( dialog->slidable)
+ dialog->box = gtk_hpaned_new();
+ else
+ dialog->box = gtk_hbox_new (FALSE, 5);
break;
case PSPPIRE_VERTICAL:
- dialog->box = gtk_vbox_new (FALSE, 5);
+ if ( dialog->slidable)
+ dialog->box = gtk_vpaned_new();
+ else
+ dialog->box = gtk_vbox_new (FALSE, 5);
break;
case PSPPIRE_TABULAR:
dialog->box = gtk_table_new (2, 3, FALSE);
break;
}
+ gtk_widget_show_all (dialog->box);
gtk_container_add (GTK_CONTAINER (dialog), dialog->box);
}
switch (prop_id)
{
+ case PROP_SLIDING:
+ dialog->slidable = g_value_get_boolean (value);
+ break;
case PROP_ORIENTATION:
- dialog_set_orientation (dialog, value);
+ dialog->orientation = g_value_get_enum (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
};
+
+ dialog_set_container (dialog);
}
{
GObjectClass *object_class = (GObjectClass *) class;
+ GParamSpec *sliding_spec ;
orientation_spec =
g_param_spec_enum ("orientation",
"Orientation",
"Which way widgets are packed",
- G_TYPE_PSPPIRE_ORIENTATION,
+ PSPPIRE_TYPE_ORIENTATION,
PSPPIRE_HORIZONTAL /* default value */,
G_PARAM_CONSTRUCT_ONLY |G_PARAM_READWRITE);
+ sliding_spec =
+ g_param_spec_boolean ("slidable",
+ "Slidable",
+ "Can the container be sized by the user",
+ FALSE,
+ G_PARAM_CONSTRUCT_ONLY |G_PARAM_READWRITE);
+
+
object_class->set_property = psppire_dialog_set_property;
object_class->get_property = psppire_dialog_get_property;
orientation_spec);
+ g_object_class_install_property (object_class,
+ PROP_SLIDING,
+ sliding_spec);
+
+
signals [DIALOG_REFRESH] =
g_signal_new ("refresh",
dialog->box = NULL;
dialog->contents_are_valid = NULL;
dialog->validity_data = NULL;
+ dialog->slidable = FALSE;
g_value_init (&value, orientation_spec->value_type);
g_param_value_set_default (orientation_spec, &value);
gtk_window_set_type_hint (GTK_WINDOW (dialog),
GDK_WINDOW_TYPE_HINT_DIALOG);
- dialog_set_orientation (dialog, &value);
-
g_value_unset (&value);
g_signal_connect (dialog, "delete-event",
GDK_WINDOW_TYPE_HINT_DIALOG);
g_object_set (dialog, "icon-name", "psppicon", NULL);
-
- gtk_widget_show_all (dialog->box);
}
typedef gboolean (*ContentsAreValid) (gpointer);
+typedef enum
+ {
+ PSPPIRE_HORIZONTAL,
+ PSPPIRE_VERTICAL,
+ PSPPIRE_TABULAR
+ } PsppireOrientation;
+
+
struct _PsppireDialog
{
ContentsAreValid contents_are_valid;
gpointer validity_data;
+ gboolean slidable;
+ PsppireOrientation orientation;
};
struct _PsppireDialogClass
GType psppire_orientation_get_type (void);
-typedef enum
- {
- PSPPIRE_HORIZONTAL,
- PSPPIRE_VERTICAL,
- PSPPIRE_TABULAR
- } PsppireOrientation;
-
-#define G_TYPE_PSPPIRE_ORIENTATION (psppire_orientation_get_type ())
+#define PSPPIRE_TYPE_ORIENTATION (psppire_orientation_get_type ())
G_END_DECLS
PsppireDict*
psppire_dict_new_from_dict (struct dictionary *d)
{
- PsppireDict *new_dict = g_object_new (G_TYPE_PSPPIRE_DICT, NULL);
+ PsppireDict *new_dict = g_object_new (PSPPIRE_TYPE_DICT, NULL);
new_dict->dict = d;
dict_set_callbacks (new_dict->dict, &gui_callbacks, new_dict);
/* --- type macros --- */
-#define G_TYPE_PSPPIRE_DICT (psppire_dict_get_type ())
-#define PSPPIRE_DICT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_PSPPIRE_DICT, PsppireDict))
-#define PSPPIRE_DICT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_PSPPIRE_DICT, PsppireDictClass))
-#define PSPPIRE_IS_DICT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), G_TYPE_PSPPIRE_DICT))
-#define PSPPIRE_IS_DICT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), G_TYPE_PSPPIRE_DICT))
-#define PSPPIRE_DICT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), G_TYPE_PSPPIRE_DICT, PsppireDictClass))
+#define PSPPIRE_TYPE_DICT (psppire_dict_get_type ())
+#define PSPPIRE_DICT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PSPPIRE_TYPE_DICT, PsppireDict))
+#define PSPPIRE_DICT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PSPPIRE_TYPE_DICT, PsppireDictClass))
+#define PSPPIRE_IS_DICT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PSPPIRE_TYPE_DICT))
+#define PSPPIRE_IS_DICT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PSPPIRE_TYPE_DICT))
+#define PSPPIRE_DICT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PSPPIRE_TYPE_DICT, PsppireDictClass))
/* --- typedefs & structures --- */
--- /dev/null
+/* PSPPIRE - a graphical user interface for PSPP.
+ Copyright (C) 2009 Free Software Foundation
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <gtk/gtktreeview.h>
+#include "psppire-dictview.h"
+#include "psppire-dict.h"
+#include "psppire-conf.h"
+#include <data/format.h>
+#include "helper.h"
+
+#include <gettext.h>
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
+static void psppire_dict_view_base_finalize (PsppireDictViewClass *, gpointer);
+static void psppire_dict_view_base_init (PsppireDictViewClass *class);
+static void psppire_dict_view_class_init (PsppireDictViewClass *class);
+static void psppire_dict_view_init (PsppireDictView *dict_view);
+
+
+GType
+psppire_dict_view_get_type (void)
+{
+ static GType psppire_dict_view_type = 0;
+
+ if (!psppire_dict_view_type)
+ {
+ static const GTypeInfo psppire_dict_view_info =
+ {
+ sizeof (PsppireDictViewClass),
+ (GBaseInitFunc) psppire_dict_view_base_init,
+ (GBaseFinalizeFunc) psppire_dict_view_base_finalize,
+ (GClassInitFunc)psppire_dict_view_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL,
+ sizeof (PsppireDictView),
+ 0,
+ (GInstanceInitFunc) psppire_dict_view_init,
+ };
+
+ psppire_dict_view_type =
+ g_type_register_static (GTK_TYPE_TREE_VIEW, "PsppireDictView",
+ &psppire_dict_view_info, 0);
+ }
+
+ return psppire_dict_view_type;
+}
+
+
+static void
+psppire_dict_view_finalize (GObject *object)
+{
+ PsppireDictView *dict_view = PSPPIRE_DICT_VIEW (object);
+
+ g_object_unref (dict_view->menu);
+}
+
+/* Properties */
+enum
+{
+ PROP_0,
+ PROP_MODEL,
+ PROP_PREDICATE,
+ PROP_SELECTION_MODE
+};
+
+
+/* A GtkTreeModelFilterVisibleFunc to filter lines in the treeview */
+static gboolean
+filter_variables (GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
+{
+ var_predicate_func *predicate = data;
+ struct variable *var;
+ PsppireDict *dict = PSPPIRE_DICT (model);
+
+ GtkTreePath *path = gtk_tree_model_get_path (model, iter);
+
+ gint *idx = gtk_tree_path_get_indices (path);
+
+ var = psppire_dict_get_variable (dict, *idx);
+
+ gtk_tree_path_free (path);
+
+ return predicate (var);
+}
+
+static void
+set_model (PsppireDictView *dict_view)
+{
+ GtkTreeModel *model ;
+
+ if ( dict_view->predicate )
+ {
+ model = gtk_tree_model_filter_new (GTK_TREE_MODEL (dict_view->dict),
+ NULL);
+
+ gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (model),
+ filter_variables,
+ dict_view->predicate,
+ NULL);
+ }
+ else
+ {
+ model = GTK_TREE_MODEL (dict_view->dict);
+ }
+
+ gtk_tree_view_set_model (GTK_TREE_VIEW (dict_view), model);
+}
+
+static void
+psppire_dict_view_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ PsppireDictView *dict_view = PSPPIRE_DICT_VIEW (object);
+
+ switch (prop_id)
+ {
+ case PROP_MODEL:
+ dict_view->dict = g_value_get_object (value);
+ break;
+ case PROP_PREDICATE:
+ dict_view->predicate = g_value_get_pointer (value);
+ break;
+ case PROP_SELECTION_MODE:
+ {
+ GtkTreeSelection *selection =
+ gtk_tree_view_get_selection (GTK_TREE_VIEW (dict_view));
+
+ GtkSelectionMode mode = g_value_get_enum (value);
+
+ gtk_tree_selection_set_mode (selection, mode);
+ }
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ };
+
+
+ set_model (dict_view);
+}
+
+
+static void
+psppire_dict_view_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ PsppireDictView *dict_view = PSPPIRE_DICT_VIEW (object);
+
+ switch (prop_id)
+ {
+ case PROP_MODEL:
+ g_value_set_object (value, dict_view->dict);
+ break;
+ case PROP_PREDICATE:
+ g_value_set_pointer (value, dict_view->predicate);
+ break;
+ case PROP_SELECTION_MODE:
+ {
+ GtkTreeSelection *selection =
+ gtk_tree_view_get_selection (GTK_TREE_VIEW (dict_view));
+
+ g_value_set_enum (value, gtk_tree_selection_get_mode (selection));
+ }
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ };
+}
+
+
+
+static void
+psppire_dict_view_class_init (PsppireDictViewClass *class)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (class);
+
+ GParamSpec *model_spec =
+ g_param_spec_object ("model",
+ "Model",
+ _("The dictionary to be displayed by this widget"),
+ PSPPIRE_TYPE_DICT,
+ G_PARAM_READABLE | G_PARAM_WRITABLE);
+
+ GParamSpec *predicate_spec =
+ g_param_spec_pointer ("predicate",
+ "Predicate",
+ _("A predicate function"),
+ G_PARAM_READABLE | G_PARAM_WRITABLE);
+
+
+ GParamSpec *selection_mode_spec =
+ g_param_spec_enum ("selection-mode",
+ "Selection Mode",
+ _("How many things can be selected"),
+ GTK_TYPE_SELECTION_MODE,
+ GTK_SELECTION_MULTIPLE,
+ G_PARAM_CONSTRUCT | G_PARAM_READABLE | G_PARAM_WRITABLE);
+
+
+ object_class->set_property = psppire_dict_view_set_property;
+ object_class->get_property = psppire_dict_view_get_property;
+
+ g_object_class_install_property (object_class,
+ PROP_MODEL,
+ model_spec);
+
+ g_object_class_install_property (object_class,
+ PROP_PREDICATE,
+ predicate_spec);
+
+ g_object_class_install_property (object_class,
+ PROP_SELECTION_MODE,
+ selection_mode_spec);
+}
+
+
+static void
+psppire_dict_view_base_init (PsppireDictViewClass *class)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (class);
+
+ object_class->finalize = psppire_dict_view_finalize;
+}
+
+
+
+static void
+psppire_dict_view_base_finalize (PsppireDictViewClass *class,
+ gpointer class_data)
+{
+
+}
+
+
+static void
+dv_get_base_model (GtkTreeModel *top_model, GtkTreeIter *top_iter,
+ GtkTreeModel **model, GtkTreeIter *iter
+ )
+{
+ *model = top_model;
+ *iter = *top_iter;
+ while (GTK_IS_TREE_MODEL_FILTER (*model))
+ {
+ GtkTreeIter parent_iter = *iter;
+ GtkTreeModelFilter *parent_model = GTK_TREE_MODEL_FILTER (*model);
+
+ *model = gtk_tree_model_filter_get_model (parent_model);
+
+ gtk_tree_model_filter_convert_iter_to_child_iter (parent_model,
+ iter,
+ &parent_iter);
+ }
+
+ g_assert (PSPPIRE_IS_DICT (*model));
+}
+
+
+
+/* A GtkTreeCellDataFunc which renders the name and/or label of the
+ variable */
+static void
+var_description_cell_data_func (GtkTreeViewColumn *col,
+ GtkCellRenderer *cell,
+ GtkTreeModel *top_model,
+ GtkTreeIter *top_iter,
+ gpointer data)
+{
+ PsppireDictView *dv = PSPPIRE_DICT_VIEW (data);
+ struct variable *var;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+
+
+ dv_get_base_model (top_model, top_iter, &model, &iter);
+
+ g_assert (PSPPIRE_IS_DICT (model));
+
+ gtk_tree_model_get (model,
+ &iter, DICT_TVM_COL_VAR, &var, -1);
+
+ if ( var_has_label (var) && dv->prefer_labels)
+ {
+ gchar *text = g_strdup_printf (
+ "<span stretch=\"condensed\">%s</span>",
+ var_get_label (var));
+
+ char *utf8 = pspp_locale_to_utf8 (text, -1, NULL);
+
+ g_free (text);
+ g_object_set (cell, "markup", utf8, NULL);
+ g_free (utf8);
+ }
+ else
+ {
+ char *name = pspp_locale_to_utf8 (var_get_name (var), -1, NULL);
+ g_object_set (cell, "text", name, NULL);
+ g_free (name);
+ }
+}
+
+
+
+/* A GtkTreeCellDataFunc which sets the icon appropriate to the type
+ of variable */
+static void
+var_icon_cell_data_func (GtkTreeViewColumn *col,
+ GtkCellRenderer *cell,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gpointer data)
+{
+ struct variable *var;
+ gtk_tree_model_get (model, iter, DICT_TVM_COL_VAR, &var, -1);
+
+ if ( var_is_alpha (var))
+ {
+ g_object_set (cell, "stock-id", "var-string", NULL);
+ }
+ else
+ {
+ const struct fmt_spec *fs = var_get_write_format (var);
+ int cat = fmt_get_category (fs->type);
+ switch ( var_get_measure (var))
+ {
+ case MEASURE_NOMINAL:
+ g_object_set (cell, "stock-id", "var-nominal", NULL);
+ break;
+ case MEASURE_ORDINAL:
+ g_object_set (cell, "stock-id", "var-ordinal", NULL);
+ break;
+ case MEASURE_SCALE:
+ if ( ( FMT_CAT_DATE | FMT_CAT_TIME ) & cat )
+ g_object_set (cell, "stock-id", "var-date-scale", NULL);
+ else
+ g_object_set (cell, "stock-id", "var-scale", NULL);
+ break;
+ default:
+ g_assert_not_reached ();
+ };
+ }
+}
+
+
+/* Sets the tooltip to be the name of the variable under the cursor */
+static gboolean
+set_tooltip_for_variable (GtkTreeView *treeview,
+ gint x,
+ gint y,
+ gboolean keyboard_mode,
+ GtkTooltip *tooltip,
+ gpointer user_data)
+{
+ gint bx, by;
+ GtkTreeIter iter;
+ GtkTreePath *path;
+ GtkTreeModel *tree_model;
+ struct variable *var = NULL;
+ gboolean ok;
+
+
+ gtk_tree_view_convert_widget_to_bin_window_coords (treeview,
+ x, y, &bx, &by);
+
+ if (!gtk_tree_view_get_path_at_pos (treeview, bx, by,
+ &path, NULL, NULL, NULL))
+ return FALSE;
+
+ tree_model = gtk_tree_view_get_model (treeview);
+
+
+ gtk_tree_view_set_tooltip_row (treeview, tooltip, path);
+
+ ok = gtk_tree_model_get_iter (tree_model, &iter, path);
+
+ gtk_tree_path_free (path);
+ if (!ok)
+ return FALSE;
+
+
+ gtk_tree_model_get (tree_model, &iter, DICT_TVM_COL_VAR, &var, -1);
+
+ if ( ! var_has_label (var))
+ return FALSE;
+
+ {
+ gchar *tip ;
+
+ if ( PSPPIRE_DICT_VIEW (treeview)->prefer_labels )
+ tip = pspp_locale_to_utf8 (var_get_name (var), -1, NULL);
+ else
+ tip = pspp_locale_to_utf8 (var_get_label (var), -1, NULL);
+
+ gtk_tooltip_set_text (tooltip, tip);
+
+ g_free (tip);
+ }
+
+ return TRUE;
+}
+
+static gboolean
+show_menu (PsppireDictView *dv, GdkEventButton *event, gpointer data)
+{
+ if (event->button != 3)
+ return FALSE;
+
+ gtk_menu_popup (GTK_MENU (dv->menu), NULL, NULL, NULL, NULL,
+ event->button, event->time);
+
+ return TRUE;
+}
+
+static void
+toggle_label_preference (GtkCheckMenuItem *checkbox, gpointer data)
+{
+ PsppireDictView *dv = PSPPIRE_DICT_VIEW (data);
+
+ dv->prefer_labels = gtk_check_menu_item_get_active (checkbox);
+
+ gtk_widget_queue_draw (GTK_WIDGET (dv));
+}
+
+static void
+psppire_dict_view_init (PsppireDictView *dict_view)
+{
+ GtkTreeViewColumn *col = gtk_tree_view_column_new ();
+
+ GtkCellRenderer *renderer = gtk_cell_renderer_pixbuf_new ();
+
+ dict_view->prefer_labels = TRUE;
+
+ psppire_conf_get_boolean (psppire_conf_new (),
+ "dialog-boxes", "prefer-labels",
+ &dict_view->prefer_labels);
+
+ gtk_tree_view_column_set_title (col, _("Variable"));
+
+ gtk_tree_view_column_pack_start (col, renderer, FALSE);
+
+ gtk_tree_view_column_set_cell_data_func (col, renderer,
+ var_icon_cell_data_func,
+ NULL, NULL);
+
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_tree_view_column_pack_start (col, renderer, TRUE);
+ gtk_tree_view_column_set_cell_data_func (col, renderer,
+ var_description_cell_data_func,
+ dict_view, NULL);
+
+ g_object_set (renderer, "ellipsize-set", TRUE, NULL);
+ g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_MIDDLE, NULL);
+
+ gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_FIXED);
+
+ /* FIXME: make this a value in terms of character widths */
+ gtk_tree_view_column_set_min_width (col, 150);
+
+ gtk_tree_view_append_column (GTK_TREE_VIEW (dict_view), col);
+
+ g_object_set (dict_view, "has-tooltip", TRUE, NULL);
+
+ g_signal_connect (dict_view, "query-tooltip",
+ G_CALLBACK (set_tooltip_for_variable), NULL);
+
+ dict_view->menu = gtk_menu_new ();
+
+
+ {
+ GtkWidget *checkbox =
+ gtk_check_menu_item_new_with_label (_("Prefer variable labels"));
+
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (checkbox),
+ dict_view->prefer_labels);
+
+ g_signal_connect (checkbox, "toggled",
+ G_CALLBACK (toggle_label_preference), dict_view);
+
+
+ gtk_menu_shell_append (GTK_MENU_SHELL (dict_view->menu), checkbox);
+
+ }
+
+ gtk_widget_show_all (dict_view->menu);
+
+ g_signal_connect (dict_view, "button-press-event",
+ G_CALLBACK (show_menu), NULL);
+}
+
+
+GtkWidget*
+psppire_dict_view_new (void)
+{
+ return GTK_WIDGET (g_object_new (psppire_dict_view_get_type (), NULL));
+}
+
+
+
+struct variable *
+psppire_dict_view_get_selected_variable (PsppireDictView *treeview)
+{
+ struct variable *var;
+ GtkTreeModel *top_model;
+ GtkTreeIter top_iter;
+
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ GtkTreeSelection *selection =
+ gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
+
+ if (! gtk_tree_selection_get_selected (selection,
+ &top_model, &top_iter))
+ return NULL;
+
+ dv_get_base_model (top_model, &top_iter, &model, &iter);
+
+ g_assert (PSPPIRE_IS_DICT (model));
+
+ gtk_tree_model_get (model,
+ &iter, DICT_TVM_COL_VAR, &var, -1);
+
+ return var;
+}
+
+
--- /dev/null
+/* PSPPIRE - a graphical user interface for PSPP.
+ Copyright (C) 2009 Free Software Foundation
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+
+#ifndef __PSPPIRE_DICT_VIEW_H__
+#define __PSPPIRE_DICT_VIEW_H__
+
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtktreeview.h>
+
+#include "psppire-dict.h"
+#include "dict-display.h"
+
+G_BEGIN_DECLS
+
+#define PSPPIRE_DICT_VIEW_TYPE (psppire_dict_view_get_type ())
+#define PSPPIRE_DICT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PSPPIRE_DICT_VIEW_TYPE, PsppireDictView))
+#define PSPPIRE_DICT_VIEW_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \
+ PSPPIRE_DICT_VIEW_TYPE, PsppireDictViewClass))
+#define PSPPIRE_IS_DICT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
+ PSPPIRE_DICT_VIEW_TYPE))
+#define PSPPIRE_IS_DICT_VIEW_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \
+ PSPPIRE_DICT_VIEW_TYPE))
+
+
+typedef struct _PsppireDictView PsppireDictView;
+typedef struct _PsppireDictViewClass PsppireDictViewClass;
+
+
+
+struct _PsppireDictView
+{
+ GtkTreeView parent;
+
+ PsppireDict *dict;
+ var_predicate_func *predicate;
+ GtkWidget *menu;
+ gboolean prefer_labels;
+};
+
+struct _PsppireDictViewClass
+{
+ GtkTreeViewClass parent_class;
+
+};
+
+GType psppire_dict_view_get_type (void);
+struct variable * psppire_dict_view_get_selected_variable (PsppireDictView *);
+
+
+G_END_DECLS
+
+#endif /* __PSPPIRE_DICT_VIEW_H__ */
g_param_spec_enum ("orientation",
"Orientation",
"Where the selector is relative to its subjects",
- G_TYPE_PSPPIRE_SELECTOR_ORIENTATION,
+ PSPPIRE_TYPE_SELECTOR_ORIENTATION,
PSPPIRE_SELECT_SOURCE_BEFORE_DEST /* default value */,
G_PARAM_CONSTRUCT_ONLY |G_PARAM_READWRITE);
PSPPIRE_SELECT_SOURCE_BELOW_DEST
} PsppireSelectorOrientation;
-#define G_TYPE_PSPPIRE_SELECTOR_ORIENTATION \
+#define PSPPIRE_TYPE_SELECTOR_ORIENTATION \
(psppire_selector_orientation_get_type())
-
/*
Callback whenever the active cell changes on the var sheet.
*/
gint oldrow, gint oldcolumn,
gpointer data)
{
- PsppireSheetCellAttr attributes;
PsppireVarStore *var_store;
PsppireVarSheetClass *vs_class =
PSPPIRE_VAR_SHEET_CLASS(G_OBJECT_GET_CLASS (vs));
g_return_if_fail (oldcolumn == PSPPIRE_VAR_STORE_COL_NAME ||
row < psppire_var_store_get_var_cnt (var_store));
- psppire_sheet_get_attributes (sheet, row, column, &attributes);
-
var = psppire_var_store_get_var (var_store, row);
switch (column)
case PSPPIRE_VAR_STORE_COL_DECIMALS:
case PSPPIRE_VAR_STORE_COL_COLUMNS:
{
- if ( attributes.is_editable)
+ if ( psppire_sheet_model_is_editable (PSPPIRE_SHEET_MODEL(var_store),
+ row, column))
{
gint r_min, r_max;
"Variable format type",
("Whether variables have input or output "
"formats"),
- G_TYPE_PSPPIRE_VAR_STORE_FORMAT_TYPE,
+ PSPPIRE_TYPE_VAR_STORE_FORMAT_TYPE,
PSPPIRE_VAR_STORE_OUTPUT_FORMATS,
G_PARAM_READWRITE);
}
PsppireVarStoreFormatType;
-#define G_TYPE_PSPPIRE_VAR_STORE_FORMAT_TYPE \
+#define PSPPIRE_TYPE_VAR_STORE_FORMAT_TYPE \
(psppire_var_store_format_type_get_type ())
/* PSPPIRE variable store. */
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
<child>
- <widget class="GtkTreeView" id="weight-cases-treeview">
+ <widget class="PsppireDictView" id="weight-cases-treeview">
<property name="visible">True</property>
<property name="headers_visible">False</property>
<property name="fixed_height_mode">True</property>
<property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<child>
- <widget class="GtkTreeView" id="source-treeview">
+ <widget class="PsppireDictView" id="source-treeview">
<property name="visible">True</property>
<property name="headers_visible">False</property>
</widget>
<property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<child>
- <widget class="GtkTreeView" id="split-file-dict-treeview">
+ <widget class="PsppireDictView" id="split-file-dict-treeview">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
<child>
- <widget class="GtkTreeView" id="sort-cases-treeview1">
+ <widget class="PsppireDictView" id="sort-cases-treeview1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
<child>
- <widget class="GtkTreeView" id="compute-treeview1">
+ <widget class="PsppireDictView" id="compute-treeview1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
<child>
- <widget class="GtkTreeView" id="select-cases-treeview">
+ <widget class="PsppireDictView" id="select-cases-treeview">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
</widget>
</child>
</widget>
- <widget class="PsppireDialog" id="variable-info-dialog">
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="title">Variables</property>
- <property name="modal">True</property>
- <child internal-child="hbox">
- <widget class="GtkHBox" id="dialog-hbox6">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="spacing">5</property>
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow11">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
- <child>
- <widget class="GtkTreeView" id="treeview2">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="headers_visible">False</property>
- <property name="reorderable">True</property>
- <property name="fixed_height_mode">True</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="padding">5</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox23">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="spacing">5</property>
- <child>
- <widget class="GtkLabel" id="label24">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Variable Information:</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="padding">5</property>
- </packing>
- </child>
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow12">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
- <child>
- <widget class="GtkTextView" id="textview1">
- <property name="height_request">200</property>
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="editable">False</property>
- <property name="wrap_mode">GTK_WRAP_WORD_CHAR</property>
- <property name="left_margin">3</property>
- <property name="cursor_visible">False</property>
- <property name="accepts_tab">False</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="padding">5</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="PsppireHButtonBox" id="psppire-hbuttonbox3">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="border_width">5</property>
- <property name="homogeneous">True</property>
- <property name="buttons">PSPPIRE_BUTTON_GOTO_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK | PSPPIRE_BUTTON_PASTE_MASK</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="pack_type">GTK_PACK_END</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">5</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
<widget class="PsppireDialog" id="select-cases-range-dialog">
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="title">Select Cases: Range</property>
gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), GTK_WINDOW (de));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (vars),
- vs->dict,
- GTK_SELECTION_MULTIPLE, NULL);
-
+ g_object_set (vars, "model", vs->dict, NULL);
set_dest_model (GTK_TREE_VIEW (rd.rank_vars), vs->dict);
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
<child>
- <widget class="GtkTreeView" id="dict-treeview">
+ <widget class="PsppireDictView" id="dict-treeview">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), GTK_WINDOW (de));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (rd.dict_treeview),
- vs->dict,
- GTK_SELECTION_MULTIPLE, NULL);
-
+ g_object_set (rd.dict_treeview, "model", vs->dict, NULL);
if ( ! rd.different )
{
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
<child>
- <widget class="GtkTreeView" id="treeview1">
+ <widget class="PsppireDictView" id="treeview1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
- vs->dict,
- GTK_SELECTION_MULTIPLE, NULL);
+ g_object_set (source, "model", vs->dict, NULL);
set_dest_model (GTK_TREE_VIEW (dest_dep), vs->dict);
set_dest_model (GTK_TREE_VIEW (dest_indep), vs->dict);
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
<child>
- <widget class="GtkTreeView" id="dict-view">
+ <widget class="PsppireDictView" id="dict-view">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
#include "helper.h"
#include "psppire-dialog.h"
#include "psppire-data-window.h"
-#include "dialog-common.h"
+#include "psppire-selector.h"
#include "dict-display.h"
+#include "dialog-common.h"
#include "widget-io.h"
#include <language/syntax-string-source.h>
#include "helper.h"
{
GtkWidget *source = get_widget_assert (scd.xml, "select-cases-treeview");
- attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
- scd.data_store->dict,
- GTK_SELECTION_SINGLE, NULL);
+ g_object_set (source, "model",
+ scd.data_store->dict,
+ "selection-mode",
+ GTK_SELECTION_SINGLE, NULL);
psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
source,
#include "psppire-data-window.h"
#include "psppire-var-store.h"
#include "dialog-common.h"
+#include "psppire-selector.h"
#include "dict-display.h"
#include <language/syntax-string-source.h>
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
- vs->dict,
- GTK_SELECTION_MULTIPLE, NULL);
+ g_object_set (source, "model", vs->dict, NULL);
set_dest_model (GTK_TREE_VIEW (dest), vs->dict);
sfd.selector = PSPPIRE_SELECTOR (
get_widget_assert (sfd.xml, "split-file-selector"));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
- vs->dict,
- GTK_SELECTION_MULTIPLE, NULL);
+ g_object_set (source, "model",
+ vs->dict, NULL);
g_signal_connect (on_off, "toggled", G_CALLBACK(on_off_toggled), sfd.xml);
gtk_window_set_transient_for (GTK_WINDOW (tt_d.dialog), GTK_WINDOW (de));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
+ g_object_set (dict_view, "model",
vs->dict,
- GTK_SELECTION_MULTIPLE, NULL);
+ NULL);
set_dest_model (GTK_TREE_VIEW (test_variables_treeview), vs->dict);
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
+ g_object_set (dict_view, "model",
vs->dict,
- GTK_SELECTION_MULTIPLE,
- var_is_numeric);
+ "predicate",
+ var_is_numeric, NULL);
set_dest_model (GTK_TREE_VIEW (tt_d.vars_treeview), vs->dict);
#include <language/syntax-string-source.h>
#include "psppire-data-window.h"
+#include "psppire-selector.h"
#include "psppire-dict.h"
#include "psppire-var-store.h"
#include "t-test-paired-samples.h"
#include "t-test-options.h"
-#include "dict-display.h"
#include "dialog-common.h"
#include "psppire-dialog.h"
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view),
+ g_object_set (dict_view, "model",
vs->dict,
- GTK_SELECTION_MULTIPLE,
- var_is_numeric);
+ "predicate",
+ var_is_numeric, NULL);
{
tt_d.list_store =
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
<child>
- <widget class="GtkTreeView" id="indep-samples-t-test-treeview1">
+ <widget class="PsppireDictView" id="indep-samples-t-test-treeview1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
<child>
- <widget class="GtkTreeView" id="one-sample-t-test-treeview2">
+ <widget class="PsppireDictView" id="one-sample-t-test-treeview2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
<child>
- <widget class="GtkTreeView" id="paired-samples-t-test-treeview1">
+ <widget class="PsppireDictView" id="paired-samples-t-test-treeview1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
g_object_get (de->data_editor, "var-store", &vs, NULL);
- attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
- vs->dict,
- GTK_SELECTION_MULTIPLE, NULL);
+ g_object_set (source, "model", vs->dict, NULL);
set_dest_model (GTK_TREE_VIEW (dest), vs->dict);
#include <config.h>
#include <gtk/gtk.h>
-#include "dict-display.h"
#include "var-display.h"
#include <data/variable.h>
#include <data/format.h>
#include "psppire-data-window.h"
#include "psppire-dialog.h"
#include "psppire-var-store.h"
+#include "psppire-dictview.h"
#include "helper.h"
#include <language/syntax-string-source.h>
#define N_(msgid) msgid
-static struct variable *
-get_selected_variable (GtkTreeView *treeview)
-{
- struct variable *var;
- GtkTreeModel *top_model;
- GtkTreeIter top_iter;
-
- GtkTreeModel *model;
- GtkTreeIter iter;
-
- GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview);
-
- if (! gtk_tree_selection_get_selected (selection,
- &top_model, &top_iter))
- {
- return NULL;
- }
-
- get_base_model (top_model, &top_iter, &model, &iter);
-
- g_assert (PSPPIRE_IS_DICT (model));
-
- gtk_tree_model_get (model,
- &iter, DICT_TVM_COL_VAR, &var, -1);
-
- return var;
-}
-
-
static void
-populate_text (GtkTreeView *treeview, gpointer data)
+populate_text (PsppireDictView *treeview, gpointer data)
{
gchar *text = 0;
GString *gstring;
GtkTextBuffer *textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(data));
- const struct variable *var = get_selected_variable (treeview);
+ const struct variable *var =
+ psppire_dict_view_get_selected_variable (treeview);
+
if ( var == NULL)
return;
}
-static gchar * generate_syntax (GtkTreeView *treeview);
+static gchar * generate_syntax (PsppireDictView *treeview);
void
gint response ;
- GtkBuilder *xml = builder_new ("psppire.ui");
+ GtkBuilder *xml = builder_new ("variable-info-dialog.ui");
GtkWidget *dialog = get_widget_assert (xml, "variable-info-dialog");
GtkWidget *treeview = get_widget_assert (xml, "treeview2");
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
- attach_dictionary_to_treeview (GTK_TREE_VIEW (treeview),
- vs->dict,
- GTK_SELECTION_SINGLE,
- NULL );
-
+ g_object_set (treeview,
+ "model", vs->dict,
+ "selection-mode", GTK_SELECTION_SINGLE,
+ NULL);
g_signal_connect (treeview, "cursor-changed", G_CALLBACK (populate_text),
textview);
case PSPPIRE_RESPONSE_GOTO:
{
const struct variable *var =
- get_selected_variable (GTK_TREE_VIEW (treeview));
+ psppire_dict_view_get_selected_variable (PSPPIRE_DICT_VIEW (treeview));
if ( NULL == var)
goto done;
- g_object_set (de->data_editor, "current-variable", var_get_dict_index (var), NULL);
+ g_object_set (de->data_editor,
+ "current-variable", var_get_dict_index (var),
+ NULL);
}
break;
case PSPPIRE_RESPONSE_PASTE:
{
- gchar *syntax = generate_syntax (GTK_TREE_VIEW (treeview));
+ gchar *syntax = generate_syntax (PSPPIRE_DICT_VIEW (treeview));
paste_syntax_in_new_window (syntax);
g_free (syntax);
}
static gchar *
-generate_syntax (GtkTreeView *treeview)
+generate_syntax (PsppireDictView *treeview)
{
- const struct variable *var = get_selected_variable (treeview);
+ const struct variable *var =
+ psppire_dict_view_get_selected_variable (treeview);
if ( NULL == var)
return g_strdup ("");
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
+<glade-interface>
+ <requires lib="psppire"/>
+ <widget class="PsppireDialog" id="variable-info-dialog">
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="title">Variables</property>
+ <property name="modal">True</property>
+ <property name="slidable">True</property>
+ <child internal-child="hbox">
+ <widget class="GtkHPaned" id="dialog-hbox2">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow13">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="PsppireDictView" id="treeview2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="headers_visible">False</property>
+ <property name="reorderable">True</property>
+ <property name="fixed_height_mode">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox23">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="spacing">5</property>
+ <child>
+ <widget class="GtkLabel" id="label24">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Variable Information:</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow14">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <widget class="GtkTextView" id="textview1">
+ <property name="height_request">200</property>
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="editable">False</property>
+ <property name="wrap_mode">GTK_WRAP_WORD_CHAR</property>
+ <property name="left_margin">3</property>
+ <property name="cursor_visible">False</property>
+ <property name="accepts_tab">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">5</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="PsppireHButtonBox" id="psppire-hbuttonbox4">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="border_width">5</property>
+ <property name="homogeneous">True</property>
+ <property name="buttons">PSPPIRE_BUTTON_GOTO_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK | PSPPIRE_BUTTON_PASTE_MASK</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>
g_signal_connect (selector, "de-selected", G_CALLBACK (on_deselect),
radiobutton1);
- attach_dictionary_to_treeview (GTK_TREE_VIEW (source),
- vs->dict,
- GTK_SELECTION_SINGLE,
- var_is_numeric
- );
+ g_object_set (source, "model", vs->dict,
+ "selection-mode", GTK_SELECTION_SINGLE,
+ "predicate", var_is_numeric,
+ NULL);
psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
source,
+#include <config.h>
+
#include "widgets.h"
+
#include "psppire-dialog.h"
#include "psppire-selector.h"
#include "psppire-vbuttonbox.h"
#include "psppire-hbuttonbox.h"
#include "psppire-keypad.h"
#include "psppire-acr.h"
+#include "psppire-dictview.h"
/* Any custom widgets which are to be used in GtkBuilder ui files
psppire_hbutton_box_get_type ();
psppire_keypad_get_type ();
psppire_acr_get_type ();
+ psppire_dict_view_get_type ();
}