static void expand_cell_data_func (GtkTreeViewColumn *column, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer /*data*/) { GtkTreePath *path = NULL; gint column_type; gboolean row_expanded = FALSE; path = gtk_tree_model_get_path (model, iter); row_expanded = gtk_tree_view_row_expanded (GTK_TREE_VIEW (gtk_tree_view_column_get_tree_view (column)), path); gtk_tree_path_free (path); gtk_tree_model_get (model, iter, COLUMN_TYPE, &column_type, -1); if (column_type == TYPE_PRESENTITY || column_type == TYPE_HEAP) g_object_set (renderer, "visible", FALSE, NULL); else g_object_set (renderer, "visible", TRUE, NULL); g_object_set (renderer, "expander-style", row_expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED, NULL); }
static void contact_list_view_expander_cell_data_func (GtkTreeViewColumn *column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, EmpathyContactListView *view) { gboolean is_group; gboolean is_active; gtk_tree_model_get (model, iter, EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active, -1); if (gtk_tree_model_iter_has_child (model, iter)) { GtkTreePath *path; gboolean row_expanded; path = gtk_tree_model_get_path (model, iter); row_expanded = gtk_tree_view_row_expanded (GTK_TREE_VIEW (gtk_tree_view_column_get_tree_view (column)), path); gtk_tree_path_free (path); g_object_set (cell, "visible", TRUE, "expander-style", row_expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED, NULL); } else { g_object_set (cell, "visible", FALSE, NULL); } contact_list_view_cell_set_background (view, cell, is_group, is_active); }
static void aw_map_view_detail_cell_cb (GtkTreeViewColumn *column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data) { char *text = NULL; AwStar *star = NULL; AwTreeView *view; gtk_tree_model_get (model, iter, 0, &star, -1); if (star) { view = AW_TREE_VIEW (gtk_tree_view_column_get_tree_view (column)); text = g_strdup_printf ("%s: %d\n%s: %d", _("ID"), aw_star_get_id (star), _("Level"), aw_star_get_level (star)); } g_object_set (cell, "text", text, NULL); aw_star_unref (star); g_free (text); }
void trace_view_data_func(GtkTreeViewColumn *column, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer data) { long col_num = (long)data; int str_len, label_len; gchar *text, *str; int new_w, x_pad; GValue val = {0}; GtkWidget *view; PangoFontDescription *pfd; PangoLayout *playout; /* Put the text in the renderer. */ gtk_tree_model_get_value(model, iter, col_num, &val); g_object_set_property(G_OBJECT(renderer), "text", &val); g_object_get(G_OBJECT(renderer), "text", &text, "font-desc", &pfd, NULL); if (!text) goto out; /* Make sure there is enough room to render the column label. */ str = text; str_len = strlen(str); label_len = strlen(col_labels[col_num]); if (label_len > str_len) { str = col_labels[col_num]; str_len = label_len; } /* Don't bother with pango unless we have more chars than the max. */ if (str_len > col_chars[col_num]) { col_chars[col_num] = str_len; view = GTK_WIDGET(gtk_tree_view_column_get_tree_view(column)); playout = gtk_widget_create_pango_layout(GTK_WIDGET(view), str); pango_layout_set_font_description(playout, pfd); pango_layout_get_pixel_size(playout, &new_w, NULL); gtk_cell_renderer_get_padding(renderer, &x_pad, NULL); /* +10 to avoid another adjustment for one char */ new_w += 2*x_pad + 10; g_object_unref(playout); if (new_w > gtk_tree_view_column_get_width(column)) gtk_tree_view_column_set_fixed_width(column, new_w); } g_free(text); out: pango_font_description_free(pfd); g_value_unset(&val); }
static void trg_tree_view_hide_column(GtkWidget * w, GtkTreeViewColumn * col) { trg_column_description *desc = g_object_get_data(G_OBJECT(col), GDATA_KEY_COLUMN_DESC); GtkWidget *tv = gtk_tree_view_column_get_tree_view(col); desc->flags &= ~TRG_COLUMN_SHOWING; gtk_tree_view_remove_column(GTK_TREE_VIEW(tv), col); }
static GtkWidget * gtk_cell_layout_get_widget (GtkCellLayout *layout) { if (GTK_IS_TREE_VIEW_COLUMN (layout)) return gtk_tree_view_column_get_tree_view (GTK_TREE_VIEW_COLUMN (layout)); else if (GTK_IS_WIDGET (layout)) return GTK_WIDGET (layout); else return NULL; }
static GtkTreeModel * gtk_cell_layout_get_model (GtkCellLayout *layout) { if (GTK_IS_TREE_VIEW_COLUMN (layout)) return gtk_tree_view_get_model (GTK_TREE_VIEW (gtk_tree_view_column_get_tree_view (GTK_TREE_VIEW_COLUMN (layout)))); else if (GTK_IS_ICON_VIEW (layout)) return gtk_icon_view_get_model (GTK_ICON_VIEW (layout)); else if (GTK_IS_COMBO_BOX (layout)) return gtk_combo_box_get_model (GTK_COMBO_BOX (layout)); else return NULL; }
static void trg_tree_view_user_add_column_cb(GtkWidget * w, trg_column_description * desc) { GtkTreeViewColumn *col = g_object_get_data(G_OBJECT(w), "parent-col"); TrgTreeView *tv = TRG_TREE_VIEW(gtk_tree_view_column_get_tree_view(col)); trg_tree_view_add_column_after(tv, desc, -1, col); g_signal_emit(tv, signals[SIGNAL_COLUMN_ADDED], 0, desc->id); }
static void aw_map_view_title_cell_cb (GtkTreeViewColumn *column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data) { GString *text = g_string_new (NULL); PangoAttrList *attributes = NULL; AwStar *star = NULL; double distance = 0; AwTreeView *view; gtk_tree_model_get (model, iter, 0, &star, -1); if (star) { view = AW_TREE_VIEW (gtk_tree_view_column_get_tree_view (column)); distance = aw_point_get_distance (AW_MAP_VIEW (view)->priv->origin, aw_star_get_location (star)); g_string_append (text, aw_star_get_name (star)); g_string_append (text, "\n"); attributes = aw_tree_view_insert_font (view, attributes, AW_TREE_VIEW_FONT_SECONDARY, text->len, G_MAXINT); attributes = aw_tree_view_insert_color (view, attributes, AW_TREE_VIEW_COLOR_SECONDARY, text->len, G_MAXINT); g_string_append (text, _("Location")); g_string_append_printf (text, ": %d/%d, ", aw_star_get_x (star), aw_star_get_y (star)); g_string_append (text, _("Distance")); g_string_append_printf (text, ": %.1f pc", distance); } g_object_set (cell, "text", text->str, "attributes", attributes, NULL); pango_attr_list_unref (attributes); g_string_free (text, TRUE); aw_star_unref (star); }
static void view_popup_menu(GtkButton * button, GdkEventButton * event, GtkTreeViewColumn * column) { GtkWidget *tv = gtk_tree_view_column_get_tree_view(column); TrgTreeViewPrivate *priv = TRG_TREE_VIEW_GET_PRIVATE(tv); GtkWidget *menu, *menuitem; trg_column_description *desc; guint n_showing = 0; GList *li; menu = gtk_menu_new(); desc = g_object_get_data(G_OBJECT(column), GDATA_KEY_COLUMN_DESC); for (li = priv->columns; li; li = g_list_next(li)) { trg_column_description *desc = (trg_column_description *) li->data; if (!(desc->flags & TRG_COLUMN_SHOWING)) { menuitem = gtk_check_menu_item_new_with_label(desc->header); g_object_set_data(G_OBJECT(menuitem), "parent-col", column); g_signal_connect(menuitem, "activate", G_CALLBACK(trg_tree_view_user_add_column_cb), desc); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); } else { n_showing++; } } menuitem = gtk_check_menu_item_new_with_label(desc->header); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), TRUE); g_signal_connect(menuitem, "activate", G_CALLBACK(trg_tree_view_hide_column), column); gtk_widget_set_sensitive(menuitem, !(desc->flags & TRG_COLUMN_UNREMOVABLE) && n_showing > 1); gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), menuitem); gtk_widget_show_all(menu); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, (event != NULL) ? event->button : 0, gdk_event_get_time((GdkEvent *) event)); }
static void render_value(GtkTreeViewColumn *column, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data) { GtkWidget *parent = gtk_tree_view_column_get_tree_view(column); CoordsView *priv = GWY_COORDS_VIEW(parent)->priv; guint i = GPOINTER_TO_UINT(user_data); guint d = priv->coords_class->dimension_map[i]; gdouble *data = NULL; gtk_tree_model_get(model, iter, 1, &data, -1); gdouble value = data[i]; GwyValueFormat *vf = NULL; const GwyShapes *shapes = priv->shapes; if (priv->scale_type == GWY_COORD_SCALE_PIXEL && shapes) { gdouble x = (d == 0) ? value : 0.0, y = (d == 1) ? value : 0.0; cairo_matrix_transform_point(&shapes->coords_to_view, &x, &y); cairo_matrix_transform_point(&shapes->view_to_pixel, &x, &y); value = (d == 0) ? x : y; vf = priv->pixel_format; } else vf = priv->dim_info[d].vf; if (vf) { const gchar *s = gwy_value_format_print_number(vf, value); g_object_set(renderer, "text", s, NULL); } else { gchar buf[32]; g_snprintf(buf, sizeof(buf), "%g", value); g_object_set(renderer, "text", buf, NULL); } }
static void aw_system_view_title_cell_cb (GtkTreeViewColumn *column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data) { GString *text = g_string_new (NULL); PangoAttrList *attributes = NULL; AwPlanet *planet = NULL; AwTreeView *view; gtk_tree_model_get (model, iter, 0, &planet, -1); if (planet) { view = AW_TREE_VIEW (gtk_tree_view_column_get_tree_view (column)); g_string_append (text, aw_planet_get_name (planet)); g_string_append (text, "\n"); attributes = aw_tree_view_insert_font (view, attributes, AW_TREE_VIEW_FONT_SECONDARY, text->len, G_MAXINT); if (aw_planet_get_flags (planet) & AW_PLANET_SIEGED) { attributes = aw_tree_view_insert_color (view, attributes, AW_TREE_VIEW_COLOR_ATTENTION, 0, G_MAXINT); } else if (aw_planet_get_owner (planet)) { attributes = aw_tree_view_insert_color (view, attributes, AW_TREE_VIEW_COLOR_SECONDARY, text->len, G_MAXINT); } else { attributes = aw_tree_view_insert_color (view, attributes, AW_TREE_VIEW_COLOR_SECONDARY, 0, G_MAXINT); } if (!aw_planet_get_owner (planet)) { attributes = aw_tree_view_insert_font (view, attributes, AW_TREE_VIEW_FONT_ITALIC, 0, text->len); attributes = aw_tree_view_insert_font (view, attributes, AW_TREE_VIEW_FONT_ITALIC, text->len, G_MAXINT); g_string_append_printf (text, _("empty planet")); } else g_string_append (text, aw_planet_get_owner (planet)); } g_object_set (cell, "text", text->str, "attributes", attributes, NULL); pango_attr_list_unref (attributes); g_string_free (text, TRUE); aw_planet_unref (planet); }
static VALUE tvc_get_tree_view(VALUE self) { return GOBJ2RVAL(gtk_tree_view_column_get_tree_view(_SELF(self))); }