Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. #include <gtk/gtk.h>
  2. #include <gtksourceview/gtksource.h>
  3. #include <gdk/gdkkeysyms.h>
  4. #include <glib/gi18n.h>
  5.  
  6. int main (int argc,
  7. char *argv[])
  8. {
  9. GtkWidget *window, *scrolled_win, *textview;
  10. GtkWidget *vbox, *menubar, *fileMenu, *fileMi, *quit_item;
  11.  
  12. /* Menu */
  13. GtkWidget *dialog;
  14.  
  15. GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
  16.  
  17. gint res;
  18.  
  19. dialog = gtk_file_chooser_dialog_new ("Open File",
  20. scrolled_win,
  21. action,
  22. _("_Cancel"),
  23. GTK_RESPONSE_CANCEL,
  24. _("_Open"),
  25. GTK_RESPONSE_ACCEPT,
  26. NULL);
  27.  
  28. res = gtk_dialog_run (GTK_DIALOG (dialog));
  29.  
  30. if (res == GTK_RESPONSE_ACCEPT)
  31. {
  32. char *filename;
  33. GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog);
  34. filename = gtk_file_chooser_get_filename (chooser);
  35. open_file (filename);
  36. g_free (filename);
  37. }
  38.  
  39. gtk_widget_destroy (dialog);
  40.  
  41. gtk_init (&argc, &argv);
  42. window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  43. gtk_window_maximize(GTK_WINDOW (window)); /* This is a cast: expand the windows to fullscreen*/
  44. vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 12);
  45. gtk_container_add(GTK_CONTAINER(window), vbox);
  46.  
  47. gtk_window_set_title (GTK_WINDOW (window), "Text Views");
  48. gtk_container_set_border_width (GTK_CONTAINER (window), 10);
  49.  
  50. textview = gtk_source_view_new();
  51. menubar = gtk_menu_bar_new();
  52. fileMenu = gtk_menu_new();
  53.  
  54. fileMi = gtk_menu_item_new_with_label("File");
  55.  
  56. quit_item = gtk_menu_item_new_with_label("Quit");
  57.  
  58. /* CTRL-Q accelerator */
  59. GtkAccelGroup *accel_group = NULL;
  60. accel_group = gtk_accel_group_new();
  61. gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);
  62.  
  63. gtk_widget_add_accelerator(quit_item, "activate", accel_group,
  64. GDK_KEY_q, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
  65.  
  66. /*Expand the textbox to fullscreen */
  67. gtk_widget_set_hexpand(textview, TRUE);
  68. gtk_widget_set_vexpand(textview, TRUE);
  69.  
  70. GtkCssProvider *provider = gtk_css_provider_new ();
  71. gtk_css_provider_load_from_path (provider,
  72. "gtk-widgets.css", NULL);
  73.  
  74. GtkStyleContext *context;
  75.  
  76. context = gtk_widget_get_style_context(textview);
  77. gtk_style_context_add_provider (context,
  78. GTK_STYLE_PROVIDER(provider),
  79. GTK_STYLE_PROVIDER_PRIORITY_USER);
  80.  
  81.  
  82. gtk_menu_item_set_submenu(GTK_MENU_ITEM(fileMi), fileMenu);
  83. gtk_menu_shell_append(GTK_MENU_SHELL(fileMenu), quit_item);
  84. gtk_menu_shell_append(GTK_MENU_SHELL(menubar), fileMi);
  85. gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0);
  86.  
  87. scrolled_win = gtk_scrolled_window_new (NULL, NULL);
  88. gtk_container_add(GTK_CONTAINER(vbox), scrolled_win);
  89. gtk_container_add (GTK_CONTAINER (scrolled_win), textview);
  90.  
  91. gtk_source_view_set_show_line_numbers (GTK_SOURCE_VIEW(textview), TRUE); /*Show line numbers */
  92.  
  93. gtk_widget_show_all (window);
  94.  
  95. g_signal_connect(G_OBJECT(window), "destroy",
  96. G_CALLBACK(gtk_main_quit), NULL);
  97.  
  98. g_signal_connect(G_OBJECT(quit_item), "activate",
  99. G_CALLBACK(gtk_main_quit), NULL);
  100.  
  101. gtk_main();
  102. return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement