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
*,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 #if 0 /*wrong argument anyway*/
42 { "/Window/Show Terminal", NULL
, gtk_vi_show_term
, 1, NULL
},
43 { "/Window/Show Vi", NULL
, gtk_vi_show_term
, 0, NULL
},
47 static int n_toplevel
= 0;
56 gtk_init (&argc
, &argv
);
58 gtk_vi_init(&vi
, argc
, argv
);
68 void win_toplevel(GtkViWindow
*win
)
70 create_toplevel(win
->vi
);
74 void create_toplevel(GtkVi
*vi
)
77 GtkWidget
*box
, *menubar
;
79 gint nmenu_items
= sizeof (menu_items
) / sizeof (menu_items
[0]);
80 GtkItemFactory
*factory
;
83 window
= gtk_window_new(GTK_WINDOW_TOPLEVEL
);
86 box
= gtk_vbox_new(FALSE
, 0);
87 gtk_container_add(GTK_CONTAINER(window
), box
);
90 vi_window
= gtk_vi_window_new(vi
);
92 accel
= gtk_accel_group_new();
93 factory
= gtk_item_factory_new (GTK_TYPE_MENU_BAR
, "<main>", accel
);
94 gtk_item_factory_create_items (factory
, nmenu_items
, menu_items
, (gpointer
)vi_window
);
95 gtk_accel_group_attach(accel
, GTK_OBJECT(window
));
96 menubar
= gtk_item_factory_get_widget (factory
, "<main>");
97 gtk_widget_show(menubar
);
98 gtk_box_pack_start(GTK_BOX(box
), menubar
, FALSE
, FALSE
, 0);
100 gtk_accel_group_attach(accel
, GTK_OBJECT(vi_window
));
101 gtk_widget_show(vi_window
);
103 gtk_signal_connect(GTK_OBJECT(vi_window
), "rename",
104 GTK_SIGNAL_FUNC(vi_rename
),
106 gtk_signal_connect(GTK_OBJECT(GTK_VI_WINDOW(vi_window
)->vi_screen
), "destroy",
107 GTK_SIGNAL_FUNC(vi_destroyed
),
109 gtk_box_pack_start(GTK_BOX(box
), vi_window
, TRUE
, TRUE
, 0);
112 gtk_widget_grab_focus(GTK_WIDGET(vi->vi));
115 gtk_widget_show(window
);
123 gtk_vi_quit(vi
, write
);
127 vi_destroyed(GtkWidget
*vi
, GtkWidget
*window
)
129 gtk_widget_destroy(window
);
135 vi_rename(vi
, name
, window
)
136 GtkWidget
*vi
, *window
;
139 gtk_window_set_title(GTK_WINDOW(window
), name
);