Esempio n. 1
0
static VALUE
textview_add_child_in_window(VALUE self, VALUE child, VALUE which_window, VALUE xpos, VALUE ypos)
{
    G_CHILD_ADD(self, child);
    gtk_text_view_add_child_in_window(_SELF(self), GTK_WIDGET(RVAL2GOBJ(child)),
                                      RVAL2GENUM(which_window, GTK_TYPE_TEXT_WINDOW_TYPE),
                                      NUM2INT(xpos), NUM2INT(ypos));
    return self;
}
Esempio n. 2
0
void gglk_textbuffer_put_image(GglkTextBuffer *tb,
			       GdkPixbuf *pic, glui32 align)
{
    int line_height = tb->base.yunits;
    int height = gdk_pixbuf_get_height(pic);

    if(align == imagealign_MarginLeft || align == imagealign_MarginRight) {
	/* FIXME */
	gglk_textbuffer_put_image(tb, pic, imagealign_InlineUp);
	
#if 0
	GdkRectangle rect;
	GtkWidget *child, *event_box;

	event_box = gtk_event_box_new();
	child = gtk_image_new_from_pixbuf(pic);
	gtk_container_add(GTK_CONTAINER(event_box), child);

	gtk_widget_show_all(event_box);

	gtk_text_view_get_iter_location(GTK_TEXT_VIEW(tb),
					&tb->base.iter, &rect);
	gtk_text_view_add_child_in_window(GTK_TEXT_VIEW(tb),
					  event_box, GTK_TEXT_WINDOW_TEXT,
					  rect.x, rect.y);
#endif

    } else {
	GtkTextIter start, end;

	switch(align) {
	case imagealign_InlineUp:
	    height = 0;
	    break;
	case imagealign_InlineDown:
	    height -= line_height;
	    break;
	case imagealign_InlineCenter:
	    height = (height - line_height) / 2;
	    break;
	default:
	    height = 0;
	}

	gtk_text_buffer_insert_pixbuf(tb->base.buffer, &tb->base.iter, pic);

	start = end = tb->base.iter;
	gtk_text_iter_backward_char(&start);
	if(height != 0) {
	    GtkTextTag *tag = gtk_text_buffer_create_tag(tb->base.buffer, NULL,
							 "rise", PANGO_SCALE * (-height),
							 NULL);
	    gtk_text_buffer_apply_tag(tb->base.buffer, tag, &start, &end);
	}
	gtk_text_buffer_get_end_iter(tb->base.buffer, &tb->base.iter);
    }
}
Esempio n. 3
0
int
main (int argc, char **argv)
{
  GtkWidget *window, *textview, *sw, *button, *button2;
  GtkTextBuffer *buffer;
  GtkTextChildAnchor *anchor;

  gtk_init ();

  window   = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  sw       = gtk_scrolled_window_new (NULL, NULL);
  textview = g_object_new (my_text_view_get_type (), NULL);
  buffer   = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview));
  button   = gtk_button_new_with_label ("Fixed Child");
  button2   = gtk_button_new_with_label ("Flowed Child");

  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                  GTK_POLICY_AUTOMATIC,
                                  GTK_POLICY_AUTOMATIC);

  gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);

  create_tags (buffer);
  anchor = insert_text (buffer);

  gtk_container_add (GTK_CONTAINER (window), sw);
  gtk_container_add (GTK_CONTAINER (sw), textview);
  gtk_text_view_add_child_in_window (GTK_TEXT_VIEW (textview),
                                     button,
                                     GTK_TEXT_WINDOW_TEXT,
                                     50, 150);

  gtk_text_view_add_child_at_anchor (GTK_TEXT_VIEW (textview),
                                     button2, anchor);

  gtk_widget_show (window);

  gtk_main ();

  return 0;
}