</displayable-values>
</property>
-
- <property id="visible" ignore="True" default="True" />
+ <property id="source-widget" ignore="True" />
+ <property id="dest-widget" ignore="True" />
+ <property id="visible" ignore="True" default="True" />
</properties>
</glade-widget-class>
GtkWidget *functions = get_widget_assert (xml, "compute-treeview2");
GtkWidget *keypad = get_widget_assert (xml, "psppire-keypad1");
GtkWidget *target = get_widget_assert (xml, "compute-entry1");
- GtkWidget *syntax_area = get_widget_assert (xml, "compute-textview1");
GtkWidget *var_selector = get_widget_assert (xml, "compute-selector1");
GtkWidget *func_selector = get_widget_assert (xml, "compute-selector2");
GtkWidget *type_and_label = get_widget_assert (xml, "compute-button1");
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
- g_object_set (dict_view, "dictionary", scd.dict,
+ g_object_set (dict_view, "model", scd.dict,
"selection-mode", GTK_SELECTION_SINGLE,
NULL);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (var_selector),
- dict_view, syntax_area,
- insert_source_row_into_text_view,
- NULL,
- NULL);
-
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (var_selector),
+ insert_source_row_into_text_view, NULL);
function_list_populate (GTK_TREE_VIEW (functions));
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (func_selector),
- functions, syntax_area,
- insert_function_into_syntax_area,
- NULL,
- NULL);
-
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (func_selector),
+ insert_function_into_syntax_area, NULL);
scd.xml = xml;
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
g_object_get (vs, "dictionary", &dict, NULL);
- g_object_set (source, "dictionary", dict, NULL);
+ g_object_set (source, "model", dict, NULL);
set_dest_model (GTK_TREE_VIEW (dest_rows), dict);
set_dest_model (GTK_TREE_VIEW (dest_cols), dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (row_selector),
- source,
- dest_rows,
- insert_source_row_into_tree_view,
- NULL,
- NULL);
-
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (col_selector),
- source,
- dest_cols,
- insert_source_row_into_tree_view,
- NULL,
- NULL);
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (row_selector),
+ insert_source_row_into_tree_view,
+ NULL);
+
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (col_selector),
+ insert_source_row_into_tree_view,
+ NULL);
cd.row_vars = GTK_TREE_VIEW (dest_rows);
cd.col_vars = GTK_TREE_VIEW (dest_cols);
<property name="receives_default">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="source_widget">dict-treeview</property>
+ <property name="dest_widget">rows</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="receives_default">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="source_widget">dict-treeview</property>
+ <property name="dest_widget">cols</property>
</object>
<packing>
<property name="left_attach">1</property>
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
- g_object_set (source, "dictionary", dict,
+ g_object_set (source, "model", dict,
"predicate", var_is_numeric, NULL);
set_dest_model (GTK_TREE_VIEW (dest), dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
- source,
- dest,
- insert_source_row_into_tree_view,
- NULL,
- NULL);
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector),
+ insert_source_row_into_tree_view, NULL);
put_checkbox_items_in_treeview (GTK_TREE_VIEW (stats_treeview),
B_DS_DEFAULT,
<property name="receives_default">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="source_widget">all-variables</property>
+ <property name="dest_widget">stat-variables</property>
</object>
</child>
</object>
gint dict_index;
gint *indeces;
GtkTreePath *path;
- const gchar *text = gtk_entry_get_text (GTK_ENTRY (selector->dest));
+ GtkWidget *entry = NULL;
+ const gchar *text = NULL;
+
+ g_object_get (selector, "dest-widget", &entry, NULL);
+
+ text = gtk_entry_get_text (GTK_ENTRY (entry));
get_base_model (model, iter, &dict, &dict_iter);
gtk_window_set_transient_for (GTK_WINDOW (ex_d.opts_dialog), GTK_WINDOW (de));
g_object_get (vs, "dictionary", &ex_d.dict, NULL);
- g_object_set (source, "dictionary", ex_d.dict, NULL);
+ g_object_set (source, "model", ex_d.dict, NULL);
set_dest_model (GTK_TREE_VIEW (ex_d.dep_list), ex_d.dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (dep_selector),
- source,
- ex_d.dep_list,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (dep_selector),
insert_source_row_into_tree_view,
- NULL, NULL);
+ NULL);
psppire_selector_set_allow (PSPPIRE_SELECTOR (dep_selector),
numeric_only);
set_dest_model (GTK_TREE_VIEW (ex_d.fct_list), ex_d.dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (fct_selector),
- source,
- ex_d.fct_list,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (fct_selector),
insert_source_row_into_tree_view,
- NULL, NULL);
+ NULL);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (id_selector),
- source,
- ex_d.id_entry,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (id_selector),
insert_source_row_into_entry,
- NULL, NULL);
+ NULL);
g_signal_connect (dialog, "refresh", G_CALLBACK (refresh), &ex_d);
<property name="receives_default">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="source_widget">treeview1</property>
+ <property name="dest_widget">entry1</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="receives_default">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="source_widget">treeview1</property>
+ <property name="dest_widget">treeview3</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="receives_default">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="source_widget">treeview1</property>
+ <property name="dest_widget">treeview2</property>
</object>
<packing>
<property name="left_attach">1</property>
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
- g_object_set (source, "dictionary", fd.dict,
+ g_object_set (source, "model", fd.dict,
"selection-mode", GTK_SELECTION_SINGLE,
NULL);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
- source,
- fd.variable_entry,
- insert_source_row_into_entry,
- is_currently_in_entry,
- NULL
- );
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector),
+ insert_source_row_into_entry,
+ NULL
+ );
+
+ psppire_selector_set_filter_func (PSPPIRE_SELECTOR (selector),
+ is_currently_in_entry);
g_signal_connect (dialog, "refresh", G_CALLBACK (refresh), &fd);
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
g_object_get (vs, "dictionary", &fd.dict, NULL);
- g_object_set (source, "dictionary", fd.dict, NULL);
+ g_object_set (source, "model", fd.dict, NULL);
set_dest_model (GTK_TREE_VIEW (dest), fd.dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
- source,
- dest,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector),
insert_source_row_into_tree_view,
- NULL,
NULL);
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="no_show_all">True</property>
<property name="border_width">5</property>
+ <property name="source_widget">dict-treeview</property>
+ <property name="dest_widget">var-treeview</property>
</object>
</child>
</object>
gtk_window_set_transient_for (ow.dialog, GTK_WINDOW (de));
- g_object_set (dict_view, "dictionary", ow.dict, NULL);
+ g_object_set (dict_view, "model", ow.dict, NULL);
set_dest_model (GTK_TREE_VIEW (ow.vars_treeview), ow.dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector1),
- dict_view, ow.vars_treeview,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector1),
insert_source_row_into_tree_view,
- NULL,
NULL);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector2),
- dict_view, ow.factor_entry,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector2),
insert_source_row_into_entry,
- is_currently_in_entry,
NULL);
+ psppire_selector_set_filter_func (PSPPIRE_SELECTOR (selector2),
+ is_currently_in_entry);
+
g_signal_connect_swapped (ow.dialog, "refresh", G_CALLBACK (refresh), &ow);
<property name="receives_default">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="source_widget">oneway-anova-treeview1</property>
+ <property name="dest_widget">oneway-anova-entry</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="receives_default">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="source_widget">oneway-anova-treeview1</property>
+ <property name="dest_widget">oneway-anova-treeview2</property>
</object>
<packing>
<property name="left_attach">1</property>
enum
{
PROP_0,
- PROP_MODEL,
PROP_DICTIONARY,
PROP_PREDICATE,
PROP_SELECTION_MODE
case PROP_DICTIONARY:
dict_view->dict = g_value_get_object (value);
break;
- case PROP_MODEL:
- g_critical ("Don't set the \"model\" property on %s. "
- "Use the \"dictionary\" property instead.",
- G_OBJECT_TYPE_NAME (dict_view));
- break;
case PROP_PREDICATE:
dict_view->predicate = g_value_get_pointer (value);
break;
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
- GParamSpec *dictionary_spec =
- g_param_spec_object ("dictionary",
- "Dictionary",
- _("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",
GTK_SELECTION_MULTIPLE,
G_PARAM_CONSTRUCT | G_PARAM_READABLE | G_PARAM_WRITABLE);
-
- GParamSpec *dummy_spec =
- g_param_spec_pointer ("model",
- "Model",
- "Don't set the property",
- 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,
- dummy_spec);
-
- g_object_class_install_property (object_class,
- PROP_DICTIONARY,
- dictionary_spec);
+ g_object_class_override_property (object_class,
+ PROP_DICTIONARY,
+ "model");
g_object_class_install_property (object_class,
PROP_PREDICATE,
static void
dv_get_base_model (GtkTreeModel *top_model, GtkTreeIter *top_iter,
- GtkTreeModel **model, GtkTreeIter *iter
- )
+ GtkTreeModel **model, GtkTreeIter *iter)
{
*model = top_model;
/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2007 Free Software Foundation
+ Copyright (C) 2007, 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
return psppire_selector_type;
}
+static GObjectClass * parent_class = NULL;
static void
-psppire_selector_finalize (GObject *object)
+psppire_selector_finalize (GObject *obj)
{
+ /* Chain up to the parent class */
+ G_OBJECT_CLASS (parent_class)->finalize (obj);
}
+
+static void
+psppire_selector_dispose (GObject *obj)
+{
+ PsppireSelector *sel = PSPPIRE_SELECTOR (obj);
+
+ if (sel->dispose_has_run)
+ return;
+
+ /* Make sure dispose does not run twice. */
+ sel->dispose_has_run = TRUE;
+
+ g_object_unref (sel->dest);
+ g_object_unref (sel->source);
+
+ /* Chain up to the parent class */
+ G_OBJECT_CLASS (parent_class)->dispose (obj);
+}
+
+
/* Properties */
enum
{
PROP_0,
- PROP_ORIENTATION
+ PROP_ORIENTATION,
+ PROP_SOURCE_WIDGET,
+ PROP_DEST_WIDGET
};
static void on_activate (PsppireSelector *selector, gpointer data);
+static void update_subjects (PsppireSelector *selector);
+
static void
psppire_selector_set_property (GObject *object,
selector->orientation = g_value_get_enum (value);
set_direction (selector, selector->direction);
break;
+ case PROP_SOURCE_WIDGET:
+ selector->source = g_value_dup_object (value);
+ update_subjects (selector);
+ break;
+ case PROP_DEST_WIDGET:
+ selector->dest = g_value_dup_object (value);
+ update_subjects (selector);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
case PROP_ORIENTATION:
g_value_set_enum (value, selector->orientation);
break;
+ case PROP_SOURCE_WIDGET:
+ g_value_take_object (value, selector->source);
+ break;
+ case PROP_DEST_WIDGET:
+ g_value_take_object (value, selector->dest);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
PSPPIRE_SELECT_SOURCE_BEFORE_DEST /* default value */,
G_PARAM_CONSTRUCT_ONLY |G_PARAM_READWRITE);
+ GParamSpec *source_widget_spec =
+ g_param_spec_object ("source-widget",
+ "Source Widget",
+ "The widget to be used as the source for this selector",
+ GTK_TYPE_WIDGET,
+ G_PARAM_READWRITE);
+
+ GParamSpec *dest_widget_spec =
+ g_param_spec_object ("dest-widget",
+ "Destination Widget",
+ "The widget to be used as the destination for this selector",
+ GTK_TYPE_WIDGET,
+ G_PARAM_READWRITE);
+
object_class->set_property = psppire_selector_set_property;
object_class->get_property = psppire_selector_get_property;
PROP_ORIENTATION,
orientation_spec);
+ g_object_class_install_property (object_class,
+ PROP_SOURCE_WIDGET,
+ source_widget_spec);
+
+ g_object_class_install_property (object_class,
+ PROP_DEST_WIDGET,
+ dest_widget_spec);
+
+ parent_class = g_type_class_peek_parent (class);
+
signals [SELECTED] =
g_signal_new ("selected",
G_TYPE_FROM_CLASS (class),
GObjectClass *object_class = G_OBJECT_CLASS (class);
object_class->finalize = psppire_selector_finalize;
+ object_class->dispose = psppire_selector_dispose;
class->source_hash = g_hash_table_new (g_direct_hash, g_direct_equal);
}
static void
psppire_selector_init (PsppireSelector *selector)
{
+ selector->select_user_data = NULL;
+ selector->select_items = NULL;
+ selector->allow_selection = NULL;
+ selector->filter = NULL;
+
selector->arrow = gtk_arrow_new (GTK_ARROW_LEFT, GTK_SHADOW_NONE);
selector->filtered_source = NULL;
g_signal_connect_swapped (selector->action, "activate", G_CALLBACK (on_activate), selector);
selector->selecting = FALSE;
+
+ selector->source = NULL;
+ selector->dest = NULL;
+ selector->dispose_has_run = FALSE;
}
}
+static void
+xxx (PsppireSelector *selector)
+{
+ GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (selector->dest));
+
+ g_signal_connect (model, "row-changed", G_CALLBACK (on_dest_data_change),
+ selector);
+ g_signal_connect (model, "row-deleted", G_CALLBACK (on_dest_data_delete),
+ selector);
+}
/* Set the destination widget to DEST */
static void
GtkTreeView *dest)
{
GtkTreeSelection* selection = gtk_tree_view_get_selection (dest);
- GtkTreeModel *model = gtk_tree_view_get_model (dest);
+
gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE);
g_signal_connect (selection, "changed", G_CALLBACK (on_dest_treeview_select),
selector);
- g_signal_connect (model, "row-changed", G_CALLBACK (on_dest_data_change),
- selector);
- g_signal_connect (model, "row-deleted", G_CALLBACK (on_dest_data_delete),
- selector);
+ g_signal_connect_swapped (dest, "notify::model",
+ G_CALLBACK (xxx), selector);
}
G_CALLBACK (on_row_inserted), selector);
}
-
-/* Set SOURCE and DEST for this selector, and
- set SELECT_FUNC and FILTER_FUNC */
-void
-psppire_selector_set_subjects (PsppireSelector *selector,
- GtkWidget *source,
- GtkWidget *dest,
- SelectItemsFunc *select_func,
- FilterItemsFunc *filter_func,
- gpointer user_data)
+static void
+update_subjects (PsppireSelector *selector)
{
- g_assert(selector);
+ GtkTreeModel *model = NULL;
- selector->filter = filter_func ;
+ if ( NULL == selector->dest )
+ return;
- selector->source = source;
- selector->dest = dest;
- selector->select_user_data = user_data;
-
- if ( filter_func == NULL)
+ if ( selector->filter == NULL)
{
- if (GTK_IS_TREE_VIEW (dest))
+ if (GTK_IS_TREE_VIEW (selector->dest))
selector->filter = is_item_in_dest;
}
- if ( GTK_IS_TREE_VIEW (source))
- set_tree_view_source (selector, GTK_TREE_VIEW (source) );
- else
- g_error ("Unsupported source widget: %s", G_OBJECT_TYPE_NAME (source));
+ if ( NULL == selector->source )
+ return;
+
+ g_signal_connect_swapped (selector->source, "notify::model",
+ G_CALLBACK (update_subjects), selector);
- g_assert ( GTK_IS_TREE_MODEL_FILTER (selector->filtered_source));
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (selector->source));
- if ( NULL == dest)
+ if ( NULL == model)
+ return;
+
+
+ if ( GTK_IS_TREE_VIEW (selector->source))
+ set_tree_view_source (selector, GTK_TREE_VIEW (selector->source) );
+ else
+ g_error ("Unsupported source widget: %s", G_OBJECT_TYPE_NAME (selector->source));
+
+ if ( NULL == selector->dest)
;
- else if ( GTK_IS_TREE_VIEW (dest))
- set_tree_view_dest (selector, GTK_TREE_VIEW (dest));
+ else if ( GTK_IS_TREE_VIEW (selector->dest))
+ {
+ set_tree_view_dest (selector, GTK_TREE_VIEW (selector->dest));
+ }
- else if ( GTK_IS_ENTRY (dest))
- set_entry_dest (selector, GTK_ENTRY (dest));
+ else if ( GTK_IS_ENTRY (selector->dest))
+ set_entry_dest (selector, GTK_ENTRY (selector->dest));
- else if (GTK_IS_TEXT_VIEW (dest))
+ else if (GTK_IS_TEXT_VIEW (selector->dest))
{
/* Nothing to be done */
}
-
else
- g_error ("Unsupported destination widget: %s", G_OBJECT_TYPE_NAME (dest));
+ g_error ("Unsupported destination widget: %s", G_OBJECT_TYPE_NAME (selector->dest));
+}
+
+
+/* Set FILTER_FUNC for this selector */
+void
+psppire_selector_set_filter_func (PsppireSelector *selector,
+ FilterItemsFunc *filter_func)
+{
+ selector->filter = filter_func ;
+
+ if ( selector->filter == NULL)
+ {
+ if (GTK_IS_TREE_VIEW (selector->dest))
+ selector->filter = is_item_in_dest;
+ }
+}
+
+
+/* Set SELECT_FUNC for this selector */
+void
+psppire_selector_set_select_func (PsppireSelector *selector,
+ SelectItemsFunc *select_func,
+ gpointer user_data)
+{
+ selector->select_user_data = user_data;
selector->select_items = select_func;
}
void
-psppire_selector_set_allow (PsppireSelector *selector , AllowSelectionFunc *allow)
+psppire_selector_set_allow (PsppireSelector *selector, AllowSelectionFunc *allow)
{
selector->allow_selection = allow;
}
GtkWidget *arrow;
GtkAction *action;
+ gboolean dispose_has_run;
+
enum psppire_selector_dir direction;
+
GtkWidget *source;
GtkWidget *dest;
GType psppire_selector_get_type (void);
GtkWidget* psppire_selector_new (void);
-void psppire_selector_set_subjects (PsppireSelector *,
- GtkWidget *,
- GtkWidget *,
- SelectItemsFunc *,
- FilterItemsFunc *,
- gpointer );
-
-void psppire_selector_set_allow (PsppireSelector *, AllowSelectionFunc *);
+
+
+/* Set FILTER_FUNC for this selector */
+void psppire_selector_set_filter_func (PsppireSelector *selector,
+ FilterItemsFunc *filter_func);
+
+/* Set SELECT_FUNC for this selector */
+void psppire_selector_set_select_func (PsppireSelector *selector,
+ SelectItemsFunc *select_func,
+ gpointer user_data);
+
+
+void psppire_selector_set_allow (PsppireSelector *, AllowSelectionFunc *);
GType psppire_selector_orientation_get_type (void) G_GNUC_CONST;
<property name="can_focus">False</property>
<property name="receives_default">False</property>
<property name="border_width">5</property>
+ <property name="source_widget">weight-cases-treeview</property>
+ <property name="dest_widget">weight-cases-entry</property>
</object>
<packing>
<property name="position">0</property>
<property name="can_focus">False</property>
<property name="receives_default">False</property>
<property name="border_width">5</property>
+ <property name="source_widget">source-treeview</property>
+ <property name="dest_widget">new-name-entry</property>
</object>
<packing>
<property name="top_attach">1</property>
<property name="can_focus">False</property>
<property name="receives_default">False</property>
<property name="border_width">5</property>
+ <property name="source_widget">source-treeview</property>
+ <property name="dest_widget">variables-treeview</property>
</object>
<packing>
<property name="x_options"></property>
<property name="receives_default">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="source_widget">split-file-dict-treeview</property>
+ <property name="dest_widget">split-file-grouping-vars</property>
</object>
</child>
</object>
<property name="receives_default">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="source_widget">compute-treeview1</property>
+ <property name="dest_widget">compute-textview1</property>
</object>
<packing>
<property name="expand">False</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="orientation">source below destination</property>
+ <property name="source_widget">compute-treeview2</property>
+ <property name="dest_widget">compute-textview1</property>
</object>
<packing>
<property name="fill">False</property>
<property name="receives_default">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="source_widget">select-cases-treeview</property>
+ <property name="dest_widget">filter-variable-entry</property>
</object>
<packing>
<property name="expand">False</property>
gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), GTK_WINDOW (de));
- g_object_set (vars, "dictionary", rd.dict, NULL);
+ g_object_set (vars, "model", rd.dict, NULL);
set_dest_model (GTK_TREE_VIEW (rd.rank_vars), rd.dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector1),
- vars,
- rd.rank_vars,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector1),
insert_source_row_into_tree_view,
- NULL,
NULL);
set_dest_model (GTK_TREE_VIEW (rd.group_vars), rd.dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector2),
- vars,
- rd.group_vars,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector2),
insert_source_row_into_tree_view,
- NULL,
NULL);
<property name="receives_default">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="source_widget">dict-treeview</property>
+ <property name="dest_widget">group-vars-treeview</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="receives_default">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="source_widget">dict-treeview</property>
+ <property name="dest_widget">variables-treeview</property>
</object>
<packing>
<property name="left_attach">1</property>
gtk_window_set_transient_for (GTK_WINDOW (rd.dialog), GTK_WINDOW (de));
- g_object_set (rd.dict_treeview, "dictionary", rd.dict, NULL);
+ g_object_set (rd.dict_treeview, "model", rd.dict, NULL);
if ( ! rd.different )
{
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
- rd.dict_treeview,
- rd.variable_treeview,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector),
insert_source_row_into_tree_view,
- NULL,
NULL);
psppire_selector_set_allow (PSPPIRE_SELECTOR (selector), homogeneous_types);
<property name="receives_default">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="source_widget">treeview1</property>
+ <property name="dest_widget">treeview2</property>
</object>
<packing>
<property name="left_attach">1</property>
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
g_object_get (vs, "dictionary", &rd.dict, NULL);
- g_object_set (source, "dictionary", rd.dict, NULL);
+ g_object_set (source, "model", rd.dict, NULL);
set_dest_model (GTK_TREE_VIEW (dest_dep), rd.dict);
set_dest_model (GTK_TREE_VIEW (dest_indep), rd.dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (dep_selector),
- source,
- dest_dep,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (dep_selector),
insert_source_row_into_tree_view,
- NULL,
NULL);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (indep_selector),
- source,
- dest_indep,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (indep_selector),
insert_source_row_into_tree_view,
- NULL,
NULL);
rd.dep_vars = GTK_TREE_VIEW (dest_dep);
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="no_show_all">True</property>
<property name="border_width">5</property>
+ <property name="source_widget">dict-view</property>
+ <property name="dest_widget">dep-view</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="no_show_all">True</property>
<property name="border_width">5</property>
+ <property name="source_widget">dict-view</property>
+ <property name="dest_widget">indep-view</property>
</object>
<packing>
<property name="left_attach">1</property>
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
g_object_get (vs, "dictionary", &rd.dict, NULL);
- g_object_set (source, "dictionary", rd.dict, NULL);
+ g_object_set (source, "model", rd.dict, NULL);
set_dest_model (GTK_TREE_VIEW (rd.variables), rd.dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
- source,
- rd.variables,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector),
insert_source_row_into_tree_view,
- NULL,
NULL);
{
<property name="receives_default">True</property>
<property name="no_show_all">True</property>
<property name="border_width">5</property>
+ <property name="source_widget">dict-view</property>
+ <property name="dest_widget">treeview2</property>
</object>
</child>
</object>
{
GtkWidget *source = get_widget_assert (scd.xml, "select-cases-treeview");
- g_object_set (source, "dictionary",
+ g_object_set (source, "model",
scd.data_store->dict,
"selection-mode",
GTK_SELECTION_SINGLE, NULL);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
- source,
- entry,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector),
insert_source_row_into_entry,
- is_currently_in_entry,
NULL);
+
+ psppire_selector_set_filter_func (PSPPIRE_SELECTOR (selector),
+ is_currently_in_entry);
+
+
}
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
g_object_get (vs, "dictionary", &scd.dict, NULL);
- g_object_set (source, "dictionary", scd.dict, NULL);
+ g_object_set (source, "model", scd.dict, NULL);
set_dest_model (GTK_TREE_VIEW (dest), scd.dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
- source,
- dest,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector),
insert_source_row_into_tree_view,
- NULL,
NULL);
g_signal_connect (dialog, "refresh", G_CALLBACK (refresh), dest);
<property name="receives_default">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="source_widget">sort-cases-treeview1</property>
+ <property name="dest_widget">sort-cases-treeview2</property>
</object>
</child>
</object>
sfd.selector = PSPPIRE_SELECTOR (
get_widget_assert (sfd.xml, "split-file-selector"));
- g_object_set (source, "dictionary", sfd.dict, NULL);
+ g_object_set (source, "model", sfd.dict, NULL);
g_signal_connect (on_off, "toggled", G_CALLBACK(on_off_toggled), sfd.xml);
set_dest_model (GTK_TREE_VIEW (dest), sfd.dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
- source,
- dest,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector),
insert_source_row_into_tree_view,
- NULL,
NULL);
g_signal_connect (dialog, "refresh", G_CALLBACK (refresh), &sfd);
gtk_window_set_transient_for (GTK_WINDOW (tt_d.dialog), GTK_WINDOW (de));
- g_object_set (dict_view, "dictionary", tt_d.dict, NULL);
+ g_object_set (dict_view, "model", tt_d.dict, NULL);
set_dest_model (GTK_TREE_VIEW (test_variables_treeview), tt_d.dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector1),
- dict_view, test_variables_treeview,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector1),
insert_source_row_into_tree_view,
- NULL,
NULL);
psppire_selector_set_allow (PSPPIRE_SELECTOR (selector1),
numeric_only);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector2),
- dict_view, tt_d.groups_entry,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector2),
insert_source_row_into_entry,
- is_currently_in_entry,
NULL);
+ psppire_selector_set_filter_func (PSPPIRE_SELECTOR (selector2),
+ is_currently_in_entry);
+
g_signal_connect_swapped (tt_d.define_groups_button, "clicked",
G_CALLBACK (run_define_groups), &tt_d);
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
- g_object_set (dict_view, "dictionary",
+ g_object_set (dict_view, "model",
tt_d.dict,
"predicate",
var_is_numeric, NULL);
set_dest_model (GTK_TREE_VIEW (tt_d.vars_treeview), tt_d.dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
- dict_view, tt_d.vars_treeview,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector),
insert_source_row_into_tree_view,
- NULL,
NULL);
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
- g_object_set (dict_view, "dictionary", tt_d.dict,
+ g_object_set (dict_view, "model", tt_d.dict,
"predicate",
var_is_numeric, NULL);
}
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
- dict_view,
- tt_d.pairs_treeview,
- select_as_pair_member,
- NULL,
- &tt_d);
-
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector),
+ select_as_pair_member,
+ &tt_d);
g_signal_connect_swapped (dialog, "refresh",
G_CALLBACK (refresh), &tt_d);
<property name="receives_default">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="source_widget">indep-samples-t-test-treeview1</property>
+ <property name="dest_widget">indep-samples-t-test-treeview2</property>
</object>
<packing>
<property name="x_options"></property>
<property name="receives_default">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="source_widget">indep-samples-t-test-treeview1</property>
+ <property name="dest_widget">indep-samples-t-test-entry</property>
</object>
<packing>
<property name="top_attach">1</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="no_show_all">True</property>
<property name="border_width">5</property>
+ <property name="source_widget">one-sample-t-test-treeview2</property>
+ <property name="dest_widget">one-sample-t-test-treeview1</property>
</object>
</child>
</object>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="no_show_all">True</property>
<property name="border_width">5</property>
+ <property name="source_widget">paired-samples-t-test-treeview1</property>
+ <property name="dest_widget">paired-samples-t-test-treeview2</property>
</object>
</child>
</object>
GtkWidget *dest = get_widget_assert (xml, "variables-treeview");
GtkWidget *selector1 = get_widget_assert (xml, "psppire-selector2");
GtkWidget *selector2 = get_widget_assert (xml, "psppire-selector3");
- GtkWidget *new_name_entry = get_widget_assert (xml, "new-name-entry");
g_object_get (de->data_editor, "var-store", &vs, NULL);
g_object_get (vs, "dictionary", &dict, NULL);
- g_object_set (source, "dictionary", dict, NULL);
+ g_object_set (source, "model", dict, NULL);
set_dest_model (GTK_TREE_VIEW (dest), dict);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector1),
- source, dest,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector1),
insert_source_row_into_tree_view,
- NULL,
NULL);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector2),
- source, new_name_entry,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector2),
insert_source_row_into_entry,
- is_currently_in_entry,
NULL);
+ psppire_selector_set_filter_func (PSPPIRE_SELECTOR (selector2),
+ is_currently_in_entry);
+
g_signal_connect (dialog, "refresh", G_CALLBACK (refresh), xml);
if ( var == NULL)
return;
- g_object_get (treeview, "dictionary", &dict,
+ g_object_get (treeview, "model", &dict,
NULL);
gstring = g_string_sized_new (200);
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de));
g_object_get (vs, "dictionary", &dict, NULL);
- g_object_set (treeview, "dictionary", dict,
+ g_object_set (treeview, "model", dict,
"selection-mode", GTK_SELECTION_SINGLE,
NULL);
radiobutton1);
- g_object_set (source, "dictionary", wcd.dict,
+ g_object_set (source, "model", wcd.dict,
"selection-mode", GTK_SELECTION_SINGLE,
"predicate", var_is_numeric,
NULL);
- psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector),
- source,
- entry,
+ psppire_selector_set_select_func (PSPPIRE_SELECTOR (selector),
insert_source_row_into_entry,
- is_currently_in_entry,
- NULL
- );
+ NULL);
+ psppire_selector_set_filter_func (PSPPIRE_SELECTOR (selector),
+ is_currently_in_entry);
wcd.entry = GTK_ENTRY (entry);