static GtkWidget * csv_getwidget (EImport *ei, EImportTarget *target, EImportImporter *im) { EShell *shell; GtkWidget *vbox, *selector, *scrolled_window; ESourceRegistry *registry; ESource *primary; const gchar *extension_name; vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); shell = e_shell_get_default (); registry = e_shell_get_registry (shell); extension_name = E_SOURCE_EXTENSION_ADDRESS_BOOK; scrolled_window = gtk_scrolled_window_new (NULL, NULL); g_object_set (G_OBJECT (scrolled_window), "hscrollbar-policy", GTK_POLICY_AUTOMATIC, "vscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL); gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 6); selector = e_source_selector_new (registry, extension_name); e_source_selector_set_show_toggles ( E_SOURCE_SELECTOR (selector), FALSE); gtk_container_add (GTK_CONTAINER (scrolled_window), selector); primary = g_datalist_get_data (&target->data, "csv-source"); if (primary == NULL) { GList *list; list = e_source_registry_list_sources (registry, extension_name); if (list != NULL) { primary = g_object_ref (list->data); g_datalist_set_data_full ( &target->data, "csv-source", primary, (GDestroyNotify) g_object_unref); } g_list_free_full (list, (GDestroyNotify) g_object_unref); } e_source_selector_set_primary_selection ( E_SOURCE_SELECTOR (selector), primary); g_signal_connect ( selector, "primary_selection_changed", G_CALLBACK (primary_selection_changed_cb), target); gtk_widget_show_all (vbox); return vbox; }
static GtkWidget * ivcal_getwidget (EImport *ei, EImportTarget *target, EImportImporter *im) { EShell *shell; ESourceRegistry *registry; GtkWidget *vbox, *hbox, *first = NULL; GSList *group = NULL; gint i; GtkWidget *nb; shell = e_shell_get_default (); registry = e_shell_get_registry (shell); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 6); nb = gtk_notebook_new (); gtk_notebook_set_show_tabs (GTK_NOTEBOOK (nb), FALSE); gtk_notebook_set_show_border (GTK_NOTEBOOK (nb), FALSE); gtk_box_pack_start (GTK_BOX (vbox), nb, TRUE, TRUE, 6); /* Type of icalendar items */ for (i = 0; import_type_map[i] != -1; i++) { GtkWidget *selector, *rb, *create_button, *vbox; GtkWidget *scrolled; struct _selector_data *sd; const gchar *extension_name; const gchar *create_label; switch (import_type_map[i]) { case E_CAL_CLIENT_SOURCE_TYPE_EVENTS: extension_name = E_SOURCE_EXTENSION_CALENDAR; create_label = _("Cre_ate new calendar"); break; case E_CAL_CLIENT_SOURCE_TYPE_TASKS: extension_name = E_SOURCE_EXTENSION_TASK_LIST; create_label = _("Cre_ate new task list"); break; default: g_warn_if_reached (); continue; } selector = e_source_selector_new (registry, extension_name); e_source_selector_set_show_toggles (E_SOURCE_SELECTOR (selector), FALSE); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 4); gtk_notebook_append_page (GTK_NOTEBOOK (nb), vbox, NULL); scrolled = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy ((GtkScrolledWindow *) scrolled, GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); gtk_container_add ((GtkContainer *) scrolled, selector); gtk_box_pack_start (GTK_BOX (vbox), scrolled, TRUE, TRUE, 0); create_button = gtk_button_new_with_mnemonic (create_label); g_object_set_data (G_OBJECT (create_button), "source-type", GINT_TO_POINTER (import_type_map[i])); g_object_set (G_OBJECT (create_button), "hexpand", FALSE, "halign", GTK_ALIGN_END, "vexpand", FALSE, "valign", GTK_ALIGN_START, NULL); gtk_box_pack_start (GTK_BOX (vbox), create_button, FALSE, FALSE, 0); g_signal_connect (create_button, "clicked", G_CALLBACK (create_calendar_clicked_cb), selector); g_signal_connect ( selector, "primary_selection_changed", G_CALLBACK (primary_selection_changed_cb), target); rb = gtk_radio_button_new_with_label (group, _(import_type_strings[i])); gtk_box_pack_start (GTK_BOX (hbox), rb, FALSE, FALSE, 6); sd = g_malloc0 (sizeof (*sd)); sd->target = target; sd->selector = selector; sd->notebook = nb; sd->page = i; g_object_set_data_full ((GObject *) rb, "selector-data", sd, g_free); g_signal_connect ( rb, "toggled", G_CALLBACK (button_toggled_cb), sd); if (!group) group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (rb)); if (first == NULL) { /* Set primary-source */ primary_selection_changed_cb (E_SOURCE_SELECTOR (selector), target); g_datalist_set_data (&target->data, "primary-type", GINT_TO_POINTER (import_type_map[i])); first = rb; } } if (first) gtk_toggle_button_set_active ((GtkToggleButton *) first, TRUE); gtk_widget_show_all (vbox); return vbox; }