struct session *the_session;
struct ll_list all_data_windows = LL_INITIALIZER (all_data_windows);
-static void psppire_data_window_class_init (PsppireDataWindowClass *class);
-static void psppire_data_window_init (PsppireDataWindow *data_editor);
-
-
static void psppire_data_window_iface_init (PsppireWindowIface *iface);
static void psppire_data_window_dispose (GObject *object);
GValue *value,
GParamSpec *pspec);
-GType
-psppire_data_window_get_type (void)
-{
- static GType psppire_data_window_type = 0;
-
- if (!psppire_data_window_type)
- {
- static const GTypeInfo psppire_data_window_info =
- {
- sizeof (PsppireDataWindowClass),
- NULL,
- NULL,
- (GClassInitFunc)psppire_data_window_class_init,
- (GClassFinalizeFunc) NULL,
- NULL,
- sizeof (PsppireDataWindow),
- 0,
- (GInstanceInitFunc) psppire_data_window_init,
- };
-
- static const GInterfaceInfo window_interface_info =
- {
- (GInterfaceInitFunc) psppire_data_window_iface_init,
- NULL,
- NULL
- };
-
- psppire_data_window_type =
- g_type_register_static (PSPPIRE_TYPE_WINDOW, "PsppireDataWindow",
- &psppire_data_window_info, 0);
-
- g_type_add_interface_static (psppire_data_window_type,
- PSPPIRE_TYPE_WINDOW_MODEL,
- &window_interface_info);
- }
-
- return psppire_data_window_type;
-}
+G_DEFINE_TYPE_WITH_CODE (PsppireDataWindow, psppire_data_window, PSPPIRE_TYPE_WINDOW,
+ G_IMPLEMENT_INTERFACE (PSPPIRE_TYPE_WINDOW_MODEL,
+ psppire_data_window_iface_init))
static GObjectClass *parent_class ;
{
PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
- size_t n_split_vars = dict_get_split_cnt (dict->dict);
+ size_t n_split_vars = dict_get_n_splits (dict->dict);
GtkWidget *split_status_area =
get_widget_assert (de->builder, "split-file-status-area");
static void
enable_save (PsppireDataWindow *dw)
{
- gboolean enable = psppire_dict_get_var_cnt (dw->dict) > 0;
+ gboolean enable = psppire_dict_get_n_vars (dw->dict) > 0;
GAction *save_as = g_action_map_lookup_action (G_ACTION_MAP (dw), "save-as");
GAction *save = g_action_map_lookup_action (G_ACTION_MAP (dw), "save");
SswSheet *sheet = SSW_SHEET (dw->data_editor->data_sheet);
SswRange sel = *sheet->selection;
-#if (SSW_SHEET_API_VERSION >= 1)
- if ((ssw_sheet_get_api_version() >= 1) && ssw_sheet_try_cut (sheet))
+ if (ssw_sheet_try_cut (sheet))
return;
-#endif
+ if (sel.start_x > sel.end_x)
+ {
+ gint tmp = sel.start_x;
+ sel.start_x = sel.end_x;
+ sel.end_x = tmp;
+ }
+ if (sel.start_y > sel.end_y)
+ {
+ gint tmp = sel.start_y;
+ sel.start_y = sel.end_y;
+ sel.end_y = tmp;
+ }
+
GtkClipboard *clip =
gtk_clipboard_get_for_display (gtk_widget_get_display (GTK_WIDGET (dw)),
GDK_SELECTION_CLIPBOARD);
for (x = sel.start_x ; x <= sel.end_x; ++x)
{
const struct variable * var = psppire_dict_get_variable (dict, x);
+ gboolean use_value_label = FALSE;
+ g_object_get (dw->data_editor, "value-labels", &use_value_label, NULL);
gchar *s = psppire_data_store_get_string (dw->data_editor->data_store,
- y, var, FALSE);
+ y, var, use_value_label);
g_string_append (str, s);
- g_string_append (str, "\t");
+ if (x < sel.end_x)
+ g_string_append (str, "\t");
g_free (s);
}
- g_string_append (str, "\n");
+ if (y < sel.end_y)
+ g_string_append (str, "\n");
}
gtk_clipboard_set_text (clip, str->str, str->len);
g_string_free (str, TRUE);
- /* Now fill the selected area with SYSMIS */
- union value sm ;
- sm.f = SYSMIS;
+ /* Now fill the selected area with SYSMIS or blanks */
for (x = sel.start_x ; x <= sel.end_x; ++x)
{
- const struct variable * var = psppire_dict_get_variable (dict, x);
+ const struct variable *var = psppire_dict_get_variable (dict, x);
+ int width = var_get_width (var);
+ union value sm ;
+ value_init (&sm, width);
+ if (var_is_numeric (var))
+ sm.f = SYSMIS;
+ else
+ memset (sm.s, 0, width);
for (y = sel.start_y ; y <= sel.end_y; ++y)
{
psppire_data_store_set_value (dw->data_editor->data_store,
y,
var, &sm);
}
+ value_destroy (&sm, width);
}
-
}
}
GtkToolItem *ti = gtk_tool_button_new (NULL, "Open");
g_signal_connect_swapped (ti, "clicked", G_CALLBACK (psppire_window_open), de);
gtk_toolbar_insert (GTK_TOOLBAR (hb), ti, idx++);
- gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "psppire-file-open-data");
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "pspp-file-open-data");
}
{
GtkToolItem *ti = gtk_tool_button_new (NULL, "Save");
g_signal_connect_swapped (ti, "clicked", G_CALLBACK (psppire_window_save), de);
gtk_toolbar_insert (GTK_TOOLBAR (hb), ti, idx++);
- gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "psppire-file-save-data");
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "pspp-file-save-data");
}
gtk_toolbar_insert (GTK_TOOLBAR (hb), gtk_separator_tool_item_new (), idx++);
G_CALLBACK (psppire_dialog_action_activate_null), a);
gtk_toolbar_insert (GTK_TOOLBAR (hb), de->ti_jump_to_variable, idx++);
- gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_jump_to_variable), "psppire-edit-go-to-variable");
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_jump_to_variable), "pspp-edit-go-to-variable");
gtk_widget_set_tooltip_text (GTK_WIDGET (de->ti_jump_to_variable), _("Jump to variable"));
}
G_CALLBACK (g_action_activate_null), a);
gtk_toolbar_insert (GTK_TOOLBAR (hb), de->ti_jump_to_case, idx++);
- gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_jump_to_case), "psppire-edit-go-to-case");
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_jump_to_case), "pspp-edit-go-to-case");
gtk_widget_set_tooltip_text (GTK_WIDGET (de->ti_jump_to_case), _("Jump to a case in the data sheet"));
}
gtk_toolbar_insert (GTK_TOOLBAR (hb), de->ti_find, idx++);
- gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_find), "psppire-edit-find");
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_find), "pspp-edit-find");
gtk_widget_set_tooltip_text (GTK_WIDGET (de->ti_find), _("Search for values in the data"));
}
G_CALLBACK (g_action_activate_null), a);
gtk_toolbar_insert (GTK_TOOLBAR (hb), de->ti_insert_case, idx++);
- gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_insert_case), "psppire-edit-insert-case");
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_insert_case), "pspp-edit-insert-case");
gtk_widget_set_tooltip_text (GTK_WIDGET (de->ti_insert_case), _("Create a new case at the current position"));
}
G_CALLBACK (g_action_activate_null), a);
gtk_toolbar_insert (GTK_TOOLBAR (hb), de->ti_insert_variable, idx++);
- gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_insert_variable), "psppire-edit-insert-variable");
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_insert_variable), "pspp-edit-insert-variable");
gtk_widget_set_tooltip_text (GTK_WIDGET (de->ti_insert_variable), _("Create a new variable at the current position"));
}
g_signal_connect_swapped (ti, "clicked",
G_CALLBACK (psppire_dialog_action_activate_null), a);
gtk_toolbar_insert (GTK_TOOLBAR (hb), ti, idx++);
- gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "psppire-data-split-file");
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "pspp-data-split-file");
gtk_widget_set_tooltip_text (GTK_WIDGET (ti), _("Split the active dataset"));
}
g_signal_connect_swapped (ti, "clicked",
G_CALLBACK (psppire_dialog_action_activate_null), a);
gtk_toolbar_insert (GTK_TOOLBAR (hb), ti, idx++);
- gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "psppire-data-weight-cases");
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (ti), "pspp-data-weight-cases");
gtk_widget_set_tooltip_text (GTK_WIDGET (ti), _("Weight cases by variable"));
}
g_signal_connect (de->ti_value_labels_button, "toggled",
G_CALLBACK (on_labels_button_toggle), de);
gtk_toolbar_insert (GTK_TOOLBAR (hb), de->ti_value_labels_button, idx++);
- gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_value_labels_button), "psppire-view-value-labels");
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (de->ti_value_labels_button), "pspp-view-value-labels");
gtk_widget_set_tooltip_text (GTK_WIDGET (de->ti_value_labels_button), _("Show/hide value labels"));
}
}
bool
psppire_data_window_is_empty (PsppireDataWindow *dw)
{
- return psppire_dict_get_var_cnt (dw->dict) == 0;
+ return psppire_dict_get_n_vars (dw->dict) == 0;
}