#include "language/data-io/data-parser.h"
#include "language/lexer/lexer.h"
#include "libpspp/assertion.h"
+#include "libpspp/i18n.h"
#include "libpspp/message.h"
#include "ui/gui/checkbox-treeview.h"
#include "ui/gui/descriptives-dialog.h"
#include "ui/gui/psppire-dialog.h"
#include "ui/gui/psppire-var-sheet.h"
#include "ui/gui/psppire-var-store.h"
-#include "ui/gui/widget-io.h"
+#include "ui/gui/psppire-scanf.h"
#include "ui/syntax-gen.h"
#include "gl/error.h"
gint column_idx);
static GtkTreeView *create_data_tree_view (bool input, GtkContainer *parent,
struct import_assistant *);
-static void escape_underscores (const char *in, char *out);
+static char *escape_underscores (const char *in);
static void push_watch_cursor (struct import_assistant *);
static void pop_watch_cursor (struct import_assistant *);
/* Pops up the Text Data Import assistant. */
void
-text_data_import_assistant (GtkWindow *parent_window)
+text_data_import_assistant (PsppireDataWindow *dw)
{
+ GtkWindow *parent_window = GTK_WINDOW (dw);
struct import_assistant *ia;
ia = xzalloc (sizeof *ia);
switch (ia->asst.response)
{
case GTK_RESPONSE_APPLY:
- free (execute_syntax_string (generate_syntax (ia)));
+ free (execute_syntax_string (dw, generate_syntax (ia)));
break;
case PSPPIRE_RESPONSE_PASTE:
free (paste_syntax_to_window (generate_syntax (ia)));
ds_put_cstr (s, "\n ");
syntax_gen_value (s, &vl->value, width, format);
ds_put_byte (s, ' ');
- syntax_gen_string (s, ss_cstr (val_lab_get_label (vl)));
+ syntax_gen_string (s, ss_cstr (val_lab_get_escaped_label (vl)));
}
free (labels);
ds_put_cstr (s, ".\n");
destroy_file (ia);
return false;
}
- ds_chomp (line, '\n');
- ds_chomp (line, '\r');
+ ds_chomp_byte (line, '\n');
+ ds_chomp_byte (line, '\r');
}
if (file->line_cnt == 0)
static char *
choose_file (GtkWindow *parent_window)
{
- GtkWidget *dialog;
char *file_name;
- dialog = gtk_file_chooser_dialog_new (_("Import Delimited Text Data"),
+ GtkWidget *dialog = gtk_file_chooser_dialog_new (_("Import Delimited Text Data"),
parent_window,
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
+ g_object_set (dialog, "local-only", FALSE, NULL);
+
switch (gtk_dialog_run (GTK_DIALOG (dialog)))
{
case GTK_RESPONSE_ACCEPT:
gtk_window_set_title (GTK_WINDOW (a->assistant),
_("Importing Delimited Text Data"));
gtk_window_set_transient_for (GTK_WINDOW (a->assistant), parent_window);
- gtk_window_set_icon_name (GTK_WINDOW (a->assistant), "psppicon");
+ gtk_window_set_icon_name (GTK_WINDOW (a->assistant), "pspp");
a->prop_renderer = gtk_cell_renderer_text_new ();
g_object_ref_sink (a->prop_renderer);
p->n_cases_spin = gtk_spin_button_new_with_range (0, INT_MAX, 100);
- hbox_n_cases = widget_scanf (_("Only the first %4d cases"), &p->n_cases_spin);
+ hbox_n_cases = psppire_scanf_new (_("Only the first %4d cases"), &p->n_cases_spin);
table = get_widget_assert (builder, "button-table");
p->percent_spin = gtk_spin_button_new_with_range (0, 100, 10);
- hbox_percent = widget_scanf (_("Only the first %3d %% of file (approximately)"), &p->percent_spin);
+ hbox_percent = psppire_scanf_new (_("Only the first %3d %% of file (approximately)"), &p->percent_spin);
gtk_table_attach_defaults (GTK_TABLE (table), hbox_percent,
1, 2,
size_t max_line_length;
gint content_width, header_width;
size_t i;
- gchar *title = _("Text");
+ const gchar *title = _("Text");
make_tree_view (ia, 0, &tree_view);
struct column *col;
size_t name_row;
- dict = dict_create ();
+ dict = dict_create (get_default_encoding ());
name_row = f->variable_names && f->skip_lines ? f->skip_lines : 0;
for (col = s->columns; col < &s->columns[s->column_cnt]; col++)
{
push_watch_cursor (ia);
- dict = dict_create ();
+ dict = dict_create (get_default_encoding ());
fg = fmt_guesser_create ();
for (column_idx = 0; column_idx < s->column_cnt; column_idx++)
{
{
char *error;
- error = data_in (field, LEGACY_NATIVE, in->type, &val,
- var_get_width (var),
+ error = data_in (field, C_ENCODING, in->type, &val, var_get_width (var),
dict_get_encoding (ia->formats.dict));
if (error != NULL)
{
to make the data related to the tool tips part of a GObject
that only gets destroyed when all references are released,
but this solution appears to be effective too. */
- if (!GTK_WIDGET_MAPPED (widget))
+ if (!gtk_widget_get_mapped (widget))
return FALSE;
gtk_tree_view_convert_widget_to_bin_window_coords (tree_view,
{
struct variable *var = NULL;
struct column *column = NULL;
- char name[(VAR_NAME_LEN * 2) + 1];
size_t char_cnt;
gint content_width, header_width;
GtkTreeViewColumn *tree_column;
+ char *name;
if (input)
column = &ia->separators.columns[dict_idx];
else
var = dict_get_var (ia->formats.dict, dict_idx);
- escape_underscores (input ? column->name : var_get_name (var), name);
+ name = escape_underscores (input ? column->name : var_get_name (var));
char_cnt = input ? column->width : var_get_print_format (var)->w;
content_width = get_monospace_width (tree_view, ia->asst.fixed_renderer,
char_cnt);
gtk_tree_view_column_set_fixed_width (tree_column, MAX (content_width,
header_width));
+ free (name);
+
return tree_column;
}
return tree_view;
}
-static void
-escape_underscores (const char *in, char *out)
+static char *
+escape_underscores (const char *in)
{
+ char *out = xmalloc (2 * strlen (in) + 1);
+ char *p;
+
+ p = out;
for (; *in != '\0'; in++)
{
if (*in == '_')
- *out++ = '_';
- *out++ = *in;
+ *p++ = '_';
+ *p++ = *in;
}
- *out = '\0';
+ *p = '\0';
+
+ return out;
}
\f
/* TextImportModel, a GtkTreeModel implementation used by some