X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fui%2Fgui%2Ftext-data-import-dialog.c;h=c674f17d1e1cd9279cdb472ae7e4d0ea6398d361;hb=1d68fabd9a00b483ac3dc2410ec4d6d4a24e256d;hp=6e6999e8255224507c8b76678fda477188d41e71;hpb=16034f6f464c026cc3864dce79e367bfc4c1382d;p=pspp-builds.git diff --git a/src/ui/gui/text-data-import-dialog.c b/src/ui/gui/text-data-import-dialog.c index 6e6999e8..c674f17d 100644 --- a/src/ui/gui/text-data-import-dialog.c +++ b/src/ui/gui/text-data-import-dialog.c @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2008 Free Software Foundation + Copyright (C) 2008, 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 @@ -45,7 +45,7 @@ #include #include #include -#include +#include "executor.h" #include "error.h" #include "xalloc.h" @@ -55,29 +55,6 @@ #define N_(msgid) msgid -#if !GTK_CHECK_VERSION (2, 10, 0) - -void -text_data_import_assistant (GObject *o, gpointer de_) -{ - struct data_editor *de = de_; - - GtkWidget *dialog = - gtk_message_dialog_new (GTK_WINDOW (de), - GTK_DIALOG_MODAL, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_CLOSE, - _("The text import assistant has not been " - "compiled into this build of PSPPIRE, because " - "GTK+ version 2.10.0 or later was not available.")); - - gtk_dialog_run (GTK_DIALOG (dialog)); - - gtk_widget_destroy (dialog); -} - -#else - /* TextImportModel, a GtkTreeModel used by the text data import dialog. */ enum @@ -256,10 +233,8 @@ static void pop_watch_cursor (struct import_assistant *); /* Pops up the Text Data Import assistant. */ void -text_data_import_assistant (GObject *o, gpointer de_) +text_data_import_assistant (GObject *o, GtkWindow *parent_window) { - struct data_editor *de = de_; - GtkWindow *parent_window = GTK_WINDOW (de); struct import_assistant *ia; ia = xzalloc (sizeof *ia); @@ -614,6 +589,7 @@ init_assistant (struct import_assistant *ia, GtkWindow *parent_window) 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"); a->prop_renderer = gtk_cell_renderer_text_new (); g_object_ref_sink (a->prop_renderer); @@ -673,6 +649,13 @@ static void on_prepare (GtkAssistant *assistant, GtkWidget *page, struct import_assistant *ia) { + + if (gtk_assistant_get_page_type (assistant, page) + == GTK_ASSISTANT_PAGE_CONFIRM) + gtk_widget_grab_focus (assistant->apply); + else + gtk_widget_grab_focus (assistant->forward); + if (page == ia->separators.page) prepare_separators_page (ia); else if (page == ia->formats.page) @@ -1018,6 +1001,31 @@ static const struct separator separators[] = }; #define SEPARATOR_CNT (sizeof separators / sizeof *separators) +static void +set_quote_list (GtkComboBoxEntry *cb) +{ + GtkListStore *list = gtk_list_store_new (1, G_TYPE_STRING); + GtkTreeIter iter; + gint i; + const gchar *seperator[3] = {"'\"", "\'", "\""}; + + for (i = 0; i < 3; i++) + { + const gchar *s = seperator[i]; + + /* Add a new row to the model */ + gtk_list_store_append (list, &iter); + gtk_list_store_set (list, &iter, + 0, s, + -1); + + } + + gtk_combo_box_set_model (GTK_COMBO_BOX (cb), GTK_TREE_MODEL (list)); + + gtk_combo_box_entry_set_text_column (cb, 0); +} + /* Initializes IA's separators substructure. */ static void init_separators_page (struct import_assistant *ia) @@ -1038,12 +1046,13 @@ init_separators_page (struct import_assistant *ia) p->escape_cb = get_widget_assert (builder, "escape"); set_separators (ia); + set_quote_list (GTK_COMBO_BOX_ENTRY (p->quote_combo)); p->fields_tree_view = GTK_TREE_VIEW (get_widget_assert (builder, "fields")); - g_signal_connect (GTK_COMBO_BOX (p->quote_combo), "changed", + g_signal_connect (p->quote_combo, "changed", G_CALLBACK (on_quote_combo_change), ia); g_signal_connect (p->quote_cb, "toggled", G_CALLBACK (on_quote_cb_toggle), ia); - g_signal_connect (GTK_ENTRY (p->custom_entry), "notify::text", + g_signal_connect (p->custom_entry, "notify::text", G_CALLBACK (on_separators_custom_entry_notify), ia); g_signal_connect (p->custom_cb, "toggled", G_CALLBACK (on_separators_custom_cb_toggle), ia); @@ -1370,6 +1379,7 @@ set_separators (struct import_assistant *ia) ds_destroy (&custom); any_quotes = !ds_is_empty (&s->quotes); + gtk_entry_set_text (s->quote_entry, any_quotes ? ds_cstr (&s->quotes) : "\""); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (s->quote_cb), @@ -2307,5 +2317,3 @@ pop_watch_cursor (struct import_assistant *ia) gdk_window_set_cursor (widget->window, NULL); } } - -#endif