コード例 #1
0
ファイル: roster-view-gtk.cpp プロジェクト: NpNike/ekiga
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);
}
コード例 #2
0
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);
}
コード例 #3
0
ファイル: map-view.c プロジェクト: hasselmm/awui
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);
}
コード例 #4
0
ファイル: trace-view.c プロジェクト: apolyudov/trace-cmd
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);
}
コード例 #5
0
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);
}
コード例 #6
0
ファイル: prop-editor.c プロジェクト: 3v1n0/gtk
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;
}
コード例 #7
0
ファイル: prop-editor.c プロジェクト: 3v1n0/gtk
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;
}
コード例 #8
0
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);
}
コード例 #9
0
ファイル: map-view.c プロジェクト: hasselmm/awui
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);
}
コード例 #10
0
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));
}
コード例 #11
0
ファイル: coords-view.c プロジェクト: svn2github/gwyddion
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);
    }
}
コード例 #12
0
ファイル: system-view.c プロジェクト: hasselmm/awui
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);
}
コード例 #13
0
static VALUE
tvc_get_tree_view(VALUE self)
{
    return GOBJ2RVAL(gtk_tree_view_column_get_tree_view(_SELF(self)));
}