Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <gtk/gtk.h>
- #include <gtksourceview/gtksource.h>
- #include <gdk/gdkkeysyms.h>
- #include <glib/gi18n.h>
- int main (int argc,
- char *argv[])
- {
- GtkWidget *window, *scrolled_win, *textview;
- GtkWidget *vbox, *menubar, *fileMenu, *fileMi, *quit_item;
- /* Menu */
- GtkWidget *dialog;
- GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
- gint res;
- dialog = gtk_file_chooser_dialog_new ("Open File",
- scrolled_win,
- action,
- _("_Cancel"),
- GTK_RESPONSE_CANCEL,
- _("_Open"),
- GTK_RESPONSE_ACCEPT,
- NULL);
- res = gtk_dialog_run (GTK_DIALOG (dialog));
- if (res == GTK_RESPONSE_ACCEPT)
- {
- char *filename;
- GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog);
- filename = gtk_file_chooser_get_filename (chooser);
- open_file (filename);
- g_free (filename);
- }
- gtk_widget_destroy (dialog);
- gtk_init (&argc, &argv);
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_window_maximize(GTK_WINDOW (window)); /* This is a cast: expand the windows to fullscreen*/
- vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 12);
- gtk_container_add(GTK_CONTAINER(window), vbox);
- gtk_window_set_title (GTK_WINDOW (window), "Text Views");
- gtk_container_set_border_width (GTK_CONTAINER (window), 10);
- textview = gtk_source_view_new();
- menubar = gtk_menu_bar_new();
- fileMenu = gtk_menu_new();
- fileMi = gtk_menu_item_new_with_label("File");
- quit_item = gtk_menu_item_new_with_label("Quit");
- /* CTRL-Q accelerator */
- GtkAccelGroup *accel_group = NULL;
- accel_group = gtk_accel_group_new();
- gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);
- gtk_widget_add_accelerator(quit_item, "activate", accel_group,
- GDK_KEY_q, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
- /*Expand the textbox to fullscreen */
- gtk_widget_set_hexpand(textview, TRUE);
- gtk_widget_set_vexpand(textview, TRUE);
- GtkCssProvider *provider = gtk_css_provider_new ();
- gtk_css_provider_load_from_path (provider,
- "gtk-widgets.css", NULL);
- GtkStyleContext *context;
- context = gtk_widget_get_style_context(textview);
- gtk_style_context_add_provider (context,
- GTK_STYLE_PROVIDER(provider),
- GTK_STYLE_PROVIDER_PRIORITY_USER);
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(fileMi), fileMenu);
- gtk_menu_shell_append(GTK_MENU_SHELL(fileMenu), quit_item);
- gtk_menu_shell_append(GTK_MENU_SHELL(menubar), fileMi);
- gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0);
- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
- gtk_container_add(GTK_CONTAINER(vbox), scrolled_win);
- gtk_container_add (GTK_CONTAINER (scrolled_win), textview);
- gtk_source_view_set_show_line_numbers (GTK_SOURCE_VIEW(textview), TRUE); /*Show line numbers */
- gtk_widget_show_all (window);
- g_signal_connect(G_OBJECT(window), "destroy",
- G_CALLBACK(gtk_main_quit), NULL);
- g_signal_connect(G_OBJECT(quit_item), "activate",
- G_CALLBACK(gtk_main_quit), NULL);
- gtk_main();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement