]> git.pld-linux.org Git - packages/vim.git/blob - vim-bonobo-20030726.patch
- python tabstop patch works now... blah...
[packages/vim.git] / vim-bonobo-20030726.patch
1 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/Makefile vim/src/Makefile
2 --- vimcopy/src/Makefile        Mon Jun  2 09:32:18 2003
3 +++ vim/src/Makefile    Sat Jul 26 13:16:46 2003
4 @@ -1291,6 +1291,10 @@
5         objects/fileio.o \
6         objects/fold.o \
7         objects/getchar.o \
8 +        objects/gtkhtml_editor.o \
9 +        objects/gtkhtml_editor_common.o \
10 +        objects/gtkhtml_editor_skels.o \
11 +        objects/gtkhtml_editor_stubs.o \
12         $(HANGULIN_OBJ) \
13         objects/if_cscope.o \
14         objects/if_xcmdsrv.o \
15 @@ -1319,6 +1323,9 @@
16         objects/term.o \
17         objects/ui.o \
18         objects/undo.o \
19 +       objects/vim_bonobo_main.o \
20 +       objects/vim_bonobo_factory.o \
21 +       objects/vim_bonobo_control.o \
22         objects/window.o \
23         $(GUI_OBJ) \
24         $(PERL_OBJ) \
25 @@ -1328,7 +1335,7 @@
26         $(OS_EXTRA_OBJ) \
27         $(WORKSHOP_OBJ) \
28         $(NETBEANS_OBJ) \
29 -       $(WSDEBUG_OBJ)
30 +       $(WSDEBUG_OBJ)
31  
32  PRO_AUTO = \
33         buffer.pro \
34 @@ -2132,6 +2139,18 @@
35  objects/gui_photon.o: gui_photon.c
36         $(CCC) -o $@ gui_photon.c
37  
38 +objects/gtkhtml_editor.o: gtkhtml_editor.c
39 +       $(CCC) -o $@ gtkhtml_editor.c
40 +
41 +objects/gtkhtml_editor_common.o: gtkhtml_editor_common.c
42 +       $(CCC) -o $@ gtkhtml_editor_common.c
43 +
44 +objects/gtkhtml_editor_skels.o: gtkhtml_editor_skels.c
45 +       $(CCC) -o $@ gtkhtml_editor_skels.c
46 +
47 +objects/gtkhtml_editor_stubs.o: gtkhtml_editor_stubs.c
48 +       $(CCC) -o $@ gtkhtml_editor_stubs.c
49 +
50  objects/hangulin.o: hangulin.c
51         $(CCC) -o $@ hangulin.c
52  
53 @@ -2251,6 +2270,15 @@
54  
55  objects/undo.o: undo.c
56         $(CCC) -o $@ undo.c
57 +
58 +objects/vim_bonobo_control.o: vim_bonobo_control.c
59 +       $(CCC) -o $@ vim_bonobo_control.c
60 +
61 +objects/vim_bonobo_factory.o: vim_bonobo_factory.c
62 +       $(CCC) -o $@ vim_bonobo_factory.c
63 +
64 +objects/vim_bonobo_main.o: vim_bonobo_main.c
65 +       $(CCC) -o $@ vim_bonobo_main.c
66  
67  objects/window.o: window.c
68         $(CCC) -o $@ window.c
69 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/Vim_Control.server vim/src/Vim_Control.server
70 --- vimcopy/src/Vim_Control.server      Wed Dec 31 18:00:00 1969
71 +++ vim/src/Vim_Control.server  Sat Jul 26 13:16:46 2003
72 @@ -0,0 +1,34 @@
73 +<oaf_info>
74 +
75 +<oaf_server iid="OAFIID:Vim_Control_Factory" type="exe" location="/home/jdhildeb/projects/gnome-vim/vim/src/vim">
76 +  <oaf_attribute name="repo_ids" type="stringv">
77 +    <item value="IDL:Bonobo/GenericFactory:1.0"/>
78 +  </oaf_attribute>
79 +  <oaf_attribute name="name" type="string" value="Vim Control factory"/>
80 +  <oaf_attribute name="description" type="string" value="Vim Control factory"/>
81 +</oaf_server>
82 +
83 +<oaf_server iid="OAFIID:Vim_Control" type="factory"
84 + location="OAFIID:Vim_Control_Factory">
85 +  <oaf_attribute name="repo_ids" type="stringv">
86 +    <item value="IDL:Bonobo/Unknown:1.0"/>
87 +    <item value="IDL:Bonobo/Control:1.0"/>
88 +    <item value="IDL:Bonobo/ItemContainer:1.0"/>
89 +    <item value="IDL:Bonobo/PersistStream:1.0"/>
90 +    <item value="IDL:Bonobo/PersistFile:1.0"/>
91 +    <item value="IDL:Bonobo/Persist:1.0"/>
92 +    <item value="IDL:Nautilus/View:1.0"/>
93 +  </oaf_attribute>
94 +  <oaf_attribute name="name" type="string" value="Vim Control"/>
95 +  <oaf_attribute name="description" type="string" value="Vim Control"/>
96 +  <oaf_attribute name="bonobo:editable" type="boolean" value="false"/>
97 +  <oaf_attribute name="bonobo:supported_mime_types" type="stringv">
98 +    <item value="text/plain"/>
99 +    <item value="text/*"/>
100 +  </oaf_attribute>
101 +  <oaf_attribute name="nautilus:view_as_name" type="string" value="Text"/>
102 +  <oaf_attribute name="nautilus:view_as_label" type="string" value="View/Edit in Vim"/>
103 +  <oaf_attribute name="nautilus:viewer_label" type="string" value="Vim"/>
104 +</oaf_server>
105 +
106 +</oaf_info>
107 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/buffer.c vim/src/buffer.c
108 --- vimcopy/src/buffer.c        Mon May 26 23:04:33 2003
109 +++ vim/src/buffer.c    Sat Jul 26 16:36:29 2003
110 @@ -28,6 +28,10 @@
111  
112  #include "vim.h"
113  
114 +#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
115 +#include "vim_bonobo_control.h"
116 +#endif
117 +
118  #if defined(FEAT_CMDL_COMPL) || defined(FEAT_LISTCMDS) || defined(FEAT_EVAL) || defined(FEAT_PERL)
119  static char_u  *buflist_match __ARGS((regprog_T *prog, buf_T *buf));
120  # define HAVE_BUFLIST_MATCH
121 @@ -132,10 +136,20 @@
122         if (curbuf->b_help)
123             fix_help_buffer();
124      }
125 -    else if (read_stdin)
126 +    else if (read_stdin
127 +#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
128 +                || read_from_container
129 +#endif
130 +            )
131      {
132         int             save_bin = curbuf->b_p_bin;
133         linenr_T        line_count;
134 +#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
135 +        int flags = READ_NEW + READ_EMB_STREAM;
136 +       curbuf->emb_buffer = TRUE;
137 +#else
138 +        int flags = READ_NEW + READ_STDIN;
139 +#endif
140  
141         /*
142          * First read the text in binary mode into the buffer.
143 @@ -145,7 +159,7 @@
144          */
145         curbuf->b_p_bin = TRUE;
146         retval = readfile(NULL, NULL, (linenr_T)0,
147 -                 (linenr_T)0, (linenr_T)MAXLNUM, eap, READ_NEW + READ_STDIN);
148 +                 (linenr_T)0, (linenr_T)MAXLNUM, eap, flags);
149         curbuf->b_p_bin = save_bin;
150         if (retval == OK)
151         {
152 @@ -167,14 +181,21 @@
153             /* Put the cursor on the first line. */
154             curwin->w_cursor.lnum = 1;
155             curwin->w_cursor.col = 0;
156 +#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
157 +            if (read_stdin) 
158 +            {
159 +#endif
160  #ifdef FEAT_AUTOCMD
161  # ifdef FEAT_EVAL
162 -           apply_autocmds_retval(EVENT_STDINREADPOST, NULL, NULL, FALSE,
163 +                apply_autocmds_retval(EVENT_STDINREADPOST, NULL, NULL, FALSE,
164                                                         curbuf, &retval);
165  # else
166 -           apply_autocmds(EVENT_STDINREADPOST, NULL, NULL, FALSE, curbuf);
167 +                apply_autocmds(EVENT_STDINREADPOST, NULL, NULL, FALSE, curbuf);
168  # endif
169  #endif
170 +#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
171 +            }
172 +#endif
173         }
174      }
175  
176 @@ -4510,6 +4531,11 @@
177         if (buf->b_sfname != NULL)
178             return (char *)buf->b_sfname;
179         return "[Scratch]";
180 +    }
181 +#endif
182 +#if defined(FEAT_QUICKFIX) && defined(FEAT_GUI_COMPONENT)
183 +    if ( buf->emb_buffer ) {
184 +       return "[Embedded File]";
185      }
186  #endif
187      if (buf->b_fname == NULL)
188 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/config.h.in vim/src/config.h.in
189 --- vimcopy/src/config.h.in     Mon May 26 10:45:01 2003
190 +++ vim/src/config.h.in Sat Jul 26 13:16:46 2003
191 @@ -316,6 +316,9 @@
192  /* Define if GTK+ multihead support is available (requires GTK+ >= 2.1.1). */
193  #undef HAVE_GTK_MULTIHEAD
194  
195 +/* Define if you want component (i.e. Bonobo) support. */
196 +#undef FEAT_GUI_COMPONENT
197
198  /* Define if your X has own locale library */
199  #undef X_LOCALE
200  
201 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/configure.in vim/src/configure.in
202 --- vimcopy/src/configure.in    Mon Jun  2 09:32:19 2003
203 +++ vim/src/configure.in        Sat Jul 26 13:16:46 2003
204 @@ -1131,9 +1131,9 @@
205      AC_MSG_CHECKING(for libgnomeui-2.0)
206      if $PKG_CONFIG --exists libgnomeui-2.0; then
207        AC_MSG_RESULT(yes)
208 -      GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
209 -      GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
210 -      GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
211 +      GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0 libnautilus`
212 +      GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0 libnautilus`
213 +      GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0 libnautilus`
214        $1
215      else
216        AC_MSG_RESULT(not found)
217 @@ -1301,6 +1301,20 @@
218           AC_DEFINE(FEAT_GUI_GNOME)
219           GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
220           GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
221 +          AC_MSG_CHECKING(whether or not to include bonobo support)
222 +          AC_ARG_ENABLE(bonobo,
223 +            [  --enable-bonobo         If using GNOME, enable bonobo support [default=no]],
224 +            , enable_bonobo="no")
225 +          if test "x$enable_bonobo" = "xno"; then
226 +            AC_MSG_RESULT($enable_bonobo);
227 +          else
228 +            if test "x$SKIP_BONOBO" != "xYES" -a $gtk_major_version -ge 2; then
229 +              AC_MSG_RESULT(yes);
230 +              AC_DEFINE(FEAT_GUI_COMPONENT) 
231 +            else
232 +              AC_MSG_RESULT(no (bonobo requires Gnome 2));
233 +            fi
234 +          fi
235         fi
236        }
237        fi
238 Binary files vimcopy/src/container and vim/src/container differ
239 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/container.c vim/src/container.c
240 --- vimcopy/src/container.c     Wed Dec 31 18:00:00 1969
241 +++ vim/src/container.c Sat Jul 26 13:16:46 2003
242 @@ -0,0 +1,266 @@
243 +
244 +#include <bonobo.h>
245 +#include <glib.h>
246 +
247 +BonoboControlFrame  *ctrl_frame;
248 +BonoboUIComponent   *ui_comp;
249 +
250 +/* vbox */
251 +GtkWidget           *box;
252 +GtkWidget           *ctrl_widget;
253 +
254 +char * filename;
255 +
256 +static Bonobo_Control
257 +instantiate_control()
258 +{
259 +       Bonobo_Control control;
260 +       Bonobo_PersistFile pfile;
261 +       Bonobo_PersistStream pstream;
262 +       CORBA_Environment ev;
263 +    Bonobo_Stream stream;
264 +
265 +       CORBA_exception_init (&ev);
266 +
267 +       /* get control component */
268 +       control = bonobo_get_object ("OAFIID:Vim_Control",
269 +                                    "Bonobo/Control", &ev);
270 +       if (BONOBO_EX (&ev) || (control == CORBA_OBJECT_NIL))
271 +    {
272 +               CORBA_exception_free (&ev);
273 +        return NULL;
274 +    }
275 +       
276 +#if 0
277 +       /* get PersistFile interface */
278 +    pfile = Bonobo_Unknown_queryInterface (control, "IDL:Bonobo/PersistFile:1.0", &ev);
279 +    if (BONOBO_EX (&ev) || (pfile == CORBA_OBJECT_NIL))
280 +    exit(1);
281 +       
282 +       /* load the file */
283 +    Bonobo_PersistFile_load (pfile, filename, &ev);
284 +       bonobo_object_release_unref (pfile, NULL);
285 +#endif
286 +
287 +       /* get PersistStream interface */
288 +    pstream = Bonobo_Unknown_queryInterface (control, "IDL:Bonobo/PersistStream:1.0", &ev);
289 +    if (BONOBO_EX (&ev) || (pstream == CORBA_OBJECT_NIL))
290 +    {
291 +               CORBA_exception_free (&ev);
292 +        return NULL;
293 +    }
294 +       
295 +       /* load the file */
296 +    stream = bonobo_get_object(filename, "IDL:Bonobo/Stream:1.0", &ev);
297 +       if (ev._major != CORBA_NO_EXCEPTION) {
298 +        g_warning("Error getting stream interface");
299 +               bonobo_object_unref (BONOBO_OBJECT (stream));
300 +               CORBA_exception_free (&ev);
301 +               return NULL;
302 +       }
303 +    Bonobo_PersistStream_load (pstream, stream, "text/plain", &ev);
304 +       if (ev._major != CORBA_NO_EXCEPTION) {
305 +        g_warning("Error loading stream!");
306 +               bonobo_object_unref (BONOBO_OBJECT (stream));
307 +               CORBA_exception_free (&ev);
308 +               return NULL;
309 +       }
310 +       bonobo_object_release_unref (pstream, NULL);
311 +    return control;
312 +}
313 +
314 +static void
315 +verb_FileNewWindow (BonoboUIComponent *uic, gpointer user_data, const char *cname)
316 +{
317 +    printf("Got New Window!\n");
318 +}
319 +
320 +static void
321 +verb_DoNothing (BonoboUIComponent *uic, gpointer user_data, const char *cname)
322 +{
323 +}
324 +
325 +static BonoboUIVerb app_verbs[] = {
326 +       BONOBO_UI_VERB ("FileNewWindow", verb_FileNewWindow),
327 +       BONOBO_UI_VERB ("FileOpen",      verb_DoNothing),
328 +       BONOBO_UI_VERB ("FileCloseWindow", verb_DoNothing),
329 +       BONOBO_UI_VERB ("FileExit",      verb_DoNothing),
330 +       BONOBO_UI_VERB ("Preferences",   verb_DoNothing),
331 +       BONOBO_UI_VERB ("HelpAbout",     verb_DoNothing),
332 +       BONOBO_UI_VERB ("Help",          verb_DoNothing),
333 +       BONOBO_UI_VERB ("DnDNewWindow",  verb_DoNothing),
334 +       BONOBO_UI_VERB ("DnDSameWindow", verb_DoNothing),
335 +       BONOBO_UI_VERB ("DnDCancel",     verb_DoNothing),
336 +       BONOBO_UI_VERB_END
337 +};
338 +
339 +static void 
340 +add_control_to_ui (BonoboWindow *window, Bonobo_Control control)
341 +{
342 +       CORBA_Environment ev;
343 +       Bonobo_PropertyControl prop_control;
344 +       BonoboUIContainer *ui_container;
345 +    char *curdir;
346 +
347 +       g_return_if_fail (window != NULL);
348 +       g_return_if_fail (BONOBO_IS_WINDOW (window));
349 +       
350 +       CORBA_exception_init (&ev);
351 +
352 +       ui_container = bonobo_window_get_ui_container (BONOBO_WINDOW (window));
353 +       ctrl_frame = bonobo_control_frame_new (BONOBO_OBJREF (ui_container));
354 +
355 +       /* bind and view new control widget */
356 +       bonobo_control_frame_bind_to_control (ctrl_frame, control, &ev);
357 +       bonobo_control_frame_control_activate (ctrl_frame);
358 +       if (control != CORBA_OBJECT_NIL && ctrl_widget == NULL) {
359 +               ctrl_widget = bonobo_control_frame_get_widget (ctrl_frame);
360 +               if (!ctrl_widget)
361 +                       g_assert_not_reached ();
362 +
363 +        bonobo_window_set_contents (BONOBO_WINDOW(window), GTK_WIDGET(ctrl_widget));
364 +               gtk_widget_show (ctrl_widget);
365 +       }
366 +
367 +       ui_comp = bonobo_ui_component_new ("vim-container");
368 +       bonobo_ui_component_set_container (ui_comp, BONOBO_OBJREF (ui_container), NULL);
369 +
370 +    curdir = (char *)getcwd(NULL, 0);
371 +       bonobo_ui_util_set_ui (ui_comp, curdir, "vim-container.xml", "Vim", NULL);
372 +    free( curdir );
373 +    bonobo_ui_component_add_verb_list_with_data (ui_comp, app_verbs, window);
374 +
375 +       /* update sensitivity of the properties menu item */
376 +       prop_control = Bonobo_Unknown_queryInterface (control, 
377 +                                                     "IDL:Bonobo/PropertyControl:1.0", &ev);
378 +       bonobo_ui_component_set_prop (ui_comp,
379 +                                     "/commands/Preferences",
380 +                                     "sensitive",
381 +                                     prop_control == CORBA_OBJECT_NIL ? "0" : "1",
382 +                                     &ev);
383 +       
384 +       bonobo_object_release_unref (prop_control, &ev);
385 +
386 +       /* enable view menu */
387 +       /* FIXME: We should check if the component adds anything to 
388 +        *        the menu, so that we don't view an empty menu.
389 +        */
390 +       /*bonobo_ui_component_set_prop (ui_comp, "/menu/View", "hidden", "0", &ev);*/
391 +
392 +       CORBA_exception_free (&ev);
393 +
394 +       /* retrieve control properties and install listeners */
395 +       //check_for_control_properties (window);
396 +}
397 +
398 +static void write_stream_to_file(Bonobo_Control control)
399 +{
400 +    Bonobo_Storage storage;
401 +    gchar * dirname;
402 +    gchar * basename;
403 +       CORBA_Environment ev;
404 +       Bonobo_PersistStream pstream;
405 +    Bonobo_Stream stream;
406 +
407 +    g_warning("write stream to file!");
408 +       CORBA_exception_init (&ev);
409 +
410 +    dirname = g_path_get_dirname(filename);
411 +    storage = bonobo_get_object(dirname, "IDL:Bonobo/Storage:1.0", &ev);
412 +    g_free(dirname);
413 +    if (BONOBO_EX (&ev) || (storage == CORBA_OBJECT_NIL))
414 +    {
415 +               CORBA_exception_free (&ev);
416 +        return;
417 +    }
418 +
419 +    pstream = Bonobo_Unknown_queryInterface (control, "IDL:Bonobo/PersistStream:1.0", &ev);
420 +    if (BONOBO_EX (&ev) || (pstream == CORBA_OBJECT_NIL))
421 +    {
422 +        bonobo_object_release_unref(storage, NULL);
423 +               CORBA_exception_free (&ev);
424 +        return;
425 +    }
426 +
427 +    basename = g_path_get_basename(filename);
428 +    stream = Bonobo_Storage_openStream(storage, basename, Bonobo_Storage_WRITE, &ev );
429 +    g_free(basename);
430 +    if (BONOBO_EX (&ev) || (stream == CORBA_OBJECT_NIL))
431 +    {
432 +        bonobo_object_release_unref(pstream, NULL);
433 +        bonobo_object_release_unref(storage, NULL);
434 +               CORBA_exception_free (&ev);
435 +        return;
436 +    }
437 +
438 +    Bonobo_PersistStream_save (pstream, stream, "text/plain", &ev);
439 +       if (ev._major != CORBA_NO_EXCEPTION) {
440 +        g_warning("Error saving stream!");
441 +               bonobo_object_unref (BONOBO_OBJECT (stream));
442 +        bonobo_object_release_unref(pstream, NULL);
443 +        bonobo_object_release_unref(storage, NULL);
444 +               CORBA_exception_free (&ev);
445 +               return;
446 +       }
447 +    bonobo_object_release_unref(stream, NULL);
448 +    bonobo_object_release_unref(pstream, NULL);
449 +    bonobo_object_release_unref(storage, NULL);
450 +    return;
451 +}
452 +
453 +static void
454 +window_destroyed (GtkWindow *window, char * data)
455 +{
456 +    Bonobo_Control control;
457 +
458 +    control = bonobo_control_frame_get_control(ctrl_frame);
459 +    write_stream_to_file(control);
460 +    bonobo_control_frame_control_deactivate(ctrl_frame);
461 +    bonobo_object_release_unref( control, NULL );
462 +    bonobo_main_quit();
463 +}
464 +
465 +int main(int argc, char * argv[] ) 
466 +{
467 +    BonoboWidget * bw;
468 +    BonoboWindow      *window;
469 +       BonoboUIEngine    *engine;
470 +       BonoboUIContainer *container;
471 +    Bonobo_Control    control;
472 +    gchar             *cwd;
473 +
474 +    if( argc <= 1 ) { 
475 +        fprintf(stderr, "%s: not enough args\n", argv[0] );
476 +        fprintf(stderr, "Usage: %s <text file>\n", argv[0]);
477 +        exit(1);
478 +    }
479 +    cwd = g_get_current_dir();
480 +    filename = g_build_filename( "file:", cwd, argv[1], NULL );
481 +    g_free(cwd);
482 +
483 +    bonobo_ui_init ("container", "1.0", &argc, argv);
484 +
485 +       if(gnome_vfs_init () == FALSE)
486 +               g_error (_("Could not initialize GnomeVFS!\n"));
487 +
488 +       window = BONOBO_WINDOW ( bonobo_window_new ("Window", "Vim Test Container"));
489 +
490 +    // instantiate a control
491 +    control = instantiate_control();
492 +    if( control == NULL )
493 +        return 1;
494 +    
495 +    // put it into our window
496 +    add_control_to_ui (window, control);
497 +
498 +    g_signal_connect (window, "destroy",
499 +          G_CALLBACK (window_destroyed),
500 +          &window);
501 +
502 +
503 +    gtk_widget_show_all( GTK_WIDGET( window ));
504 +
505 +    bonobo_main();
506 +
507 +    return 0;
508 +}
509 Binary files vimcopy/src/container.o and vim/src/container.o differ
510 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/ex_cmds2.c vim/src/ex_cmds2.c
511 --- vimcopy/src/ex_cmds2.c      Wed Jul  9 09:23:22 2003
512 +++ vim/src/ex_cmds2.c  Sat Jul 26 13:16:47 2003
513 @@ -704,6 +704,12 @@
514      int                forceit;
515      int                allbuf;         /* may write all buffers */
516  {
517 +#ifdef FEAT_GUI_COMPONENT
518 +    if ( buf->emb_buffer ) {
519 +       EMSG(_("E467: Cannot close embedded file"));
520 +        return TRUE;
521 +    }
522 +#endif
523      if (       !forceit
524             && bufIsChanged(buf)
525             && (mult_win || buf->b_nwindows <= 1)
526 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/ex_docmd.c vim/src/ex_docmd.c
527 --- vimcopy/src/ex_docmd.c      Mon May 26 10:45:01 2003
528 +++ vim/src/ex_docmd.c  Sat Jul 26 13:16:47 2003
529 @@ -5348,8 +5348,13 @@
530      }
531      else
532      {
533 +#ifdef FEAT_GUI_COMPONENT
534 +        EMSG(_(e_compnoquit));
535 +        not_exiting();
536 +        return;
537 +#endif
538  #ifdef FEAT_WINDOWS
539 -       if (only_one_window())      /* quit last window */
540 +        if (only_one_window())             /* quit last window */
541  #endif
542             getout(0);
543  #ifdef FEAT_WINDOWS
544 @@ -5370,8 +5375,12 @@
545  ex_cquit(eap)
546      exarg_T    *eap;
547  {
548 +#ifdef FEAT_GUI_COMPONENT
549 +    EMSG(_(e_compnoquit));
550 +    return;
551 +#endif
552      getout(1); /* this does not always pass on the exit code to the Manx
553 -                  compiler. why? */
554 +                   compiler. why? */
555  }
556  
557  /*
558 @@ -5391,6 +5400,10 @@
559         return;
560      }
561  # endif
562 +#ifdef FEAT_GUI_COMPONENT
563 +    EMSG(_(e_compnoquit));
564 +    return;
565 +#endif
566      exiting = TRUE;
567      if (eap->forceit || !check_changed_any(FALSE))
568         getout(0);
569 @@ -5585,8 +5598,13 @@
570      }
571      else
572      {
573 +#ifdef FEAT_GUI_COMPONENT
574 +        EMSG(_(e_compnoquit));
575 +        not_exiting();
576 +        return;
577 +#endif
578  #ifdef FEAT_WINDOWS
579 -       if (only_one_window())      /* quit last window, exit Vim */
580 +        if ( only_one_window())            /* quit last window, exit Vim */
581  #endif
582             getout(0);
583  #ifdef FEAT_WINDOWS
584 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/fileio.c vim/src/fileio.c
585 --- vimcopy/src/fileio.c        Fri Jul 25 11:04:42 2003
586 +++ vim/src/fileio.c    Sat Jul 26 13:16:47 2003
587 @@ -45,6 +45,10 @@
588  # define CRYPT_MAGIC_LEN       12              /* must be multiple of 4! */
589  #endif
590  
591 +#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME) 
592 +#include "vim_bonobo_control.h"
593 +#endif
594 +
595  /* Is there any system that doesn't have access()? */
596  #ifndef MACOS_CLASSIC /* Not available on MacOS 9 */
597  # define USE_MCH_ACCESS
598 @@ -200,6 +204,7 @@
599   * READ_BUFFER read from curbuf instead of a file (converting after reading
600   *             stdin)
601   * READ_DUMMY  read into a dummy buffer (to check if file contents changed)
602 + * READ_EMB_STREAM read from a bonobo persist stream
603   *
604   * return FAIL for failure, OK otherwise
605   */
606 @@ -219,6 +224,11 @@
607      int                filtering = (flags & READ_FILTER);
608      int                read_stdin = (flags & READ_STDIN);
609      int                read_buffer = (flags & READ_BUFFER);
610 +#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
611 +    int                read_pstream = (flags & READ_EMB_STREAM);
612 +#else
613 +#define read_pstream 0
614 +#endif
615      linenr_T   read_buf_lnum = 1;      /* next line to read from curbuf */
616      colnr_T    read_buf_col = 0;       /* next char to read from this line */
617      char_u     c;
618 @@ -322,7 +332,7 @@
619       * The BufReadCmd and FileReadCmd events intercept the reading process by
620       * executing the associated commands instead.
621       */
622 -    if (!filtering && !read_stdin && !read_buffer)
623 +    if (!filtering && !read_stdin && !read_buffer && !read_pstream)
624      {
625         pos_T       pos;
626  
627 @@ -381,7 +391,7 @@
628       * On Unix it is possible to read a directory, so we have to
629       * check for it before the mch_open().
630       */
631 -    if (!read_stdin && !read_buffer)
632 +    if (!read_stdin && !read_buffer && !read_pstream)
633      {
634         perm = mch_getperm(fname);
635         if (perm >= 0 && !S_ISREG(perm)             /* not a regular file ... */
636 @@ -423,7 +433,7 @@
637      if (check_readonly && !readonlymode)    /* default: set file not readonly */
638         curbuf->b_p_ro = FALSE;
639  
640 -    if (newfile && !read_stdin && !read_buffer)
641 +    if (newfile && !read_stdin && !read_buffer && !read_pstream)
642      {
643         /* Remember time of file.
644          * For RISCOS, also remember the filetype.
645 @@ -483,6 +493,11 @@
646         setmode(0, O_BINARY);
647  #endif
648      }
649 +#ifdef FEAT_GUI_COMPONENT
650 +    else if (read_pstream)
651 +    {
652 +    }
653 +#endif
654      else if (!read_buffer)
655      {
656  #ifdef USE_MCH_ACCESS
657 @@ -599,7 +614,7 @@
658      /* If "Quit" selected at ATTENTION dialog, don't load the file */
659      if (swap_exists_action == SEA_QUIT)
660      {
661 -       if (!read_buffer && !read_stdin)
662 +       if (!read_buffer && !read_stdin && !read_pstream)
663             close(fd);
664         return FAIL;
665      }
666 @@ -624,7 +639,7 @@
667          * The file must be closed again, the autocommands may want to change
668          * the file before reading it.
669          */
670 -       if (!read_stdin)
671 +       if (!read_stdin && !read_pstream)
672             close(fd);          /* ignore errors */
673  
674         /*
675 @@ -661,7 +676,7 @@
676          * Don't allow the autocommands to change the current buffer.
677          * Try to re-open the file.
678          */
679 -       if (!read_stdin && (curbuf != old_curbuf
680 +       if (!read_stdin && !read_pstream && (curbuf != old_curbuf
681                 || (fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0)) < 0))
682         {
683             --no_wait_return;
684 @@ -701,7 +716,7 @@
685             }
686  #endif
687         }
688 -       else if (!read_buffer)
689 +       else if (!read_buffer && !read_pstream)
690             filemess(curbuf, sfname, (char_u *)"", 0);
691      }
692  
693 @@ -781,7 +796,7 @@
694             read_buf_lnum = 1;
695             read_buf_col = 0;
696         }
697 -       else if (read_stdin || lseek(fd, (off_t)0L, SEEK_SET) != 0)
698 +       else if (read_stdin || read_pstream || lseek(fd, (off_t)0L, SEEK_SET) != 0)
699         {
700             /* Can't rewind the file, give up. */
701             error = TRUE;
702 @@ -920,7 +935,7 @@
703          * Use the 'charconvert' expression when conversion is required
704          * and we can't do it internally or with iconv().
705          */
706 -       if (fio_flags == 0 && !read_stdin && !read_buffer && *p_ccv != NUL
707 +       if (fio_flags == 0 && !read_stdin && !read_buffer && !read_pstream && *p_ccv != NUL
708  #  ifdef USE_ICONV
709                                                     && iconv_fd == (iconv_t)-1
710  #  endif
711 @@ -969,7 +984,7 @@
712      /* Set can_retry when it's possible to rewind the file and try with
713       * another "fenc" value.  It's FALSE when no other "fenc" to try, reading
714       * stdin or "fenc" was specified with "++enc=". */
715 -    can_retry = (*fenc != NUL && !read_stdin
716 +    can_retry = (*fenc != NUL && !read_stdin && !read_pstream
717                                      && (eap == NULL || eap->force_enc == 0));
718  #endif
719  
720 @@ -1120,6 +1135,11 @@
721                         }
722                     }
723                 }
724 +#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME) 
725 +                else if( read_pstream ) {
726 +                    size = vim_control_persist_stream_read(ptr, size);   
727 +                }
728 +#endif
729                 else
730                 {
731                     /*
732 @@ -1713,7 +1733,7 @@
733                             else if (ff_error != EOL_DOS)
734                             {
735                                 if (   try_unix
736 -                                   && !read_stdin
737 +                                   && !read_stdin && !read_pstream
738                                     && (read_buffer
739                                         || lseek(fd, (off_t)0L, SEEK_SET) == 0))
740                                 {
741 @@ -1802,7 +1822,7 @@
742  # endif
743  #endif
744  
745 -    if (!read_buffer && !read_stdin)
746 +    if (!read_buffer && !read_stdin && !read_pstream)
747         close(fd);                              /* errors are ignored */
748      vim_free(buffer);
749  
750 @@ -1991,7 +2011,7 @@
751  #ifdef ALWAYS_USE_GUI
752             /* Don't show the message when reading stdin, it would end up in a
753              * message box (which might be shown when exiting!) */
754 -           if (read_stdin || read_buffer)
755 +           if (read_stdin || read_buffer )
756                 p = msg_may_trunc(FALSE, IObuff);
757             else
758  #endif
759 @@ -2057,7 +2077,7 @@
760       */
761      write_no_eol_lnum = read_no_eol_lnum;
762  
763 -    if (!read_stdin && !read_buffer)
764 +    if (!read_stdin && !read_buffer && !read_pstream)
765      {
766         int m = msg_scroll;
767         int n = msg_scrolled;
768 @@ -2383,6 +2403,11 @@
769      int                    prev_got_int = got_int;
770      int                    file_readonly = FALSE;  /* overwritten file is read-only */
771      static char            *err_readonly = "is read-only (cannot override: \"W\" in 'cpoptions')";
772 +#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
773 +    int                    write_pstream = write_to_container;
774 +#else
775 +#define write_pstream 0
776 +#endif
777  #if defined(UNIX) || defined(__EMX__XX)            /*XXX fix me sometime? */
778      int                    made_writable = FALSE;  /* 'w' bit has been set */
779  #endif
780 @@ -2795,6 +2820,10 @@
781      if (dobackup && *p_bsk != NUL && match_file_list(p_bsk, sfname, ffname))
782         dobackup = FALSE;
783  #endif
784 +#ifdef FEAT_GUI_COMPONENT
785 +    if( write_pstream )
786 +        dobackup = FALSE;
787 +#endif
788  
789      /*
790       * Save the value of got_int and reset it.  We don't want a previous
791 @@ -3398,7 +3427,7 @@
792       * (this may happen when the user reached his quotum for number of files).
793       * Appending will fail if the file does not exist and forceit is FALSE.
794       */
795 -    while ((fd = mch_open((char *)wfname, O_WRONLY | O_EXTRA | (append
796 +    while (write_pstream && (fd = mch_open((char *)wfname, O_WRONLY | O_EXTRA | (append
797                         ? (forceit ? (O_APPEND | O_CREAT) : O_APPEND)
798                         : (O_CREAT | O_TRUNC))
799                         , 0666)) < 0)
800 @@ -3670,7 +3699,7 @@
801         nchars += len;
802      }
803  
804 -    if (close(fd) != 0)
805 +    if (!write_pstream && close(fd) != 0)
806      {
807         errmsg = (char_u *)_("E512: Close failed");
808         end = 0;
809 @@ -4088,6 +4117,10 @@
810      buf_T      *buf;
811      char_u     *fname;
812  {
813 +#ifdef FEAT_GUI_COMPONENT
814 +    if (buf->emb_buffer)
815 +        fname = (char_u *)"[Embedded File]";
816 +#endif
817      if (fname == NULL)
818         fname = (char_u *)"-stdin-";
819      home_replace(buf, fname, IObuff + 1, IOSIZE - 4, TRUE);
820 @@ -4476,7 +4509,12 @@
821      /* Repeat the write(), it may be interrupted by a signal. */
822      while (len)
823      {
824 -       wlen = vim_write(ip->bw_fd, buf, len);
825 +#if defined(FEAT_GUI_COMPONENT) && defined(FEAT_GUI_GNOME)
826 +        if( write_to_container )
827 +            wlen = vim_control_persist_stream_write(buf, len);
828 +        else
829 +#endif
830 +            wlen = vim_write(ip->bw_fd, buf, len);
831         if (wlen <= 0)              /* error! */
832             return FAIL;
833         len -= wlen;
834 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/globals.h vim/src/globals.h
835 --- vimcopy/src/globals.h       Mon Jun  2 09:32:19 2003
836 +++ vim/src/globals.h   Sat Jul 26 13:16:47 2003
837 @@ -802,6 +802,11 @@
838  EXTERN int     readonlymode INIT(= FALSE); /* Set to TRUE for "view" */
839  EXTERN int     recoverymode INIT(= FALSE); /* Set to TRUE for "-r" option */
840  
841 +#ifdef FEAT_GUI_COMPONENT
842 +EXTERN int      read_from_container INIT(= 0); /* read the buffer from the container app */
843 +EXTERN int      write_to_container INIT(= 0); /* write the buffer to the container app */
844 +#endif
845 +
846  EXTERN struct buffheader stuffbuff     /* stuff buffer */
847  #ifdef DO_INIT
848                     = {{NULL, {NUL}}, NULL, 0, 0}
849 @@ -1321,6 +1326,9 @@
850  #endif
851  #ifdef FEAT_NETBEANS_INTG
852  EXTERN char_u e_guarded[]      INIT(=N_("E463: Region is guarded, cannot modify"));
853 +#endif
854 +#ifdef FEAT_GUI_COMPONENT
855 +EXTERN char_u e_compnoquit[]   INIT(=N_("E464: Quit not allowed from embedded component"));
856  #endif
857  #ifdef MACOS_X_UNIX
858  EXTERN short disallow_gui      INIT(= FALSE);
859 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gtkhtml.h vim/src/gtkhtml.h
860 --- vimcopy/src/gtkhtml.h       Wed Dec 31 18:00:00 1969
861 +++ vim/src/gtkhtml.h   Sat Jul 26 13:16:47 2003
862 @@ -0,0 +1,480 @@
863 +/*
864 + * This file was generated by orbit-idl-2 - DO NOT EDIT!
865 + */
866 +
867 +#ifndef Editor_H
868 +#define Editor_H 1
869 +#include <glib.h>
870 +#define ORBIT_IDL_SERIAL 19
871 +#include <orbit/orbit-types.h>
872 +
873 +#ifdef __cplusplus
874 +extern "C"
875 +{
876 +#endif                         /* __cplusplus */
877 +
878 +/** typedefs **/
879 +#include <bonobo/Bonobo.h>
880 +#if !defined(ORBIT_DECL_GNOME_GtkHTML_Editor_Listener) && !defined(_GNOME_GtkHTML_Editor_Listener_defined)
881 +#define ORBIT_DECL_GNOME_GtkHTML_Editor_Listener 1
882 +#define _GNOME_GtkHTML_Editor_Listener_defined 1
883 +#define GNOME_GtkHTML_Editor_Listener__freekids CORBA_Object__freekids
884 +   typedef CORBA_Object GNOME_GtkHTML_Editor_Listener;
885 +   extern CORBA_unsigned_long GNOME_GtkHTML_Editor_Listener__classid;
886 +#if !defined(TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_0)
887 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_0 'E'
888 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_1 'd'
889 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_2 'i'
890 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_3 't'
891 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_4 'o'
892 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_5 'r'
893 +#ifdef ORBIT_IDL_C_IMODULE
894 +   static
895 +#else
896 +   extern
897 +#endif
898 +   const struct CORBA_TypeCode_struct TC_GNOME_GtkHTML_Editor_Listener_struct;
899 +#define TC_GNOME_GtkHTML_Editor_Listener ((CORBA_TypeCode)&TC_GNOME_GtkHTML_Editor_Listener_struct)
900 +#endif
901 +#endif
902 +#if !defined(ORBIT_DECL_GNOME_GtkHTML_Editor_Engine) && !defined(_GNOME_GtkHTML_Editor_Engine_defined)
903 +#define ORBIT_DECL_GNOME_GtkHTML_Editor_Engine 1
904 +#define _GNOME_GtkHTML_Editor_Engine_defined 1
905 +#define GNOME_GtkHTML_Editor_Engine__freekids CORBA_Object__freekids
906 +   typedef CORBA_Object GNOME_GtkHTML_Editor_Engine;
907 +   extern CORBA_unsigned_long GNOME_GtkHTML_Editor_Engine__classid;
908 +#if !defined(TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_0)
909 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_0 'E'
910 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_1 'd'
911 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_2 'i'
912 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_3 't'
913 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_4 'o'
914 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_5 'r'
915 +#ifdef ORBIT_IDL_C_IMODULE
916 +   static
917 +#else
918 +   extern
919 +#endif
920 +   const struct CORBA_TypeCode_struct TC_GNOME_GtkHTML_Editor_Engine_struct;
921 +#define TC_GNOME_GtkHTML_Editor_Engine ((CORBA_TypeCode)&TC_GNOME_GtkHTML_Editor_Engine_struct)
922 +#endif
923 +#endif
924 +#if !defined(_GNOME_GtkHTML_Editor_URLRequestEvent_defined)
925 +#define _GNOME_GtkHTML_Editor_URLRequestEvent_defined 1
926 +   typedef struct GNOME_GtkHTML_Editor_URLRequestEvent_type
927 +      GNOME_GtkHTML_Editor_URLRequestEvent;
928 +   struct GNOME_GtkHTML_Editor_URLRequestEvent_type
929 +   {
930 +      CORBA_string url;
931 +      Bonobo_Stream stream;
932 +   };
933 +
934 +#if !defined(TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_0)
935 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_0 'E'
936 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_1 'd'
937 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_2 'i'
938 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_3 't'
939 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_4 'o'
940 +#define TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_5 'r'
941 +#ifdef ORBIT_IDL_C_IMODULE
942 +   static
943 +#else
944 +   extern
945 +#endif
946 +   const struct CORBA_TypeCode_struct
947 +      TC_GNOME_GtkHTML_Editor_URLRequestEvent_struct;
948 +#define TC_GNOME_GtkHTML_Editor_URLRequestEvent ((CORBA_TypeCode)&TC_GNOME_GtkHTML_Editor_URLRequestEvent_struct)
949 +#endif
950 +#define GNOME_GtkHTML_Editor_URLRequestEvent__alloc() ((GNOME_GtkHTML_Editor_URLRequestEvent *)ORBit_small_alloc (TC_GNOME_GtkHTML_Editor_URLRequestEvent))
951 +#define GNOME_GtkHTML_Editor_URLRequestEvent__freekids(m,d) ORBit_small_freekids (TC_GNOME_GtkHTML_Editor_URLRequestEvent,(m),(d))
952 +#endif
953 +
954 +/** POA structures **/
955 +#ifndef _defined_POA_GNOME_GtkHTML_Editor_Listener
956 +#define _defined_POA_GNOME_GtkHTML_Editor_Listener 1
957 +   typedef struct
958 +   {
959 +      void *_private;
960 +      CORBA_any *(*event) (PortableServer_Servant _servant,
961 +                          const CORBA_char * name, const CORBA_any * arg,
962 +                          CORBA_Environment * ev);
963 +   }
964 +   POA_GNOME_GtkHTML_Editor_Listener__epv;
965 +   typedef struct
966 +   {
967 +      PortableServer_ServantBase__epv *_base_epv;
968 +      POA_Bonobo_Unknown__epv *Bonobo_Unknown_epv;
969 +      POA_GNOME_GtkHTML_Editor_Listener__epv
970 +        *GNOME_GtkHTML_Editor_Listener_epv;
971 +   }
972 +   POA_GNOME_GtkHTML_Editor_Listener__vepv;
973 +   typedef struct
974 +   {
975 +      void *_private;
976 +      POA_GNOME_GtkHTML_Editor_Listener__vepv *vepv;
977 +   }
978 +   POA_GNOME_GtkHTML_Editor_Listener;
979 +   extern void POA_GNOME_GtkHTML_Editor_Listener__init(PortableServer_Servant
980 +                                                      servant,
981 +                                                      CORBA_Environment *
982 +                                                      ev);
983 +   extern void POA_GNOME_GtkHTML_Editor_Listener__fini(PortableServer_Servant
984 +                                                      servant,
985 +                                                      CORBA_Environment *
986 +                                                      ev);
987 +#endif                         /* _defined_POA_GNOME_GtkHTML_Editor_Listener */
988 +#ifndef _defined_POA_GNOME_GtkHTML_Editor_Engine
989 +#define _defined_POA_GNOME_GtkHTML_Editor_Engine 1
990 +   typedef struct
991 +   {
992 +      void *_private;
993 +       GNOME_GtkHTML_Editor_Listener(*_get_listener) (PortableServer_Servant
994 +                                                     _servant,
995 +                                                     CORBA_Environment * ev);
996 +      void (*_set_listener) (PortableServer_Servant _servant,
997 +                            const GNOME_GtkHTML_Editor_Listener value,
998 +                            CORBA_Environment * ev);
999 +       CORBA_boolean(*runCommand) (PortableServer_Servant _servant,
1000 +                                  const CORBA_char * command,
1001 +                                  CORBA_Environment * ev);
1002 +       CORBA_string(*getParagraphData) (PortableServer_Servant _servant,
1003 +                                       const CORBA_char * key,
1004 +                                       CORBA_Environment * ev);
1005 +      void (*setParagraphData) (PortableServer_Servant _servant,
1006 +                               const CORBA_char * key,
1007 +                               const CORBA_char * value,
1008 +                               CORBA_Environment * ev);
1009 +      void (*setObjectDataByType) (PortableServer_Servant _servant,
1010 +                                  const CORBA_char * type_name,
1011 +                                  const CORBA_char * key,
1012 +                                  const CORBA_char * data,
1013 +                                  CORBA_Environment * ev);
1014 +       CORBA_boolean(*searchByData) (PortableServer_Servant _servant,
1015 +                                    const CORBA_long level,
1016 +                                    const CORBA_char * klass,
1017 +                                    const CORBA_char * key,
1018 +                                    const CORBA_char * value,
1019 +                                    CORBA_Environment * ev);
1020 +       CORBA_boolean(*isParagraphEmpty) (PortableServer_Servant _servant,
1021 +                                        CORBA_Environment * ev);
1022 +       CORBA_boolean(*isPreviousParagraphEmpty) (PortableServer_Servant
1023 +                                                _servant,
1024 +                                                CORBA_Environment * ev);
1025 +      void (*insertHTML) (PortableServer_Servant _servant,
1026 +                         const CORBA_char * html, CORBA_Environment * ev);
1027 +      void (*freeze) (PortableServer_Servant _servant,
1028 +                     CORBA_Environment * ev);
1029 +      void (*thaw) (PortableServer_Servant _servant, CORBA_Environment * ev);
1030 +      void (*undoBegin) (PortableServer_Servant _servant,
1031 +                        const CORBA_char * undo_name,
1032 +                        const CORBA_char * redo_name,
1033 +                        CORBA_Environment * ev);
1034 +      void (*undoEnd) (PortableServer_Servant _servant,
1035 +                      CORBA_Environment * ev);
1036 +      void (*ignoreWord) (PortableServer_Servant _servant,
1037 +                         const CORBA_char * word, CORBA_Environment * ev);
1038 +      void (*dropUndo) (PortableServer_Servant _servant,
1039 +                       CORBA_Environment * ev);
1040 +       CORBA_boolean(*hasUndo) (PortableServer_Servant _servant,
1041 +                               CORBA_Environment * ev);
1042 +   }
1043 +   POA_GNOME_GtkHTML_Editor_Engine__epv;
1044 +   typedef struct
1045 +   {
1046 +      PortableServer_ServantBase__epv *_base_epv;
1047 +      POA_Bonobo_Unknown__epv *Bonobo_Unknown_epv;
1048 +      POA_GNOME_GtkHTML_Editor_Engine__epv *GNOME_GtkHTML_Editor_Engine_epv;
1049 +   }
1050 +   POA_GNOME_GtkHTML_Editor_Engine__vepv;
1051 +   typedef struct
1052 +   {
1053 +      void *_private;
1054 +      POA_GNOME_GtkHTML_Editor_Engine__vepv *vepv;
1055 +   }
1056 +   POA_GNOME_GtkHTML_Editor_Engine;
1057 +   extern void POA_GNOME_GtkHTML_Editor_Engine__init(PortableServer_Servant
1058 +                                                    servant,
1059 +                                                    CORBA_Environment * ev);
1060 +   extern void POA_GNOME_GtkHTML_Editor_Engine__fini(PortableServer_Servant
1061 +                                                    servant,
1062 +                                                    CORBA_Environment * ev);
1063 +#endif                         /* _defined_POA_GNOME_GtkHTML_Editor_Engine */
1064 +
1065 +/** skel prototypes **/
1066 +   void
1067 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Listener_event
1068 +      (POA_GNOME_GtkHTML_Editor_Listener * _ORBIT_servant,
1069 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1070 +       CORBA_Environment * ev,
1071 +       CORBA_any * (*_impl_event) (PortableServer_Servant _servant,
1072 +                                  const CORBA_char * name,
1073 +                                  const CORBA_any * arg,
1074 +                                  CORBA_Environment * ev));
1075 +   void
1076 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine__get_listener
1077 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1078 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1079 +       CORBA_Environment * ev,
1080 +       GNOME_GtkHTML_Editor_Listener(*_impl__get_listener)
1081 +       (PortableServer_Servant _servant, CORBA_Environment * ev));
1082 +   void
1083 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine__set_listener
1084 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1085 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1086 +       CORBA_Environment * ev,
1087 +       void (*_impl__set_listener) (PortableServer_Servant _servant,
1088 +                                   const GNOME_GtkHTML_Editor_Listener value,
1089 +                                   CORBA_Environment * ev));
1090 +   void
1091 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_runCommand
1092 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1093 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1094 +       CORBA_Environment * ev,
1095 +       CORBA_boolean(*_impl_runCommand) (PortableServer_Servant _servant,
1096 +                                        const CORBA_char * command,
1097 +                                        CORBA_Environment * ev));
1098 +   void
1099 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_getParagraphData
1100 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1101 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1102 +       CORBA_Environment * ev,
1103 +       CORBA_string(*_impl_getParagraphData) (PortableServer_Servant _servant,
1104 +                                             const CORBA_char * key,
1105 +                                             CORBA_Environment * ev));
1106 +   void
1107 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_setParagraphData
1108 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1109 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1110 +       CORBA_Environment * ev,
1111 +       void (*_impl_setParagraphData) (PortableServer_Servant _servant,
1112 +                                      const CORBA_char * key,
1113 +                                      const CORBA_char * value,
1114 +                                      CORBA_Environment * ev));
1115 +   void
1116 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_setObjectDataByType
1117 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1118 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1119 +       CORBA_Environment * ev,
1120 +       void (*_impl_setObjectDataByType) (PortableServer_Servant _servant,
1121 +                                         const CORBA_char * type_name,
1122 +                                         const CORBA_char * key,
1123 +                                         const CORBA_char * data,
1124 +                                         CORBA_Environment * ev));
1125 +   void
1126 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_searchByData
1127 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1128 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1129 +       CORBA_Environment * ev,
1130 +       CORBA_boolean(*_impl_searchByData) (PortableServer_Servant _servant,
1131 +                                          const CORBA_long level,
1132 +                                          const CORBA_char * klass,
1133 +                                          const CORBA_char * key,
1134 +                                          const CORBA_char * value,
1135 +                                          CORBA_Environment * ev));
1136 +   void
1137 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_isParagraphEmpty
1138 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1139 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1140 +       CORBA_Environment * ev,
1141 +       CORBA_boolean(*_impl_isParagraphEmpty) (PortableServer_Servant
1142 +                                              _servant,
1143 +                                              CORBA_Environment * ev));
1144 +   void
1145 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_isPreviousParagraphEmpty
1146 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1147 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1148 +       CORBA_Environment * ev,
1149 +       CORBA_boolean(*_impl_isPreviousParagraphEmpty) (PortableServer_Servant
1150 +                                                      _servant,
1151 +                                                      CORBA_Environment *
1152 +                                                      ev));
1153 +   void
1154 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_insertHTML
1155 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1156 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1157 +       CORBA_Environment * ev,
1158 +       void (*_impl_insertHTML) (PortableServer_Servant _servant,
1159 +                                const CORBA_char * html,
1160 +                                CORBA_Environment * ev));
1161 +   void
1162 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_freeze
1163 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1164 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1165 +       CORBA_Environment * ev,
1166 +       void (*_impl_freeze) (PortableServer_Servant _servant,
1167 +                            CORBA_Environment * ev));
1168 +   void
1169 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_thaw
1170 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1171 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1172 +       CORBA_Environment * ev,
1173 +       void (*_impl_thaw) (PortableServer_Servant _servant,
1174 +                          CORBA_Environment * ev));
1175 +   void
1176 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_undoBegin
1177 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1178 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1179 +       CORBA_Environment * ev,
1180 +       void (*_impl_undoBegin) (PortableServer_Servant _servant,
1181 +                               const CORBA_char * undo_name,
1182 +                               const CORBA_char * redo_name,
1183 +                               CORBA_Environment * ev));
1184 +   void
1185 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_undoEnd
1186 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1187 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1188 +       CORBA_Environment * ev,
1189 +       void (*_impl_undoEnd) (PortableServer_Servant _servant,
1190 +                             CORBA_Environment * ev));
1191 +   void
1192 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_ignoreWord
1193 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1194 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1195 +       CORBA_Environment * ev,
1196 +       void (*_impl_ignoreWord) (PortableServer_Servant _servant,
1197 +                                const CORBA_char * word,
1198 +                                CORBA_Environment * ev));
1199 +   void
1200 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_dropUndo
1201 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1202 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1203 +       CORBA_Environment * ev,
1204 +       void (*_impl_dropUndo) (PortableServer_Servant _servant,
1205 +                              CORBA_Environment * ev));
1206 +   void
1207 +      _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_hasUndo
1208 +      (POA_GNOME_GtkHTML_Editor_Engine * _ORBIT_servant,
1209 +       gpointer _ORBIT_retval, gpointer * _ORBIT_args, CORBA_Context ctx,
1210 +       CORBA_Environment * ev,
1211 +       CORBA_boolean(*_impl_hasUndo) (PortableServer_Servant _servant,
1212 +                                     CORBA_Environment * ev));
1213 +
1214 +/** stub prototypes **/
1215 +#define GNOME_GtkHTML_Editor_Listener_ref Bonobo_Unknown_ref
1216 +#define GNOME_GtkHTML_Editor_Listener_unref Bonobo_Unknown_unref
1217 +#define GNOME_GtkHTML_Editor_Listener_queryInterface Bonobo_Unknown_queryInterface
1218 +   CORBA_any
1219 +      *GNOME_GtkHTML_Editor_Listener_event(GNOME_GtkHTML_Editor_Listener _obj,
1220 +                                          const CORBA_char * name,
1221 +                                          const CORBA_any * arg,
1222 +                                          CORBA_Environment * ev);
1223 +#define GNOME_GtkHTML_Editor_Engine_ref Bonobo_Unknown_ref
1224 +#define GNOME_GtkHTML_Editor_Engine_unref Bonobo_Unknown_unref
1225 +#define GNOME_GtkHTML_Editor_Engine_queryInterface Bonobo_Unknown_queryInterface
1226 +   GNOME_GtkHTML_Editor_Listener
1227 +      GNOME_GtkHTML_Editor_Engine__get_listener(GNOME_GtkHTML_Editor_Engine
1228 +                                               _obj, CORBA_Environment * ev);
1229 +   void GNOME_GtkHTML_Editor_Engine__set_listener(GNOME_GtkHTML_Editor_Engine
1230 +                                                 _obj,
1231 +                                                 const
1232 +                                                 GNOME_GtkHTML_Editor_Listener
1233 +                                                 value,
1234 +                                                 CORBA_Environment * ev);
1235 +   CORBA_boolean
1236 +      GNOME_GtkHTML_Editor_Engine_runCommand(GNOME_GtkHTML_Editor_Engine _obj,
1237 +                                            const CORBA_char * command,
1238 +                                            CORBA_Environment * ev);
1239 +   CORBA_string
1240 +      GNOME_GtkHTML_Editor_Engine_getParagraphData(GNOME_GtkHTML_Editor_Engine
1241 +                                                  _obj,
1242 +                                                  const CORBA_char * key,
1243 +                                                  CORBA_Environment * ev);
1244 +   void
1245 +      GNOME_GtkHTML_Editor_Engine_setParagraphData(GNOME_GtkHTML_Editor_Engine
1246 +                                                  _obj,
1247 +                                                  const CORBA_char * key,
1248 +                                                  const CORBA_char * value,
1249 +                                                  CORBA_Environment * ev);
1250 +   void
1251 +      GNOME_GtkHTML_Editor_Engine_setObjectDataByType
1252 +      (GNOME_GtkHTML_Editor_Engine _obj, const CORBA_char * type_name,
1253 +       const CORBA_char * key, const CORBA_char * data,
1254 +       CORBA_Environment * ev);
1255 +   CORBA_boolean
1256 +      GNOME_GtkHTML_Editor_Engine_searchByData(GNOME_GtkHTML_Editor_Engine
1257 +                                              _obj, const CORBA_long level,
1258 +                                              const CORBA_char * klass,
1259 +                                              const CORBA_char * key,
1260 +                                              const CORBA_char * value,
1261 +                                              CORBA_Environment * ev);
1262 +   CORBA_boolean
1263 +      GNOME_GtkHTML_Editor_Engine_isParagraphEmpty(GNOME_GtkHTML_Editor_Engine
1264 +                                                  _obj,
1265 +                                                  CORBA_Environment * ev);
1266 +   CORBA_boolean
1267 +      GNOME_GtkHTML_Editor_Engine_isPreviousParagraphEmpty
1268 +      (GNOME_GtkHTML_Editor_Engine _obj, CORBA_Environment * ev);
1269 +   void GNOME_GtkHTML_Editor_Engine_insertHTML(GNOME_GtkHTML_Editor_Engine
1270 +                                              _obj, const CORBA_char * html,
1271 +                                              CORBA_Environment * ev);
1272 +   void GNOME_GtkHTML_Editor_Engine_freeze(GNOME_GtkHTML_Editor_Engine _obj,
1273 +                                          CORBA_Environment * ev);
1274 +   void GNOME_GtkHTML_Editor_Engine_thaw(GNOME_GtkHTML_Editor_Engine _obj,
1275 +                                        CORBA_Environment * ev);
1276 +   void GNOME_GtkHTML_Editor_Engine_undoBegin(GNOME_GtkHTML_Editor_Engine
1277 +                                             _obj,
1278 +                                             const CORBA_char * undo_name,
1279 +                                             const CORBA_char * redo_name,
1280 +                                             CORBA_Environment * ev);
1281 +   void GNOME_GtkHTML_Editor_Engine_undoEnd(GNOME_GtkHTML_Editor_Engine _obj,
1282 +                                           CORBA_Environment * ev);
1283 +   void GNOME_GtkHTML_Editor_Engine_ignoreWord(GNOME_GtkHTML_Editor_Engine
1284 +                                              _obj, const CORBA_char * word,
1285 +                                              CORBA_Environment * ev);
1286 +   void GNOME_GtkHTML_Editor_Engine_dropUndo(GNOME_GtkHTML_Editor_Engine _obj,
1287 +                                            CORBA_Environment * ev);
1288 +   CORBA_boolean
1289 +      GNOME_GtkHTML_Editor_Engine_hasUndo(GNOME_GtkHTML_Editor_Engine _obj,
1290 +                                         CORBA_Environment * ev);
1291 +
1292 +/** more internals **/
1293 +#if !defined(MARSHAL_IMPL_GNOME_GtkHTML_Editor_URLRequestEvent_0)
1294 +#define MARSHAL_IMPL_GNOME_GtkHTML_Editor_URLRequestEvent_0 'E'
1295 +#define MARSHAL_IMPL_GNOME_GtkHTML_Editor_URLRequestEvent_1 'd'
1296 +#define MARSHAL_IMPL_GNOME_GtkHTML_Editor_URLRequestEvent_2 'i'
1297 +#define MARSHAL_IMPL_GNOME_GtkHTML_Editor_URLRequestEvent_3 't'
1298 +#define MARSHAL_IMPL_GNOME_GtkHTML_Editor_URLRequestEvent_4 'o'
1299 +#define MARSHAL_IMPL_GNOME_GtkHTML_Editor_URLRequestEvent_5 'r'
1300 +#endif
1301 +#include <orbit/orb-core/orbit-interface.h>
1302 +
1303 +#ifdef ORBIT_IDL_C_IMODULE
1304 +   static
1305 +#else
1306 +   extern
1307 +#endif
1308 +   ORBit_IInterface GNOME_GtkHTML_Editor_Listener__iinterface;
1309 +#define GNOME_GtkHTML_Editor_Listener_IMETHODS_LEN 1
1310 +#ifdef ORBIT_IDL_C_IMODULE
1311 +   static
1312 +#else
1313 +   extern
1314 +#endif
1315 +   ORBit_IMethod
1316 +      GNOME_GtkHTML_Editor_Listener__imethods
1317 +      [GNOME_GtkHTML_Editor_Listener_IMETHODS_LEN];
1318 +#ifdef ORBIT_IDL_C_IMODULE
1319 +   static
1320 +#else
1321 +   extern
1322 +#endif
1323 +   ORBit_IInterface GNOME_GtkHTML_Editor_Engine__iinterface;
1324 +#define GNOME_GtkHTML_Editor_Engine_IMETHODS_LEN 17
1325 +#ifdef ORBIT_IDL_C_IMODULE
1326 +   static
1327 +#else
1328 +   extern
1329 +#endif
1330 +   ORBit_IMethod
1331 +      GNOME_GtkHTML_Editor_Engine__imethods
1332 +      [GNOME_GtkHTML_Editor_Engine_IMETHODS_LEN];
1333 +#ifdef __cplusplus
1334 +}
1335 +#endif                         /* __cplusplus */
1336 +
1337 +#ifndef EXCLUDE_ORBIT_H
1338 +#include <orbit/orbit.h>
1339 +
1340 +#endif                         /* EXCLUDE_ORBIT_H */
1341 +#endif
1342 +#undef ORBIT_IDL_SERIAL
1343 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gtkhtml_editor.c vim/src/gtkhtml_editor.c
1344 --- vimcopy/src/gtkhtml_editor.c        Wed Dec 31 18:00:00 1969
1345 +++ vim/src/gtkhtml_editor.c    Sat Jul 26 13:16:47 2003
1346 @@ -0,0 +1,189 @@
1347 +#include <bonobo.h>
1348 +
1349 +#include "gtkhtml_editor.h"
1350 +
1351 +static BonoboObjectClass *engine_parent_class;
1352 +
1353 +inline static EditorEngine *
1354 +gtkhtml_editor_engine_from_servant (PortableServer_Servant servant)
1355 +{
1356 +       return EDITOR_ENGINE (bonobo_object_from_servant (servant));
1357 +}
1358 +
1359 +static CORBA_char *
1360 +impl_get_paragraph_data (PortableServer_Servant servant, const CORBA_char * key, CORBA_Environment * ev)
1361 +{
1362 +       EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
1363 +}
1364 +
1365 +static void
1366 +impl_set_paragraph_data (PortableServer_Servant servant,
1367 +                        const CORBA_char * key, const CORBA_char * value,
1368 +                        CORBA_Environment * ev)
1369 +{
1370 +       EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
1371 +}
1372 +
1373 +static void
1374 +impl_set_object_data_by_type (PortableServer_Servant servant,
1375 +                        const CORBA_char * type_name, const CORBA_char * key, const CORBA_char * value,
1376 +                        CORBA_Environment * ev)
1377 +{
1378 +       EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
1379 +}
1380 +
1381 +static void
1382 +impl_set_listener (PortableServer_Servant servant, const GNOME_GtkHTML_Editor_Listener value, CORBA_Environment * ev)
1383 +{
1384 +       EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
1385 +
1386 +       bonobo_object_release_unref (e->listener, NULL);
1387 +       e->listener        = bonobo_object_dup_ref (value, NULL);
1388 +}
1389 +
1390 +static GNOME_GtkHTML_Editor_Listener
1391 +impl_get_listener (PortableServer_Servant servant, CORBA_Environment * ev)
1392 +{
1393 +       return gtkhtml_editor_engine_from_servant (servant)->listener;
1394 +}
1395 +
1396 +static CORBA_boolean
1397 +impl_run_command (PortableServer_Servant servant, const CORBA_char * command, CORBA_Environment * ev)
1398 +{
1399 +       EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
1400 +       printf ("command: %s\n", command);
1401 +       return CORBA_TRUE;
1402 +}
1403 +
1404 +static CORBA_boolean
1405 +impl_is_paragraph_empty (PortableServer_Servant servant, CORBA_Environment * ev)
1406 +{
1407 +       EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
1408 +       return CORBA_FALSE;
1409 +}
1410 +
1411 +static CORBA_boolean
1412 +impl_is_previous_paragraph_empty (PortableServer_Servant servant, CORBA_Environment * ev)
1413 +{
1414 +       EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
1415 +       return CORBA_FALSE;
1416 +}
1417 +
1418 +static void
1419 +impl_insert_html (PortableServer_Servant servant, const CORBA_char * html, CORBA_Environment * ev)
1420 +{
1421 +       printf ("impl_insert_html\n");
1422 +}
1423 +
1424 +static CORBA_boolean
1425 +impl_search_by_data (PortableServer_Servant servant, const CORBA_long level, const CORBA_char * klass,
1426 +                    const CORBA_char * key, const CORBA_char * value, CORBA_Environment * ev)
1427 +{
1428 +       return FALSE;
1429 +}
1430 +
1431 +static void
1432 +impl_freeze (PortableServer_Servant servant, CORBA_Environment * ev)
1433 +{
1434 +}
1435 +
1436 +static void
1437 +impl_thaw (PortableServer_Servant servant, CORBA_Environment * ev)
1438 +{
1439 +}
1440 +
1441 +static void
1442 +impl_undo_begin (PortableServer_Servant servant, const CORBA_char * undo_name, const CORBA_char * redo_name,
1443 +                CORBA_Environment * ev)
1444 +{
1445 +}
1446 +
1447 +static void
1448 +impl_undo_end (PortableServer_Servant servant, CORBA_Environment * ev)
1449 +{
1450 +}
1451 +
1452 +static void
1453 +impl_ignore_word (PortableServer_Servant servant, const CORBA_char * word, CORBA_Environment * ev)
1454 +{
1455 +       EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
1456 +}
1457 +
1458 +static CORBA_boolean
1459 +impl_has_undo (PortableServer_Servant servant, CORBA_Environment * ev)
1460 +{
1461 +       EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
1462 +
1463 +       printf ("hasUndo\n");
1464 +       return CORBA_FALSE;
1465 +}
1466 +
1467 +static void
1468 +impl_drop_undo (PortableServer_Servant servant, CORBA_Environment * ev)
1469 +{
1470 +       EditorEngine *e = gtkhtml_editor_engine_from_servant (servant);
1471 +
1472 +       printf ("dropUndo\n");
1473 +}
1474 +
1475 +static void
1476 +engine_object_finalize (GObject *object)
1477 +{
1478 +       EditorEngine *e = EDITOR_ENGINE (object);
1479 +
1480 +       bonobo_object_release_unref (e->listener, NULL);
1481 +
1482 +       G_OBJECT_CLASS (engine_parent_class)->finalize (object);
1483 +}
1484 +
1485 +static void
1486 +editor_engine_init (GObject *object)
1487 +{
1488 +       EditorEngine *e = EDITOR_ENGINE (object);
1489 +
1490 +       e->listener = CORBA_OBJECT_NIL;
1491 +}
1492 +
1493 +static void
1494 +editor_engine_class_init (EditorEngineClass *klass)
1495 +{
1496 +       GObjectClass *object_class = G_OBJECT_CLASS (klass);
1497 +       POA_GNOME_GtkHTML_Editor_Engine__epv *epv = &klass->epv;
1498 +
1499 +       engine_parent_class = g_type_class_peek_parent (klass);
1500 +       object_class->finalize = engine_object_finalize;
1501 +
1502 +       epv->_set_listener            = impl_set_listener;
1503 +       epv->_get_listener            = impl_get_listener;
1504 +       epv->setParagraphData         = impl_set_paragraph_data;
1505 +       epv->getParagraphData         = impl_get_paragraph_data;
1506 +       epv->setObjectDataByType      = impl_set_object_data_by_type;
1507 +       epv->runCommand               = impl_run_command;
1508 +       epv->isParagraphEmpty         = impl_is_paragraph_empty;
1509 +       epv->isPreviousParagraphEmpty = impl_is_previous_paragraph_empty;
1510 +       epv->searchByData             = impl_search_by_data;
1511 +       epv->insertHTML               = impl_insert_html;
1512 +       epv->freeze                   = impl_freeze;
1513 +       epv->thaw                     = impl_thaw;
1514 +       epv->undoBegin                = impl_undo_begin;
1515 +       epv->undoEnd                  = impl_undo_end;
1516 +       epv->ignoreWord               = impl_ignore_word;
1517 +       epv->hasUndo                  = impl_has_undo;
1518 +       epv->dropUndo                 = impl_drop_undo;
1519 +}
1520 +
1521 +BONOBO_TYPE_FUNC_FULL (
1522 +       EditorEngine,                  /* Glib class name */
1523 +       GNOME_GtkHTML_Editor_Engine,   /* CORBA interface name */
1524 +       BONOBO_TYPE_OBJECT,            /* parent type */
1525 +       editor_engine);                /* local prefix ie. 'echo'_class_init */
1526 +
1527 +EditorEngine *
1528 +editor_engine_new (void)
1529 +{
1530 +       EditorEngine *ee;
1531 +
1532 +       ee = g_object_new (EDITOR_ENGINE_TYPE, NULL);
1533 +
1534 +       return ee;
1535 +}
1536 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gtkhtml_editor.h vim/src/gtkhtml_editor.h
1537 --- vimcopy/src/gtkhtml_editor.h        Wed Dec 31 18:00:00 1969
1538 +++ vim/src/gtkhtml_editor.h    Sat Jul 26 13:16:47 2003
1539 @@ -0,0 +1,34 @@
1540 +#ifndef GTKHTML_ENGINE_H_
1541 +#define GTKHTML_ENGINE_H_
1542 +
1543 +G_BEGIN_DECLS
1544 +
1545 +typedef struct _EditorEngine EditorEngine;
1546 +
1547 +#include <gtk/gtktypeutils.h>
1548 +#include <bonobo/bonobo-object.h>
1549 +#include "gtkhtml.h"
1550 +
1551 +#define EDITOR_ENGINE_TYPE        (editor_engine_get_type ())
1552 +#define EDITOR_ENGINE(o)          (GTK_CHECK_CAST ((o), EDITOR_ENGINE_TYPE, EditorEngine))
1553 +#define EDITOR_ENGINE_CLASS(k)    (GTK_CHECK_CLASS_CAST((k), EDITOR_ENGINE_TYPE, EditorEngineClass))
1554 +#define IS_EDITOR_ENGINE(o)       (GTK_CHECK_TYPE ((o), EDITOR_ENGINE_TYPE))
1555 +#define IS_EDITOR_ENGINE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), EDITOR_ENGINE_TYPE))
1556 +
1557 +struct _EditorEngine {
1558 +       BonoboObject parent;
1559 +       GNOME_GtkHTML_Editor_Listener listener;
1560 +};
1561 +
1562 +typedef struct {
1563 +       BonoboObjectClass parent_class;
1564 +       POA_GNOME_GtkHTML_Editor_Engine__epv epv;
1565 +} EditorEngineClass;
1566 +
1567 +GtkType                               editor_engine_get_type   (void);
1568 +EditorEngine                         *editor_engine_new        (void);
1569 +POA_GNOME_GtkHTML_Editor_Engine__epv *editor_engine_get_epv    (void);
1570 +
1571 +G_END_DECLS
1572 +
1573 +#endif /* GTKHTML_ENGINE_H_ */
1574 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gtkhtml_editor_common.c vim/src/gtkhtml_editor_common.c
1575 --- vimcopy/src/gtkhtml_editor_common.c Wed Dec 31 18:00:00 1969
1576 +++ vim/src/gtkhtml_editor_common.c     Sat Jul 26 13:16:47 2003
1577 @@ -0,0 +1,306 @@
1578 +/*
1579 + * This file was generated by orbit-idl-2 - DO NOT EDIT!
1580 + */
1581 +
1582 +#include <string.h>
1583 +#define ORBIT2_STUBS_API
1584 +#define ORBIT_IDL_C_COMMON
1585 +#define Editor_COMMON
1586 +#include "gtkhtml.h"
1587 +
1588 +static const CORBA_unsigned_long ORBit_zero_int = 0;
1589 +
1590 +#if ( (TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_0 == 'E') \
1591 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_1 == 'd') \
1592 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_2 == 'i') \
1593 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_3 == 't') \
1594 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_4 == 'o') \
1595 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Listener_5 == 'r') \
1596 +) && !defined(TC_DEF_TC_GNOME_GtkHTML_Editor_Listener)
1597 +#define TC_DEF_TC_GNOME_GtkHTML_Editor_Listener 1
1598 +#ifdef ORBIT_IDL_C_IMODULE_Editor
1599 +static
1600 +#endif
1601 +const struct CORBA_TypeCode_struct TC_GNOME_GtkHTML_Editor_Listener_struct = {
1602 +   {&ORBit_TypeCode_epv, ORBIT_REFCOUNT_STATIC},
1603 +   CORBA_tk_objref,
1604 +   0,
1605 +   0,
1606 +   ORBIT_ALIGNOF_CORBA_POINTER,
1607 +   0,
1608 +   0,
1609 +   NULL,
1610 +   CORBA_OBJECT_NIL,
1611 +   "Listener",
1612 +   "IDL:GNOME/GtkHTML/Editor/Listener:1.0",
1613 +   NULL,
1614 +   NULL,
1615 +   -1,
1616 +   0,
1617 +   0, 0
1618 +};
1619 +#endif
1620 +#if ( (TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_0 == 'E') \
1621 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_1 == 'd') \
1622 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_2 == 'i') \
1623 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_3 == 't') \
1624 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_4 == 'o') \
1625 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_Engine_5 == 'r') \
1626 +) && !defined(TC_DEF_TC_GNOME_GtkHTML_Editor_Engine)
1627 +#define TC_DEF_TC_GNOME_GtkHTML_Editor_Engine 1
1628 +#ifdef ORBIT_IDL_C_IMODULE_Editor
1629 +static
1630 +#endif
1631 +const struct CORBA_TypeCode_struct TC_GNOME_GtkHTML_Editor_Engine_struct = {
1632 +   {&ORBit_TypeCode_epv, ORBIT_REFCOUNT_STATIC},
1633 +   CORBA_tk_objref,
1634 +   0,
1635 +   0,
1636 +   ORBIT_ALIGNOF_CORBA_POINTER,
1637 +   0,
1638 +   0,
1639 +   NULL,
1640 +   CORBA_OBJECT_NIL,
1641 +   "Engine",
1642 +   "IDL:GNOME/GtkHTML/Editor/Engine:1.0",
1643 +   NULL,
1644 +   NULL,
1645 +   -1,
1646 +   0,
1647 +   0, 0
1648 +};
1649 +#endif
1650 +#if ( (TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_0 == 'E') \
1651 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_1 == 'd') \
1652 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_2 == 'i') \
1653 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_3 == 't') \
1654 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_4 == 'o') \
1655 +&& (TC_IMPL_TC_GNOME_GtkHTML_Editor_URLRequestEvent_5 == 'r') \
1656 +) && !defined(TC_DEF_TC_GNOME_GtkHTML_Editor_URLRequestEvent)
1657 +#define TC_DEF_TC_GNOME_GtkHTML_Editor_URLRequestEvent 1
1658 +static const char *anon_subnames_array6[] = { "url", "stream" };
1659 +static const CORBA_TypeCode anon_subtypes_array7[] =
1660 +   { (CORBA_TypeCode) & TC_CORBA_string_struct,
1661 +      (CORBA_TypeCode) & TC_Bonobo_Stream_struct };
1662 +
1663 +#ifdef ORBIT_IDL_C_IMODULE_Editor
1664 +static
1665 +#endif
1666 +const struct CORBA_TypeCode_struct
1667 +   TC_GNOME_GtkHTML_Editor_URLRequestEvent_struct = {
1668 +   {&ORBit_TypeCode_epv, ORBIT_REFCOUNT_STATIC},
1669 +   CORBA_tk_struct,
1670 +   0,
1671 +   0,
1672 +   ORBIT_ALIGNOF_CORBA_POINTER,
1673 +   0,
1674 +   2,
1675 +   (CORBA_TypeCode *) anon_subtypes_array7,
1676 +   CORBA_OBJECT_NIL,
1677 +   "URLRequestEvent",
1678 +   "IDL:GNOME/GtkHTML/Editor/URLRequestEvent:1.0",
1679 +   (char **) anon_subnames_array6,
1680 +   NULL,
1681 +   -1,
1682 +   0,
1683 +   0, 0
1684 +};
1685 +#endif
1686 +
1687 +#ifndef ORBIT_IDL_C_IMODULE_Editor
1688 +CORBA_unsigned_long GNOME_GtkHTML_Editor_Listener__classid = 0;
1689 +#endif
1690 +
1691 +#ifndef ORBIT_IDL_C_IMODULE_Editor
1692 +CORBA_unsigned_long GNOME_GtkHTML_Editor_Engine__classid = 0;
1693 +#endif
1694 +
1695 +/* Interface type data */
1696 +
1697 +static ORBit_IArg GNOME_GtkHTML_Editor_Listener_event__arginfo[] = {
1698 +   {TC_CORBA_string, ORBit_I_ARG_IN, "name"},
1699 +   {TC_CORBA_any, ORBit_I_ARG_IN, "arg"}
1700 +};
1701 +
1702 +#ifdef ORBIT_IDL_C_IMODULE_Editor
1703 +static
1704 +#endif
1705 +ORBit_IMethod GNOME_GtkHTML_Editor_Listener__imethods[] = {
1706 +   {
1707 +    {2, 2, GNOME_GtkHTML_Editor_Listener_event__arginfo, FALSE},
1708 +    {0, 0, NULL, FALSE},
1709 +    {0, 0, NULL, FALSE},
1710 +    TC_CORBA_any, "event", 5,
1711 +    0}
1712 +};
1713 +static CORBA_string GNOME_GtkHTML_Editor_Listener__base_itypes[] = {
1714 +   "IDL:Bonobo/Unknown:1.0",
1715 +   "IDL:omg.org/CORBA/Object:1.0"
1716 +};
1717 +
1718 +#ifdef ORBIT_IDL_C_IMODULE_Editor
1719 +static
1720 +#endif
1721 +ORBit_IInterface GNOME_GtkHTML_Editor_Listener__iinterface = {
1722 +   TC_GNOME_GtkHTML_Editor_Listener, {1, 1,
1723 +                                     GNOME_GtkHTML_Editor_Listener__imethods,
1724 +                                     FALSE},
1725 +   {2, 2, GNOME_GtkHTML_Editor_Listener__base_itypes, FALSE}
1726 +};
1727 +
1728 +static ORBit_IArg GNOME_GtkHTML_Editor_Engine__set_listener__arginfo[] = {
1729 +   {TC_GNOME_GtkHTML_Editor_Listener, ORBit_I_ARG_IN, "value"}
1730 +};
1731 +static ORBit_IArg GNOME_GtkHTML_Editor_Engine_runCommand__arginfo[] = {
1732 +   {TC_CORBA_string, ORBit_I_ARG_IN, "command"}
1733 +};
1734 +static ORBit_IArg GNOME_GtkHTML_Editor_Engine_getParagraphData__arginfo[] = {
1735 +   {TC_CORBA_string, ORBit_I_ARG_IN, "key"}
1736 +};
1737 +static ORBit_IArg GNOME_GtkHTML_Editor_Engine_setParagraphData__arginfo[] = {
1738 +   {TC_CORBA_string, ORBit_I_ARG_IN, "key"},
1739 +   {TC_CORBA_string, ORBit_I_ARG_IN, "value"}
1740 +};
1741 +static ORBit_IArg GNOME_GtkHTML_Editor_Engine_setObjectDataByType__arginfo[] = {
1742 +   {TC_CORBA_string, ORBit_I_ARG_IN, "type_name"},
1743 +   {TC_CORBA_string, ORBit_I_ARG_IN, "key"},
1744 +   {TC_CORBA_string, ORBit_I_ARG_IN, "data"}
1745 +};
1746 +static ORBit_IArg GNOME_GtkHTML_Editor_Engine_searchByData__arginfo[] = {
1747 +   {TC_CORBA_long, ORBit_I_ARG_IN | ORBit_I_COMMON_FIXED_SIZE, "level"},
1748 +   {TC_CORBA_string, ORBit_I_ARG_IN, "klass"},
1749 +   {TC_CORBA_string, ORBit_I_ARG_IN, "key"},
1750 +   {TC_CORBA_string, ORBit_I_ARG_IN, "value"}
1751 +};
1752 +static ORBit_IArg GNOME_GtkHTML_Editor_Engine_insertHTML__arginfo[] = {
1753 +   {TC_CORBA_string, ORBit_I_ARG_IN, "html"}
1754 +};
1755 +static ORBit_IArg GNOME_GtkHTML_Editor_Engine_undoBegin__arginfo[] = {
1756 +   {TC_CORBA_string, ORBit_I_ARG_IN, "undo_name"},
1757 +   {TC_CORBA_string, ORBit_I_ARG_IN, "redo_name"}
1758 +};
1759 +static ORBit_IArg GNOME_GtkHTML_Editor_Engine_ignoreWord__arginfo[] = {
1760 +   {TC_CORBA_string, ORBit_I_ARG_IN, "word"}
1761 +};
1762 +
1763 +#ifdef ORBIT_IDL_C_IMODULE_Editor
1764 +static
1765 +#endif
1766 +ORBit_IMethod GNOME_GtkHTML_Editor_Engine__imethods[] = {
1767 +   {
1768 +    {0, 0, NULL, FALSE},
1769 +    {0, 0, NULL, FALSE},
1770 +    {0, 0, NULL, FALSE},
1771 +    TC_GNOME_GtkHTML_Editor_Listener, "_get_listener", 13,
1772 +    0}
1773 +   , {
1774 +      {1, 1, GNOME_GtkHTML_Editor_Engine__set_listener__arginfo, FALSE},
1775 +      {0, 0, NULL, FALSE},
1776 +      {0, 0, NULL, FALSE},
1777 +      TC_void, "_set_listener", 13,
1778 +      0}
1779 +   , {
1780 +      {1, 1, GNOME_GtkHTML_Editor_Engine_runCommand__arginfo, FALSE},
1781 +      {0, 0, NULL, FALSE},
1782 +      {0, 0, NULL, FALSE},
1783 +      TC_CORBA_boolean, "runCommand", 10,
1784 +      0 | ORBit_I_COMMON_FIXED_SIZE}
1785 +   , {
1786 +      {1, 1, GNOME_GtkHTML_Editor_Engine_getParagraphData__arginfo, FALSE},
1787 +      {0, 0, NULL, FALSE},
1788 +      {0, 0, NULL, FALSE},
1789 +      TC_CORBA_string, "getParagraphData", 16,
1790 +      0}
1791 +   , {
1792 +      {2, 2, GNOME_GtkHTML_Editor_Engine_setParagraphData__arginfo, FALSE},
1793 +      {0, 0, NULL, FALSE},
1794 +      {0, 0, NULL, FALSE},
1795 +      TC_void, "setParagraphData", 16,
1796 +      0}
1797 +   , {
1798 +      {3, 3, GNOME_GtkHTML_Editor_Engine_setObjectDataByType__arginfo, FALSE},
1799 +      {0, 0, NULL, FALSE},
1800 +      {0, 0, NULL, FALSE},
1801 +      TC_void, "setObjectDataByType", 19,
1802 +      0}
1803 +   , {
1804 +      {4, 4, GNOME_GtkHTML_Editor_Engine_searchByData__arginfo, FALSE},
1805 +      {0, 0, NULL, FALSE},
1806 +      {0, 0, NULL, FALSE},
1807 +      TC_CORBA_boolean, "searchByData", 12,
1808 +      0 | ORBit_I_COMMON_FIXED_SIZE}
1809 +   , {
1810 +      {0, 0, NULL, FALSE},
1811 +      {0, 0, NULL, FALSE},
1812 +      {0, 0, NULL, FALSE},
1813 +      TC_CORBA_boolean, "isParagraphEmpty", 16,
1814 +      0 | ORBit_I_COMMON_FIXED_SIZE}
1815 +   , {
1816 +      {0, 0, NULL, FALSE},
1817 +      {0, 0, NULL, FALSE},
1818 +      {0, 0, NULL, FALSE},
1819 +      TC_CORBA_boolean, "isPreviousParagraphEmpty", 24,
1820 +      0 | ORBit_I_COMMON_FIXED_SIZE}
1821 +   , {
1822 +      {1, 1, GNOME_GtkHTML_Editor_Engine_insertHTML__arginfo, FALSE},
1823 +      {0, 0, NULL, FALSE},
1824 +      {0, 0, NULL, FALSE},
1825 +      TC_void, "insertHTML", 10,
1826 +      0}
1827 +   , {
1828 +      {0, 0, NULL, FALSE},
1829 +      {0, 0, NULL, FALSE},
1830 +      {0, 0, NULL, FALSE},
1831 +      TC_void, "freeze", 6,
1832 +      0}
1833 +   , {
1834 +      {0, 0, NULL, FALSE},
1835 +      {0, 0, NULL, FALSE},
1836 +      {0, 0, NULL, FALSE},
1837 +      TC_void, "thaw", 4,
1838 +      0}
1839 +   , {
1840 +      {2, 2, GNOME_GtkHTML_Editor_Engine_undoBegin__arginfo, FALSE},
1841 +      {0, 0, NULL, FALSE},
1842 +      {0, 0, NULL, FALSE},
1843 +      TC_void, "undoBegin", 9,
1844 +      0}
1845 +   , {
1846 +      {0, 0, NULL, FALSE},
1847 +      {0, 0, NULL, FALSE},
1848 +      {0, 0, NULL, FALSE},
1849 +      TC_void, "undoEnd", 7,
1850 +      0}
1851 +   , {
1852 +      {1, 1, GNOME_GtkHTML_Editor_Engine_ignoreWord__arginfo, FALSE},
1853 +      {0, 0, NULL, FALSE},
1854 +      {0, 0, NULL, FALSE},
1855 +      TC_void, "ignoreWord", 10,
1856 +      0}
1857 +   , {
1858 +      {0, 0, NULL, FALSE},
1859 +      {0, 0, NULL, FALSE},
1860 +      {0, 0, NULL, FALSE},
1861 +      TC_void, "dropUndo", 8,
1862 +      0}
1863 +   , {
1864 +      {0, 0, NULL, FALSE},
1865 +      {0, 0, NULL, FALSE},
1866 +      {0, 0, NULL, FALSE},
1867 +      TC_CORBA_boolean, "hasUndo", 7,
1868 +      0 | ORBit_I_COMMON_FIXED_SIZE}
1869 +};
1870 +static CORBA_string GNOME_GtkHTML_Editor_Engine__base_itypes[] = {
1871 +   "IDL:Bonobo/Unknown:1.0",
1872 +   "IDL:omg.org/CORBA/Object:1.0"
1873 +};
1874 +
1875 +#ifdef ORBIT_IDL_C_IMODULE_Editor
1876 +static
1877 +#endif
1878 +ORBit_IInterface GNOME_GtkHTML_Editor_Engine__iinterface = {
1879 +   TC_GNOME_GtkHTML_Editor_Engine, {17, 17,
1880 +                                   GNOME_GtkHTML_Editor_Engine__imethods,
1881 +                                   FALSE},
1882 +   {2, 2, GNOME_GtkHTML_Editor_Engine__base_itypes, FALSE}
1883 +};
1884 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gtkhtml_editor_skels.c vim/src/gtkhtml_editor_skels.c
1885 --- vimcopy/src/gtkhtml_editor_skels.c  Wed Dec 31 18:00:00 1969
1886 +++ vim/src/gtkhtml_editor_skels.c      Sat Jul 26 13:16:47 2003
1887 @@ -0,0 +1,658 @@
1888 +/*
1889 + * This file was generated by orbit-idl-2 - DO NOT EDIT!
1890 + */
1891 +
1892 +#include <string.h>
1893 +#define ORBIT2_STUBS_API
1894 +#include "gtkhtml.h"
1895 +
1896 +void
1897 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Listener_event
1898 +   (POA_GNOME_GtkHTML_Editor_Listener * _o_servant, gpointer _o_retval,
1899 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
1900 +    CORBA_any * (*_impl_event) (PortableServer_Servant _servant,
1901 +                               const CORBA_char * name,
1902 +                               const CORBA_any * arg,
1903 +                               CORBA_Environment * ev))
1904 +{
1905 +   *(CORBA_any * *)_o_retval =
1906 +      _impl_event(_o_servant, *(const CORBA_char * *) _o_args[0],
1907 +                 (const CORBA_any *) _o_args[1], _o_ev);
1908 +}
1909 +
1910 +void
1911 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine__get_listener
1912 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
1913 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
1914 +    GNOME_GtkHTML_Editor_Listener(*_impl__get_listener)
1915 +    (PortableServer_Servant _servant, CORBA_Environment * ev))
1916 +{
1917 +   *(GNOME_GtkHTML_Editor_Listener *) _o_retval =
1918 +      _impl__get_listener(_o_servant, _o_ev);
1919 +}
1920 +
1921 +void
1922 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine__set_listener
1923 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
1924 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
1925 +    void (*_impl__set_listener) (PortableServer_Servant _servant,
1926 +                                const GNOME_GtkHTML_Editor_Listener value,
1927 +                                CORBA_Environment * ev))
1928 +{
1929 +   _impl__set_listener(_o_servant,
1930 +                      *(const GNOME_GtkHTML_Editor_Listener *) _o_args[0],
1931 +                      _o_ev);
1932 +}
1933 +
1934 +void
1935 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_runCommand
1936 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
1937 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
1938 +    CORBA_boolean(*_impl_runCommand) (PortableServer_Servant _servant,
1939 +                                     const CORBA_char * command,
1940 +                                     CORBA_Environment * ev))
1941 +{
1942 +   *(CORBA_boolean *) _o_retval =
1943 +      _impl_runCommand(_o_servant, *(const CORBA_char * *) _o_args[0], _o_ev);
1944 +}
1945 +
1946 +void
1947 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_getParagraphData
1948 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
1949 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
1950 +    CORBA_string(*_impl_getParagraphData) (PortableServer_Servant _servant,
1951 +                                          const CORBA_char * key,
1952 +                                          CORBA_Environment * ev))
1953 +{
1954 +   *(CORBA_string *) _o_retval =
1955 +      _impl_getParagraphData(_o_servant, *(const CORBA_char * *) _o_args[0],
1956 +                            _o_ev);
1957 +}
1958 +
1959 +void
1960 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_setParagraphData
1961 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
1962 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
1963 +    void (*_impl_setParagraphData) (PortableServer_Servant _servant,
1964 +                                   const CORBA_char * key,
1965 +                                   const CORBA_char * value,
1966 +                                   CORBA_Environment * ev))
1967 +{
1968 +   _impl_setParagraphData(_o_servant, *(const CORBA_char * *) _o_args[0],
1969 +                         *(const CORBA_char * *) _o_args[1], _o_ev);
1970 +}
1971 +
1972 +void
1973 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_setObjectDataByType
1974 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
1975 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
1976 +    void (*_impl_setObjectDataByType) (PortableServer_Servant _servant,
1977 +                                      const CORBA_char * type_name,
1978 +                                      const CORBA_char * key,
1979 +                                      const CORBA_char * data,
1980 +                                      CORBA_Environment * ev))
1981 +{
1982 +   _impl_setObjectDataByType(_o_servant, *(const CORBA_char * *) _o_args[0],
1983 +                            *(const CORBA_char * *) _o_args[1],
1984 +                            *(const CORBA_char * *) _o_args[2], _o_ev);
1985 +}
1986 +
1987 +void
1988 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_searchByData
1989 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
1990 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
1991 +    CORBA_boolean(*_impl_searchByData) (PortableServer_Servant _servant,
1992 +                                       const CORBA_long level,
1993 +                                       const CORBA_char * klass,
1994 +                                       const CORBA_char * key,
1995 +                                       const CORBA_char * value,
1996 +                                       CORBA_Environment * ev))
1997 +{
1998 +   *(CORBA_boolean *) _o_retval =
1999 +      _impl_searchByData(_o_servant, *(const CORBA_long *) _o_args[0],
2000 +                        *(const CORBA_char * *) _o_args[1],
2001 +                        *(const CORBA_char * *) _o_args[2],
2002 +                        *(const CORBA_char * *) _o_args[3], _o_ev);
2003 +}
2004 +
2005 +void
2006 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_isParagraphEmpty
2007 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
2008 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
2009 +    CORBA_boolean(*_impl_isParagraphEmpty) (PortableServer_Servant _servant,
2010 +                                           CORBA_Environment * ev))
2011 +{
2012 +   *(CORBA_boolean *) _o_retval = _impl_isParagraphEmpty(_o_servant, _o_ev);
2013 +}
2014 +
2015 +void
2016 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_isPreviousParagraphEmpty
2017 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
2018 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
2019 +    CORBA_boolean(*_impl_isPreviousParagraphEmpty) (PortableServer_Servant
2020 +                                                   _servant,
2021 +                                                   CORBA_Environment * ev))
2022 +{
2023 +   *(CORBA_boolean *) _o_retval =
2024 +      _impl_isPreviousParagraphEmpty(_o_servant, _o_ev);
2025 +}
2026 +
2027 +void
2028 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_insertHTML
2029 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
2030 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
2031 +    void (*_impl_insertHTML) (PortableServer_Servant _servant,
2032 +                             const CORBA_char * html,
2033 +                             CORBA_Environment * ev))
2034 +{
2035 +   _impl_insertHTML(_o_servant, *(const CORBA_char * *) _o_args[0], _o_ev);
2036 +}
2037 +
2038 +void
2039 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_freeze
2040 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
2041 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
2042 +    void (*_impl_freeze) (PortableServer_Servant _servant,
2043 +                         CORBA_Environment * ev))
2044 +{
2045 +   _impl_freeze(_o_servant, _o_ev);
2046 +}
2047 +
2048 +void
2049 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_thaw
2050 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
2051 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
2052 +    void (*_impl_thaw) (PortableServer_Servant _servant,
2053 +                       CORBA_Environment * ev))
2054 +{
2055 +   _impl_thaw(_o_servant, _o_ev);
2056 +}
2057 +
2058 +void
2059 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_undoBegin
2060 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
2061 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
2062 +    void (*_impl_undoBegin) (PortableServer_Servant _servant,
2063 +                            const CORBA_char * undo_name,
2064 +                            const CORBA_char * redo_name,
2065 +                            CORBA_Environment * ev))
2066 +{
2067 +   _impl_undoBegin(_o_servant, *(const CORBA_char * *) _o_args[0],
2068 +                  *(const CORBA_char * *) _o_args[1], _o_ev);
2069 +}
2070 +
2071 +void
2072 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_undoEnd
2073 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
2074 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
2075 +    void (*_impl_undoEnd) (PortableServer_Servant _servant,
2076 +                          CORBA_Environment * ev))
2077 +{
2078 +   _impl_undoEnd(_o_servant, _o_ev);
2079 +}
2080 +
2081 +void
2082 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_ignoreWord
2083 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
2084 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
2085 +    void (*_impl_ignoreWord) (PortableServer_Servant _servant,
2086 +                             const CORBA_char * word,
2087 +                             CORBA_Environment * ev))
2088 +{
2089 +   _impl_ignoreWord(_o_servant, *(const CORBA_char * *) _o_args[0], _o_ev);
2090 +}
2091 +
2092 +void
2093 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_dropUndo
2094 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
2095 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
2096 +    void (*_impl_dropUndo) (PortableServer_Servant _servant,
2097 +                           CORBA_Environment * ev))
2098 +{
2099 +   _impl_dropUndo(_o_servant, _o_ev);
2100 +}
2101 +
2102 +void
2103 +_ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_hasUndo
2104 +   (POA_GNOME_GtkHTML_Editor_Engine * _o_servant, gpointer _o_retval,
2105 +    gpointer * _o_args, CORBA_Context _o_ctx, CORBA_Environment * _o_ev,
2106 +    CORBA_boolean(*_impl_hasUndo) (PortableServer_Servant _servant,
2107 +                                  CORBA_Environment * ev))
2108 +{
2109 +   *(CORBA_boolean *) _o_retval = _impl_hasUndo(_o_servant, _o_ev);
2110 +}
2111 +static ORBitSmallSkeleton
2112 +get_skel_small_GNOME_GtkHTML_Editor_Listener(POA_GNOME_GtkHTML_Editor_Listener
2113 +                                            * servant, const char *opname,
2114 +                                            gpointer * m_data,
2115 +                                            gpointer * impl)
2116 +{
2117 +   switch (opname[0]) {
2118 +     case 'e':
2119 +      if (strcmp((opname + 1), "vent"))
2120 +        break;
2121 +      *impl =
2122 +        (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Listener_epv->event;
2123 +      *m_data =
2124 +        (gpointer) & GNOME_GtkHTML_Editor_Listener__iinterface.methods.
2125 +        _buffer[0];
2126 +      return (ORBitSmallSkeleton)
2127 +        _ORBIT_skel_small_GNOME_GtkHTML_Editor_Listener_event;
2128 +      break;
2129 +     case 'q':
2130 +      if (strcmp((opname + 1), "ueryInterface"))
2131 +        break;
2132 +      *impl = (gpointer) servant->vepv->Bonobo_Unknown_epv->queryInterface;
2133 +      *m_data = (gpointer) & Bonobo_Unknown__iinterface.methods._buffer[2];
2134 +      return (ORBitSmallSkeleton)
2135 +        _ORBIT_skel_small_Bonobo_Unknown_queryInterface;
2136 +      break;
2137 +     case 'r':
2138 +      if (strcmp((opname + 1), "ef"))
2139 +        break;
2140 +      *impl = (gpointer) servant->vepv->Bonobo_Unknown_epv->ref;
2141 +      *m_data = (gpointer) & Bonobo_Unknown__iinterface.methods._buffer[0];
2142 +      return (ORBitSmallSkeleton) _ORBIT_skel_small_Bonobo_Unknown_ref;
2143 +      break;
2144 +     case 'u':
2145 +      if (strcmp((opname + 1), "nref"))
2146 +        break;
2147 +      *impl = (gpointer) servant->vepv->Bonobo_Unknown_epv->unref;
2148 +      *m_data = (gpointer) & Bonobo_Unknown__iinterface.methods._buffer[1];
2149 +      return (ORBitSmallSkeleton) _ORBIT_skel_small_Bonobo_Unknown_unref;
2150 +      break;
2151 +     default:
2152 +      break;
2153 +   }
2154 +   return NULL;
2155 +}
2156 +
2157 +void
2158 +POA_GNOME_GtkHTML_Editor_Listener__init(PortableServer_Servant servant,
2159 +                                       CORBA_Environment * env)
2160 +{
2161 +   static PortableServer_ClassInfo class_info =
2162 +      { NULL,
2163 +(ORBit_small_impl_finder) & get_skel_small_GNOME_GtkHTML_Editor_Listener,
2164 +        "IDL:GNOME/GtkHTML/Editor/Listener:1.0",
2165 +        &GNOME_GtkHTML_Editor_Listener__classid, NULL,
2166 +        &GNOME_GtkHTML_Editor_Listener__iinterface };
2167 +   POA_GNOME_GtkHTML_Editor_Listener__vepv *fakevepv = NULL;
2168 +
2169 +   if (((PortableServer_ServantBase *) servant)->vepv[0]->finalize == 0) {
2170 +      ((PortableServer_ServantBase *) servant)->vepv[0]->finalize =
2171 +        POA_GNOME_GtkHTML_Editor_Listener__fini;
2172 +   }
2173 +   PortableServer_ServantBase__init(((PortableServer_ServantBase *) servant),
2174 +                                   env);
2175 +   POA_Bonobo_Unknown__init(servant, env);
2176 +   ORBit_classinfo_register(&class_info);
2177 +   ORBIT_SERVANT_SET_CLASSINFO(servant, &class_info);
2178 +
2179 +   if (!class_info.vepvmap) {
2180 +      class_info.vepvmap =
2181 +        g_new0(ORBit_VepvIdx, GNOME_GtkHTML_Editor_Listener__classid + 1);
2182 +      class_info.vepvmap[Bonobo_Unknown__classid] =
2183 +        (((char *) &(fakevepv->Bonobo_Unknown_epv)) -
2184 +         ((char *) (fakevepv))) / sizeof(GFunc);
2185 +      class_info.vepvmap[GNOME_GtkHTML_Editor_Listener__classid] =
2186 +        (((char *) &(fakevepv->GNOME_GtkHTML_Editor_Listener_epv)) -
2187 +         ((char *) (fakevepv))) / sizeof(GFunc);
2188 +   }
2189 +}
2190 +
2191 +void
2192 +POA_GNOME_GtkHTML_Editor_Listener__fini(PortableServer_Servant servant,
2193 +                                       CORBA_Environment * env)
2194 +{
2195 +   POA_Bonobo_Unknown__fini(servant, env);
2196 +   PortableServer_ServantBase__fini(servant, env);
2197 +}
2198 +
2199 +static ORBitSmallSkeleton
2200 +get_skel_small_GNOME_GtkHTML_Editor_Engine(POA_GNOME_GtkHTML_Editor_Engine *
2201 +                                          servant, const char *opname,
2202 +                                          gpointer * m_data, gpointer * impl)
2203 +{
2204 +   switch (opname[0]) {
2205 +     case '_':
2206 +      switch (opname[1]) {
2207 +       case 'g':
2208 +        if (strcmp((opname + 2), "et_listener"))
2209 +           break;
2210 +        *impl =
2211 +           (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
2212 +           _get_listener;
2213 +        *m_data =
2214 +           (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
2215 +           _buffer[0];
2216 +        return (ORBitSmallSkeleton)
2217 +           _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine__get_listener;
2218 +        break;
2219 +       case 's':
2220 +        if (strcmp((opname + 2), "et_listener"))
2221 +           break;
2222 +        *impl =
2223 +           (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
2224 +           _set_listener;
2225 +        *m_data =
2226 +           (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
2227 +           _buffer[1];
2228 +        return (ORBitSmallSkeleton)
2229 +           _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine__set_listener;
2230 +        break;
2231 +       default:
2232 +        break;
2233 +      }
2234 +      break;
2235 +     case 'd':
2236 +      if (strcmp((opname + 1), "ropUndo"))
2237 +        break;
2238 +      *impl =
2239 +        (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->dropUndo;
2240 +      *m_data =
2241 +        (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
2242 +        _buffer[15];
2243 +      return (ORBitSmallSkeleton)
2244 +        _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_dropUndo;
2245 +      break;
2246 +     case 'f':
2247 +      if (strcmp((opname + 1), "reeze"))
2248 +        break;
2249 +      *impl =
2250 +        (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->freeze;
2251 +      *m_data =
2252 +        (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
2253 +        _buffer[10];
2254 +      return (ORBitSmallSkeleton)
2255 +        _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_freeze;
2256 +      break;
2257 +     case 'g':
2258 +      if (strcmp((opname + 1), "etParagraphData"))
2259 +        break;
2260 +      *impl =
2261 +        (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
2262 +        getParagraphData;
2263 +      *m_data =
2264 +        (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
2265 +        _buffer[3];
2266 +      return (ORBitSmallSkeleton)
2267 +        _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_getParagraphData;
2268 +      break;
2269 +     case 'h':
2270 +      if (strcmp((opname + 1), "asUndo"))
2271 +        break;
2272 +      *impl =
2273 +        (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->hasUndo;
2274 +      *m_data =
2275 +        (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
2276 +        _buffer[16];
2277 +      return (ORBitSmallSkeleton)
2278 +        _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_hasUndo;
2279 +      break;
2280 +     case 'i':
2281 +      switch (opname[1]) {
2282 +       case 'g':
2283 +        if (strcmp((opname + 2), "noreWord"))
2284 +           break;
2285 +        *impl =
2286 +           (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
2287 +           ignoreWord;
2288 +        *m_data =
2289 +           (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
2290 +           _buffer[14];
2291 +        return (ORBitSmallSkeleton)
2292 +           _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_ignoreWord;
2293 +        break;
2294 +       case 'n':
2295 +        if (strcmp((opname + 2), "sertHTML"))
2296 +           break;
2297 +        *impl =
2298 +           (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
2299 +           insertHTML;
2300 +        *m_data =
2301 +           (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
2302 +           _buffer[9];
2303 +        return (ORBitSmallSkeleton)
2304 +           _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_insertHTML;
2305 +        break;
2306 +       case 's':
2307 +        switch (opname[2]) {
2308 +          case 'P':
2309 +           switch (opname[3]) {
2310 +             case 'a':
2311 +              if (strcmp((opname + 4), "ragraphEmpty"))
2312 +                 break;
2313 +              *impl =
2314 +                 (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
2315 +                 isParagraphEmpty;
2316 +              *m_data =
2317 +                 (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.
2318 +                 methods._buffer[7];
2319 +              return (ORBitSmallSkeleton)
2320 +                 _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_isParagraphEmpty;
2321 +              break;
2322 +             case 'r':
2323 +              if (strcmp((opname + 4), "eviousParagraphEmpty"))
2324 +                 break;
2325 +              *impl =
2326 +                 (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
2327 +                 isPreviousParagraphEmpty;
2328 +              *m_data =
2329 +                 (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.
2330 +                 methods._buffer[8];
2331 +              return (ORBitSmallSkeleton)
2332 +                 _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_isPreviousParagraphEmpty;
2333 +              break;
2334 +             default:
2335 +              break;
2336 +           }
2337 +           break;
2338 +          default:
2339 +           break;
2340 +        }
2341 +        break;
2342 +       default:
2343 +        break;
2344 +      }
2345 +      break;
2346 +     case 'q':
2347 +      if (strcmp((opname + 1), "ueryInterface"))
2348 +        break;
2349 +      *impl = (gpointer) servant->vepv->Bonobo_Unknown_epv->queryInterface;
2350 +      *m_data = (gpointer) & Bonobo_Unknown__iinterface.methods._buffer[2];
2351 +      return (ORBitSmallSkeleton)
2352 +        _ORBIT_skel_small_Bonobo_Unknown_queryInterface;
2353 +      break;
2354 +     case 'r':
2355 +      switch (opname[1]) {
2356 +       case 'e':
2357 +        if (strcmp((opname + 2), "f"))
2358 +           break;
2359 +        *impl = (gpointer) servant->vepv->Bonobo_Unknown_epv->ref;
2360 +        *m_data = (gpointer) & Bonobo_Unknown__iinterface.methods._buffer[0];
2361 +        return (ORBitSmallSkeleton) _ORBIT_skel_small_Bonobo_Unknown_ref;
2362 +        break;
2363 +       case 'u':
2364 +        if (strcmp((opname + 2), "nCommand"))
2365 +           break;
2366 +        *impl =
2367 +           (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
2368 +           runCommand;
2369 +        *m_data =
2370 +           (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
2371 +           _buffer[2];
2372 +        return (ORBitSmallSkeleton)
2373 +           _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_runCommand;
2374 +        break;
2375 +       default:
2376 +        break;
2377 +      }
2378 +      break;
2379 +     case 's':
2380 +      switch (opname[1]) {
2381 +       case 'e':
2382 +        switch (opname[2]) {
2383 +          case 'a':
2384 +           if (strcmp((opname + 3), "rchByData"))
2385 +              break;
2386 +           *impl =
2387 +              (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
2388 +              searchByData;
2389 +           *m_data =
2390 +              (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
2391 +              _buffer[6];
2392 +           return (ORBitSmallSkeleton)
2393 +              _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_searchByData;
2394 +           break;
2395 +          case 't':
2396 +           switch (opname[3]) {
2397 +             case 'O':
2398 +              if (strcmp((opname + 4), "bjectDataByType"))
2399 +                 break;
2400 +              *impl =
2401 +                 (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
2402 +                 setObjectDataByType;
2403 +              *m_data =
2404 +                 (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.
2405 +                 methods._buffer[5];
2406 +              return (ORBitSmallSkeleton)
2407 +                 _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_setObjectDataByType;
2408 +              break;
2409 +             case 'P':
2410 +              if (strcmp((opname + 4), "aragraphData"))
2411 +                 break;
2412 +              *impl =
2413 +                 (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->
2414 +                 setParagraphData;
2415 +              *m_data =
2416 +                 (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.
2417 +                 methods._buffer[4];
2418 +              return (ORBitSmallSkeleton)
2419 +                 _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_setParagraphData;
2420 +              break;
2421 +             default:
2422 +              break;
2423 +           }
2424 +           break;
2425 +          default:
2426 +           break;
2427 +        }
2428 +        break;
2429 +       default:
2430 +        break;
2431 +      }
2432 +      break;
2433 +     case 't':
2434 +      if (strcmp((opname + 1), "haw"))
2435 +        break;
2436 +      *impl = (gpointer) servant->vepv->GNOME_GtkHTML_Editor_Engine_epv->thaw;
2437 +      *m_data =
2438 +        (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.methods.
2439 +        _buffer[11];
2440 +      return (ORBitSmallSkeleton)
2441 +        _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_thaw;
2442 +      break;
2443 +     case 'u':
2444 +      switch (opname[1]) {
2445 +       case 'n':
2446 +        switch (opname[2]) {
2447 +          case 'd':
2448 +           switch (opname[3]) {
2449 +             case 'o':
2450 +              switch (opname[4]) {
2451 +                case 'B':
2452 +                 if (strcmp((opname + 5), "egin"))
2453 +                    break;
2454 +                 *impl =
2455 +                    (gpointer) servant->vepv->
2456 +                    GNOME_GtkHTML_Editor_Engine_epv->undoBegin;
2457 +                 *m_data =
2458 +                    (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.
2459 +                    methods._buffer[12];
2460 +                 return (ORBitSmallSkeleton)
2461 +                    _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_undoBegin;
2462 +                 break;
2463 +                case 'E':
2464 +                 if (strcmp((opname + 5), "nd"))
2465 +                    break;
2466 +                 *impl =
2467 +                    (gpointer) servant->vepv->
2468 +                    GNOME_GtkHTML_Editor_Engine_epv->undoEnd;
2469 +                 *m_data =
2470 +                    (gpointer) & GNOME_GtkHTML_Editor_Engine__iinterface.
2471 +                    methods._buffer[13];
2472 +                 return (ORBitSmallSkeleton)
2473 +                    _ORBIT_skel_small_GNOME_GtkHTML_Editor_Engine_undoEnd;
2474 +                 break;
2475 +                default:
2476 +                 break;
2477 +              }
2478 +              break;
2479 +             default:
2480 +              break;
2481 +           }
2482 +           break;
2483 +          case 'r':
2484 +           if (strcmp((opname + 3), "ef"))
2485 +              break;
2486 +           *impl = (gpointer) servant->vepv->Bonobo_Unknown_epv->unref;
2487 +           *m_data =
2488 +              (gpointer) & Bonobo_Unknown__iinterface.methods._buffer[1];
2489 +           return (ORBitSmallSkeleton)
2490 +              _ORBIT_skel_small_Bonobo_Unknown_unref;
2491 +           break;
2492 +          default:
2493 +           break;
2494 +        }
2495 +        break;
2496 +       default:
2497 +        break;
2498 +      }
2499 +      break;
2500 +     default:
2501 +      break;
2502 +   }
2503 +   return NULL;
2504 +}
2505 +
2506 +void
2507 +POA_GNOME_GtkHTML_Editor_Engine__init(PortableServer_Servant servant,
2508 +                                     CORBA_Environment * env)
2509 +{
2510 +   static PortableServer_ClassInfo class_info =
2511 +      { NULL,
2512 +(ORBit_small_impl_finder) & get_skel_small_GNOME_GtkHTML_Editor_Engine, "IDL:GNOME/GtkHTML/Editor/Engine:1.0",
2513 +        &GNOME_GtkHTML_Editor_Engine__classid, NULL,
2514 +        &GNOME_GtkHTML_Editor_Engine__iinterface };
2515 +   POA_GNOME_GtkHTML_Editor_Engine__vepv *fakevepv = NULL;
2516 +
2517 +   if (((PortableServer_ServantBase *) servant)->vepv[0]->finalize == 0) {
2518 +      ((PortableServer_ServantBase *) servant)->vepv[0]->finalize =
2519 +        POA_GNOME_GtkHTML_Editor_Engine__fini;
2520 +   }
2521 +   PortableServer_ServantBase__init(((PortableServer_ServantBase *) servant),
2522 +                                   env);
2523 +   POA_Bonobo_Unknown__init(servant, env);
2524 +   ORBit_classinfo_register(&class_info);
2525 +   ORBIT_SERVANT_SET_CLASSINFO(servant, &class_info);
2526 +
2527 +   if (!class_info.vepvmap) {
2528 +      class_info.vepvmap =
2529 +        g_new0(ORBit_VepvIdx, GNOME_GtkHTML_Editor_Engine__classid + 1);
2530 +      class_info.vepvmap[Bonobo_Unknown__classid] =
2531 +        (((char *) &(fakevepv->Bonobo_Unknown_epv)) -
2532 +         ((char *) (fakevepv))) / sizeof(GFunc);
2533 +      class_info.vepvmap[GNOME_GtkHTML_Editor_Engine__classid] =
2534 +        (((char *) &(fakevepv->GNOME_GtkHTML_Editor_Engine_epv)) -
2535 +         ((char *) (fakevepv))) / sizeof(GFunc);
2536 +   }
2537 +}
2538 +
2539 +void
2540 +POA_GNOME_GtkHTML_Editor_Engine__fini(PortableServer_Servant servant,
2541 +                                     CORBA_Environment * env)
2542 +{
2543 +   POA_Bonobo_Unknown__fini(servant, env);
2544 +   PortableServer_ServantBase__fini(servant, env);
2545 +}
2546 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gtkhtml_editor_stubs.c vim/src/gtkhtml_editor_stubs.c
2547 --- vimcopy/src/gtkhtml_editor_stubs.c  Wed Dec 31 18:00:00 1969
2548 +++ vim/src/gtkhtml_editor_stubs.c      Sat Jul 26 13:16:47 2003
2549 @@ -0,0 +1,496 @@
2550 +/*
2551 + * This file was generated by orbit-idl-2 - DO NOT EDIT!
2552 + */
2553 +
2554 +#include <string.h>
2555 +#define ORBIT2_STUBS_API
2556 +#include "gtkhtml.h"
2557 +
2558 +CORBA_any *
2559 +GNOME_GtkHTML_Editor_Listener_event(GNOME_GtkHTML_Editor_Listener _obj,
2560 +                                   const CORBA_char * name,
2561 +                                   const CORBA_any * arg,
2562 +                                   CORBA_Environment * ev)
2563 +{
2564 +   CORBA_any *_ORBIT_retval;
2565 +   POA_GNOME_GtkHTML_Editor_Listener__epv *_ORBIT_epv;
2566 +
2567 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2568 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Listener__classid) &&
2569 +       (_ORBIT_epv =
2570 +       (POA_GNOME_GtkHTML_Editor_Listener__epv *) ORBIT_STUB_GetEpv(_obj,
2571 +                                                                    GNOME_GtkHTML_Editor_Listener__classid))->
2572 +       event) {
2573 +      ORBIT_STUB_PreCall(_obj);
2574 +      _ORBIT_retval =
2575 +        _ORBIT_epv->event(ORBIT_STUB_GetServant(_obj), name, arg, ev);
2576 +      ORBIT_STUB_PostCall(_obj);
2577 +   } else {                    /* remote marshal */
2578 +      gpointer _args[2];
2579 +
2580 +      _args[0] = (gpointer) & name;
2581 +      _args[1] = (gpointer) arg;
2582 +      ORBit_small_invoke_stub_n(_obj,
2583 +                               &GNOME_GtkHTML_Editor_Listener__iinterface.
2584 +                               methods, 0, &_ORBIT_retval, _args, NULL, ev);
2585 +
2586 +   }
2587 +   return _ORBIT_retval;
2588 +}
2589 +
2590 +GNOME_GtkHTML_Editor_Listener
2591 +GNOME_GtkHTML_Editor_Engine__get_listener(GNOME_GtkHTML_Editor_Engine _obj,
2592 +                                         CORBA_Environment * ev)
2593 +{
2594 +   GNOME_GtkHTML_Editor_Listener _ORBIT_retval;
2595 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2596 +
2597 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2598 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2599 +       (_ORBIT_epv =
2600 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2601 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2602 +       _get_listener) {
2603 +      ORBIT_STUB_PreCall(_obj);
2604 +      _ORBIT_retval =
2605 +        _ORBIT_epv->_get_listener(ORBIT_STUB_GetServant(_obj), ev);
2606 +      ORBIT_STUB_PostCall(_obj);
2607 +   } else {                    /* remote marshal */
2608 +      ORBit_small_invoke_stub_n(_obj,
2609 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2610 +                               methods, 0, &_ORBIT_retval, NULL, NULL, ev);
2611 +
2612 +   }
2613 +   return _ORBIT_retval;
2614 +}
2615 +
2616 +void
2617 +GNOME_GtkHTML_Editor_Engine__set_listener(GNOME_GtkHTML_Editor_Engine _obj,
2618 +                                         const GNOME_GtkHTML_Editor_Listener
2619 +                                         value, CORBA_Environment * ev)
2620 +{
2621 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2622 +
2623 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2624 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2625 +       (_ORBIT_epv =
2626 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2627 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2628 +       _set_listener) {
2629 +      ORBIT_STUB_PreCall(_obj);
2630 +      _ORBIT_epv->_set_listener(ORBIT_STUB_GetServant(_obj), value, ev);
2631 +      ORBIT_STUB_PostCall(_obj);
2632 +   } else {                    /* remote marshal */
2633 +      gpointer _args[1];
2634 +
2635 +      _args[0] = (gpointer) & value;
2636 +      ORBit_small_invoke_stub_n(_obj,
2637 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2638 +                               methods, 1, NULL, _args, NULL, ev);
2639 +
2640 +   }
2641 +}
2642 +CORBA_boolean
2643 +GNOME_GtkHTML_Editor_Engine_runCommand(GNOME_GtkHTML_Editor_Engine _obj,
2644 +                                      const CORBA_char * command,
2645 +                                      CORBA_Environment * ev)
2646 +{
2647 +   CORBA_boolean _ORBIT_retval;
2648 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2649 +
2650 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2651 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2652 +       (_ORBIT_epv =
2653 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2654 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2655 +       runCommand) {
2656 +      ORBIT_STUB_PreCall(_obj);
2657 +      _ORBIT_retval =
2658 +        _ORBIT_epv->runCommand(ORBIT_STUB_GetServant(_obj), command, ev);
2659 +      ORBIT_STUB_PostCall(_obj);
2660 +   } else {                    /* remote marshal */
2661 +      gpointer _args[1];
2662 +
2663 +      _args[0] = (gpointer) & command;
2664 +      ORBit_small_invoke_stub_n(_obj,
2665 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2666 +                               methods, 2, &_ORBIT_retval, _args, NULL, ev);
2667 +
2668 +   }
2669 +   return _ORBIT_retval;
2670 +}
2671 +
2672 +CORBA_string
2673 +GNOME_GtkHTML_Editor_Engine_getParagraphData(GNOME_GtkHTML_Editor_Engine _obj,
2674 +                                            const CORBA_char * key,
2675 +                                            CORBA_Environment * ev)
2676 +{
2677 +   CORBA_string _ORBIT_retval;
2678 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2679 +
2680 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2681 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2682 +       (_ORBIT_epv =
2683 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2684 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2685 +       getParagraphData) {
2686 +      ORBIT_STUB_PreCall(_obj);
2687 +      _ORBIT_retval =
2688 +        _ORBIT_epv->getParagraphData(ORBIT_STUB_GetServant(_obj), key, ev);
2689 +      ORBIT_STUB_PostCall(_obj);
2690 +   } else {                    /* remote marshal */
2691 +      gpointer _args[1];
2692 +
2693 +      _args[0] = (gpointer) & key;
2694 +      ORBit_small_invoke_stub_n(_obj,
2695 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2696 +                               methods, 3, &_ORBIT_retval, _args, NULL, ev);
2697 +
2698 +   }
2699 +   return _ORBIT_retval;
2700 +}
2701 +
2702 +void
2703 +GNOME_GtkHTML_Editor_Engine_setParagraphData(GNOME_GtkHTML_Editor_Engine _obj,
2704 +                                            const CORBA_char * key,
2705 +                                            const CORBA_char * value,
2706 +                                            CORBA_Environment * ev)
2707 +{
2708 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2709 +
2710 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2711 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2712 +       (_ORBIT_epv =
2713 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2714 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2715 +       setParagraphData) {
2716 +      ORBIT_STUB_PreCall(_obj);
2717 +      _ORBIT_epv->setParagraphData(ORBIT_STUB_GetServant(_obj), key, value,
2718 +                                  ev);
2719 +      ORBIT_STUB_PostCall(_obj);
2720 +   } else {                    /* remote marshal */
2721 +      gpointer _args[2];
2722 +
2723 +      _args[0] = (gpointer) & key;
2724 +      _args[1] = (gpointer) & value;
2725 +      ORBit_small_invoke_stub_n(_obj,
2726 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2727 +                               methods, 4, NULL, _args, NULL, ev);
2728 +
2729 +   }
2730 +}
2731 +void
2732 +GNOME_GtkHTML_Editor_Engine_setObjectDataByType(GNOME_GtkHTML_Editor_Engine
2733 +                                               _obj,
2734 +                                               const CORBA_char * type_name,
2735 +                                               const CORBA_char * key,
2736 +                                               const CORBA_char * data,
2737 +                                               CORBA_Environment * ev)
2738 +{
2739 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2740 +
2741 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2742 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2743 +       (_ORBIT_epv =
2744 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2745 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2746 +       setObjectDataByType) {
2747 +      ORBIT_STUB_PreCall(_obj);
2748 +      _ORBIT_epv->setObjectDataByType(ORBIT_STUB_GetServant(_obj), type_name,
2749 +                                     key, data, ev);
2750 +      ORBIT_STUB_PostCall(_obj);
2751 +   } else {                    /* remote marshal */
2752 +      gpointer _args[3];
2753 +
2754 +      _args[0] = (gpointer) & type_name;
2755 +      _args[1] = (gpointer) & key;
2756 +      _args[2] = (gpointer) & data;
2757 +      ORBit_small_invoke_stub_n(_obj,
2758 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2759 +                               methods, 5, NULL, _args, NULL, ev);
2760 +
2761 +   }
2762 +}
2763 +CORBA_boolean
2764 +GNOME_GtkHTML_Editor_Engine_searchByData(GNOME_GtkHTML_Editor_Engine _obj,
2765 +                                        const CORBA_long level,
2766 +                                        const CORBA_char * klass,
2767 +                                        const CORBA_char * key,
2768 +                                        const CORBA_char * value,
2769 +                                        CORBA_Environment * ev)
2770 +{
2771 +   CORBA_boolean _ORBIT_retval;
2772 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2773 +
2774 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2775 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2776 +       (_ORBIT_epv =
2777 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2778 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2779 +       searchByData) {
2780 +      ORBIT_STUB_PreCall(_obj);
2781 +      _ORBIT_retval =
2782 +        _ORBIT_epv->searchByData(ORBIT_STUB_GetServant(_obj), level, klass,
2783 +                                 key, value, ev);
2784 +      ORBIT_STUB_PostCall(_obj);
2785 +   } else {                    /* remote marshal */
2786 +      gpointer _args[4];
2787 +
2788 +      _args[0] = (gpointer) & level;
2789 +      _args[1] = (gpointer) & klass;
2790 +      _args[2] = (gpointer) & key;
2791 +      _args[3] = (gpointer) & value;
2792 +      ORBit_small_invoke_stub_n(_obj,
2793 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2794 +                               methods, 6, &_ORBIT_retval, _args, NULL, ev);
2795 +
2796 +   }
2797 +   return _ORBIT_retval;
2798 +}
2799 +
2800 +CORBA_boolean
2801 +GNOME_GtkHTML_Editor_Engine_isParagraphEmpty(GNOME_GtkHTML_Editor_Engine _obj,
2802 +                                            CORBA_Environment * ev)
2803 +{
2804 +   CORBA_boolean _ORBIT_retval;
2805 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2806 +
2807 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2808 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2809 +       (_ORBIT_epv =
2810 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2811 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2812 +       isParagraphEmpty) {
2813 +      ORBIT_STUB_PreCall(_obj);
2814 +      _ORBIT_retval =
2815 +        _ORBIT_epv->isParagraphEmpty(ORBIT_STUB_GetServant(_obj), ev);
2816 +      ORBIT_STUB_PostCall(_obj);
2817 +   } else {                    /* remote marshal */
2818 +      ORBit_small_invoke_stub_n(_obj,
2819 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2820 +                               methods, 7, &_ORBIT_retval, NULL, NULL, ev);
2821 +
2822 +   }
2823 +   return _ORBIT_retval;
2824 +}
2825 +
2826 +CORBA_boolean
2827 +GNOME_GtkHTML_Editor_Engine_isPreviousParagraphEmpty
2828 +   (GNOME_GtkHTML_Editor_Engine _obj, CORBA_Environment * ev)
2829 +{
2830 +   CORBA_boolean _ORBIT_retval;
2831 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2832 +
2833 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2834 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2835 +       (_ORBIT_epv =
2836 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2837 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2838 +       isPreviousParagraphEmpty) {
2839 +      ORBIT_STUB_PreCall(_obj);
2840 +      _ORBIT_retval =
2841 +        _ORBIT_epv->isPreviousParagraphEmpty(ORBIT_STUB_GetServant(_obj),
2842 +                                             ev);
2843 +      ORBIT_STUB_PostCall(_obj);
2844 +   } else {                    /* remote marshal */
2845 +      ORBit_small_invoke_stub_n(_obj,
2846 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2847 +                               methods, 8, &_ORBIT_retval, NULL, NULL, ev);
2848 +
2849 +   }
2850 +   return _ORBIT_retval;
2851 +}
2852 +
2853 +void
2854 +GNOME_GtkHTML_Editor_Engine_insertHTML(GNOME_GtkHTML_Editor_Engine _obj,
2855 +                                      const CORBA_char * html,
2856 +                                      CORBA_Environment * ev)
2857 +{
2858 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2859 +
2860 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2861 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2862 +       (_ORBIT_epv =
2863 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2864 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2865 +       insertHTML) {
2866 +      ORBIT_STUB_PreCall(_obj);
2867 +      _ORBIT_epv->insertHTML(ORBIT_STUB_GetServant(_obj), html, ev);
2868 +      ORBIT_STUB_PostCall(_obj);
2869 +   } else {                    /* remote marshal */
2870 +      gpointer _args[1];
2871 +
2872 +      _args[0] = (gpointer) & html;
2873 +      ORBit_small_invoke_stub_n(_obj,
2874 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2875 +                               methods, 9, NULL, _args, NULL, ev);
2876 +
2877 +   }
2878 +}
2879 +void
2880 +GNOME_GtkHTML_Editor_Engine_freeze(GNOME_GtkHTML_Editor_Engine _obj,
2881 +                                  CORBA_Environment * ev)
2882 +{
2883 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2884 +
2885 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2886 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2887 +       (_ORBIT_epv =
2888 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2889 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2890 +       freeze) {
2891 +      ORBIT_STUB_PreCall(_obj);
2892 +      _ORBIT_epv->freeze(ORBIT_STUB_GetServant(_obj), ev);
2893 +      ORBIT_STUB_PostCall(_obj);
2894 +   } else {                    /* remote marshal */
2895 +      ORBit_small_invoke_stub_n(_obj,
2896 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2897 +                               methods, 10, NULL, NULL, NULL, ev);
2898 +
2899 +   }
2900 +}
2901 +void
2902 +GNOME_GtkHTML_Editor_Engine_thaw(GNOME_GtkHTML_Editor_Engine _obj,
2903 +                                CORBA_Environment * ev)
2904 +{
2905 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2906 +
2907 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2908 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2909 +       (_ORBIT_epv =
2910 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2911 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2912 +       thaw) {
2913 +      ORBIT_STUB_PreCall(_obj);
2914 +      _ORBIT_epv->thaw(ORBIT_STUB_GetServant(_obj), ev);
2915 +      ORBIT_STUB_PostCall(_obj);
2916 +   } else {                    /* remote marshal */
2917 +      ORBit_small_invoke_stub_n(_obj,
2918 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2919 +                               methods, 11, NULL, NULL, NULL, ev);
2920 +
2921 +   }
2922 +}
2923 +void
2924 +GNOME_GtkHTML_Editor_Engine_undoBegin(GNOME_GtkHTML_Editor_Engine _obj,
2925 +                                     const CORBA_char * undo_name,
2926 +                                     const CORBA_char * redo_name,
2927 +                                     CORBA_Environment * ev)
2928 +{
2929 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2930 +
2931 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2932 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2933 +       (_ORBIT_epv =
2934 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2935 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2936 +       undoBegin) {
2937 +      ORBIT_STUB_PreCall(_obj);
2938 +      _ORBIT_epv->undoBegin(ORBIT_STUB_GetServant(_obj), undo_name, redo_name,
2939 +                           ev);
2940 +      ORBIT_STUB_PostCall(_obj);
2941 +   } else {                    /* remote marshal */
2942 +      gpointer _args[2];
2943 +
2944 +      _args[0] = (gpointer) & undo_name;
2945 +      _args[1] = (gpointer) & redo_name;
2946 +      ORBit_small_invoke_stub_n(_obj,
2947 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2948 +                               methods, 12, NULL, _args, NULL, ev);
2949 +
2950 +   }
2951 +}
2952 +void
2953 +GNOME_GtkHTML_Editor_Engine_undoEnd(GNOME_GtkHTML_Editor_Engine _obj,
2954 +                                   CORBA_Environment * ev)
2955 +{
2956 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2957 +
2958 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2959 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2960 +       (_ORBIT_epv =
2961 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2962 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2963 +       undoEnd) {
2964 +      ORBIT_STUB_PreCall(_obj);
2965 +      _ORBIT_epv->undoEnd(ORBIT_STUB_GetServant(_obj), ev);
2966 +      ORBIT_STUB_PostCall(_obj);
2967 +   } else {                    /* remote marshal */
2968 +      ORBit_small_invoke_stub_n(_obj,
2969 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2970 +                               methods, 13, NULL, NULL, NULL, ev);
2971 +
2972 +   }
2973 +}
2974 +void
2975 +GNOME_GtkHTML_Editor_Engine_ignoreWord(GNOME_GtkHTML_Editor_Engine _obj,
2976 +                                      const CORBA_char * word,
2977 +                                      CORBA_Environment * ev)
2978 +{
2979 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
2980 +
2981 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
2982 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
2983 +       (_ORBIT_epv =
2984 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
2985 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
2986 +       ignoreWord) {
2987 +      ORBIT_STUB_PreCall(_obj);
2988 +      _ORBIT_epv->ignoreWord(ORBIT_STUB_GetServant(_obj), word, ev);
2989 +      ORBIT_STUB_PostCall(_obj);
2990 +   } else {                    /* remote marshal */
2991 +      gpointer _args[1];
2992 +
2993 +      _args[0] = (gpointer) & word;
2994 +      ORBit_small_invoke_stub_n(_obj,
2995 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
2996 +                               methods, 14, NULL, _args, NULL, ev);
2997 +
2998 +   }
2999 +}
3000 +void
3001 +GNOME_GtkHTML_Editor_Engine_dropUndo(GNOME_GtkHTML_Editor_Engine _obj,
3002 +                                    CORBA_Environment * ev)
3003 +{
3004 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
3005 +
3006 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
3007 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
3008 +       (_ORBIT_epv =
3009 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
3010 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
3011 +       dropUndo) {
3012 +      ORBIT_STUB_PreCall(_obj);
3013 +      _ORBIT_epv->dropUndo(ORBIT_STUB_GetServant(_obj), ev);
3014 +      ORBIT_STUB_PostCall(_obj);
3015 +   } else {                    /* remote marshal */
3016 +      ORBit_small_invoke_stub_n(_obj,
3017 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
3018 +                               methods, 15, NULL, NULL, NULL, ev);
3019 +
3020 +   }
3021 +}
3022 +CORBA_boolean
3023 +GNOME_GtkHTML_Editor_Engine_hasUndo(GNOME_GtkHTML_Editor_Engine _obj,
3024 +                                   CORBA_Environment * ev)
3025 +{
3026 +   CORBA_boolean _ORBIT_retval;
3027 +   POA_GNOME_GtkHTML_Editor_Engine__epv *_ORBIT_epv;
3028 +
3029 +   if (ORBit_small_flags & ORBIT_SMALL_FAST_LOCALS &&
3030 +       ORBIT_STUB_IsBypass(_obj, GNOME_GtkHTML_Editor_Engine__classid) &&
3031 +       (_ORBIT_epv =
3032 +       (POA_GNOME_GtkHTML_Editor_Engine__epv *) ORBIT_STUB_GetEpv(_obj,
3033 +                                                                  GNOME_GtkHTML_Editor_Engine__classid))->
3034 +       hasUndo) {
3035 +      ORBIT_STUB_PreCall(_obj);
3036 +      _ORBIT_retval = _ORBIT_epv->hasUndo(ORBIT_STUB_GetServant(_obj), ev);
3037 +      ORBIT_STUB_PostCall(_obj);
3038 +   } else {                    /* remote marshal */
3039 +      ORBit_small_invoke_stub_n(_obj,
3040 +                               &GNOME_GtkHTML_Editor_Engine__iinterface.
3041 +                               methods, 16, &_ORBIT_retval, NULL, NULL, ev);
3042 +
3043 +   }
3044 +   return _ORBIT_retval;
3045 +}
3046 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gui.c vim/src/gui.c
3047 --- vimcopy/src/gui.c   Mon May 19 09:43:43 2003
3048 +++ vim/src/gui.c       Sat Jul 26 13:16:47 2003
3049 @@ -439,8 +439,12 @@
3050       * Create the GUI shell.
3051       */
3052      gui.in_use = TRUE;         /* Must be set after menus have been set up */
3053 +#ifdef FEAT_GUI_COMPONENT
3054 +    vim_bonobo_wait_for_instantiation();
3055 +#else
3056      if (gui_mch_init() == FAIL)
3057         goto error;
3058 +#endif
3059  
3060      /* Avoid a delay for an error message that was printed in the terminal
3061       * where Vim was started. */
3062 @@ -4055,8 +4059,8 @@
3063  
3064  #ifdef FEAT_GUI_GTK
3065         /* Need to wake up the main loop */
3066 -       if (gtk_main_level() > 0)
3067 -           gtk_main_quit();
3068 +       if (MAIN_LEVEL() > 0)
3069 +           MAIN_QUIT();
3070  #endif
3071      }
3072  }
3073 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gui.h vim/src/gui.h
3074 --- vimcopy/src/gui.h   Tue May  6 12:02:22 2003
3075 +++ vim/src/gui.h       Sat Jul 26 13:16:47 2003
3076 @@ -35,6 +35,21 @@
3077  # include <gtk/gtk.h>
3078  #endif
3079  
3080 +# if defined(FEAT_GUI_GNOME) && defined(FEAT_GUI_COMPONENT)
3081 +    #include "libbonoboui.h"
3082 +    #include "vim_bonobo_main.h"
3083 +    #include "vim_bonobo_factory.h"
3084 +    #define MAIN vim_bonobo_main
3085 +    #define MAIN_LEVEL vim_bonobo_main_level
3086 +    #define MAIN_QUIT vim_bonobo_main_quit
3087 +    #define MAIN_ITERATION_DO vim_bonobo_main_iteration_do
3088 +# else
3089 +    #define MAIN gtk_main
3090 +    #define MAIN_LEVEL gtk_main_level
3091 +    #define MAIN_QUIT gtk_main_quit
3092 +    #define MAIN_ITERATION_DO gtk_main_iteration_do
3093 +#endif
3094 +
3095  #ifdef FEAT_GUI_BEOS
3096  # include "gui_beos.h"
3097  #endif
3098 @@ -392,6 +407,11 @@
3099      GtkWidget  *toolbar;           /* toolbar */
3100  # endif
3101  # ifdef FEAT_GUI_GNOME
3102 +#  ifdef FEAT_GUI_COMPONENT
3103 +    GtkWidget     *vbox;
3104 +    BonoboPlug    *plug;
3105 +    BonoboControl *control;
3106 +#  endif
3107      GtkWidget  *menubar_h;         /* menubar handle */
3108      GtkWidget  *toolbar_h;         /* toolbar handle */
3109  # endif
3110 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gui_gtk.c vim/src/gui_gtk.c
3111 --- vimcopy/src/gui_gtk.c       Tue Jun  3 13:26:44 2003
3112 +++ vim/src/gui_gtk.c   Sat Jul 26 14:19:38 2003
3113 @@ -39,7 +39,7 @@
3114  
3115  #include "vim.h"
3116  
3117 -#ifdef FEAT_GUI_GNOME
3118 +#if 0
3119  /* Gnome redefines _() and N_().  Grrr... */
3120  # ifdef _
3121  #  undef _
3122 @@ -545,9 +545,302 @@
3123  
3124  # endif /* !HAVE_GTK2 */
3125  
3126 +#ifdef FEAT_GUI_COMPONENT
3127 +
3128 +
3129 +static void
3130 +verb_activate( BonoboUIComponent *uic, gpointer data, const char *cname )
3131 +{
3132 +    gui_menu_cb((vimmenu_T *) data);
3133 +
3134 +    /* make sure the menu action is taken immediately */
3135 +    if (MAIN_LEVEL() > 0)
3136 +       MAIN_QUIT();
3137 +}
3138 +
3139 +static void g_string_append_normalized_name( GString * dest, char_u * name )
3140 +{
3141 +    gchar * cur;
3142 +
3143 +    if( name == NULL ) 
3144 +    {
3145 +        return;
3146 +    }
3147 +    cur = name;
3148 +    while( *cur != '\0' ) {
3149 +        gunichar wc;
3150 +        wc = g_utf8_get_char(cur);
3151 +        if( g_unichar_isalnum( wc ) ) {
3152 +            g_string_append_unichar( dest, wc );
3153 +        }
3154 +        cur = g_utf8_next_char(cur);
3155 +    }
3156 +}
3157 +
3158 +static
3159 +char * menu_xml_path( vimmenu_T * menu, int only_parent )
3160 +{
3161 +    GString * normname;
3162 +    GString * path;
3163 +    char * retpath;
3164 +    
3165 +    normname = g_string_sized_new( 64 );
3166 +    path = g_string_sized_new( 128 );
3167 +    while( 1 ) {
3168 +        if( menu_is_toolbar(menu->name) ) {
3169 +            /* "Toolbar" is a standard Bonobo UI element, but Vim uses "ToolBar", so we
3170 +             * have to check for this. */
3171 +            g_string_prepend( path, "/Toolbar");
3172 +        } else {
3173 +            g_string_assign( normname, "" );
3174 +            g_string_append_normalized_name( normname, menu->dname );
3175 +            g_string_prepend( path, normname->str );
3176 +            g_string_prepend( path, "/" );
3177 +        }
3178 +        if( menu->parent == NULL ) {
3179 +            if( menu && menu_is_menubar( menu->name ) ) {
3180 +                g_string_prepend( path, "/menu" );
3181 +            }
3182 +            break;
3183 +        }
3184 +        menu = menu->parent;
3185 +    }
3186 +    g_string_free( normname, TRUE );
3187 +    retpath = path->str;
3188 +    g_string_free( path, FALSE );
3189 +
3190 +    if( only_parent ) {
3191 +        gchar * slash;
3192 +        slash = g_strrstr(retpath, "/");
3193 +        if( slash == retpath )
3194 +            slash[1] = '\0';
3195 +        else if( slash ) 
3196 +            *slash = '\0';
3197 +    }
3198 +    return( retpath );
3199 +}
3200 +
3201 +static char *
3202 +gtk_image_to_xml_attrs( GtkImage * image)
3203 +{
3204 +    GString * xml = g_string_sized_new(32);
3205 +    GtkImageType type = gtk_image_get_storage_type(image);
3206 +    char * attrs;
3207 +    char * imagexml;
3208 +
3209 +    if( type == GTK_IMAGE_STOCK ) {
3210 +        GtkIconSize size;
3211 +        GtkIconSet * iconset;
3212 +        gchar * stockname;
3213 +        GdkPixbuf * pixbuf;
3214 +
3215 +        gtk_image_get_stock(image, &stockname, &size);
3216 +        pixbuf = gtk_widget_render_icon(gui.drawarea, stockname, size, NULL);
3217 +        imagexml = bonobo_ui_util_pixbuf_to_xml(pixbuf);
3218 +        g_string_append_printf(xml, " pixtype=\"pixbuf\" pixname=\"%s\"", imagexml);
3219 +        g_object_unref(pixbuf);
3220 +        g_free(imagexml);
3221 +    } else if( type == GTK_IMAGE_PIXBUF ) {
3222 +        imagexml = bonobo_ui_util_pixbuf_to_xml(gtk_image_get_pixbuf(image));
3223 +        g_string_append_printf(xml, " pixtype=\"pixbuf\" pixname=\"%s\"", imagexml);
3224 +        g_free(imagexml);
3225 +    }
3226 +    attrs = xml->str;
3227 +    g_string_free(xml, FALSE);
3228 +    return( attrs );
3229 +}
3230 +
3231 +static
3232 +void generate_gui_xml_recurse( vimmenu_T * menu, GString * xml, GSList ** commands, int do_siblings)
3233 +{
3234 +    GString * normname = g_string_sized_new(16);
3235 +    GString * verbname = g_string_sized_new(32);
3236 +    char_u * label;
3237 +    int use_mnemonic;
3238 +    BonoboUIComponent *uic;
3239 +    gchar * command;
3240 +
3241 +    uic = bonobo_control_get_ui_component (BONOBO_CONTROL (gui.control));
3242 +
3243 +    while( menu ) 
3244 +    {
3245 +        use_mnemonic = (p_wak[0] != 'n' );
3246 +        label = translate_mnemonic_tag( menu->name, use_mnemonic );
3247 +        g_string_assign( normname, "" );
3248 +        g_string_append_normalized_name( normname, menu->dname );
3249 +        if( menu->children ) {
3250 +            if( menu_is_toolbar( menu->name )) {
3251 +                g_string_append( xml, "<dockitem name=\"Toolbar\" look=\"icon\" tips=\"1\">");
3252 +                generate_gui_xml_recurse( menu->children, xml, commands, TRUE );
3253 +                g_string_append( xml, "</dockitem>");
3254 +            } else {
3255 +                g_string_append_printf( xml, "<submenu name=\"%s\" label=\"%s\">\n", normname->str, label);
3256 +
3257 +                generate_gui_xml_recurse( menu->children, xml, commands, TRUE );
3258 +                g_string_append( xml, "</submenu>\n");
3259 +            }
3260 +        } else if( menu_is_separator(menu->name)) {
3261 +            g_string_append( xml, "<separator />\n" );
3262 +        } else if( menu->parent && menu_is_toolbar(menu->parent->name)) {
3263 +            char * menupath = menu_xml_path(menu, FALSE);
3264 +            GtkImage *image = NULL;
3265 +            char * imagexml;
3266 +            char_u *tooltip;
3267 +
3268 +            g_string_assign(verbname, "");
3269 +            g_string_append_normalized_name(verbname, menupath);
3270 +            vim_free(menupath);
3271 +            image = GTK_IMAGE(create_menu_icon(menu, GTK_ICON_SIZE_SMALL_TOOLBAR));
3272 +            imagexml = gtk_image_to_xml_attrs(image);
3273 +            tooltip = CONVERT_TO_UTF8(menu->strings[MENU_INDEX_TIP]);
3274 +            g_string_append_printf( xml, "<toolitem name=\"%s\" label=\"%s\" verb=\"%s\" tip=\"%s\" %s />\n", normname->str, label, verbname->str, tooltip, imagexml);
3275 +            gtk_object_sink(GTK_OBJECT(image));
3276 +            g_free(imagexml);
3277 +            CONVERT_TO_UTF8_FREE(tooltip);
3278 +            
3279 +            command = g_strdup_printf( "<cmd name=\"%s\" sensitive=\"%c\" />\n", verbname->str, menu->sensitive ? '1' : '0');
3280 +            *commands = g_slist_prepend( *commands, command );
3281 +            bonobo_ui_component_add_verb(uic, verbname->str, verb_activate, menu);
3282 +        } else if( menu_is_menubar(menu->name)) {
3283 +            char * menupath = menu_xml_path(menu, FALSE);
3284 +
3285 +            g_string_assign(verbname, "");
3286 +            g_string_append_normalized_name(verbname, menupath);
3287 +            vim_free(menupath);
3288 +            
3289 +            g_string_append_printf( xml, "<menuitem name=\"%s\" label=\"%s\" verb=\"%s\" />\n", normname->str, label, verbname->str);
3290 +
3291 +            command = g_strdup_printf( "<cmd name=\"%s\" sensitive=\"%c\" />\n", verbname->str, menu->sensitive ? '1' : '0');
3292 +            *commands = g_slist_prepend( *commands, command );
3293 +            bonobo_ui_component_add_verb(uic, verbname->str, verb_activate, menu);
3294 +        }
3295 +        if( label ) {
3296 +            vim_free( label );
3297 +        }
3298 +        if( do_siblings ) {
3299 +            menu = menu->next;
3300 +        } else {
3301 +            menu = NULL;
3302 +        }
3303 +    }
3304 +    g_string_free( normname, TRUE );
3305 +}
3306 +
3307 +static
3308 +void set_gui_xml(vimmenu_T * menu)
3309 +{
3310 +    GSList * commands = NULL;
3311 +    GSList * command;
3312 +    BonoboUIComponent *uic;
3313 +    GString * xml = g_string_sized_new(1024);
3314 +    int path_exists;
3315 +    uic = bonobo_control_get_ui_component (BONOBO_CONTROL (gui.control));
3316 +
3317 +    if( bonobo_ui_component_get_container(uic) == CORBA_OBJECT_NIL ) {
3318 +        return;
3319 +    }
3320 +
3321 +    while( menu ) {
3322 +        if( menu->dirty ) {
3323 +            if (menu_is_popup(menu->name)) {
3324 +                /* do nothing */            
3325 +            } else if( menu_is_menubar(menu->name)) {
3326 +                char * menupath = menu_xml_path(menu, TRUE);
3327 +                path_exists = bonobo_ui_component_path_exists(uic, menupath, NULL);
3328 +                g_string_assign(xml, "");
3329 +                generate_gui_xml_recurse (menu, xml, &commands, FALSE);
3330 +                /*fprintf(stdout, "set %s\n", menupath);*/
3331 +                /*fprintf(stdout, "set %s\n%s", menupath, xml->str);*/
3332 +                /*fflush(stdout);*/
3333 +                bonobo_ui_component_set(uic, menupath, xml->str, NULL);
3334 +                g_free(menupath);
3335 +            } else if( menu_is_toolbar(menu->name)) {
3336 +                char * menupath = menu_xml_path(menu, TRUE);
3337 +                path_exists = bonobo_ui_component_path_exists(uic, menupath, NULL);
3338 +                g_string_assign(xml, "");
3339 +                generate_gui_xml_recurse (menu, xml, &commands, FALSE);
3340 +                /*fprintf(stdout, "set %s\n", menupath);*/
3341 +                /*fprintf(stdout, "set %s\n%s", menupath, xml->str);*/
3342 +                /*fflush(stdout);*/
3343 +                bonobo_ui_component_set(uic, menupath, xml->str, NULL);
3344 +                g_free(menupath);
3345 +            }
3346 +            menu->dirty = FALSE;
3347 +        }
3348 +        menu = menu->next;
3349 +    }
3350 +    /* the commands are inserted separately into a list, and set one by one,
3351 +     * otherwise it's not possible to update a subtree of the UI 
3352 +     */
3353 +    command = commands;
3354 +    while( command ) {
3355 +        /*fprintf(stdout, "set %s\n%s", "/commands", command->data);
3356 +        fflush(stdout);*/
3357 +        bonobo_ui_component_set(uic, "/commands", command->data, NULL);
3358 +        g_free(command->data);
3359 +        command = command->next;
3360 +    }
3361 +    g_slist_free( commands );
3362 +}
3363 +
3364 +static gboolean update_gui_idle_installed = FALSE;
3365 +
3366 +static gboolean
3367 +update_gui_idle(gpointer data)
3368 +{
3369 +    BonoboUIComponent *uic;
3370 +
3371 +    uic = bonobo_control_get_ui_component (BONOBO_CONTROL (gui.control));
3372 +    if( bonobo_ui_component_get_container(uic) == CORBA_OBJECT_NIL ) {
3373 +        /* we aren't in a container yet; try again later... */
3374 +        g_timeout_add(100, &update_gui_idle, NULL);
3375 +        return FALSE;
3376 +    }
3377 +    bonobo_ui_component_freeze(uic, NULL);
3378 +    set_gui_xml( (vimmenu_T *)root_menu );
3379 +    update_gui_idle_installed = FALSE;
3380 +    bonobo_ui_component_thaw(uic, NULL);
3381 +    return FALSE; /* don't call me again */
3382 +}
3383 +
3384 +void
3385 +update_menu_later(vimmenu_T *menu)
3386 +{
3387 +    if (!update_gui_idle_installed)
3388 +    {
3389 +        update_gui_idle_installed = TRUE;
3390 +        g_idle_add_full(GDK_PRIORITY_EVENTS + 10,
3391 +                        &update_gui_idle, NULL, NULL);
3392 +    }
3393 +    while( menu->parent ) 
3394 +        menu = menu->parent;
3395 +    menu->dirty = TRUE;
3396 +}
3397 +
3398 +void update_ui_later()
3399 +{
3400 +    vimmenu_T *menu = root_menu;
3401 +
3402 +    if (!update_gui_idle_installed)
3403 +    {
3404 +        update_gui_idle_installed = TRUE;
3405 +        g_idle_add_full(GDK_PRIORITY_EVENTS + 10,
3406 +                        &update_gui_idle, NULL, NULL);
3407 +    }
3408 +    while( menu ) {
3409 +        menu->dirty = TRUE;
3410 +        menu = menu->next;
3411 +    }
3412 +}
3413 +#endif
3414 +
3415      void
3416  gui_mch_add_menu(vimmenu_T *menu, int idx)
3417  {
3418 +#ifdef FEAT_GUI_COMPONENT
3419 +    update_menu_later(menu);
3420 +    return;
3421 +#else
3422      vimmenu_T  *parent;
3423      GtkWidget  *parent_widget;
3424  
3425 @@ -593,6 +886,7 @@
3426      if (vim_strchr(p_go, GO_TEAROFF) != NULL)
3427         gtk_widget_show(menu->tearoff_handle);
3428      gtk_menu_prepend(GTK_MENU(menu->submenu_id), menu->tearoff_handle);
3429 +#endif
3430  }
3431  
3432  /*ARGSUSED*/
3433 @@ -609,8 +903,8 @@
3434  # endif
3435  
3436      /* make sure the menu action is taken immediately */
3437 -    if (gtk_main_level() > 0)
3438 -       gtk_main_quit();
3439 +    if (MAIN_LEVEL() > 0)
3440 +       MAIN_QUIT();
3441  }
3442  
3443  # if defined(FEAT_TOOLBAR) && !defined(HAVE_GTK2)
3444 @@ -715,6 +1009,10 @@
3445      void
3446  gui_mch_add_menu_item(vimmenu_T *menu, int idx)
3447  {
3448 +#ifdef FEAT_GUI_COMPONENT
3449 +    update_menu_later(menu);
3450 +    return;
3451 +#else
3452      vimmenu_T *parent;
3453  
3454      parent = menu->parent;
3455 @@ -817,6 +1115,7 @@
3456             gtk_signal_connect(GTK_OBJECT(menu->id), "activate",
3457                                GTK_SIGNAL_FUNC(menu_item_activate), menu);
3458      }
3459 +#endif
3460  }
3461  #endif /* FEAT_MENU */
3462  
3463 @@ -841,6 +1140,10 @@
3464      guint      accel_key;
3465  # endif
3466  
3467 +#ifdef FEAT_GUI_COMPONENT
3468 +    return;
3469 +#endif
3470 +
3471      for (menu = root_menu; menu != NULL; menu = menu->next)
3472      {
3473         if (menu->id == NULL)
3474 @@ -897,6 +1200,9 @@
3475      void
3476  gui_mch_toggle_tearoffs(int enable)
3477  {
3478 +#ifdef FEAT_GUI_COMPONENT
3479 +    return;
3480 +#endif
3481      recurse_tearoffs(root_menu, enable);
3482  }
3483  #endif /* FEAT_MENU */
3484 @@ -1001,6 +1307,9 @@
3485      void
3486  gui_mch_destroy_menu(vimmenu_T *menu)
3487  {
3488 +#ifdef FEAT_GUI_COMPONENT
3489 +    return;
3490 +#endif
3491  # ifdef FEAT_TOOLBAR
3492      if (menu->parent != NULL && menu_is_toolbar(menu->parent->name))
3493      {
3494 @@ -1115,8 +1424,8 @@
3495  
3496      gui_drag_scrollbar(sb, value, dragging);
3497  
3498 -    if (gtk_main_level() > 0)
3499 -       gtk_main_quit();
3500 +    if (MAIN_LEVEL() > 0)
3501 +       MAIN_QUIT();
3502  }
3503  
3504  /* SBAR_VERT or SBAR_HORIZ */
3505 @@ -1175,8 +1484,8 @@
3506      vw->browse_fname = (char_u *)g_strdup(gtk_file_selection_get_filename(
3507                                         GTK_FILE_SELECTION(vw->filedlg)));
3508      gtk_widget_hide(vw->filedlg);
3509 -    if (gtk_main_level() > 0)
3510 -       gtk_main_quit();
3511 +    if (MAIN_LEVEL() > 0)
3512 +       MAIN_QUIT();
3513  }
3514  
3515  /*ARGSUSED*/
3516 @@ -1191,8 +1500,8 @@
3517         vw->browse_fname = NULL;
3518      }
3519      gtk_widget_hide(vw->filedlg);
3520 -    if (gtk_main_level() > 0)
3521 -       gtk_main_quit();
3522 +    if (MAIN_LEVEL() > 0)
3523 +       MAIN_QUIT();
3524  }
3525  
3526  /*ARGSUSED*/
3527 @@ -1206,8 +1515,8 @@
3528      }
3529      gui.filedlg = NULL;
3530  
3531 -    if (gtk_main_level() > 0)
3532 -       gtk_main_quit();
3533 +    if (MAIN_LEVEL() > 0)
3534 +       MAIN_QUIT();
3535  
3536      return FALSE;
3537  }
3538 @@ -1290,7 +1599,7 @@
3539  
3540      gtk_widget_show(gui.filedlg);
3541      while (gui.filedlg && GTK_WIDGET_DRAWABLE(gui.filedlg))
3542 -       gtk_main_iteration_do(TRUE);
3543 +       MAIN_ITERATION_DO(TRUE);
3544  
3545      if (gui.browse_fname == NULL)
3546         return NULL;
3547 @@ -1510,8 +1819,8 @@
3548  dlg_destroy_cb(int *p)
3549  {
3550      *p = TRUE;         /* set dialog_destroyed to break out of the loop */
3551 -    if (gtk_main_level() > 0)
3552 -       gtk_main_quit();
3553 +    if (MAIN_LEVEL() > 0)
3554 +       MAIN_QUIT();
3555  }
3556  
3557  /* ARGSUSED */
3558 @@ -1811,7 +2120,7 @@
3559      /* loop here until the dialog goes away */
3560      while (dialog_status == -1 && !dialog_destroyed
3561                                                && GTK_WIDGET_DRAWABLE(dialog))
3562 -       gtk_main_iteration_do(TRUE);
3563 +       MAIN_ITERATION_DO(TRUE);
3564  
3565      if (dialog_status < 0)
3566         dialog_status = 0;
3567 @@ -2795,8 +3104,8 @@
3568      CONVERT_FROM_UTF8_FREE(find_text);
3569  #endif
3570  
3571 -    if (rc && gtk_main_level() > 0)
3572 -       gtk_main_quit(); /* make sure cmd will be handled immediately */
3573 +    if (rc && MAIN_LEVEL() > 0)
3574 +        MAIN_QUIT(); /* make sure cmd will be handled immediately */
3575  }
3576  
3577  /* our usual callback function */
3578 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/gui_gtk_x11.c vim/src/gui_gtk_x11.c
3579 --- vimcopy/src/gui_gtk_x11.c   Tue Jun  3 13:19:03 2003
3580 +++ vim/src/gui_gtk_x11.c       Sat Jul 26 16:53:24 2003
3581 @@ -654,8 +654,8 @@
3582         xev.xproperty.state = PropertyNewValue;
3583         serverEventProc(GDK_WINDOW_XDISPLAY(widget->window), &xev);
3584  
3585 -       if (gtk_main_level() > 0)
3586 -           gtk_main_quit();
3587 +       if (MAIN_LEVEL() > 0)
3588 +           MAIN_QUIT();
3589      }
3590      return FALSE;
3591  }
3592 @@ -756,6 +756,10 @@
3593      if (blink_state == BLINK_NONE)
3594         gui_mch_start_blink();
3595  
3596 +#ifdef FEAT_GUI_COMPONENT
3597 +    /*gtk_plug_grab_focus(GTK_PLUG(gui.plug));*/
3598 +    /*gtk_window_set_focus(GTK_WINDOW(gui.plug), gui.drawarea);*/
3599 +#endif
3600      /* make sure keyboard input goes there */
3601      if (gtk_socket_id == 0 || !GTK_WIDGET_HAS_FOCUS(gui.drawarea))
3602         gtk_widget_grab_focus(gui.drawarea);
3603 @@ -767,6 +771,11 @@
3604      static gint
3605  leave_notify_event(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
3606  {
3607 +#ifdef FEAT_GUI_COMPONENT
3608 +    /*gtk_plug_ungrab_focus(GTK_PLUG(gui.plug));*/
3609 +    /*gdk_display_keyboard_ungrab (gtk_widget_get_display (gui.drawarea),
3610 +                                 gtk_get_current_event_time ());*/
3611 +#endif
3612      if (blink_state != BLINK_NONE)
3613         gui_mch_stop_blink();
3614  
3615 @@ -777,8 +786,16 @@
3616      static gint
3617  focus_in_event(GtkWidget *widget, GdkEventFocus *event, gpointer data)
3618  {
3619 +    GdkEventMask mask;
3620      gui_focus_change(TRUE);
3621  
3622 +#ifdef FEAT_GUI_COMPONENT
3623 +    gtk_widget_grab_focus(gui.drawarea);
3624 +    mask = gdk_window_get_events(gui.drawarea->window);
3625 +    mask |= GDK_KEY_PRESS | GDK_KEY_RELEASE;
3626 +    gdk_window_set_events(gui.drawarea->window, mask);
3627 +#endif
3628 +
3629      if (blink_state == BLINK_NONE)
3630         gui_mch_start_blink();
3631  
3632 @@ -793,6 +810,9 @@
3633      static gint
3634  focus_out_event(GtkWidget *widget, GdkEventFocus *event, gpointer data)
3635  {
3636 +#ifdef FEAT_GUI_COMPONENT
3637 +/*    gtk_plug_ungrab_focus(GTK_PLUG(gui.plug));*/
3638 +#endif
3639      gui_focus_change(FALSE);
3640  
3641      if (blink_state != BLINK_NONE)
3642 @@ -1134,8 +1154,8 @@
3643      if (p_mh)
3644         gui_mch_mousehide(TRUE);
3645  
3646 -    if (gtk_main_level() > 0)
3647 -       gtk_main_quit();
3648 +    if (MAIN_LEVEL() > 0)
3649 +        MAIN_QUIT();
3650  
3651      return TRUE;
3652  }
3653 @@ -1170,8 +1190,8 @@
3654      else
3655         clip_lose_selection(&clip_star);
3656  
3657 -    if (gtk_main_level() > 0)
3658 -       gtk_main_quit();
3659 +    if (MAIN_LEVEL() > 0)
3660 +       MAIN_QUIT();
3661  
3662      return TRUE;
3663  }
3664 @@ -1211,9 +1231,8 @@
3665         received_selection = RS_FAIL;
3666         /* clip_free_selection(cbd); ??? */
3667  
3668 -       if (gtk_main_level() > 0)
3669 -           gtk_main_quit();
3670 -
3671 +        if (MAIN_LEVEL() > 0)
3672 +            MAIN_QUIT();      /* make sure the above will be handled immediately */
3673         return;
3674      }
3675  
3676 @@ -1294,8 +1313,8 @@
3677      g_free(tmpbuf_utf8);
3678  #endif
3679  
3680 -    if (gtk_main_level() > 0)
3681 -       gtk_main_quit();
3682 +    if (MAIN_LEVEL() > 0)
3683 +        MAIN_QUIT();      /* make sure the above will be handled immediately */
3684  }
3685  
3686  /*
3687 @@ -1455,6 +1474,15 @@
3688         using_gnome = 1;
3689  #endif
3690  
3691 +
3692 +#ifdef FEAT_GUI_COMPONENT
3693 +    if( !vim_bonobo_init(&gui_argc, gui_argv))
3694 +    {
3695 +        /* in component mode, we don't care about trying to continue without 
3696 +         * a gui; if we can't create the factory, we might as well quit. */
3697 +        mch_exit(2);
3698 +    }
3699 +#else
3700      /* Don't use gtk_init() or gnome_init(), it exits on failure. */
3701      if (!gtk_init_check(&gui_argc, &gui_argv))
3702      {
3703 @@ -1462,10 +1490,29 @@
3704         EMSG(_(e_opendisp));
3705         return FAIL;
3706      }
3707 +#endif
3708  
3709      return OK;
3710  }
3711  
3712 +#if FEAT_GUI_COMPONENT
3713 +static gint
3714 +control_activate_event(BonoboControl *control, gboolean activated)
3715 +{
3716 +    if (activated) 
3717 +    {
3718 +        gui_focus_change (TRUE);
3719 +        if (blink_state == BLINK_NONE)
3720 +            gui_mch_start_blink();
3721 +    } else {
3722 +        gui_focus_change (FALSE);
3723 +        if (blink_state != BLINK_NONE)
3724 +            gui_mch_stop_blink();
3725 +    }
3726 +    return TRUE;
3727 +}
3728 +#endif
3729 +
3730  
3731  /****************************************************************************
3732   * Mouse handling callbacks
3733 @@ -1526,8 +1573,8 @@
3734      /* inform the editor engine about the occurence of this event */
3735      gui_send_mouse_event(button, x, y, FALSE, vim_modifiers);
3736  
3737 -    if (gtk_main_level() > 0)
3738 -       gtk_main_quit();
3739 +    if (MAIN_LEVEL() > 0)
3740 +       MAIN_QUIT();
3741  
3742      /*
3743       * Auto repeat timer handling.
3744 @@ -1722,8 +1769,8 @@
3745         vim_modifiers |= MOUSE_ALT;
3746  
3747      gui_send_mouse_event(button, x, y, repeated_click, vim_modifiers);
3748 -    if (gtk_main_level() > 0)
3749 -       gtk_main_quit(); /* make sure the above will be handled immediately */
3750 +    if (MAIN_LEVEL() > 0)
3751 +        MAIN_QUIT();      /* make sure the above will be handled immediately */
3752  
3753      return TRUE;
3754  }
3755 @@ -1771,8 +1818,8 @@
3756      gui_send_mouse_event(button, (int)event->x, (int)event->y,
3757                                                         FALSE, vim_modifiers);
3758  
3759 -    if (gtk_main_level() > 0)
3760 -       gtk_main_quit(); /* make sure the above will be handled immediately */
3761 +    if (MAIN_LEVEL() > 0)
3762 +       MAIN_QUIT();    /* make sure the above will be handled immediately */
3763  
3764      return TRUE;
3765  }
3766 @@ -1807,8 +1854,8 @@
3767         vim_modifiers |= MOUSE_ALT;
3768  
3769      gui_send_mouse_event(MOUSE_RELEASE, x, y, FALSE, vim_modifiers);
3770 -    if (gtk_main_level() > 0)
3771 -       gtk_main_quit();        /* make sure it will be handled immediately */
3772 +    if (MAIN_LEVEL() > 0)
3773 +        MAIN_QUIT();      /* make sure the above will be handled immediately */
3774  
3775      return TRUE;
3776  }
3777 @@ -2031,8 +2078,8 @@
3778      else
3779         add_to_input_buf(dropkey + 3, (int)(sizeof(dropkey) - 3));
3780  
3781 -    if (gtk_main_level() > 0)
3782 -       gtk_main_quit();
3783 +    if (MAIN_LEVEL() > 0)
3784 +        MAIN_QUIT();      /* make sure the above will be handled immediately */
3785  }
3786  
3787  /*
3788 @@ -2498,6 +2545,7 @@
3789      static void
3790  mainwin_realize(GtkWidget *widget, gpointer data)
3791  {
3792 +#ifndef FEAT_GUI_COMPONENT
3793  /* If you get an error message here, you still need to unpack the runtime
3794   * archive! */
3795  #ifdef magick
3796 @@ -2581,6 +2629,7 @@
3797  
3798  #endif /* !HAVE_GTK2 */
3799      }
3800 +#endif /* FEAT_GUI_COMPONENT */
3801  
3802  #if !(defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION))
3803      /* Register a handler for WM_SAVE_YOURSELF with GDK's low-level X I/F */
3804 @@ -2599,7 +2648,7 @@
3805  #endif
3806         setup_save_yourself();
3807  
3808 -#ifdef FEAT_CLIENTSERVER
3809 +#if defined(FEAT_CLIENTSERVER) &&!defined(FEAT_GUI_COMPONENT)
3810      if (serverName == NULL && serverDelayedStartName != NULL)
3811      {
3812         /* This is a :gui command in a plain vim with no previous server */
3813 @@ -2647,7 +2696,7 @@
3814      return cursor;
3815  }
3816  
3817 -#ifdef HAVE_GTK_MULTIHEAD
3818 +#if defined(GTK2_MULTIHEAD) && !defined(FEAT_GUI_COMPONENT)
3819  /*ARGSUSED1*/
3820      static void
3821  mainwin_screen_changed_cb(GtkWidget  *widget,
3822 @@ -2972,7 +3021,11 @@
3823  #ifdef FEAT_GUI_GNOME
3824         if (using_gnome)
3825         {
3826 -           gui.mainwin = gnome_app_new("Vim", NULL);
3827 +# if defined(FEAT_GUI_COMPONENT)
3828 +            gui.mainwin = NULL;
3829 +# else
3830 +            gui.mainwin = gnome_app_new("vim", NULL);
3831 +# endif
3832  # ifdef USE_XSMP
3833             /* Use the GNOME save-yourself functionality now. */
3834             xsmp_close();
3835 @@ -2983,14 +3036,27 @@
3836             gui.mainwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
3837      }
3838  
3839 +#ifndef FEAT_GUI_COMPONENT
3840      gtk_widget_set_name(gui.mainwin, "vim-main-window");
3841 +#endif
3842 +    vbox = gtk_vbox_new(FALSE, 0);
3843 +    gui.vbox = vbox;
3844  
3845  #ifdef HAVE_GTK2
3846      /* Create the PangoContext used for drawing all text. */
3847 +#ifdef FEAT_GUI_COMPONENT
3848 +    gui.text_context = gtk_widget_create_pango_context(GTK_WIDGET(gui.vbox));
3849 +#else
3850      gui.text_context = gtk_widget_create_pango_context(gui.mainwin);
3851 +#endif
3852      pango_context_set_base_dir(gui.text_context, PANGO_DIRECTION_LTR);
3853  #endif
3854  
3855 +#ifdef FEAT_GUI_COMPONENT
3856 +    bonobo_control_construct (BONOBO_CONTROL (gui.control), GTK_WIDGET(gui.vbox));
3857 +    gtk_widget_add_events(GTK_WIDGET(gui.drawarea), GDK_VISIBILITY_NOTIFY_MASK);
3858 +    gtk_widget_show_all(GTK_WIDGET(gui.vbox));
3859 +#else
3860  #ifndef HAVE_GTK2
3861      gtk_window_set_policy(GTK_WINDOW(gui.mainwin), TRUE, TRUE, TRUE);
3862  #endif
3863 @@ -3013,8 +3079,6 @@
3864      gui.accel_group = gtk_accel_group_get_default();
3865  #endif
3866  
3867 -    vbox = gtk_vbox_new(FALSE, 0);
3868 -
3869  #ifdef FEAT_GUI_GNOME
3870      if (using_gnome)
3871      {
3872 @@ -3030,6 +3094,9 @@
3873         gtk_container_add(GTK_CONTAINER(gui.mainwin), vbox);
3874         gtk_widget_show(vbox);
3875      }
3876 +#endif
3877 +  
3878 +#ifndef FEAT_GUI_COMPONENT
3879  
3880  #ifdef FEAT_MENU
3881      /*
3882 @@ -3135,6 +3202,7 @@
3883         gtk_box_pack_start(GTK_BOX(vbox), gui.toolbar, FALSE, FALSE, 0);
3884      }
3885  #endif /* FEAT_TOOLBAR */
3886 +#endif /* FEAT_GUI_COMPONENT */
3887  
3888      gui.formwin = gtk_form_new();
3889      gtk_container_border_width(GTK_CONTAINER(gui.formwin), 0);
3890 @@ -3162,6 +3230,11 @@
3891      gtk_widget_show(gui.formwin);
3892      gtk_box_pack_start(GTK_BOX(vbox), gui.formwin, TRUE, TRUE, 0);
3893  
3894 +#ifdef FEAT_GUI_COMPONENT
3895 +    GTK_WIDGET_SET_FLAGS (gui.drawarea, GTK_CAN_FOCUS);
3896 +    g_signal_connect(G_OBJECT(gui.drawarea), "key_press_event",
3897 +                        G_CALLBACK(key_press_event), NULL);
3898 +#else
3899      /* For GtkSockets, key-presses must go to the focus widget (drawarea)
3900       * and not the window. */
3901      gtk_signal_connect((gtk_socket_id == 0) ? GTK_OBJECT(gui.mainwin)
3902 @@ -3176,6 +3249,7 @@
3903                      "key_release_event",
3904                      G_CALLBACK(&key_release_event), NULL);
3905  #endif
3906 +#endif /* FEAT_GUI_COMPONENT */
3907      gtk_signal_connect(GTK_OBJECT(gui.drawarea), "realize",
3908                        GTK_SIGNAL_FUNC(drawarea_realize_cb), NULL);
3909      gtk_signal_connect(GTK_OBJECT(gui.drawarea), "unrealize",
3910 @@ -3207,16 +3281,27 @@
3911       */
3912      gui.border_offset = gui.border_width;
3913  
3914 +#ifdef FEAT_GUI_COMPONENT
3915 +    gtk_signal_connect(GTK_OBJECT(gui.drawarea), "visibility_notify_event",
3916 +                      GTK_SIGNAL_FUNC(visibility_event), NULL);
3917 +#else
3918      gtk_signal_connect(GTK_OBJECT(gui.mainwin), "visibility_notify_event",
3919                        GTK_SIGNAL_FUNC(visibility_event), NULL);
3920 +#endif
3921      gtk_signal_connect(GTK_OBJECT(gui.drawarea), "expose_event",
3922                        GTK_SIGNAL_FUNC(expose_event), NULL);
3923  
3924      /*
3925       * Only install these enter/leave callbacks when 'p' in 'guioptions'.
3926       * Only needed for some window managers.
3927 +     *
3928 +     * Force this on for bonobo, otherwise the toolbar gets the focus 
3929 +     * after you click a button, and you can't get the focus back to the 
3930 +     * drawarea.
3931       */
3932 +#ifndef FEAT_GUI_COMPONENT
3933      if (vim_strchr(p_go, GO_POINTER) != NULL)
3934 +#endif
3935      {
3936         gtk_signal_connect(GTK_OBJECT(gui.drawarea), "leave_notify_event",
3937                            GTK_SIGNAL_FUNC(leave_notify_event), NULL);
3938 @@ -3224,10 +3309,19 @@
3939                            GTK_SIGNAL_FUNC(enter_notify_event), NULL);
3940      }
3941  
3942 +#ifdef FEAT_GUI_COMPONENT
3943 +    g_signal_connect(G_OBJECT(gui.control), "activate",
3944 +                    G_CALLBACK (control_activate_event), NULL);
3945 +    gtk_signal_connect(GTK_OBJECT(gui.drawarea), "focus_out_event",
3946 +                          GTK_SIGNAL_FUNC(focus_out_event), NULL);
3947 +    gtk_signal_connect(GTK_OBJECT(gui.drawarea), "focus_in_event",
3948 +                          GTK_SIGNAL_FUNC(focus_in_event), NULL);
3949 +#else  
3950      gtk_signal_connect(GTK_OBJECT(gui.mainwin), "focus_out_event",
3951                            GTK_SIGNAL_FUNC(focus_out_event), NULL);
3952      gtk_signal_connect(GTK_OBJECT(gui.mainwin), "focus_in_event",
3953                            GTK_SIGNAL_FUNC(focus_in_event), NULL);
3954 +#endif
3955  
3956      gtk_signal_connect(GTK_OBJECT(gui.drawarea), "motion_notify_event",
3957                        GTK_SIGNAL_FUNC(motion_notify_event), NULL);
3958 @@ -3400,7 +3494,7 @@
3959       * otherwise the hints don't work. */
3960      width  = gui_get_base_width();
3961      height = gui_get_base_height();
3962 -# ifdef HAVE_GTK2
3963 +# if defined( HAVE_GTK2 ) && !defined(FEAT_GUI_COMPONENT)
3964      width  += get_menu_tool_width();
3965      height += get_menu_tool_height();
3966  # endif
3967 @@ -3447,8 +3541,18 @@
3968  form_configure_event(GtkWidget *widget, GdkEventConfigure *event,
3969                      gpointer data)
3970  {
3971 +    int height;
3972 +
3973      gtk_form_freeze(GTK_FORM(gui.formwin));
3974 -    gui_resize_shell(event->width, event->height);
3975 +#ifdef FEAT_GUI_COMPONENT
3976 +    /* width_inc and height_inc (see window manager hints, above) aren't
3977 +     * respected for embedded controls, so we have to make a slight adjustment
3978 +     * to make sure the bottom line doesn't get clipped. */
3979 +    height = gui.char_height * ((event->height - 2 )/ gui.char_height);
3980 +#else
3981 +    height = event->height;
3982 +#endif
3983 +    gui_resize_shell(event->width, height);
3984      gtk_form_thaw(GTK_FORM(gui.formwin));
3985  
3986      return TRUE;
3987 @@ -3580,8 +3684,10 @@
3988       * changed them). */
3989      highlight_gui_started();   /* re-init colors and fonts */
3990  
3991 +#ifndef FEAT_GUI_COMPONENT
3992      gtk_signal_connect(GTK_OBJECT(gui.mainwin), "destroy",
3993                        GTK_SIGNAL_FUNC(mainwin_destroy_cb), NULL);
3994 +#endif
3995  
3996  #ifdef FEAT_HANGULIN
3997      hangul_keyboard_set();
3998 @@ -3649,7 +3755,9 @@
3999                                                   NULL);
4000  # endif
4001  #endif
4002 -       gtk_widget_show(gui.mainwin);
4003 +#ifndef FEAT_GUI_COMPONENT
4004 +        gtk_widget_show(gui.mainwin);
4005 +#endif
4006  
4007  #if defined(FEAT_GUI_GNOME) && defined(HAVE_GTK2) && defined(FEAT_MENU)
4008         if (menu_handler != 0)
4009 @@ -3679,8 +3787,8 @@
4010      if (gui.mainwin != NULL)
4011         gtk_widget_destroy(gui.mainwin);
4012  
4013 -    if (gtk_main_level() > 0)
4014 -       gtk_main_quit();
4015 +    if (MAIN_LEVEL() > 0)
4016 +       MAIN_QUIT();    /* make sure the above will be handled immediately */
4017  }
4018  
4019  /*
4020 @@ -3727,6 +3835,7 @@
4021      static gboolean
4022  force_shell_resize_idle(gpointer data)
4023  {
4024 +    g_warning("force_shell_resize_idle called!");
4025      if (gui.mainwin != NULL
4026             && GTK_WIDGET_REALIZED(gui.mainwin)
4027             && GTK_WIDGET_VISIBLE(gui.mainwin))
4028 @@ -3775,7 +3884,7 @@
4029      /* this will cause the proper resizement to happen too */
4030      update_window_manager_hints();
4031  
4032 -#ifdef HAVE_GTK2
4033 +#if defined( HAVE_GTK2 ) && !defined(FEAT_GUI_COMPONENT)
4034      /* With GTK+ 2, changing the size of the form widget doesn't resize
4035       * the window.  So lets do it the other way around and resize the
4036       * main window instead. */
4037 @@ -3866,6 +3975,7 @@
4038  {
4039      GtkWidget *widget;
4040  
4041 +#ifndef FEAT_GUI_COMPONENT
4042  # ifdef FEAT_GUI_GNOME
4043      if (using_gnome)
4044         widget = gui.menubar_h;
4045 @@ -3882,6 +3992,7 @@
4046  
4047         update_window_manager_hints();
4048      }
4049 +#endif
4050  }
4051  #endif /* FEAT_MENU */
4052  
4053 @@ -3933,8 +4044,8 @@
4054  
4055      vw->fontname = (char_u *)gtk_font_selection_dialog_get_font_name(fs);
4056      gtk_widget_hide(vw->fontdlg);
4057 -    if (gtk_main_level() > 0)
4058 -       gtk_main_quit();
4059 +    if (MAIN_LEVEL() > 0)
4060 +        MAIN_QUIT();      /* make sure the above will be handled immediately */
4061  }
4062  
4063  /*ARGSUSED*/
4064 @@ -3944,8 +4055,8 @@
4065      gui_T *vw = (gui_T *)cbdata;
4066  
4067      gtk_widget_hide(vw->fontdlg);
4068 -    if (gtk_main_level() > 0)
4069 -       gtk_main_quit();
4070 +    if (MAIN_LEVEL() > 0)
4071 +        MAIN_QUIT();      /* make sure the above will be handled immediately */
4072  }
4073  
4074  /*ARGSUSED*/
4075 @@ -3955,8 +4066,8 @@
4076      gui_T *vw = (gui_T *)cbdata;
4077  
4078      vw->fontdlg = NULL;
4079 -    if (gtk_main_level() > 0)
4080 -       gtk_main_quit();
4081 +    if (MAIN_LEVEL() > 0)
4082 +        MAIN_QUIT();      /* make sure the above will be handled immediately */
4083  }
4084  #endif /* !HAVE_GTK2 */
4085  
4086 @@ -4123,7 +4234,7 @@
4087  
4088      /* Wait for the font dialog to be closed. */
4089      while (gui.fontdlg && GTK_WIDGET_DRAWABLE(gui.fontdlg))
4090 -       gtk_main_iteration_do(TRUE);
4091 +       MAIN_ITERATION_DO(TRUE);
4092  
4093      if (gui.fontname != NULL)
4094      {
4095 @@ -5637,7 +5748,7 @@
4096  gui_mch_update(void)
4097  {
4098      while (gtk_events_pending() && !vim_is_input_buf_full())
4099 -       gtk_main_iteration_do(FALSE);
4100 +       MAIN_ITERATION_DO(TRUE);
4101  }
4102  
4103      static gint
4104 @@ -5648,8 +5759,8 @@
4105      /* Just inform the caller about the occurence of it */
4106      *timed_out = TRUE;
4107  
4108 -    if (gtk_main_level() > 0)
4109 -       gtk_main_quit();
4110 +    if (MAIN_LEVEL() > 0)
4111 +        MAIN_QUIT();      /* make sure the above will be handled immediately */
4112  
4113      return FALSE;              /* don't happen again */
4114  }
4115 @@ -5669,8 +5780,8 @@
4116  
4117      add_to_input_buf(bytes, 3);
4118  
4119 -    if (gtk_main_level() > 0)
4120 -       gtk_main_quit();
4121 +    if (MAIN_LEVEL() > 0)
4122 +       MAIN_QUIT();
4123  }
4124  #endif
4125  
4126 @@ -5737,7 +5848,7 @@
4127         /*
4128          * Loop in GTK+ processing  until a timeout or input occurs.
4129          */
4130 -       gtk_main();
4131 +       MAIN();
4132  
4133         /* Got char, return immediately */
4134         if (input_available())
4135 @@ -5812,6 +5923,7 @@
4136         gdk_window_clear(gui.drawarea->window);
4137  }
4138  
4139 +
4140  /*
4141   * Redraw any text revealed by scrolling up/down.
4142   */
4143 @@ -5926,7 +6038,7 @@
4144                               (guint32)GDK_CURRENT_TIME);
4145  
4146         while (received_selection == RS_NONE)
4147 -           gtk_main(); /* wait for selection_received_cb */
4148 +           MAIN();     /* wait for selection_received_cb */
4149  
4150         if (received_selection != RS_FAIL)
4151             return;
4152 @@ -5994,6 +6106,13 @@
4153      void
4154  gui_mch_menu_grey(vimmenu_T *menu, int grey)
4155  {
4156 +#ifdef FEAT_GUI_COMPONENT
4157 +    if( menu->sensitive != !grey ) {
4158 +        menu->sensitive = !grey;
4159 +        update_menu_later(menu);
4160 +    }
4161 +    return;
4162 +#endif
4163      if (menu->id == NULL)
4164         return;
4165  
4166 @@ -6129,6 +6248,40 @@
4167  /* The last set mouse pointer shape is remembered, to be used when it goes
4168   * from hidden to not hidden. */
4169  static int last_shape = 0;
4170 +#endif
4171 +
4172 +#if 0
4173 +static BonoboWindow *
4174 +bonobo_create_window(void)
4175 +{
4176 +    BonoboWindow      *win;
4177 +    BonoboUIContainer *ui_container;
4178 +    BonoboUIComponent *ui_component;
4179 +                                                                                
4180 +    win = BONOBO_WINDOW (bonobo_window_new ("vim", "vim"));                                                                                
4181 +    ui_container = bonobo_window_get_ui_container (win);
4182 +    bonobo_ui_engine_config_set_path (bonobo_window_get_ui_engine (win),
4183 +                      "/gnome-vim/UIConfig/kvps");
4184 +                                                                                
4185 +    /* Create a UI component with which to communicate with the window */
4186 +    ui_component = bonobo_ui_component_new_default ();
4187 +
4188 +    gui.component = ui_component;
4189 +                                                                                
4190 +    /* Associate the BonoboUIComponent with the container */
4191 +    bonobo_ui_component_set_container (
4192 +        ui_component, BONOBO_OBJREF (ui_container), NULL);
4193 +                                                                                
4194 +    //bonobo_ui_util_set_ui (ui_component, "", 
4195 +                   //HELLO_SRCDIR HELLO_UI_XML,
4196 +                   //"bonobo-hello", NULL);
4197 +                                                                                
4198 +    /* Associate our verb -> callback mapping with the BonoboWindow */
4199 +    /* All the callback's user_data pointers will be set to 'win' */
4200 +    //bonobo_ui_component_add_verb_list_with_data (ui_component, hello_verbs, win);
4201 +                                                                                
4202 +    return win;
4203 +}
4204  #endif
4205  
4206  /*
4207 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/main.c vim/src/main.c
4208 --- vimcopy/src/main.c  Tue Jun  3 13:32:56 2003
4209 +++ vim/src/main.c      Sat Jul 26 13:16:48 2003
4210 @@ -79,7 +79,7 @@
4211  # ifdef VIMDLL
4212  _export
4213  # endif
4214 -# ifdef FEAT_GUI_MSWIN
4215 +# if defined(FEAT_GUI_MSWIN)
4216  #  ifdef __BORLANDC__
4217  _cdecl
4218  #  endif
4219 @@ -239,8 +239,12 @@
4220      TIME_MSG("locale set");
4221  #endif
4222  
4223 -#ifdef FEAT_GUI
4224 +#if defined(FEAT_GUI_COMPONENT)
4225 +    gui.dofork = FALSE;                    /* don't use fork when running as component */
4226 +#else
4227 +# if defined(FEAT_GUI) && !defined(FEAT_GUI_COMPONENT)
4228      gui.dofork = TRUE;             /* default is to use fork() */
4229 +# endif
4230  #endif
4231  
4232  #if defined(FEAT_XCLIPBOARD) || defined(FEAT_CLIENTSERVER)
4233 @@ -439,6 +443,10 @@
4234         ++initstr;
4235      }
4236  
4237 +#ifdef FEAT_GUI_COMPONENT
4238 +    main_start_gui();
4239 +#endif
4240 +
4241      if (TOLOWER_ASC(initstr[0]) == 'g')
4242      {
4243         main_start_gui();
4244 @@ -1760,6 +1768,9 @@
4245  #ifdef FEAT_WINDOWS
4246         curwin = firstwin;
4247         curbuf = curwin->w_buffer;
4248 +#endif
4249 +#ifdef FEAT_GUI_COMPONENT
4250 +        set_curbuf_persistent();
4251  #endif
4252      }
4253      TIME_MSG("opening buffers");
4254 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/mbyte.c vim/src/mbyte.c
4255 --- vimcopy/src/mbyte.c Wed Jun  4 10:26:32 2003
4256 +++ vim/src/mbyte.c     Sat Jul 26 13:16:48 2003
4257 @@ -3120,8 +3120,8 @@
4258  
4259      im_add_to_input((char_u *)str, (int)strlen(str));
4260  
4261 -    if (gtk_main_level() > 0)
4262 -       gtk_main_quit();
4263 +    if (MAIN_LEVEL() > 0)
4264 +       MAIN_QUIT();
4265  }
4266  
4267  /*
4268 @@ -4125,7 +4125,11 @@
4269             if (gui.fontset != NOFONTSET
4270                     && gui.fontset->type == GDK_FONT_FONTSET)
4271             {
4272 +#ifdef FEAT_GUI_COMPONENT
4273 +               widget = gui.drawarea;
4274 +#else
4275                 widget = gui.mainwin;
4276 +#endif
4277                 gdk_window_get_size(widget->window, &width, &height);
4278  
4279                 attrmask |= (int)GDK_IC_STATUS_AREA;
4280 @@ -4706,9 +4710,15 @@
4281         while (event_queue != NULL && processing_queued_event)
4282         {
4283             GdkEvent *ev = event_queue->data;
4284 -
4285 +            GtkWidget *output;
4286 +            
4287             gboolean *ret;
4288 -           gtk_signal_emit_by_name((GtkObject*)gui.mainwin, "key_press_event",
4289 +#ifdef FEAT_GUI_COMPONENT
4290 +            output = gui.drawarea;
4291 +#else
4292 +            output = gui.mainwin;
4293 +#endif
4294 +           gtk_signal_emit_by_name((GtkObject*)output, "key_press_event",
4295                                                                     ev, &ret);
4296             gdk_event_free(ev);
4297             event_queue = event_queue->next;
4298 @@ -4720,8 +4730,8 @@
4299             key_press_event_queue = NULL;
4300         }
4301      }
4302 -    if (gtk_main_level() > 0)
4303 -       gtk_main_quit();
4304 +    if (MAIN_LEVEL() > 0)
4305 +       MAIN_QUIT();
4306  }
4307  
4308  /*
4309 @@ -4856,7 +4866,11 @@
4310         GtkWidget       *widget = gui.drawarea;
4311  
4312         attr->style = (GdkIMStyle)xim_input_style;
4313 +#ifdef FEAT_GUI_COMPONENT
4314 +       attr->client_window = gui.drawarea->window;
4315 +#else
4316         attr->client_window = gui.mainwin->window;
4317 +#endif
4318  
4319         if ((colormap = gtk_widget_get_colormap(widget)) !=
4320             gtk_widget_get_default_colormap())
4321 @@ -4903,7 +4917,11 @@
4322             }
4323             else
4324             {
4325 +#ifdef FEAT_GUI_COMPONENT
4326 +               gdk_window_get_size(gui.drawarea->window, &width, &height);
4327 +#else
4328                 gdk_window_get_size(gui.mainwin->window, &width, &height);
4329 +#endif
4330                 attrmask |= (int)GDK_IC_STATUS_AREA_REQ;
4331                 attr->status_area.x = 0;
4332                 attr->status_area.y = height - gui.char_height - 1;
4333 Binary files vimcopy/src/objects/buffer.o and vim/src/objects/buffer.o differ
4334 Binary files vimcopy/src/objects/charset.o and vim/src/objects/charset.o differ
4335 Binary files vimcopy/src/objects/diff.o and vim/src/objects/diff.o differ
4336 Binary files vimcopy/src/objects/digraph.o and vim/src/objects/digraph.o differ
4337 Binary files vimcopy/src/objects/edit.o and vim/src/objects/edit.o differ
4338 Binary files vimcopy/src/objects/eval.o and vim/src/objects/eval.o differ
4339 Binary files vimcopy/src/objects/ex_cmds.o and vim/src/objects/ex_cmds.o differ
4340 Binary files vimcopy/src/objects/ex_cmds2.o and vim/src/objects/ex_cmds2.o differ
4341 Binary files vimcopy/src/objects/ex_docmd.o and vim/src/objects/ex_docmd.o differ
4342 Binary files vimcopy/src/objects/ex_eval.o and vim/src/objects/ex_eval.o differ
4343 Binary files vimcopy/src/objects/ex_getln.o and vim/src/objects/ex_getln.o differ
4344 Binary files vimcopy/src/objects/fileio.o and vim/src/objects/fileio.o differ
4345 Binary files vimcopy/src/objects/fold.o and vim/src/objects/fold.o differ
4346 Binary files vimcopy/src/objects/getchar.o and vim/src/objects/getchar.o differ
4347 Binary files vimcopy/src/objects/gtkhtml_editor.o and vim/src/objects/gtkhtml_editor.o differ
4348 Binary files vimcopy/src/objects/gtkhtml_editor_common.o and vim/src/objects/gtkhtml_editor_common.o differ
4349 Binary files vimcopy/src/objects/gtkhtml_editor_skels.o and vim/src/objects/gtkhtml_editor_skels.o differ
4350 Binary files vimcopy/src/objects/gtkhtml_editor_stubs.o and vim/src/objects/gtkhtml_editor_stubs.o differ
4351 Binary files vimcopy/src/objects/gui.o and vim/src/objects/gui.o differ
4352 Binary files vimcopy/src/objects/gui_beval.o and vim/src/objects/gui_beval.o differ
4353 Binary files vimcopy/src/objects/gui_gtk.o and vim/src/objects/gui_gtk.o differ
4354 Binary files vimcopy/src/objects/gui_gtk_f.o and vim/src/objects/gui_gtk_f.o differ
4355 Binary files vimcopy/src/objects/gui_gtk_x11.o and vim/src/objects/gui_gtk_x11.o differ
4356 Binary files vimcopy/src/objects/if_cscope.o and vim/src/objects/if_cscope.o differ
4357 Binary files vimcopy/src/objects/if_xcmdsrv.o and vim/src/objects/if_xcmdsrv.o differ
4358 Binary files vimcopy/src/objects/main.o and vim/src/objects/main.o differ
4359 Binary files vimcopy/src/objects/mark.o and vim/src/objects/mark.o differ
4360 Binary files vimcopy/src/objects/mbyte.o and vim/src/objects/mbyte.o differ
4361 Binary files vimcopy/src/objects/memfile.o and vim/src/objects/memfile.o differ
4362 Binary files vimcopy/src/objects/memline.o and vim/src/objects/memline.o differ
4363 Binary files vimcopy/src/objects/menu.o and vim/src/objects/menu.o differ
4364 Binary files vimcopy/src/objects/message.o and vim/src/objects/message.o differ
4365 Binary files vimcopy/src/objects/misc1.o and vim/src/objects/misc1.o differ
4366 Binary files vimcopy/src/objects/misc2.o and vim/src/objects/misc2.o differ
4367 Binary files vimcopy/src/objects/move.o and vim/src/objects/move.o differ
4368 Binary files vimcopy/src/objects/netbeans.o and vim/src/objects/netbeans.o differ
4369 Binary files vimcopy/src/objects/normal.o and vim/src/objects/normal.o differ
4370 Binary files vimcopy/src/objects/ops.o and vim/src/objects/ops.o differ
4371 Binary files vimcopy/src/objects/option.o and vim/src/objects/option.o differ
4372 Binary files vimcopy/src/objects/os_unix.o and vim/src/objects/os_unix.o differ
4373 Binary files vimcopy/src/objects/pathdef.o and vim/src/objects/pathdef.o differ
4374 Binary files vimcopy/src/objects/pty.o and vim/src/objects/pty.o differ
4375 Binary files vimcopy/src/objects/quickfix.o and vim/src/objects/quickfix.o differ
4376 Binary files vimcopy/src/objects/regexp.o and vim/src/objects/regexp.o differ
4377 Binary files vimcopy/src/objects/screen.o and vim/src/objects/screen.o differ
4378 Binary files vimcopy/src/objects/search.o and vim/src/objects/search.o differ
4379 Binary files vimcopy/src/objects/syntax.o and vim/src/objects/syntax.o differ
4380 Binary files vimcopy/src/objects/tag.o and vim/src/objects/tag.o differ
4381 Binary files vimcopy/src/objects/term.o and vim/src/objects/term.o differ
4382 Binary files vimcopy/src/objects/ui.o and vim/src/objects/ui.o differ
4383 Binary files vimcopy/src/objects/undo.o and vim/src/objects/undo.o differ
4384 Binary files vimcopy/src/objects/version.o and vim/src/objects/version.o differ
4385 Binary files vimcopy/src/objects/vim_bonobo_control.o and vim/src/objects/vim_bonobo_control.o differ
4386 Binary files vimcopy/src/objects/vim_bonobo_factory.o and vim/src/objects/vim_bonobo_factory.o differ
4387 Binary files vimcopy/src/objects/vim_bonobo_main.o and vim/src/objects/vim_bonobo_main.o differ
4388 Binary files vimcopy/src/objects/window.o and vim/src/objects/window.o differ
4389 Binary files vimcopy/src/po/af.mo and vim/src/po/af.mo differ
4390 Binary files vimcopy/src/po/cs.cp1250.mo and vim/src/po/cs.cp1250.mo differ
4391 Binary files vimcopy/src/po/cs.mo and vim/src/po/cs.mo differ
4392 Binary files vimcopy/src/po/de.mo and vim/src/po/de.mo differ
4393 Binary files vimcopy/src/po/en_gb.mo and vim/src/po/en_gb.mo differ
4394 Binary files vimcopy/src/po/es.mo and vim/src/po/es.mo differ
4395 Binary files vimcopy/src/po/fr.mo and vim/src/po/fr.mo differ
4396 Binary files vimcopy/src/po/it.mo and vim/src/po/it.mo differ
4397 Binary files vimcopy/src/po/ja.mo and vim/src/po/ja.mo differ
4398 Binary files vimcopy/src/po/ja.sjis.mo and vim/src/po/ja.sjis.mo differ
4399 Binary files vimcopy/src/po/ko.mo and vim/src/po/ko.mo differ
4400 Binary files vimcopy/src/po/no.mo and vim/src/po/no.mo differ
4401 Binary files vimcopy/src/po/pl.cp1250.mo and vim/src/po/pl.cp1250.mo differ
4402 Binary files vimcopy/src/po/pl.mo and vim/src/po/pl.mo differ
4403 Binary files vimcopy/src/po/sk.cp1250.mo and vim/src/po/sk.cp1250.mo differ
4404 Binary files vimcopy/src/po/sk.mo and vim/src/po/sk.mo differ
4405 Binary files vimcopy/src/po/uk.mo and vim/src/po/uk.mo differ
4406 Binary files vimcopy/src/po/zh_CN.UTF-8.mo and vim/src/po/zh_CN.UTF-8.mo differ
4407 Binary files vimcopy/src/po/zh_CN.cp936.mo and vim/src/po/zh_CN.cp936.mo differ
4408 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/po/zh_CN.cp936.po vim/src/po/zh_CN.cp936.po
4409 --- vimcopy/src/po/zh_CN.cp936.po       Mon Jun  2 09:32:25 2003
4410 +++ vim/src/po/zh_CN.cp936.po   Sat Jul 26 15:06:40 2003
4411 @@ -3007,7 +3007,7 @@
4412  
4413  #: main.c:2315
4414  msgid "-foreground <color>\tUse <color> for normal text (also: -fg)"
4415 -msgstr "-foreground <color>\tÉ趨 <color> ÃŽÂªÃ’»°ãÎÄ×ÖÑÕÉ« (Ò²¿ÉÓà-fg)"
4416 +msgstr "-foreground <color>\tÉ趨 <color> ÃŽÂªÃ’»°ãÎÄ×ÖÑÕÉ« (Ò²ÉÓà-fg)"
4417  
4418  #: main.c:2316 main.c:2336
4419  msgid "-font <font>\t\tUse <font> for normal text (also: -fn)"
4420 Binary files vimcopy/src/po/zh_CN.mo and vim/src/po/zh_CN.mo differ
4421 Binary files vimcopy/src/po/zh_TW.UTF-8.mo and vim/src/po/zh_TW.UTF-8.mo differ
4422 Binary files vimcopy/src/po/zh_TW.mo and vim/src/po/zh_TW.mo differ
4423 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/structs.h vim/src/structs.h
4424 --- vimcopy/src/structs.h       Tue May 27 11:22:01 2003
4425 +++ vim/src/structs.h   Sat Jul 26 13:16:48 2003
4426 @@ -1036,6 +1036,10 @@
4427      char_u     *b_p_bh;        /* 'bufhidden' */
4428      char_u     *b_p_bt;        /* 'buftype' */
4429  #endif
4430 +#if defined(FEAT_GUI_COMPONENT)
4431 +    int         emb_buffer;     /* this buffer is associated with the container application,
4432 +                                   and cannot be removed */
4433 +#endif
4434      int                b_p_bl;         /* 'buflisted' */
4435  #ifdef FEAT_CINDENT
4436      int                b_p_cin;        /* 'cindent' */
4437 @@ -1713,8 +1717,11 @@
4438      GtkWidget  *tearoff_handle;
4439      GtkWidget   *label;                    /* Used by "set wak=" code. */
4440  #endif
4441 -#ifdef FEAT_GUI_MOTIF
4442 +#if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_COMPONENT)
4443      int                sensitive;          /* turn button on/off */
4444 +#if defined(FEAT_GUI_COMPONENT)
4445 +    int         dirty;              /* menu item has been updated; container needs to know */
4446 +#endif
4447  #endif
4448  #if defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_MOTIF)
4449      Pixmap     image;              /* Toolbar image */
4450 Binary files vimcopy/src/vim and vim/src/vim differ
4451 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim-container.xml vim/src/vim-container.xml
4452 --- vimcopy/src/vim-container.xml       Wed Dec 31 18:00:00 1969
4453 +++ vim/src/vim-container.xml   Sat Jul 26 13:16:48 2003
4454 @@ -0,0 +1,83 @@
4455 +<Root>
4456 +
4457 +<commands>
4458 +       <cmd name="FileNewWindow" _label="_New Window" _tip="Open a new window"
4459 +             pixtype="stock" pixname="gtk-new" accel="*Control*n"/>
4460 +
4461 +       <cmd name="FileOpen" _label="_Open..." _tip="Open a file"
4462 +            pixtype="stock" pixname="gtk-open" accel="*Control*o"/>
4463 +
4464 +       <cmd name="FileCloseWindow" _label="_Close" _tip="Close window"
4465 +             pixtype="stock" pixname="gtk-close" accel="*Control*w"/>
4466 +
4467 +        <cmd name="FileExit" _label="_Quit" _tip="Quit the program"
4468 +            pixtype="stock" pixname="gtk-quit" accel="*Control*q"/>
4469 +       
4470 +       <cmd name="Preferences" _label="_Preferences..." _tip="Change preferences"  sensitive="0"
4471 +            pixtype="stock" pixname="gtk-preferences"/>
4472 +
4473 +       <cmd name="HelpAbout" _label="_About" _tip="About this application"
4474 +            pixtype="stock" pixname="About"/>
4475 +       <cmd name="Help" _label="Contents" _tip="Help On this application"
4476 +            pixtype="stock" pixname="Help" accel="F1"/>
4477 +
4478 +
4479 +       <cmd name="DnDNewWindow" _label="Open in new window"/>
4480 +       <cmd name="DnDSameWindow" _label="Open in this window"/>
4481 +       <cmd name="DnDCancel" _label="Cancel"
4482 +            pixtype="stock" pixname="Cancel"/>
4483 +</commands>
4484 +
4485 +<menu>
4486 +        <submenu name="File" _label="_File">
4487 +
4488 +               <menuitem name="FileNewWindow" verb=""/>
4489 +
4490 +               <placeholder name="Open Placeholder" delimit="top">
4491 +                       <menuitem name="FileOpen" verb=""/>
4492 +               </placeholder>
4493 +
4494 +               <placeholder name="File Items Placeholder" delimit="top"/>
4495 +
4496 +               <separator/>
4497 +
4498 +               <menuitem name="FileCloseWindow" verb=""/>
4499 +
4500 +               <menuitem name="FileExit" verb=""/>
4501 +
4502 +       </submenu>
4503 +
4504 +       <submenu name="Edit" _label="_Edit">
4505 +               <menuitem name="Preferences" verb=""/>
4506 +        </submenu>
4507 +
4508 +       <submenu name="View" _label="_View" hidden="1">
4509 +               <placeholder name="View Preferences Placeholder"/>
4510 +               <placeholder name="View Items Placeholder" delimit="top"/>
4511 +       </submenu>
4512 +
4513 +       <submenu name="Help" _label="_Help">
4514 +               <menuitem name="Help" verb=""/>
4515 +               <menuitem name="HelpAbout" verb=""/>
4516 +       </submenu>
4517 +</menu>
4518 +
4519 +<dockitem name="Toolbar" relief="none" homogeneous="1" behavior="exclusive">
4520 +
4521 +        <toolitem name="TBOpen" _label="Open" pixtype="stock"
4522 +                  pixname="Open" verb="FileOpen"/>
4523 +
4524 +        <toolitem name="TBCloseWindow" _label="Close" pixtype="stock"
4525 +                  pixname="Close" verb="FileCloseWindow"/>
4526 +</dockitem>
4527 +
4528 +<popups>
4529 +        <popup name="dragndrop">
4530 +             <menuitem name="DnDNewWindow" verb=""/>
4531 +             <menuitem name="DnDSameWindow" verb=""/>
4532 +             <separator/>
4533 +             <menuitem name="DnDCancel" verb=""/>
4534 +        </popup>
4535 +</popups>
4536 +
4537 +</Root>
4538 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim.h vim/src/vim.h
4539 --- vimcopy/src/vim.h   Thu May 29 10:18:40 2003
4540 +++ vim/src/vim.h       Sat Jul 26 13:16:48 2003
4541 @@ -738,6 +738,10 @@
4542  #define READ_STDIN     0x04    /* read from stdin */
4543  #define READ_BUFFER    0x08    /* read from curbuf (converting stdin) */
4544  #define READ_DUMMY     0x10    /* reading into a dummy buffer */
4545 +#define READ_EMB_STREAM 0x20    /* read from container stream object 
4546 +                                        (i.e. Bonobo Persist Stream) */
4547 +#define READ_EMB_FILE   0x40    /* read from container file object 
4548 +                                        (i.e. Bonobo Persist File) */
4549  
4550  /* Values for change_indent() */
4551  #define INDENT_SET     1       /* set indent */
4552 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim_bonobo_control.c vim/src/vim_bonobo_control.c
4553 --- vimcopy/src/vim_bonobo_control.c    Wed Dec 31 18:00:00 1969
4554 +++ vim/src/vim_bonobo_control.c        Sat Jul 26 13:16:48 2003
4555 @@ -0,0 +1,411 @@
4556 +/**
4557 + * vim_bonobo_control.c
4558 + *
4559 + * Author:
4560 + *   Jason Hildebrand <jason@peaceworks.ca>
4561 + *
4562 + */
4563 +#include <stdio.h>
4564 +
4565 +#include "vim.h"
4566 +#include "vim_bonobo_control.h"
4567 +#include "gtkhtml_editor.h"
4568 +
4569 +#include <gnome.h>
4570 +#include <libbonoboui.h>
4571 +#include <libbonobo.h>
4572 +#include <libnautilus/nautilus-view.h>
4573 +
4574 +
4575 +struct _VimControlPrivate {
4576 +    BonoboUIComponent *component;
4577 +};
4578 +
4579 +static GObjectClass *vim_control_parent_class;
4580 +
4581 +static gboolean
4582 +quit_vim(gpointer data)
4583 +{
4584 +    MAIN_QUIT();
4585 +    exit(0);
4586 +}
4587 +
4588 +static void
4589 +vim_control_destroy (BonoboObject *control)
4590 +{
4591 +       BonoboUIComponent *uic;
4592 +
4593 +       g_return_if_fail (control != NULL);
4594 +       g_return_if_fail (VIM_IS_CONTROL (control));
4595 +
4596 +    g_message ("Destroying VimControl...");
4597 +
4598 +       uic = bonobo_control_get_ui_component (BONOBO_CONTROL (control));
4599 +    if( uic != CORBA_OBJECT_NIL )
4600 +        bonobo_ui_component_unset_container (uic, NULL);
4601 +
4602 +       BONOBO_OBJECT_CLASS (vim_control_parent_class)->destroy (control);
4603 +
4604 +    /* we only support creating one vim control per process, so when this one
4605 +     * is finished, we're done. */ 
4606 +    /* BONOBO_FIXME: shut down vim cleanly! */
4607 +    g_timeout_add(100, &quit_vim, NULL);
4608 +}
4609 +
4610 +static void
4611 +vim_control_finalize (GObject *object)
4612 +{
4613 +       VimControl *control;
4614 +
4615 +       g_return_if_fail (object != NULL);
4616 +       g_return_if_fail (VIM_IS_CONTROL (object));
4617 +
4618 +       control = VIM_CONTROL (object);
4619 +
4620 +       g_free (control->priv);
4621 +
4622 +       G_OBJECT_CLASS (vim_control_parent_class)->finalize (object);
4623 +}
4624 +
4625 +static void
4626 +vim_control_set_ui_container (VimControl *control,
4627 +                             Bonobo_UIContainer ui_container)
4628 +{
4629 +       BonoboUIComponent *uic;
4630 +       
4631 +       g_return_if_fail (control != NULL);
4632 +       g_return_if_fail (VIM_IS_CONTROL (control));
4633 +       g_return_if_fail (ui_container != CORBA_OBJECT_NIL);
4634 +
4635 +       uic = bonobo_control_get_ui_component (BONOBO_CONTROL (control));
4636 +       bonobo_ui_component_set_container (uic, ui_container, NULL);
4637 +
4638 +    /* update vim's UI now */
4639 +    update_ui_later();
4640 +}
4641 +
4642 +static void
4643 +vim_control_unset_ui_container (VimControl *control)
4644 +{
4645 +       BonoboUIComponent *uic;
4646 +
4647 +       g_return_if_fail (control != NULL);
4648 +       g_return_if_fail (VIM_IS_CONTROL (control));
4649 +
4650 +       uic = bonobo_control_get_ui_component (BONOBO_CONTROL (control));
4651 +       bonobo_ui_component_unset_container (uic, NULL);
4652 +}
4653 +
4654 +static grab_keys = 0;
4655 +
4656 +static GdkFilterReturn
4657 +filter_key_events (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
4658 +{
4659 + /* GdkScreen *screen = gdk_drawable_get_screen (event->any.window);
4660 +  GdkDisplay *display = gdk_screen_get_display (screen);*/
4661 +  XEvent *xevent = (XEvent *)gdk_xevent;
4662 +                                                                                
4663 +  GdkFilterReturn return_val;
4664 +                                                                                
4665 +  return_val = GDK_FILTER_CONTINUE;
4666 +                                                                                
4667 +  switch (xevent->type)
4668 +  {
4669 +      case KeyPress:
4670 +        g_warning("Key press!");
4671 +        break;
4672 +
4673 +      case KeyRelease:
4674 +        g_warning("Key release!");
4675 +        break;
4676 +
4677 +      default:
4678 +        break;
4679 +  }
4680 +  return return_val;
4681 +}
4682 +
4683 +
4684 +static void
4685 +set_frame_cb (BonoboControl *object, gpointer data)
4686 +{
4687 +    Bonobo_ControlFrame frame;
4688 +    BonoboPlug * plug;
4689 +       VimControl *control;
4690 +    GdkEventMask mask;
4691 +                                                                                
4692 +       g_return_if_fail (object != NULL);
4693 +       g_return_if_fail (VIM_IS_CONTROL (object));
4694 +
4695 +    frame = bonobo_control_get_control_frame (object, NULL);
4696 +    if (frame == CORBA_OBJECT_NIL)
4697 +        return;
4698 +    CORBA_Object_release (frame, NULL);
4699 +
4700 +       control = VIM_CONTROL (object);
4701 +
4702 +    Bonobo_UIContainer ui_container;
4703 +
4704 +    ui_container = bonobo_control_get_remote_ui_container (BONOBO_CONTROL (control), NULL);
4705 +    if (ui_container != CORBA_OBJECT_NIL) {
4706 +        vim_control_set_ui_container (control, ui_container);
4707 +        bonobo_object_release_unref (ui_container, NULL);
4708 +    }
4709 +
4710 +    /*plug = (BonoboPlug *)bonobo_control_get_plug(control);*/
4711 +    /*gdk_window_add_filter (NULL, filter_key_events, NULL);*/
4712 +}
4713 +
4714 +static void
4715 +vim_control_class_init (VimControl *klass)
4716 +{
4717 +       GObjectClass *gobject_class = (GObjectClass *)klass;
4718 +       BonoboObjectClass *bonobo_object_class = (BonoboObjectClass *)klass;
4719 +       BonoboControlClass *control_class = (BonoboControlClass *)klass;
4720 +
4721 +       vim_control_parent_class= g_type_class_peek_parent (klass);
4722 +
4723 +       bonobo_object_class->destroy = vim_control_destroy;
4724 +       gobject_class->finalize = vim_control_finalize;
4725 +}
4726 +
4727 +static int persistent_buffer;
4728 +static char_u * stream_buffer = NULL;
4729 +static int stream_offset = 0;
4730 +static CORBA_long  stream_length = 0;
4731 +static Bonobo_Stream current_stream;
4732 +
4733 +void
4734 +set_curbuf_persistent(void)
4735 +{
4736 +       persistent_buffer = curbuf->b_fnum;
4737 +}
4738 +
4739 +/* It seems like it's an error to attempt to read more data
4740 + * than is available from a bonobo stream.  So we slurp in
4741 + * the entire file in one chunk, and then pass it back in 
4742 + * pieces to the caller. 
4743 + */
4744 +int
4745 +vim_control_persist_stream_read(char_u * buffer, int reqsize)
4746 +{
4747 +    int read_size;
4748 +
4749 +    if( stream_offset >= stream_length ) {
4750 +        return 0;
4751 +    }
4752 +    read_size = stream_length - stream_offset >= reqsize ? 
4753 +                    reqsize : stream_length - stream_offset;
4754 +    mch_memmove(buffer, &stream_buffer[stream_offset], read_size);
4755 +    stream_offset += read_size;
4756 +    return read_size;
4757 +}
4758 +
4759 +int
4760 +vim_control_persist_stream_write(char_u * buffer, int reqsize)
4761 +{
4762 +    CORBA_Environment ev;
4763 +
4764 +    CORBA_exception_init(&ev);
4765 +    bonobo_stream_client_write(current_stream, buffer, reqsize, &ev);
4766 +       if (ev._major != CORBA_NO_EXCEPTION || stream_buffer == NULL) {
4767 +        g_warning("Error writing to stream");
4768 +               CORBA_exception_free (&ev);
4769 +        return 0;
4770 +       }
4771 +    CORBA_exception_free (&ev);
4772 +    return reqsize;
4773 +}
4774 +
4775 +static void load_buffer_from_stream(BonoboPersistStream         *ps,
4776 +                      const Bonobo_Stream         stream,
4777 +                      Bonobo_Persist_ContentType  type,
4778 +                      void                       *closure,
4779 +                      CORBA_Environment          *ev)
4780 +{
4781 +    exarg_T            ea;                     /* Ex command arguments */
4782 +
4783 +    g_warning ("load_buffer_from_stream");
4784 +
4785 +    stream_buffer = bonobo_stream_client_read( stream, -1, &stream_length, ev);
4786 +       if (ev->_major != CORBA_NO_EXCEPTION || stream_buffer == NULL) {
4787 +        g_warning("Error reading from stream");
4788 +        return;
4789 +       }
4790 +    stream_offset = 0;
4791 +
4792 +    vim_memset(&ea, 0, sizeof(ea));
4793 +    ea.cmd = "e ++enc=utf-8";
4794 +    ea.force_enc = 8; /* this is the offset of "utf-8" in the cmd */
4795 +
4796 +    read_from_container = PERSIST_STREAM_IO;
4797 +    do_ecmd(0, NULL, NULL, &ea, 1, 0);
4798 +    read_from_container = NORMAL_IO;
4799 +
4800 +    /* remember this buffer */
4801 +       persistent_buffer = curbuf->b_fnum;
4802 +    ga_clear(&error_ga);
4803 +    g_free(stream_buffer);
4804 +}
4805 +
4806 +
4807 +static void 
4808 +save_buffer_to_stream(BonoboPersistStream         *ps,
4809 +                      const Bonobo_Stream         stream,
4810 +                      Bonobo_Persist_ContentType  type,
4811 +                      void                       *closure,
4812 +                      CORBA_Environment          *ev)
4813 +{
4814 +    buf_T * buf;
4815 +    exarg_T            ea;                     /* Ex command arguments */
4816 +
4817 +    g_warning ("save_buffer_to_stream");
4818 +
4819 +    current_stream = stream;
4820 +    write_to_container = PERSIST_STREAM_IO;
4821 +
4822 +    vim_memset(&ea, 0, sizeof(ea));
4823 +    ea.cmd = "e ++enc=utf-8";
4824 +    ea.force_enc = 8; /* this is the offset of "utf-8" in the cmd */
4825 +
4826 +    buf = buflist_findnr(persistent_buffer);
4827 +    if( buf ) {
4828 +        buf_write(buf, "dummy", "dummy", 1, buf->b_ml.ml_line_count, &ea, FALSE, FALSE,
4829 +                                      TRUE, TRUE);
4830 +    }
4831 +    write_to_container = NORMAL_IO;
4832 +    ga_clear(&error_ga);
4833 +}
4834 +
4835 +
4836 +Bonobo_Persist_ContentTypeList * 
4837 +persist_stream_types( BonoboPersistStream * ps, void * closure, CORBA_Environment *ev )
4838 +{
4839 +    g_warning ("persist_stream_types");
4840 +    return bonobo_persist_generate_content_types(1, "text/plain", "text/html");
4841 +}
4842 +
4843 +
4844 +static void
4845 +nv_load_location_cb (NautilusView *view, const char *location, gpointer user_data)
4846 +{
4847 +       g_return_if_fail (NAUTILUS_IS_VIEW (view));
4848 +       g_return_if_fail (location != NULL);
4849 +
4850 +       nautilus_view_report_load_underway (NAUTILUS_VIEW (view));
4851 +
4852 +    /* FIXME: load the file here (using gnome-vfs)! */
4853 +       nautilus_view_report_load_complete (NAUTILUS_VIEW (view));
4854 +}
4855 +
4856 +static void
4857 +vim_control_init (VimControl *control)
4858 +{
4859 +       control->priv = g_new0 (VimControlPrivate, 1);
4860 +}
4861 +
4862 +BONOBO_TYPE_FUNC (VimControl, BONOBO_TYPE_CONTROL, vim_control);
4863 +
4864 +BonoboObject *
4865 +vim_control_add_interfaces (VimControl     *control,
4866 +                         BonoboObject *to_aggregate)
4867 +{
4868 +       //BonoboPersistFile   *file;
4869 +    NautilusView        *nv;
4870 +       BonoboPersistStream *stream;
4871 +    EditorEngine        *engine; /* GtkHTML editor engine interface */
4872 +       //BonoboItemContainer *item_container;
4873 +       
4874 +       g_return_val_if_fail (VIM_IS_CONTROL (control), NULL);
4875 +       g_return_val_if_fail (BONOBO_IS_OBJECT (to_aggregate), NULL);
4876 +
4877 +       /* Interface Bonobo::PersistFile */
4878 +#if 0
4879 +       file = bonobo_persist_file_new (load_vim_from_file, 
4880 +                                           NULL, VIM_OAFIID, control);
4881 +       if (!file) {
4882 +               bonobo_object_unref (BONOBO_OBJECT (to_aggregate));
4883 +               return NULL;
4884 +       }
4885 +#endif
4886 +
4887 +    stream = bonobo_persist_stream_new (load_buffer_from_stream,
4888 +                                        save_buffer_to_stream, 
4889 +                                        persist_stream_types, 
4890 +                                        VIM_OAFIID, 
4891 +                                        control);
4892 +    if (!stream) {
4893 +        bonobo_object_unref (BONOBO_OBJECT (to_aggregate));
4894 +        return NULL;
4895 +    }
4896 +       bonobo_object_add_interface (BONOBO_OBJECT (to_aggregate),
4897 +                                    BONOBO_OBJECT (stream));
4898 +
4899 +    nv = nautilus_view_new_from_bonobo_control(BONOBO_CONTROL(control));
4900 +    if( !nv ) {
4901 +        bonobo_object_unref (BONOBO_OBJECT(to_aggregate));
4902 +        return NULL;
4903 +    }
4904 +       bonobo_object_add_interface (BONOBO_OBJECT (to_aggregate),
4905 +                                    BONOBO_OBJECT (nv));
4906 +
4907 +       g_signal_connect (G_OBJECT (nv), "load_location",
4908 +                         G_CALLBACK (nv_load_location_cb), NULL);
4909 +
4910 +    engine = editor_engine_new();
4911 +    if( !engine ) {
4912 +        bonobo_object_unref (BONOBO_OBJECT(to_aggregate));
4913 +        return NULL;
4914 +    }
4915 +       bonobo_object_add_interface (BONOBO_OBJECT (to_aggregate),
4916 +                                    BONOBO_OBJECT (engine));
4917 +
4918 +       return to_aggregate;
4919 +}
4920 +
4921 +VimControl *
4922 +vim_control_construct (VimControl    *control)
4923 +{
4924 +       GtkWidget             *button;
4925 +       GtkWidget             *label;
4926 +    BonoboPlug            *plug;
4927 +    GtkAccelGroup         *group;
4928 +    GClosure              *closure;
4929 +       //VimControlPrivate     *priv;
4930 +       
4931 +       g_return_val_if_fail (control != NULL, NULL);
4932 +       g_return_val_if_fail (VIM_IS_CONTROL (control), NULL);
4933 +
4934 +
4935 +       if (!vim_control_add_interfaces (control, BONOBO_OBJECT (control)))
4936 +               return NULL;
4937 +
4938 +    gui.control = BONOBO_CONTROL(control);
4939 +    gui.plug = (BonoboPlug *)bonobo_control_get_plug(control);
4940 +    gui.mainwin = GTK_WIDGET(gui.plug);
4941 +    gui_mch_init();
4942 +
4943 +    g_signal_connect (control, "set_frame", G_CALLBACK (set_frame_cb), NULL);
4944 +
4945 +       /* Create the vim-view */
4946 +       //priv->image_view = vim_image_view_new (vim, FALSE);
4947 +       //if (!priv->image_view) {
4948 +               //bonobo_object_unref (BONOBO_OBJECT (control));
4949 +               //return NULL;
4950 +       //}
4951 +    
4952 +       return control;
4953 +}
4954 +
4955 +VimControl *
4956 +vim_control_new (void)
4957 +{
4958 +       VimControl *control;
4959 +       
4960 +    g_message ("Creating VimControl...");
4961 +
4962 +       control = g_object_new (VIM_CONTROL_TYPE, NULL);
4963 +
4964 +       return vim_control_construct (control);
4965 +}
4966 +
4967 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim_bonobo_control.h vim/src/vim_bonobo_control.h
4968 --- vimcopy/src/vim_bonobo_control.h    Wed Dec 31 18:00:00 1969
4969 +++ vim/src/vim_bonobo_control.h        Sat Jul 26 13:16:48 2003
4970 @@ -0,0 +1,50 @@
4971 +/*
4972 + * vim_bonobo_control.h
4973 + *
4974 + * Author:
4975 + *   Jason Hildebrand (jason@peaceworks.ca)
4976 + *
4977 + */
4978 +
4979 +#ifndef _VIM_CONTROL_H_
4980 +#define _VIM_CONTROL_H_
4981 +
4982 +#include <bonobo/bonobo-control.h>
4983 +#define VIM_OAFIID "OAFIID:Vim_Control"
4984 +#define NORMAL_IO 0
4985 +#define PERSIST_STREAM_IO 1
4986 +#define PERSIST_FILE_IO 2
4987 +
4988 +G_BEGIN_DECLS
4989
4990 +#define VIM_CONTROL_TYPE           (vim_control_get_type ())
4991 +#define VIM_CONTROL(o)             (G_TYPE_CHECK_INSTANCE_CAST ((o), VIM_CONTROL_TYPE, VimControl))
4992 +#define VIM_CONTROL_CLASS(k)       (G_TYPE_CHECK_CLASS_CAST((k), VIM_CONTROL_TYPE, VimControlClass))
4993 +
4994 +#define VIM_IS_CONTROL(o)          (G_TYPE_CHECK_INSTANCE_TYPE ((o), VIM_CONTROL_TYPE))
4995 +#define VIM_IS_CONTROL_CLASS(k)    (G_TYPE_CHECK_CLASS_TYPE ((k), VIM_CONTROL_TYPE))
4996 +#define VIM_CONTROL_GET_CLASS(o)   (G_TYPE_INSTANCE_GET_CLASS ((o), VIM_CONTROL_TYPE, VimControlClass))
4997 +
4998 +typedef struct _VimControl         VimControl;
4999 +typedef struct _VimControlClass    VimControlClass;
5000 +typedef struct _VimControlPrivate  VimControlPrivate;
5001 +
5002 +struct _VimControl {
5003 +       BonoboControl control;
5004 +
5005 +       VimControlPrivate *priv;
5006 +};
5007 +
5008 +struct _VimControlClass {
5009 +       BonoboControlClass parent_class;
5010 +};
5011 +
5012 +GType         vim_control_get_type                    (void);
5013 +VimControl    *vim_control_new                         (void);
5014 +VimControl    *vim_control_construct                   (VimControl    *control);
5015 +
5016 +void set_curbuf_persistent(void);
5017 +
5018 +G_END_DECLS
5019 +
5020 +#endif /* _VIM_CONTROL_H_*/
5021 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim_bonobo_factory.c vim/src/vim_bonobo_factory.c
5022 --- vimcopy/src/vim_bonobo_factory.c    Wed Dec 31 18:00:00 1969
5023 +++ vim/src/vim_bonobo_factory.c        Sat Jul 26 13:42:10 2003
5024 @@ -0,0 +1,73 @@
5025 +/*
5026 + * vim_bonobo_factory.c
5027 + *
5028 + * Author:
5029 + *   Jason Hildebrand (jason@peaceworks.ca)
5030 + *
5031 + */
5032 +
5033 +#include "vim.h"
5034 +#include "version.h"
5035 +#include <bonobo/bonobo-generic-factory.h>
5036 +#include "vim_bonobo_control.h"
5037 +
5038 +static BonoboGenericFactory *factory = NULL;
5039 +static int vim_instantiated = 0;
5040 +
5041 +static BonoboObject *
5042 +vim_bonobo_factory(BonoboGenericFactory *this,
5043 +              const char           *oaf_iid,
5044 +              void                 *data)
5045 +{
5046 +    VimControl     *vim;
5047 +    BonoboObject *retval;
5048 +
5049 +    g_return_val_if_fail (this != NULL, NULL);
5050 +    g_return_val_if_fail (oaf_iid != NULL, NULL);
5051 +
5052 +    if( vim_instantiated ) {
5053 +        /* we cannot instantiate more than one control from this process,
5054 +         * because of all of vim's global variables */
5055 +        return NULL;
5056 +    }
5057 +                                                                                
5058 +    g_message ("Trying to produce a '%s'...", oaf_iid);
5059 +                                                                                
5060 +    if (strcmp (oaf_iid, VIM_OAFIID) == 0) {
5061 +        vim = vim_control_new ();
5062 +        if (vim == NULL)
5063 +            return NULL;
5064 +        retval = BONOBO_OBJECT (vim);
5065 +    } else {
5066 +        g_warning ("Unknown IID `%s' requested", oaf_iid);
5067 +        return NULL;
5068 +    }
5069 +    vim_instantiated = 1;
5070 +                                                                                
5071 +    return retval;
5072 +}
5073 +
5074 +/* wait until this component is instantiated */
5075 +int vim_bonobo_wait_for_instantiation()
5076 +{
5077 +    while( !vim_instantiated) {
5078 +        MAIN_ITERATION_DO(TRUE);
5079 +    }
5080 +}
5081 +
5082 +
5083 +int vim_bonobo_init(int *argc, char *argv[])
5084 +{
5085 +    if (!bonobo_ui_init ("gnome-vim", VIM_VERSION_SHORT, argc, argv))
5086 +        g_error (_("Could not initialize Bonobo"));
5087 +                                                                                
5088 +    factory = bonobo_generic_factory_new (
5089 +        "OAFIID:Vim_Control_Factory", vim_bonobo_factory, NULL);
5090 +                                                                                
5091 +    if (factory == NULL) {
5092 +        g_error ("Couldn't create factory.\n");
5093 +        return 0;
5094 +    }
5095 +    return 1;
5096 +}
5097 +
5098 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim_bonobo_factory.h vim/src/vim_bonobo_factory.h
5099 --- vimcopy/src/vim_bonobo_factory.h    Wed Dec 31 18:00:00 1969
5100 +++ vim/src/vim_bonobo_factory.h        Sat Jul 26 13:16:48 2003
5101 @@ -0,0 +1,15 @@
5102 +/*
5103 + * vim_bonobo_factory.h
5104 + *
5105 + * Author:
5106 + *   Jason Hildebrand (jason@peaceworks.ca)
5107 + *
5108 + */
5109 +
5110 +#if !defined( _VIM_BONOBO_FACTORY_H)
5111 +#define _VIM_BONOBO_FACTORY_H
5112 +
5113 +void gui_component_init(int *argc, char *argv []);
5114 +int gui_component_wait_for_instantiation(void);
5115 +
5116 +#endif
5117 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim_bonobo_main.c vim/src/vim_bonobo_main.c
5118 --- vimcopy/src/vim_bonobo_main.c       Wed Dec 31 18:00:00 1969
5119 +++ vim/src/vim_bonobo_main.c   Sat Jul 26 13:16:48 2003
5120 @@ -0,0 +1,60 @@
5121 +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
5122 +
5123 +#include <glib/gmain.h>
5124 +#include <glib-object.h>
5125 +
5126 +static guint              bonobo_main_loop_level = 0;
5127 +static GSList *           bonobo_main_loops = NULL;
5128 +
5129 +
5130 +/**
5131 + * bonobo_main:
5132 + * 
5133 + * Activates the Bonobo POA Manager and enters the main event loop.
5134 + */
5135 +void
5136 +vim_bonobo_main (void)
5137 +{
5138 +       GMainLoop *loop;
5139 +
5140 +       bonobo_activate ();
5141 +
5142 +       bonobo_main_loop_level++;
5143 +  
5144 +       loop = g_main_loop_new (NULL, TRUE);
5145 +       bonobo_main_loops = g_slist_prepend (bonobo_main_loops, loop);
5146 +
5147 +       if (g_main_loop_is_running (bonobo_main_loops->data))
5148 +               g_main_loop_run (loop);
5149 +
5150 +       bonobo_main_loops = g_slist_remove (bonobo_main_loops, loop);
5151 +
5152 +       g_main_loop_unref (loop);
5153 +
5154 +       bonobo_main_loop_level--;
5155 +}
5156 +
5157 +/**
5158 + * bonobo_main_quit:
5159 + * 
5160 + * Quits the main event loop.
5161 + */
5162 +void
5163 +vim_bonobo_main_quit (void)
5164 +{
5165 +       g_return_if_fail (bonobo_main_loops != NULL);
5166 +
5167 +       g_main_loop_quit (bonobo_main_loops->data);
5168 +}
5169 +
5170 +int
5171 +vim_bonobo_main_level(void)
5172 +{
5173 +    return bonobo_main_loop_level;
5174 +}
5175 +
5176 +gboolean
5177 +vim_bonobo_main_iteration_do(may_block)
5178 +{
5179 +    g_main_context_iteration(NULL, may_block);
5180 +}
5181 diff --new-file -u -r --exclude-from=excludelist vimcopy/src/vim_bonobo_main.h vim/src/vim_bonobo_main.h
5182 --- vimcopy/src/vim_bonobo_main.h       Wed Dec 31 18:00:00 1969
5183 +++ vim/src/vim_bonobo_main.h   Sat Jul 26 13:16:48 2003
5184 @@ -0,0 +1,14 @@
5185 +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
5186 +
5187 +#ifndef __VIM_BONOBO_MAIN_H__
5188 +#define __VIM_BONOBO_MAIN_H__
5189 +
5190 +#include <glib-object.h>
5191 +#include <bonobo/Bonobo.h>
5192 +
5193 +void                       vim_bonobo_main                      (void);
5194 +void                vim_bonobo_main_quit     (void);
5195 +int                 vim_bonobo_level(void);
5196 +gboolean            vim_bonobo_main_iteration_do(int may_block);
5197 +
5198 +#endif /* __VIM_BONOBO_MAIN_H__ */
5199 Binary files vimcopy/src/xxd/xxd and vim/src/xxd/xxd differ
5200 diff --new-file -u -r --exclude-from=excludelist vimcopy/vim/src/Make_container.mak vim/vim/src/Make_container.mak
5201 --- vimcopy/vim/src/Make_container.mak  Wed Dec 31 18:00:00 1969
5202 +++ vim/vim/src/Make_container.mak      Sat Jul 26 13:16:48 2003
5203 @@ -0,0 +1,11 @@
5204 +gnomeccFlags = `pkg-config --cflags libgnomeui-2.0 libgnome-2.0`
5205 +ccFlags = -g -c ${gnomeccFlags}
5206 +ldFlags = `pkg-config --libs libgnomeui-2.0 libgnome-2.0`
5207 +
5208 +all: container
5209 +
5210 +container: container.o
5211 +       gcc -o container ${ldFlags} container.o
5212 +
5213 +%.o: %.c
5214 +       gcc ${ccFlags} $< -o $@
This page took 0.39404 seconds and 3 git commands to generate.