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