3 * Sven Verdoolaege. All rights reserved.
5 * See the LICENSE file for redistribution information.
10 #include <sys/types.h>
11 #include <sys/queue.h>
12 #include <bitstring.h>
15 #include <sys/types.h>
19 #include "../common/common.h"
20 #include "../ipc/ip.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
},
52 gtk_init (&argc
, &argv
);
54 gtk_vi_init(&vi
, argc
, argv
);
64 void win_toplevel(GtkViWindow
*win
)
66 create_toplevel(win
->vi
);
70 void create_toplevel(GtkVi
*vi
)
73 GtkWidget
*box
, *menubar
;
75 gint nmenu_items
= sizeof (menu_items
) / sizeof (menu_items
[0]);
76 GtkItemFactory
*factory
;
79 window
= gtk_window_new(GTK_WINDOW_TOPLEVEL
);
81 box
= gtk_vbox_new(FALSE
, 0);
82 gtk_container_add(GTK_CONTAINER(window
), 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
),
101 gtk_signal_connect(GTK_OBJECT(GTK_VI_WINDOW(vi_window
)->vi_screen
), "destroy",
102 GTK_SIGNAL_FUNC(vi_destroyed
),
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
);
118 gtk_vi_quit(vi
, write
);
129 vi_rename(vi
, name
, window
)
130 GtkWidget
*vi
, *window
;
133 gtk_window_set_title(GTK_WINDOW(window
), name
);