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