Makefile.in generated now
[nvi.git] / gtk / gtk_main.c
bloba84a8f30546bd2c2264d57faf0c7a6c88d4c0c3b
1 /*-
2 * Copyright (c) 1999
3 * Sven Verdoolaege. All rights reserved.
5 * See the LICENSE file for redistribution information.
6 */
8 #include "config.h"
10 #include <sys/types.h>
11 #include <sys/queue.h>
12 #include <bitstring.h>
14 #include <sys/time.h>
15 #include <sys/types.h>
16 #include <unistd.h>
19 #include "../common/common.h"
20 #include "../ipc/ip.h"
22 #include <gtk/gtk.h>
23 #include "gtkvi.h"
24 #include "gtkviwindow.h"
25 #include "gtkviscreen.h"
26 #include "../gtk/extern.h"
28 static void vi_destroyed __P((GtkWidget*));
29 static void vi_rename __P((GtkWidget*,gchar*,GtkWidget*));
30 static void vi_quit __P((GtkViWindow*, int));
32 static void win_toplevel(GtkViWindow *win);
33 static void create_toplevel(GtkVi *vi);
35 static GtkItemFactoryEntry menu_items[] = {
36 { "/_File", NULL, NULL, 0, "<Branch>" },
37 { "/File/E_xit", NULL, vi_quit, 1, NULL },
38 { "/File/_Quit", NULL, vi_quit, 0, NULL },
39 { "/_Window", NULL, NULL, 0, "<Branch>" },
40 { "/Window/New Window", NULL, win_toplevel, 0, NULL },
41 { "/Window/Show Terminal", NULL, gtk_vi_show_term, 1, NULL },
42 { "/Window/Show Vi", NULL, gtk_vi_show_term, 0, NULL },
45 int
46 main(argc, argv)
47 int argc;
48 char *argv[];
50 GtkVi *vi;
52 gtk_init (&argc, &argv);
54 gtk_vi_init(&vi, argc, argv);
56 create_toplevel(vi);
58 gtk_main();
60 return 0;
63 static
64 void win_toplevel(GtkViWindow *win)
66 create_toplevel(win->vi);
69 static
70 void create_toplevel(GtkVi *vi)
72 GtkWidget *window;
73 GtkWidget *box, *menubar;
74 GtkWidget *vi_window;
75 gint nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]);
76 GtkItemFactory *factory;
77 GtkAccelGroup *accel;
79 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
81 box = gtk_vbox_new(FALSE, 0);
82 gtk_container_add(GTK_CONTAINER(window), box);
83 gtk_widget_show(box);
85 vi_window = gtk_vi_window_new(vi);
87 accel = gtk_accel_group_new();
88 factory = gtk_item_factory_new (GTK_TYPE_MENU_BAR, "<main>", accel);
89 gtk_item_factory_create_items (factory, nmenu_items, menu_items, (gpointer)vi_window);
90 gtk_accel_group_attach(accel, GTK_OBJECT(window));
91 menubar = gtk_item_factory_get_widget (factory, "<main>");
92 gtk_widget_show(menubar);
93 gtk_box_pack_start(GTK_BOX(box), menubar, FALSE, FALSE, 0);
95 gtk_accel_group_attach(accel, GTK_OBJECT(vi_window));
96 gtk_widget_show(vi_window);
98 gtk_signal_connect(GTK_OBJECT(vi_window), "rename",
99 GTK_SIGNAL_FUNC(vi_rename),
100 window);
101 gtk_signal_connect(GTK_OBJECT(GTK_VI_WINDOW(vi_window)->vi_screen), "destroy",
102 GTK_SIGNAL_FUNC(vi_destroyed),
103 NULL);
104 gtk_box_pack_start(GTK_BOX(box), vi_window, TRUE, TRUE, 0);
107 gtk_widget_grab_focus(GTK_WIDGET(vi->vi));
110 gtk_widget_show(window);
113 static void
114 vi_quit(vi, write)
115 GtkViWindow *vi;
116 gint write;
118 gtk_vi_quit(vi, write);
121 static void
122 vi_destroyed(vi)
123 GtkWidget *vi;
125 gtk_main_quit();
128 static void
129 vi_rename(vi, name, window)
130 GtkWidget *vi, *window;
131 gchar* name;
133 gtk_window_set_title(GTK_WINDOW(window), name);