Exemplo n.º 1
0
Arquivo: main.c Projeto: raja651/gtk
static GtkWidget *
create_text (GtkWidget **view,
             gboolean    is_source)
{
  GtkWidget *scrolled_window;
  GtkWidget *text_view;

  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_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
                                       GTK_SHADOW_NONE);

  *view = text_view = gtk_text_view_new ();
  g_object_set (text_view,
                "left-margin", 20,
                "right-margin", 20,
                "top-margin", 20,
                "bottom-margin", 20,
                NULL);

  gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
  gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (text_view), FALSE);

  gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);

  if (is_source)
    {
      gtk_text_view_set_monospace (GTK_TEXT_VIEW (text_view), TRUE);
      gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_NONE);
    }
  else
    {
      /* Make it a bit nicer for text. */
      gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD);
      gtk_text_view_set_pixels_above_lines (GTK_TEXT_VIEW (text_view), 2);
      gtk_text_view_set_pixels_below_lines (GTK_TEXT_VIEW (text_view), 2);
    }

  return scrolled_window;
}
Exemplo n.º 2
0
static void
create_window (void)
{
	GtkWidget *window;
	GtkWidget *hgrid;
	GtkWidget *panel_grid;
	GtkWidget *scrolled_window;
	GtkWidget *gsv_checkbutton;
	GtkWidget *tag_set_checkbutton;
	GtkWidget *tag_checkbutton;
	GtkSourceView *view;
	GtkSourceBuffer *buffer;
	GtkTextTag *tag;

	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
	gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
	g_signal_connect (window, "destroy", gtk_main_quit, NULL);

	hgrid = gtk_grid_new ();
	gtk_orientable_set_orientation (GTK_ORIENTABLE (hgrid), GTK_ORIENTATION_HORIZONTAL);

	view = GTK_SOURCE_VIEW (gtk_source_view_new ());

	g_object_set (view,
		      "expand", TRUE,
		      NULL);

	gtk_text_view_set_monospace (GTK_TEXT_VIEW (view), TRUE);

	buffer = GTK_SOURCE_BUFFER (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));

	tag = gtk_source_buffer_create_source_tag (buffer,
						   NULL,
						   "draw-spaces", FALSE,
						   NULL);

	fill_buffer (GTK_TEXT_BUFFER (buffer), tag);

	gtk_source_view_set_draw_spaces (view, GTK_SOURCE_DRAW_SPACES_ALL);

	panel_grid = gtk_grid_new ();
	gtk_orientable_set_orientation (GTK_ORIENTABLE (panel_grid), GTK_ORIENTATION_VERTICAL);
	gtk_container_add (GTK_CONTAINER (hgrid), panel_grid);

	gtk_grid_set_row_spacing (GTK_GRID (panel_grid), 6);
	g_object_set (panel_grid,
		      "margin", 6,
		      NULL);

	gsv_checkbutton = gtk_check_button_new_with_label ("GtkSourceView draw-spaces");
	gtk_container_add (GTK_CONTAINER (panel_grid), gsv_checkbutton);
	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gsv_checkbutton), TRUE);
	g_signal_connect (gsv_checkbutton,
			  "toggled",
			  G_CALLBACK (gsv_checkbutton_toggled_cb),
			  view);

	tag_set_checkbutton = gtk_check_button_new_with_label ("GtkSourceTag draw-spaces-set");
	gtk_container_add (GTK_CONTAINER (panel_grid), tag_set_checkbutton);
	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tag_set_checkbutton), TRUE);
	g_object_bind_property (tag_set_checkbutton, "active",
				tag, "draw-spaces-set",
				G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);

	tag_checkbutton = gtk_check_button_new_with_label ("GtkSourceTag draw-spaces");
	gtk_container_add (GTK_CONTAINER (panel_grid), tag_checkbutton);
	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tag_checkbutton), FALSE);
	g_object_bind_property (tag_checkbutton, "active",
				tag, "draw-spaces",
				G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);

	scrolled_window = gtk_scrolled_window_new (NULL, NULL);
	gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (view));
	gtk_container_add (GTK_CONTAINER (hgrid), scrolled_window);

	gtk_container_add (GTK_CONTAINER (window), hgrid);

	gtk_widget_show_all (window);
}
Exemplo n.º 3
0
/** \brief  Create textview with scrollbars
 *
 * \return  GtkScrolledWindow
 */
static GtkWidget *create_content_widget(void)
{
    GtkWidget *view;
    GtkWidget *scrolled;
    GtkTextBuffer *buffer;
    GtkTextIter iter;
    GtkTextTag *name_tag;
    GtkTextTag *inv_tag;
    GtkTextTag *desc_tag;
    int num_options = cmdline_get_num_options();
    int i;

    view = gtk_text_view_new();
    gtk_text_view_set_editable(GTK_TEXT_VIEW(view), FALSE);
    gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(view), FALSE);
    gtk_text_view_set_monospace(GTK_TEXT_VIEW(view), TRUE);
    gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD_CHAR);
    gtk_text_view_set_left_margin(GTK_TEXT_VIEW(view),16);
    gtk_text_view_set_right_margin(GTK_TEXT_VIEW(view),16);


    buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));

    /* name: bold (for -option) */
    name_tag = gtk_text_buffer_create_tag(buffer, "name_tag",
            "weight", PANGO_WEIGHT_BOLD, NULL);
    /* name: bold and red (for +option) */
    inv_tag = gtk_text_buffer_create_tag(buffer, "inv_tag",
            "weight", PANGO_WEIGHT_BOLD,
            "foreground", "red", NULL);
    /* description: indented and sans-serif */
    desc_tag = gtk_text_buffer_create_tag(buffer, "desc_tag",
            "left-margin", 48,
            "family", "sans-serif", NULL);

    scrolled = gtk_scrolled_window_new(NULL, NULL);
    gtk_widget_set_size_request(scrolled, 800, 600);
    gtk_container_add(GTK_CONTAINER(scrolled), view);

    gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0);

    for (i = 0; i < num_options; i++) {
        char *name;
        char *param;
        char *desc;

        name = cmdline_options_get_name(i);
        param = cmdline_options_get_param(i);
        desc = cmdline_options_get_description(i);

        if (name[0] == '-') {
            gtk_text_buffer_insert_with_tags(buffer, &iter, name, -1,
                    name_tag, NULL);
        } else {
            gtk_text_buffer_insert_with_tags(buffer, &iter, name, -1,
                    inv_tag, NULL);
        }

        if (param != NULL) {
            gtk_text_buffer_insert(buffer, &iter, " ", -1);
            gtk_text_buffer_insert(buffer, &iter, param, -1);
        }
        gtk_text_buffer_insert(buffer, &iter, "\n", -1);

        if (desc == NULL) {
            fprintf(stderr, "no desc for '%s'\n", name);
            desc = "[DESCRIPTION MISSING]";
        }
        gtk_text_buffer_insert_with_tags(buffer, &iter, desc, -1,
                desc_tag, NULL);
        gtk_text_buffer_insert(buffer, &iter, "\n\n", -1);
    }

    gtk_widget_show_all(scrolled);
    return scrolled;
}