static GObject * e_source_combo_box_constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties) { GtkCellRenderer *renderer; GtkListStore *store; GObject *object; /* Chain up to parent's "constructor" method. */ object = G_OBJECT_CLASS (parent_class)->constructor ( type, n_construct_properties, construct_properties); store = gtk_list_store_new ( NUM_COLUMNS, GDK_TYPE_COLOR, /* COLUMN_COLOR */ G_TYPE_STRING, /* COLUMN_NAME */ G_TYPE_BOOLEAN, /* COLUMN_SENSITIVE */ G_TYPE_OBJECT, /* COLUMN_SOURCE */ G_TYPE_BOOLEAN); /* COLUMN_VISIBLE */ gtk_combo_box_set_model ( GTK_COMBO_BOX (object), GTK_TREE_MODEL (store)); renderer = e_cell_renderer_color_new (); gtk_cell_layout_pack_start ( GTK_CELL_LAYOUT (object), renderer, FALSE); gtk_cell_layout_set_attributes ( GTK_CELL_LAYOUT (object), renderer, "color", COLUMN_COLOR, "sensitive", COLUMN_SENSITIVE, "visible", COLUMN_VISIBLE, NULL); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start ( GTK_CELL_LAYOUT (object), renderer, TRUE); gtk_cell_layout_set_attributes ( GTK_CELL_LAYOUT (object), renderer, "text", COLUMN_NAME, "sensitive", COLUMN_SENSITIVE, NULL); return object; }
/** * e_webdav_discover_content_new: * @credentials_prompter: an #ECredentialsPrompter to use to ask for credentials * @source: (allow-none): optional #ESource to use for authentication, or %NULL * @base_url: (allow-none): optional base URL to use for discovery, or %NULL * @supports_filter: a bit-or of #EWebDAVDiscoverSupports, a filter to limit what source * types will be shown in the dialog content; use %E_WEBDAV_DISCOVER_SUPPORTS_NONE * to show all * * Creates a new WebDAV discovery content, which is a #GtkGrid containing necessary * widgets to provide a UI interface for a user to search and select for available * WebDAV (CalDAV or CardDAV) sources provided by the given server. Do not pack * anything into this content, its content can be changed dynamically. * * Returns: (transfer full): a new WebDAV discovery content widget. * * Since: 3.18 **/ GtkWidget * e_webdav_discover_content_new (ECredentialsPrompter *credentials_prompter, ESource *source, const gchar *base_url, guint supports_filter) { EWebDAVDiscoverContentData *data; GtkWidget *content, *scrolled_window, *tree_view; GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkListStore *list_store; GtkGrid *grid; g_return_val_if_fail (E_IS_CREDENTIALS_PROMPTER (credentials_prompter), NULL); g_return_val_if_fail (base_url != NULL, NULL); data = g_new0 (EWebDAVDiscoverContentData, 1); data->credentials_prompter = g_object_ref (credentials_prompter); data->source = source ? g_object_ref (source) : NULL; data->base_url = g_strdup (base_url); data->supports_filter = supports_filter; content = gtk_grid_new (); grid = GTK_GRID (content); gtk_container_set_border_width (GTK_CONTAINER (grid), 4); gtk_grid_set_row_spacing (grid, 4); gtk_grid_set_column_spacing (grid, 4); g_object_set_data_full (G_OBJECT (content), WEBDAV_DISCOVER_CONTENT_DATA_KEY, data, e_webdav_discover_content_data_free); list_store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, /* COL_HREF_STRING */ G_TYPE_UINT, /* COL_SUPPORTS_UINT */ G_TYPE_STRING, /* COL_DISPLAY_NAME_STRING */ G_TYPE_STRING, /* COL_COLOR_STRING */ G_TYPE_STRING, /* COL_DESCRIPTION_STRING */ G_TYPE_STRING, /* COL_SUPPORTS_STRING */ GDK_TYPE_RGBA, /* COL_COLOR_GDKRGBA */ G_TYPE_BOOLEAN); /* COL_SHOW_COLOR_BOOLEAN */ tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store)); g_object_unref (list_store); g_object_set (G_OBJECT (tree_view), "hexpand", TRUE, "vexpand", TRUE, "halign", GTK_ALIGN_FILL, "valign", GTK_ALIGN_FILL, NULL); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view); gtk_grid_attach (grid, scrolled_window, 0, 0, 1, 1); data->sources_tree_view = GTK_TREE_VIEW (tree_view); renderer = e_cell_renderer_color_new (); g_object_set (G_OBJECT (renderer), "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE, NULL); column = gtk_tree_view_column_new_with_attributes (_("Name"), renderer, "rgba", COL_COLOR_GDKRGBA, "visible", COL_SHOW_COLOR_BOOLEAN, NULL); gtk_tree_view_append_column (data->sources_tree_view, column); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (column, renderer, FALSE); gtk_tree_view_column_add_attribute (column, renderer, "markup", COL_DESCRIPTION_STRING); g_object_set (G_OBJECT (renderer), "max-width-chars", 60, "wrap-mode", PANGO_WRAP_WORD_CHAR, "wrap-width", 640, NULL); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (_("Supports"), renderer, "text", COL_SUPPORTS_STRING, NULL); gtk_tree_view_append_column (data->sources_tree_view, column); if (!supports_filter || (supports_filter & (E_WEBDAV_DISCOVER_SUPPORTS_EVENTS | E_WEBDAV_DISCOVER_SUPPORTS_MEMOS | E_WEBDAV_DISCOVER_SUPPORTS_TASKS)) != 0) { GtkWidget *widget, *box; widget = gtk_combo_box_text_new (); data->email_addresses_combo = GTK_COMBO_BOX (widget); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); widget = gtk_label_new_with_mnemonic (_("_User mail:")); gtk_label_set_mnemonic_widget (GTK_LABEL (widget), GTK_WIDGET (data->email_addresses_combo)); gtk_container_add (GTK_CONTAINER (box), widget); gtk_container_add (GTK_CONTAINER (box), GTK_WIDGET (data->email_addresses_combo)); g_object_set (G_OBJECT (widget), "hexpand", FALSE, "vexpand", FALSE, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, NULL); g_object_set (G_OBJECT (data->email_addresses_combo), "hexpand", TRUE, "vexpand", FALSE, "halign", GTK_ALIGN_FILL, "valign", GTK_ALIGN_START, NULL); g_object_set (G_OBJECT (box), "hexpand", TRUE, "vexpand", FALSE, "halign", GTK_ALIGN_FILL, "valign", GTK_ALIGN_START, NULL); gtk_grid_attach (grid, box, 0, 1, 1, 1); } gtk_widget_show_all (content); return content; }