/*create a GtkTreeView with one column that has a GtkCellRendererText*/ extern void create_list_view(void) { GtkTreeViewColumn *column = NULL; GtkCellRenderer *renderer = NULL; list = gtk_tree_view_new(); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE); gtk_widget_set_hexpand(list, TRUE); gtk_widget_set_vexpand(list, TRUE); gtk_tree_view_set_activate_on_single_click(GTK_TREE_VIEW(list), TRUE); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes( "Name", renderer, "text", 0, NULL );//"text" is an attribute (property) of a GtkCellRendererText gtk_tree_view_append_column( GTK_TREE_VIEW(list), column ); g_signal_connect(list, "row-activated", G_CALLBACK(contact_selection_cb), NULL); return; }
static GObject * gdict_database_chooser_constructor (GType type, guint n_params, GObjectConstructParam *params) { GObjectClass *parent_class; GObject *object; GdictDatabaseChooser *chooser; GdictDatabaseChooserPrivate *priv; GtkWidget *sw; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkWidget *hbox; parent_class = G_OBJECT_CLASS (gdict_database_chooser_parent_class); object = parent_class->constructor (type, n_params, params); chooser = GDICT_DATABASE_CHOOSER (object); priv = chooser->priv; sw = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_hexpand (sw, TRUE); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN); gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (sw), 200); gtk_scrolled_window_set_max_content_height (GTK_SCROLLED_WINDOW (sw), 400); gtk_box_pack_start (GTK_BOX (chooser), sw, TRUE, TRUE, 0); gtk_widget_show (sw); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("databases", renderer, "text", DB_COLUMN_DESCRIPTION, "weight", DB_COLUMN_CURRENT, NULL); priv->treeview = gtk_tree_view_new (); gtk_tree_view_set_model (GTK_TREE_VIEW (priv->treeview), GTK_TREE_MODEL (priv->store)); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (priv->treeview), FALSE); gtk_tree_view_set_activate_on_single_click (GTK_TREE_VIEW (priv->treeview), TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW (priv->treeview), column); g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview)), "changed", G_CALLBACK (selection_changed_cb), chooser); g_signal_connect (priv->treeview, "row-activated", G_CALLBACK (row_activated_cb), chooser); gtk_container_add (GTK_CONTAINER (sw), priv->treeview); gtk_widget_show (priv->treeview); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); priv->buttons_box = hbox; priv->refresh_button = gtk_button_new (); gtk_button_set_image (GTK_BUTTON (priv->refresh_button), gtk_image_new_from_icon_name ("view-refresh-symbolic", GTK_ICON_SIZE_SMALL_TOOLBAR)); g_signal_connect (priv->refresh_button, "clicked", G_CALLBACK (refresh_button_clicked_cb), chooser); gtk_box_pack_start (GTK_BOX (hbox), priv->refresh_button, FALSE, FALSE, 0); gtk_widget_show (priv->refresh_button); gtk_widget_set_tooltip_text (priv->refresh_button, _("Reload the list of available databases")); priv->clear_button = gtk_button_new (); gtk_button_set_image (GTK_BUTTON (priv->clear_button), gtk_image_new_from_icon_name ("edit-clear-symbolic", GTK_ICON_SIZE_SMALL_TOOLBAR)); g_signal_connect (priv->clear_button, "clicked", G_CALLBACK (clear_button_clicked_cb), chooser); gtk_box_pack_start (GTK_BOX (hbox), priv->clear_button, FALSE, FALSE, 0); gtk_widget_show (priv->clear_button); gtk_widget_set_tooltip_text (priv->clear_button, _("Clear the list of available databases")); gtk_box_pack_end (GTK_BOX (chooser), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); return object; }
static void budgie_track_list_init(BudgieTrackList *self) { GtkWidget *page; GtkWidget *info_box; GtkWidget *image; GtkWidget *label; GtkWidget *list; GtkWidget *scroll; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkStyleContext *style; page = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_set_border_width(GTK_CONTAINER(page), 0); /* Don't forget to add us to the stack. */ /* Info box stores image, count, etc. */ info_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start(GTK_BOX(page), info_box, FALSE, FALSE, 0); gtk_widget_set_valign(info_box, GTK_ALIGN_FILL); /* Image for album art */ image = gtk_image_new(); gtk_widget_set_halign(image, GTK_ALIGN_START); gtk_widget_set_valign(image, GTK_ALIGN_CENTER); g_object_set(image, "margin-top", 20, NULL); g_object_set(image, "margin-left", 20, NULL); g_object_set(image, "margin-right", 20, NULL); gtk_box_pack_start(GTK_BOX(info_box), image, FALSE, FALSE, 0); gtk_image_set_pixel_size(GTK_IMAGE(image), 256); self->image = image; /* Album, etc, */ label = gtk_label_new(""); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); gtk_label_set_max_width_chars(GTK_LABEL(label), 30); gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END); g_object_set(label, "margin-bottom", 10, "margin-left", 5, NULL); self->current_label = label; gtk_box_pack_start(GTK_BOX(info_box), label, FALSE, FALSE, 0); style = gtk_widget_get_style_context(label); /* Count label */ label = gtk_label_new(""); self->count_label = label; gtk_box_pack_start(GTK_BOX(info_box), label, FALSE, FALSE, 0); gtk_widget_set_valign(label, GTK_ALIGN_END); style = gtk_widget_get_style_context(label); gtk_style_context_add_class(style, "info-label"); /* Construct the track list box. */ self->store = gtk_list_store_new(BUDGIE_TRACK_LIST_DB_NUM_FIELDS, G_TYPE_STRING, /* Title */ G_TYPE_INT, /* Track no */ G_TYPE_STRING, /* Artist/author */ G_TYPE_STRING, /* Album */ G_TYPE_STRING, /* Band */ G_TYPE_STRING, /* Genre */ G_TYPE_STRING, /* File path */ G_TYPE_STRING, /* MIME type */ G_TYPE_POINTER, /* MediaInfo */ G_TYPE_STRING /* Now-playing */ ); /* Append tracks to a pretty listbox */ list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(self->store)); gtk_tree_view_set_activate_on_single_click(GTK_TREE_VIEW(list), TRUE); g_object_set(G_OBJECT(list), "headers-visible", FALSE, NULL); /* Add columns for the list. */ renderer = gtk_cell_renderer_pixbuf_new(); column = gtk_tree_view_column_new_with_attributes(" ", renderer, "icon-name", BUDGIE_TRACK_LIST_DB_PLAYING, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(list), column); /* Title */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("Title", renderer, "text", BUDGIE_TRACK_LIST_DB_TITLE, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(list), column); /* Artist */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("Artist", renderer, "text", BUDGIE_TRACK_LIST_DB_ARTIST, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(list), column); gtk_widget_set_halign(list, GTK_ALIGN_FILL); self->list = list; /* Scroller for the listbox */ scroll = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_kinetic_scrolling(GTK_SCROLLED_WINDOW(scroll), TRUE); gtk_container_add(GTK_CONTAINER(scroll), list); gtk_box_pack_start(GTK_BOX(page), scroll, TRUE, TRUE, 0); g_object_set(scroll, "margin-top", 20, NULL); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll), GTK_SHADOW_NONE); /* Add the page to this container. */ gtk_container_add(GTK_CONTAINER(self), page); }
static void gb_book_links_construct (GbBookLinks *self) { GbBookLinksPrivate *priv; GtkWidget *swindow; GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkTreeSelection *selection; priv = self->priv; swindow = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (swindow), GTK_SHADOW_IN); /* Create tree view */ priv->tree_view = gtk_tree_view_new (); gtk_tree_view_set_activate_on_single_click (GTK_TREE_VIEW (priv->tree_view), TRUE); g_signal_connect_swapped (priv->tree_view, "row-activated", G_CALLBACK (schedule_emit_link_activated), self); gtk_tree_view_set_show_expanders (GTK_TREE_VIEW (priv->tree_view), FALSE); gtk_tree_view_set_level_indentation (GTK_TREE_VIEW (priv->tree_view), 20); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->tree_view)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (priv->tree_view), FALSE); gtk_container_add (GTK_CONTAINER (swindow), priv->tree_view); gtk_box_pack_start (GTK_BOX (self), swindow, TRUE, TRUE, 0); gtk_widget_show_all (GTK_WIDGET (self)); column = gtk_tree_view_column_new (); gtk_tree_view_column_set_expand (GTK_TREE_VIEW_COLUMN (column), TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW (priv->tree_view), column); renderer = (GtkCellRenderer *) g_object_new (GTK_TYPE_CELL_RENDERER_TEXT, "ellipsize", PANGO_ELLIPSIZE_END, "weight", PANGO_WEIGHT_BOLD, "xpad", 10, NULL); gtk_tree_view_column_pack_start (GTK_TREE_VIEW_COLUMN (column), renderer, TRUE); gtk_tree_view_column_set_attributes (GTK_TREE_VIEW_COLUMN (column), renderer, "markup", BOOK_LINKS_COLUMN_MARKUP, NULL); renderer = gd_styled_text_renderer_new (); gd_styled_text_renderer_add_class (GD_STYLED_TEXT_RENDERER (renderer), "dim-label"); g_object_set (renderer, "max-width-chars", 12, "scale", PANGO_SCALE_SMALL, "xalign", 1.0, "xpad", 10, NULL); gtk_tree_view_column_pack_end (GTK_TREE_VIEW_COLUMN (column), renderer, FALSE); /* gtk_tree_view_column_set_attributes (GTK_TREE_VIEW_COLUMN (column), renderer, "text", BOOK_LINKS_COLUMN_LABEL, NULL); */ priv->model = (GtkTreeModel *)gtk_list_store_new (BOOK_LINKS_COLUMN_N, G_TYPE_STRING, G_TYPE_STRING); }