Advertisement
Guest User

Untitled

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