Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Test text tag's */
- #include <gtk/gtk.h>
- #define TAG_NAME "BOLD"
- static void
- setup_iters(GtkTextBuffer *buff, GtkTextIter *start, GtkTextIter *end)
- {
- if (!gtk_text_buffer_get_selection_bounds(buff, start, end)) {
- GtkTextMark *mark = gtk_text_buffer_get_insert(buff);
- gtk_text_buffer_get_iter_at_mark(buff, start, mark);
- *end = *start;
- }
- }
- static void
- activate_tag(GtkButton *button, GtkTextView *tv)
- {
- GtkTextBuffer *buffer;
- GtkTextIter start, end;
- static gboolean tag_state = FALSE;
- tag_state = !tag_state;
- buffer = gtk_text_view_get_buffer(tv);
- setup_iters(buffer, &start, &end);
- if(tag_state) {
- g_print("Tag mode activated\n");
- gtk_text_buffer_apply_tag_by_name(buffer, TAG_NAME, &start, &end);
- }
- else {
- g_print("Tag mode deactivated\n");
- gtk_text_buffer_remove_tag_by_name(buffer, TAG_NAME, &start, &end);
- }
- }
- int main(int argc, char **argv)
- {
- GtkWidget *main_window;
- GtkWidget *button;
- GtkWidget *vbox;
- GtkWidget *text_view;
- GtkTextBuffer *buffer;
- gtk_init(&argc, &argv);
- main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_position(GTK_WINDOW(main_window), GTK_WIN_POS_CENTER);
- gtk_window_set_default_size(GTK_WINDOW(main_window), 250, 200);
- gtk_window_set_title(GTK_WINDOW(main_window), "Text tag's test");
- vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);// gtk+ 3.0
- // vbox = gtk_vbox_new(FALSE, 0); // gtk+ 2.0
- gtk_container_add(GTK_CONTAINER(main_window), vbox);
- button = gtk_button_new_with_label("Tag activate");
- gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
- text_view = gtk_text_view_new();
- buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view));
- gtk_text_buffer_create_tag(buffer, TAG_NAME, "weight", PANGO_WEIGHT_BOLD, NULL);
- gtk_box_pack_start(GTK_BOX(vbox), text_view, TRUE, TRUE, 0);
- g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(activate_tag), text_view);
- g_signal_connect(G_OBJECT(main_window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
- gtk_widget_show_all(main_window);
- gtk_main();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement