xref: /netbsd-src/external/bsd/nvi/dist/gtk/gtkvi.c (revision 8d01a27e2b735e802aea2b531dbc8b21a5af4376)
1dbd550edSchristos /*-
2dbd550edSchristos  * Copyright (c) 1999
3dbd550edSchristos  *	Sven Verdoolaege.  All rights reserved.
4dbd550edSchristos  * Copyright (c) 1996
5dbd550edSchristos  *	Rob Zimmermann.  All rights reserved.
6dbd550edSchristos  * Copyright (c) 1996
7dbd550edSchristos  *	Keith Bostic.  All rights reserved.
8dbd550edSchristos  *
9dbd550edSchristos  * See the LICENSE file for redistribution information.
10dbd550edSchristos  */
11dbd550edSchristos 
12dbd550edSchristos #include "config.h"
13dbd550edSchristos 
14dbd550edSchristos #include <sys/types.h>
15dbd550edSchristos #include <sys/queue.h>
16dbd550edSchristos 
17dbd550edSchristos #include <bitstring.h>
18dbd550edSchristos #include <stdio.h>
19dbd550edSchristos #include <stdlib.h>
20dbd550edSchristos #include <string.h>
21dbd550edSchristos 
22dbd550edSchristos #include <gtk/gtk.h>
23dbd550edSchristos 
24dbd550edSchristos #include "../common/common.h"
25dbd550edSchristos #include "../ipc/ip.h"
26dbd550edSchristos 
27dbd550edSchristos #if 0
28dbd550edSchristos #include <zvt/zvtterm.h>
29dbd550edSchristos #include <zvt/vt.h>
30dbd550edSchristos #endif
31dbd550edSchristos #include "gtkvi.h"
32dbd550edSchristos #include "gtkviscreen.h"
33dbd550edSchristos #include "gtkviwindow.h"
34*8d01a27eSchristos #include "gtk_extern.h"
35dbd550edSchristos 
36dbd550edSchristos static int vi_key_press_event __P((GtkWidget*, GdkEventKey*, GtkVi*));
37dbd550edSchristos 
38dbd550edSchristos 
39dbd550edSchristos 
40dbd550edSchristos #if 0
41dbd550edSchristos static int
42dbd550edSchristos vi_fork(ipvi)
43dbd550edSchristos 	IPVI	*ipvi;
44dbd550edSchristos {
45dbd550edSchristos 	GtkVi* vi = (GtkVi*)(ipvi->private_data);
46dbd550edSchristos 
47dbd550edSchristos 	return zvt_term_forkpty(ZVT_TERM(vi->term), 0);
48dbd550edSchristos }
49dbd550edSchristos #endif
50dbd550edSchristos 
51dbd550edSchristos /*
52dbd550edSchristos  * PUBLIC: int gtk_vi_init __P((GtkVi **, int, char*[]));
53dbd550edSchristos  */
54dbd550edSchristos int
gtk_vi_init(GtkVi ** vip,int argc,char ** argv)55dbd550edSchristos gtk_vi_init(GtkVi **vip, int argc, char **argv)
56dbd550edSchristos {
57dbd550edSchristos 	GtkVi	*vi;
58dbd550edSchristos 	GtkWidget *term;
59dbd550edSchristos 
60dbd550edSchristos 	MALLOC_GOTO(NULL, vi, GtkVi*, sizeof(GtkVi));
61dbd550edSchristos 	memset(vi, 0, sizeof(GtkVi));
62dbd550edSchristos 
63dbd550edSchristos #if 0
64dbd550edSchristos 	term = zvt_term_new();
65dbd550edSchristos 	gtk_widget_show(term);
66dbd550edSchristos 	vi->term = term;
67dbd550edSchristos 	vt_parse_vt(&ZVT_TERM(term)->vx->vt, "test\n", 5);
68dbd550edSchristos #endif
69dbd550edSchristos 	/* doesn't work now; need to know when other process is running
70dbd550edSchristos 	gtk_signal_connect(GTK_OBJECT(term), "key_press_event",
71dbd550edSchristos 	    (GtkSignalFunc) vi_key_press_event, vi);
72dbd550edSchristos 	*/
73dbd550edSchristos 
74dbd550edSchristos /*
75dbd550edSchristos 	vi_create(&vi->ipvi, IP_EX_ALLOWED);
76dbd550edSchristos */
77dbd550edSchristos 	vi_create(&vi->ipvi, 0);
78dbd550edSchristos 	vi->ipvi->private_data = vi;
79dbd550edSchristos 
80dbd550edSchristos 	/* Run vi: the parent returns, the child is the vi process. */
81dbd550edSchristos 	vi->ipvi->run(vi->ipvi, argc, argv);
82dbd550edSchristos 
83dbd550edSchristos 	*vip = vi;
84dbd550edSchristos 
85dbd550edSchristos 	return 0;
86dbd550edSchristos 
87dbd550edSchristos alloc_err:
88dbd550edSchristos 	return 1;
89dbd550edSchristos }
90dbd550edSchristos 
91dbd550edSchristos #if 0
92dbd550edSchristos static int
93dbd550edSchristos vi_key_press_event(zvt, event, vi)
94dbd550edSchristos 	GtkVi *vi;
95dbd550edSchristos 	GtkWidget *zvt;
96dbd550edSchristos 	GdkEventKey *event;
97dbd550edSchristos {
98dbd550edSchristos 	gtk_vi_key_press_event(vi, event);
99dbd550edSchristos 
100dbd550edSchristos 	gtk_signal_emit_stop_by_name(GTK_OBJECT(zvt), "key_press_event");
101dbd550edSchristos 	/* handled */
102dbd550edSchristos 	return 1;
103dbd550edSchristos }
104dbd550edSchristos #endif
105