diff -Naur /usr/local/src/fltk-1.0.11/fluid/Fl_Function_Type.cxx fluid/Fl_Function_Type.cxx
--- /usr/local/src/fltk-1.0.11/fluid/Fl_Function_Type.cxx	2001-01-22 07:13:38.000000000 -0800
+++ fluid/Fl_Function_Type.cxx	2001-06-11 17:53:32.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: Fl_Function_Type.cxx,v 1.15.2.16 2001/01/22 15:13:38 easysw Exp $"
+// "$Id: Fl_Function_Type.cxx,v 1.2 2001/06/12 00:53:32 muquit Exp $"
 //
 // C function type code for the Fast Light Tool Kit (FLTK).
 //
@@ -30,6 +30,8 @@
 #include <stdio.h>
 #include <ctype.h>
 
+#include <stdlib.h> /* getenv */
+
 extern int i18n_type;
 extern const char* i18n_include;
 extern const char* i18n_function;
@@ -298,9 +300,28 @@
 }
 
 void Fl_Code_Type::open() {
+    char
+        *editor,
+        buf[1024];
+
+  extern void writeCodePanelStatus(char *lab);
+
   if (!code_panel) make_code_panel();
   code_input->static_value(name());
   code_panel->show();
+
+  /* 
+  ** if FLUID_EDITOR env var is set, show the value in the status
+  ** window
+  ** muquit@muquit.com May-22-2001 
+  */
+    if ((editor=getenv("FLUID_EDITOR")) != NULL)
+    {
+        (void) strcpy(buf,"FLUID_EDTOR=");
+        (void) strncat(buf,editor,1000);
+        buf[1000]='\0';
+        writeCodePanelStatus(buf);
+    }
   const char* message = 0;
   for (;;) { // repeat as long as there are errors
     if (message) fl_alert(message);
@@ -672,5 +693,5 @@
 }
 
 //
-// End of "$Id: Fl_Function_Type.cxx,v 1.15.2.16 2001/01/22 15:13:38 easysw Exp $".
+// End of "$Id: Fl_Function_Type.cxx,v 1.2 2001/06/12 00:53:32 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/Fl_Group_Type.cxx fluid/Fl_Group_Type.cxx
--- /usr/local/src/fltk-1.0.11/fluid/Fl_Group_Type.cxx	2001-01-22 07:13:38.000000000 -0800
+++ fluid/Fl_Group_Type.cxx	2001-05-13 08:26:23.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: Fl_Group_Type.cxx,v 1.4.2.7 2001/01/22 15:13:38 easysw Exp $"
+// "$Id: Fl_Group_Type.cxx,v 1.1.1.1 2001/05/13 15:26:23 muquit Exp $"
 //
 // Fl_Group object code for the Fast Light Tool Kit (FLTK).
 //
@@ -230,5 +230,5 @@
 Fl_Tile_Type Fl_Tile_type;	// the "factory"
 
 //
-// End of "$Id: Fl_Group_Type.cxx,v 1.4.2.7 2001/01/22 15:13:38 easysw Exp $".
+// End of "$Id: Fl_Group_Type.cxx,v 1.1.1.1 2001/05/13 15:26:23 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/Fl_Menu_Type.cxx fluid/Fl_Menu_Type.cxx
--- /usr/local/src/fltk-1.0.11/fluid/Fl_Menu_Type.cxx	2001-01-22 07:13:38.000000000 -0800
+++ fluid/Fl_Menu_Type.cxx	2001-05-13 08:26:24.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: Fl_Menu_Type.cxx,v 1.16.2.12 2001/01/22 15:13:38 easysw Exp $"
+// "$Id: Fl_Menu_Type.cxx,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $"
 //
 // Menu item code for the Fast Light Tool Kit (FLTK).
 //
@@ -460,5 +460,5 @@
 }
 
 //
-// End of "$Id: Fl_Menu_Type.cxx,v 1.16.2.12 2001/01/22 15:13:38 easysw Exp $".
+// End of "$Id: Fl_Menu_Type.cxx,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/Fl_Type.cxx fluid/Fl_Type.cxx
--- /usr/local/src/fltk-1.0.11/fluid/Fl_Type.cxx	2001-01-22 07:13:38.000000000 -0800
+++ fluid/Fl_Type.cxx	2001-05-13 08:26:23.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: Fl_Type.cxx,v 1.6.2.6 2001/01/22 15:13:38 easysw Exp $"
+// "$Id: Fl_Type.cxx,v 1.1.1.1 2001/05/13 15:26:23 muquit Exp $"
 //
 // Widget type code for the Fast Light Tool Kit (FLTK).
 //
@@ -667,5 +667,5 @@
 int Fl_Type::read_fdesign(const char*, const char*) {return 0;}
 
 //
-// End of "$Id: Fl_Type.cxx,v 1.6.2.6 2001/01/22 15:13:38 easysw Exp $".
+// End of "$Id: Fl_Type.cxx,v 1.1.1.1 2001/05/13 15:26:23 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/Fl_Type.h fluid/Fl_Type.h
--- /usr/local/src/fltk-1.0.11/fluid/Fl_Type.h	2001-01-22 07:13:38.000000000 -0800
+++ fluid/Fl_Type.h	2001-05-13 08:26:24.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: Fl_Type.h,v 1.5.2.11 2001/01/22 15:13:38 easysw Exp $"
+// "$Id: Fl_Type.h,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $"
 //
 // Widget type header file for the Fast Light Tool Kit (FLTK).
 //
@@ -532,5 +532,5 @@
 extern int include_H_from_C;
 
 //
-// End of "$Id: Fl_Type.h,v 1.5.2.11 2001/01/22 15:13:38 easysw Exp $".
+// End of "$Id: Fl_Type.h,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/Fl_Widget_Type.cxx fluid/Fl_Widget_Type.cxx
--- /usr/local/src/fltk-1.0.11/fluid/Fl_Widget_Type.cxx	2001-01-22 07:13:38.000000000 -0800
+++ fluid/Fl_Widget_Type.cxx	2001-05-13 08:26:23.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: Fl_Widget_Type.cxx,v 1.15.2.16 2001/01/22 15:13:38 easysw Exp $"
+// "$Id: Fl_Widget_Type.cxx,v 1.1.1.1 2001/05/13 15:26:23 muquit Exp $"
 //
 // Widget type code for the Fast Light Tool Kit (FLTK).
 //
@@ -1766,5 +1766,5 @@
 }
 
 //
-// End of "$Id: Fl_Widget_Type.cxx,v 1.15.2.16 2001/01/22 15:13:38 easysw Exp $".
+// End of "$Id: Fl_Widget_Type.cxx,v 1.1.1.1 2001/05/13 15:26:23 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/Fl_Widget_Type.h fluid/Fl_Widget_Type.h
--- /usr/local/src/fltk-1.0.11/fluid/Fl_Widget_Type.h	2001-01-22 07:13:38.000000000 -0800
+++ fluid/Fl_Widget_Type.h	2001-05-13 08:26:24.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: Fl_Widget_Type.h,v 1.4.2.4 2001/01/22 15:13:38 easysw Exp $"
+// "$Id: Fl_Widget_Type.h,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $"
 //
 // Widget type header file for the Fast Light Tool Kit (FLTK).
 //
@@ -36,5 +36,5 @@
 extern Fl_Widget_Type *current_widget; // one of the selected ones
 
 //
-// End of "$Id: Fl_Widget_Type.h,v 1.4.2.4 2001/01/22 15:13:38 easysw Exp $".
+// End of "$Id: Fl_Widget_Type.h,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/Fl_Window_Type.cxx fluid/Fl_Window_Type.cxx
--- /usr/local/src/fltk-1.0.11/fluid/Fl_Window_Type.cxx	2001-04-13 12:07:40.000000000 -0700
+++ fluid/Fl_Window_Type.cxx	2001-05-13 08:26:24.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: Fl_Window_Type.cxx,v 1.13.2.10 2001/04/13 19:07:40 easysw Exp $"
+// "$Id: Fl_Window_Type.cxx,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $"
 //
 // Window type code for the Fast Light Tool Kit (FLTK).
 //
@@ -752,5 +752,5 @@
 }
 
 //
-// End of "$Id: Fl_Window_Type.cxx,v 1.13.2.10 2001/04/13 19:07:40 easysw Exp $".
+// End of "$Id: Fl_Window_Type.cxx,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/Fluid_Image.cxx fluid/Fluid_Image.cxx
--- /usr/local/src/fltk-1.0.11/fluid/Fluid_Image.cxx	2001-04-13 12:34:03.000000000 -0700
+++ fluid/Fluid_Image.cxx	2001-05-13 08:26:24.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: Fluid_Image.cxx,v 1.7.2.9 2001/04/13 19:34:03 easysw Exp $"
+// "$Id: Fluid_Image.cxx,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $"
 //
 // Pixmap label support for the Fast Light Tool Kit (FLTK).
 //
@@ -436,5 +436,5 @@
 }
 
 //
-// End of "$Id: Fluid_Image.cxx,v 1.7.2.9 2001/04/13 19:34:03 easysw Exp $".
+// End of "$Id: Fluid_Image.cxx,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/Fluid_Image.h fluid/Fluid_Image.h
--- /usr/local/src/fltk-1.0.11/fluid/Fluid_Image.h	2001-01-22 07:13:38.000000000 -0800
+++ fluid/Fluid_Image.h	2001-05-13 08:26:24.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: Fluid_Image.h,v 1.3.2.4 2001/01/22 15:13:38 easysw Exp $"
+// "$Id: Fluid_Image.h,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $"
 //
 // Pixmap image header file for the Fast Light Tool Kit (FLTK).
 //
@@ -56,5 +56,5 @@
 #endif
 
 //
-// End of "$Id: Fluid_Image.h,v 1.3.2.4 2001/01/22 15:13:38 easysw Exp $".
+// End of "$Id: Fluid_Image.h,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/Makefile fluid/Makefile
--- /usr/local/src/fltk-1.0.11/fluid/Makefile	2001-01-22 07:13:38.000000000 -0800
+++ fluid/Makefile	2001-06-11 17:53:33.000000000 -0700
@@ -1,5 +1,5 @@
 #
-# "$Id: Makefile,v 1.10.2.6 2001/01/22 15:13:38 easysw Exp $"
+# "$Id: Makefile,v 1.2 2001/06/12 00:53:33 muquit Exp $"
 #
 # Fluid makefile for the Fast Light Tool Kit (FLTK).
 #
@@ -34,6 +34,7 @@
 	Fl_Window_Type.cxx \
 	Fluid_Image.cxx \
 	code.cxx \
+	code_editor.cxx \
 	factory.cxx \
 	file.cxx \
 	fluid.cxx \
@@ -83,5 +84,5 @@
 	./fluid -c widget_panel.fl
 
 #
-# End of "$Id: Makefile,v 1.10.2.6 2001/01/22 15:13:38 easysw Exp $".
+# End of "$Id: Makefile,v 1.2 2001/06/12 00:53:33 muquit Exp $".
 #
diff -Naur /usr/local/src/fltk-1.0.11/fluid/Makefile.wnt fluid/Makefile.wnt
--- /usr/local/src/fltk-1.0.11/fluid/Makefile.wnt	1969-12-31 16:00:00.000000000 -0800
+++ fluid/Makefile.wnt	2001-06-12 18:13:34.000000000 -0700
@@ -0,0 +1,89 @@
+##------------------------------------------------------------------------
+# Makefile automatically generated by genmake 1.0, Jan-23-2001
+# genmake 1.0 by muquit@muquit.com http://www.muquit.com/
+# For MS Visual C++ (I used it with 6.0)
+# to compile from fluid directory type:
+#       nmake -f Makefile.wnt
+#
+# Note: I use zsh as my shell and cygnus tools on NT/2000, therefore, it 
+#       represents some unixism. I don't use bash comes with cygnus, it's
+#       annonying the way it tries to access Windows directories like Unix.
+#
+#  muquit@muquit.com, May-22-20001
+##------------------------------------------------------------------------
+CC= cl
+#DEFS= /nologo /MT /GX /Os /Ob2
+DEFS= /nologo /MD /GX /Ot /Op /Ob2
+PROGNAME= fluid.exe
+LINKER=link -nologo
+
+# using fltk 1.0.100, May-11-2001
+FLTK_INCLUDE=-I../visualc -I$(HOME)/local/include
+FLTK_LIB=../lib/fltk.lib
+##FLTK_LIB=../lib/fltkd.lib
+INCLUDES=  -I. $(FLTK_INCLUDE)
+
+
+# replace -O with -g in order to debug
+
+DEFINES= $(INCLUDES) $(DEFS) -DWINNT=1 -DWIN32=1 -DWIN32_LEAN_AND_MEAN=1 
+CFLAGS= $(DEFINES) /D"NDEBUG" -D_WINDOWS -DWIN32_EXTRA_LEAN
+#LIBS=$(FLTK_LIBS) user32.lib gdi32.lib winmm.lib comdlg32.lib comctl32.lib wsock32.lib 
+
+LIBS=$(FLTK_LIB) wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
+
+SRCS =  Fl_Function_Type.cxx \
+	Fl_Menu_Type.cxx \
+	Fl_Group_Type.cxx \
+	Fl_Widget_Type.cxx \
+	Fl_Type.cxx \
+	Fl_Window_Type.cxx \
+	Fluid_Image.cxx \
+	code.cxx \
+	code_editor.cxx \
+	factory.cxx \
+	file.cxx \
+	fluid.cxx \
+	about_panel.cxx \
+	widget_panel.cxx \
+	alignment_panel.cxx \
+	function_panel.cxx \
+	gif.cxx
+
+OBJS=   Fl_Function_Type.obj \
+	Fl_Menu_Type.obj \
+	Fl_Group_Type.obj \
+	Fl_Widget_Type.obj \
+	Fl_Type.obj \
+	Fl_Window_Type.obj \
+	Fluid_Image.obj \
+	code.obj \
+	code_editor.obj \
+	factory.obj \
+	file.obj \
+	fluid.obj \
+	about_panel.obj \
+	widget_panel.obj \
+	alignment_panel.obj \
+	function_panel.obj \
+	gif.obj
+
+.cxx.obj:
+	$(CC) $(CFLAGS) -c $< -Fo$@
+
+all: $(PROGNAME)
+
+#
+# without /SUBSYSTEM:WINDOWS a console window will accompany when 
+# clicked from explorer, muquit@muquit.com, May-10-2001
+
+## Release --
+$(PROGNAME) : $(OBJS)
+	$(LINKER) /RELEASE /SUBSYSTEM:WINDOWS /OUT:$(PROGNAME) $(OBJS) $(LIBS)
+
+# Debug -- accompany the console window
+##$(PROGNAME) : $(OBJS)
+##	$(LINKER) /OUT:$(PROGNAME) $(OBJS) $(LIBS)
+
+clean:
+	rm -f $(OBJS) $(PROGNAME) 
diff -Naur /usr/local/src/fltk-1.0.11/fluid/README.changes fluid/README.changes
--- /usr/local/src/fltk-1.0.11/fluid/README.changes	1969-12-31 16:00:00.000000000 -0800
+++ fluid/README.changes	2001-06-23 07:14:58.000000000 -0700
@@ -0,0 +1,44 @@
+$Name: Release_1_2_T1_Jul19_20001 $
+$Date: 2001/06/23 14:14:58 $
+
+Changes made in fluid (fltk 1.0.11):
+    - Added a feature to edit code with your favorite editor. It works in
+      Linux/Unix and Windows NT/2000. Set a environment variable 
+      FLUID_EDITOR to your favorite editor. If you want to edit code with
+      your editor click on the Editor... button (or press Alt+e).
+
+    - Added a status area in main widget browser window. The reason is
+      I don't like a window pops up all the time when I save the code.
+      The message is written to the status area now.
+
+To compile:
+   Unix:
+        make
+
+   Windows:
+    * Using MS Visual C++ IDE:
+        Add the file code_editor.cxx in the fluid project and then compile
+        as usual.
+
+    * Using the supplied Makefile.wnt (using MS Visual C++ compiler):
+        nmake -f Makefile.wnt
+
+    Note: look at Makefie.wnt, if needed you can compile fluid in debug mode
+    (with console window attached).
+
+    File changed:
+        code_editor.cxx (new)
+        code_editor.h (new)
+        function_panel.fl
+        fluid.cxx
+        Fl_Function_Type.cxx
+        Makefile
+        Makefile.wnt (new)
+    
+    
+--
+Muhammad A Muquit
+muquit@muquit.com
+http://www.muquit.com/
+Created: May-23-2001
+Updated: Jun-23-2001
diff -Naur /usr/local/src/fltk-1.0.11/fluid/Shortcut_Button.h fluid/Shortcut_Button.h
--- /usr/local/src/fltk-1.0.11/fluid/Shortcut_Button.h	2001-01-22 07:13:38.000000000 -0800
+++ fluid/Shortcut_Button.h	2001-05-13 08:26:24.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: Shortcut_Button.h,v 1.3.2.3 2001/01/22 15:13:38 easysw Exp $"
+// "$Id: Shortcut_Button.h,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $"
 //
 // Shortcut header file for the Fast Light Tool Kit (FLTK).
 //
@@ -35,5 +35,5 @@
 };
 
 //
-// End of "$Id: Shortcut_Button.h,v 1.3.2.3 2001/01/22 15:13:38 easysw Exp $".
+// End of "$Id: Shortcut_Button.h,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/code.cxx fluid/code.cxx
--- /usr/local/src/fltk-1.0.11/fluid/code.cxx	2001-01-22 07:13:39.000000000 -0800
+++ fluid/code.cxx	2001-05-13 08:26:23.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: code.cxx,v 1.9.2.9 2001/01/22 15:13:39 easysw Exp $"
+// "$Id: code.cxx,v 1.1.1.1 2001/05/13 15:26:23 muquit Exp $"
 //
 // Code output routines for the Fast Light Tool Kit (FLTK).
 //
@@ -405,5 +405,5 @@
 void Fl_Type::write_code2() {}
 
 //
-// End of "$Id: code.cxx,v 1.9.2.9 2001/01/22 15:13:39 easysw Exp $".
+// End of "$Id: code.cxx,v 1.1.1.1 2001/05/13 15:26:23 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/code_editor.cxx fluid/code_editor.cxx
--- /usr/local/src/fltk-1.0.11/fluid/code_editor.cxx	1969-12-31 16:00:00.000000000 -0800
+++ fluid/code_editor.cxx	2001-06-23 07:14:58.000000000 -0700
@@ -0,0 +1,878 @@
+/*
+**  routines to hande code editing by an external editor
+**
+**  Development History:
+**      who                  when           why
+**      muquit@muquit.com   May-16-2001     dont' like to edit code in the
+**                                          dialog.
+*/
+
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#ifndef WIN32
+#include <sys/wait.h>
+#include <signal.h>
+#include <unistd.h>
+#include <fcntl.h>
+#endif  /* ! WIN32 */
+
+#include "function_panel.h"
+#include "code_editor.h"
+#include <FL/x.H>
+
+#ifdef WIN32
+#include <process.h>
+#include <FL/fl_message.H>
+#endif /* WIN32 */
+
+// #define DEBUG 1
+
+/**** globals in this file **** -- starts -- */
+
+static char
+    s_tmpfile[2048];    /* tmp file path */
+
+static int
+    s_editor_running=0; /* if editor is running */
+
+/**** globals in this file **** -- ends -- */
+
+/* routines in this file:
+
+    void        codePanelEditorButtonCb (void)
+    void        codePanelExitCb  (Fl_Widget *widget,void *)
+    static void editorDone       (int signum)
+    static int  execCommand      (char *command,char *errbuf,int buflen)
+    char        *getFileContent  (char *path)
+    static int  parseArgs        (char *buf,char **args,int args_len,int *n)
+    void        startEditor      (char *command,char *tmpfile)
+    void        tempFilename     (char *filename,int len)
+*/
+
+/*
+** deactivate code input text area, Editor..., ok and cancel button
+** after the editor is started
+*/
+static void deActivateButtons(void)
+{
+
+    code_input->deactivate();
+    code_panel_editor->deactivate();
+    code_panel_ok->deactivate();
+    code_panel_cancel->deactivate();
+}
+
+/*
+** activate code input text area, Editor..., ok and cancel button
+** after the editor is ended.
+*/
+static void activateButtons(void)
+{
+    code_input->activate();
+    code_panel_editor->activate();
+    code_panel_ok->activate();
+    code_panel_cancel->activate();
+}
+
+
+
+/*
+**  writeCodePanelStatus()
+**
+**  Parameters:
+**      char *lab - the NULL terminated message
+**
+**  Return Values:
+**      none
+**
+**  Limitations and Comments:
+**      A copy of the message is made before setting to the label.
+**      A static var is used to copy the message, so it frees it if it
+**      already points to a malloc'd space.
+**
+**  Development History:
+**      who                  when           why
+**      muquit@muquit.com    May-20-2001    first cut
+*/
+void writeCodePanelStatus(char *lab)
+{
+    static char
+        *s=NULL;
+
+    if (s != NULL)
+        (void) free((char *) s);
+
+    s=strdup(lab);
+    if (s != NULL)
+    {
+        code_panel_status->label(s);
+        code_panel_status->redraw();
+    }
+}
+
+/*
+**  doBeep()
+**      beep
+**
+**  Parameters:
+**      none
+**
+**  Return Values:
+**      none
+**
+**  Limitations and Comments:
+**      for Unix and Win32
+**
+**  Development History:
+**      who                  when           why
+**      muquit@muquit.com   May-17-2001     first cut
+*/
+static void doBeep(void)
+{
+#ifdef WIN32
+            MessageBeep(MB_ICONERROR);
+#else /* UNIX */
+            if (!fl_display)
+                fl_open_display();
+            if (fl_display)
+                XBell(fl_display, 100);
+            else
+            {
+                printf("\007"); /* doesn't work in windoze */
+                (void) fflush(stdout);
+            }
+#endif /* UNIX */
+    return;
+}
+
+#ifdef WIN32
+/*
+**  editorThread()
+**      The routine called from the thread to start the editor. It creates
+**      the editor process, if the process is created successfully:
+**          - it wil deactivate the code input text area, the button in
+**            the code panel.
+**          - will for the editor process to finish and after that will
+**            activate the text area and the buttons.
+**
+**  Parameters:
+**      void *cmd - the editor command (e.g. cmd /c vim)
+**
+**  Return Values:
+**      NULL
+**
+**  Limitations and Comments:
+**      For Win32 only. Simulation of Unix fork()/exec()
+**      the tmpfile will be removed.
+**
+**  Development History:
+**      who                  when           why
+**      muquit@muquit.com    May-23-2001    first cut
+*/
+unsigned __stdcall editorThread(void *cmd)
+{
+    PROCESS_INFORMATION
+        process_info;
+
+    STARTUPINFO
+        startup_info;
+
+    BOOL
+        ec,
+        rc;
+    
+    DWORD
+        dw_exit_code,
+        dw;
+
+    HANDLE
+        h_process,
+        h_thread;
+
+    char
+        *code;
+
+    char
+        command[BUFSIZ];
+
+    memset(&startup_info,0,sizeof(startup_info));
+    startup_info.cb=sizeof(startup_info);
+
+#ifdef DEBUG
+    (void) fprintf(stderr," cmd=%s\n",cmd);
+#endif /* DEBUG */
+
+
+    rc=CreateProcess(NULL,
+            (char *) cmd,
+            NULL,
+            NULL,
+            FALSE,
+            NORMAL_PRIORITY_CLASS,
+            NULL,
+            NULL,
+            &startup_info,
+            &process_info);
+
+    if (rc)
+    {
+        h_process=process_info.hProcess;
+        h_thread=process_info.hThread;
+
+        deActivateButtons();
+
+        dw=WaitForSingleObject(h_process,INFINITE);
+        if (dw != 0xffffffff) /* Success */
+        {
+            ec=GetExitCodeProcess(h_process,&dw_exit_code);
+#ifdef DEBUG
+            (void) fprintf(stderr," ec=%d exit_code=%d\n",
+                           ec,dw_exit_code);
+#endif /* DEBUG */
+        }
+        CloseHandle(h_thread);
+        CloseHandle(h_process);
+
+        code=getFileContent(s_tmpfile);
+        if (code != NULL)
+        {
+
+            code_input->value(code); 
+            /*
+            ** according to the doc the above calls copies the string
+            ** to its internal buffer, so we should be able to free
+            ** our malloc'd space.
+            ** muquit@muquti.com May-23-2001 
+            */
+            (void) free((char *) code); /* XXX */
+        }
+        unlink(s_tmpfile);
+
+        writeCodePanelStatus(" ");
+        code_panel->cursor(FL_CURSOR_DEFAULT);
+        s_editor_running=0;
+        activateButtons();
+    }
+    else
+    {
+        (void) fprintf(stderr,"Could not run: %s\n",cmd);
+    }
+
+    _endthreadex(0);
+    return (NULL);
+}
+#endif /* WIN32 */
+
+/*
+**  getFileContent()
+**      opens a file, read the content and returns a pointer to it.
+**
+**  Parameters:
+**      char *path      - the full path of the file 
+**
+**  Return Values:
+**      char *content   - on success
+**      NULL            - on failure
+**
+**  Limitations and Comments:
+**      The content is pointer to a malloc'd space, the caller responsible
+**      to free it. The content is NULL terminated. The file is closed.
+**
+**  Development History:
+**      who                  when           why
+**      muquit@muquit.com   May-09-2001     first cut
+**      muquit@muquit.com   Jun-11-2001     fixed an ABR
+*/
+char *getFileContent(char *path)
+{
+    char
+        *whole_file=NULL;
+
+    int
+        fd,
+        rc=0;
+
+    struct stat
+        sbuf;
+
+    size_t
+        count,
+        length;
+
+#ifdef WIN32
+    HANDLE
+        fh;
+    DWORD
+        nIn;
+#endif /* WIN32 */
+
+    rc=stat(path,&sbuf);
+    if (rc != 0)
+    {
+        (void) fprintf(stderr,"could not stat file: %s\n",path);
+        return (NULL);
+    }
+    length=sbuf.st_size;
+    if (length == 0)
+        return (NULL);
+
+#ifdef WIN32
+    fh=CreateFile(path,
+            GENERIC_READ,
+            0,
+            NULL,
+            OPEN_EXISTING,
+            FILE_ATTRIBUTE_NORMAL,
+            NULL);
+    if (fh == NULL)
+    {
+        (void) fprintf(stderr,"Could not open file %s for reading\n",path);
+        return (NULL);
+    }
+#else /* UNIX */
+    fd=open(path,O_RDONLY,0777);
+    if (fd < 0)
+    {
+        (void) fprintf(stderr,"Could not open file: %s for reading\n",path);
+        return (NULL);
+    }
+#endif /* ! WIN32 (UNIX) */
+
+    whole_file=(char *) malloc(length+1);
+    if (whole_file == (char *) NULL)
+    {
+        (void) fprintf(stderr,"memory allocation failed for whole_file\n");
+#ifdef WIN32
+        CloseHandle(fh);
+#else /* UNIX */
+        close(fd);
+#endif /* ! WIN32 (UNIX) */
+        return (NULL);
+    }
+    memset(whole_file,0,length+1);
+
+#ifdef WIN32
+    ReadFile(fh,whole_file,length,&nIn,NULL);    
+    if (length != nIn)
+    {
+        (void) fprintf(stderr,"Error reading file: %s\n",path);
+        CloseHandle(fh);
+        return (NULL);
+    }
+#else /* UNIX */
+    count=read(fd,whole_file,(length*sizeof(char))+1);
+    if (count != length)
+    {
+        (void) fprintf(stderr,"Coult not read file: %s\n",path);
+        close(fd);
+        (void) free((char *) whole_file);
+        return (NULL);
+    }
+
+    close(fd);
+
+#endif /* ! WIN32 (UNIX) */
+
+    if (whole_file[length] != '\0')
+    {
+#ifdef DEBUG
+        (void) fprintf(stderr,"getFileContent() - NULL terminated at %d \n",length);
+#endif /* DEBUG */
+        whole_file[length]='\0';
+    }
+    return (whole_file);
+}
+
+#ifndef WIN32
+/*
+**  editorDone()
+**      called when the editor is exited or killed
+**
+**  Parameters:
+**      int signum  - the signal 
+**
+**  Return Values:
+**      none
+**
+**  Limitations and Comments:
+**      called as the signal handler of SIGCHLD. is called when the child
+**      dies. This routine is for Unix only.
+**
+**  Development History:
+**      who                  when           why
+**      muquit@muquit.com   May-17-2001     first cut
+**      muquit@muquit.com   Jun-11-2001     fixed a memory leak
+*/
+static void editorDone(int signum)
+{
+    int
+        pid;
+
+    char
+        *code;
+
+    pid=waitpid(-1,(int *) 0,WNOHANG);
+    if (pid == -1)
+        return;
+
+#ifdef DEBUG
+    (void) fprintf(stderr,"editorDone() - process %d ended\n",pid);
+#endif /* DEBUG */
+
+    activateButtons();
+
+    code=getFileContent(s_tmpfile);
+    if (code != NULL)
+    {
+        code_input->value(code); /* XXX */
+        (void) free((char *) code);
+    }
+    unlink(s_tmpfile);
+
+    writeCodePanelStatus(" ");
+    code_panel->cursor(FL_CURSOR_DEFAULT);
+    s_editor_running=0;
+}
+#endif /* ! WIN32 (UNIX) */
+
+
+/*
+**  parseArgs()
+**      split commands to NULL terminated individual args
+**
+**  Parameters:
+**      char    *buf     - the command
+**      char    **args   - NULL terminated args, returns
+**      int     args_len - number of pointer args can hold
+**      int     *n       - number of args in the command, returns
+**
+**  Return Values:
+**      0   on success
+**      -1 on failure
+**
+**  Limitations and Comments:
+**      command can have 128 args max. This routine is used in Unix only.
+**
+**  Development History:
+**      who                  when           why
+**      muquit@muquit.com   May-17-2001     first cut
+*/
+static int parseArgs(char *buf,char **args,int args_len,int *n)
+{
+    *n=0;
+    while (*buf != '\0')
+    {
+        while ((*buf == ' ')  ||
+               (*buf == '\t') ||
+               (*buf == '\n'))
+        {
+            *buf++='\0';
+        }
+        if (++(*n) > args_len)
+        {
+            (void) fprintf(stderr,"args buffer overflowed: %d > % d\n",
+                           *n,args_len);
+            return(-1);
+        }
+        *args++=buf;
+
+        /* skip over the argument */
+        while ((*buf != '\0') &&
+               (*buf != ' ')  &&
+               (*buf != '\t') &&
+               (*buf != '\n'))
+            buf++;
+    }
+    *args='\0';
+    return (0);
+}
+
+/*
+**  execCommand()
+**      executes a external command
+**
+**  Parameters:
+**      char *command   - the command to execute
+**      char *errbuf    - returns error message if any
+**      int  buflen     - length of errbuf
+**
+**  Return Values:
+**      0   on success
+**      -1  on failure
+**
+**  Limitations and Comments:
+**      For Unix and Win32. For Win32, it starts a new thread and start
+**      the editor from the thread handler routine and the handler routine
+**      waits till the editor is done (In Unix, the signal handler does
+**      that).
+**
+**  Development History:
+**      who                  when           why
+**      muquit@muquit.com    May-15-2001    first cut
+*/
+static int execCommand(char *command,char *errbuf,int buflen)
+{
+    int
+        pid,
+        rc,
+        n=0;
+
+    char
+        *args[128],
+        cmd_buf[BUFSIZ];
+
+#ifdef WIN32
+    HANDLE
+        thread_handle;
+
+    DWORD
+        ret_val;
+
+    unsigned int
+        thread_id;
+#endif /* WIN32 */
+
+    (void) strcpy(cmd_buf,command);
+#ifndef WIN32 /* UNIX */
+    rc=parseArgs(cmd_buf,args,127,&n);
+    if (rc != 0)
+    {
+        (void) fprintf(stderr,"Could not parse:\"%s\"\n",command);
+        (void) sprintf(errbuf,"Could not parse:\"%s\"",command);
+        return (-1);
+    }
+
+#ifdef DEBUG
+    if (n)
+    {
+        for (i=0; i < n; i++)
+        {
+            (void) fprintf(stderr,"execCommand() - args[%d]=%s\n",i,args[i]);
+        }
+    }
+#endif /* DEBUG */
+#endif /* UNIX */
+
+#ifdef WIN32
+    /* start a thread */
+    thread_handle=(HANDLE) _beginthreadex(NULL,
+            0,
+            editorThread,
+            (void *) cmd_buf,
+            0,
+            &thread_id);
+#else /* UNIX */
+
+    pid=fork();
+    switch(pid)
+    {
+        case -1:
+        {
+            (void) strcpy(errbuf,"fork() failed out of process\r\n");
+            return(-1);
+            break;
+
+        }
+        case 0: /* child */
+        {
+            execvp(args[0],args);
+            (void) sprintf(errbuf,"failed to exec: %s",command);
+            perror("execvp");
+            (void) fprintf(stderr," could not exec: %s\n",command);
+            _exit(255);
+            break;
+        }
+
+        default:
+        {
+            break;
+        }
+    }
+
+#endif /* ! WIN32 (UNIX) */
+
+    return(0);
+}
+
+
+
+/*
+**  tempFilename()
+**      make a file with unique name
+**
+**  Parameters:
+**      char *filename - filled with the name (returns)
+**      int len        - lenth of text filename can hold
+**
+**  Return Values:
+**      0 on success
+**      -1 on failure
+**
+**  Limitations and Comments:
+**      Set the TMPDIR to your own space in Unix for security reason.
+**      I add .cxx at the end of the filename because I use vim and I
+**      want the syntax highlighting gets turned on automatically.
+**
+**  Development History:
+**      who                  when           why
+**      muquit@muquit.com   May-13-2001     first cut
+*/
+int tempFilename(char *filename,int len)
+{
+#define TEMP_TEMPLATE       "fltk"
+    char
+        *name;
+
+    name=(char *) tempnam((char *) NULL,TEMP_TEMPLATE);
+    if (name == NULL)
+    {
+        return (-1);
+    }
+    else
+    {
+        (void) strncpy(filename,name,len-10);
+        filename[len-10]='\0';
+        (void) strcat(filename,".cxx");
+        (void) free((char *) name);
+    }
+
+    return (0);
+}   
+
+
+/*
+**  startEditor()
+**      start editor 
+**
+**  Parameters:
+**      char *command - the command, it might look like:
+**                      xterm -e vim fltk353xr.cxx
+**
+**  Return Values:
+**      none
+**
+**  Limitations and Comments:
+**
+**
+**
+**  Development History:
+**      who                  when           why
+**      muquit@muquit.com   May-13-2001     first cut
+*/
+void startEditor(char *command,char *tmpfile)
+{
+    char
+        errbuf[BUFSIZ],
+        buf[BUFSIZ];
+
+    int
+        rc;
+            
+    (void) strcat(command," ");
+    (void) strcat(command,s_tmpfile);
+    rc=execCommand(command,errbuf,sizeof(errbuf)-1);
+    if (rc != 0)
+    {
+        fl_alert(errbuf);
+        return;
+    }
+    
+    deActivateButtons();
+
+    s_editor_running=1;
+
+    (void) sprintf(buf,"Editing in file: %s",tmpfile);
+
+    writeCodePanelStatus(buf);
+    code_panel->cursor(FL_CURSOR_WAIT);
+
+}
+
+
+
+/*
+**  codePanelHelpButtonCb()
+**      callback routine for the Help button in code panel
+**
+**  Parameters:
+**      none
+**
+**  Return Values:
+**      none
+**
+**  Limitations and Comments:
+**      the help window must be created first.
+**
+**
+**  Development History:
+**      who                  when           why
+**      muquit@muquit.com    May-22-2001    first cut
+*/
+
+void codePanelHelpButtonCb(void)
+{
+    code_editor_help_win->show();
+}
+
+
+/*
+**  codePanelEditorButtonCb()
+**    start editor with the tmp file
+**
+**  Parameters:
+**      none
+**
+**  Return Values:
+**      none
+**
+**  Limitations and Comments:
+**      uses the statics  in module: s_tmpfile
+**      uses globals: code_input
+**      if the environment variable FLTK_EDITOR does not exist, return
+**
+**  Development History:
+**      who                  when           why
+**      muquit@muquit.com   May-13-2001     first cut
+**      muquit@muquit.com   May-21-2001     Win32 port
+*/
+void codePanelEditorButtonCb(void)
+{
+    char
+        buf[BUFSIZ],
+        *s;
+
+    const char
+        *code;
+
+    int
+        rc;
+
+#ifdef WIN32
+    HANDLE
+        hwfile;
+    DWORD
+        nOut;
+#else /* UNIX */
+
+    /* if you hvae SIGACTION */
+#define HAVE_SIGACTION 1
+
+#ifdef HAVE_SIGACTION
+    struct sigaction
+        act;
+#endif /* HAVE_SIGACTION */
+
+#endif /* WIN32 */
+
+    s=getenv("FLUID_EDITOR");
+    if (s == NULL)
+    {
+        doBeep();
+
+        fl_alert("FLUID_EDITOR environment variable is not set!");
+        return;
+    }
+    (void) strncpy(buf,s,sizeof(buf)-1);
+    buf[sizeof(buf)-1]='\0';
+
+
+    /* create a tmp filename */
+    memset(s_tmpfile,0,sizeof(s_tmpfile));
+    rc=tempFilename(s_tmpfile,sizeof(s_tmpfile)-1);
+    if (rc != 0)
+    {
+        fl_alert("Could not create tmp file");
+        return;
+    }
+
+    /* if one already exits, get rid of it */
+    unlink(s_tmpfile);
+
+    /* get the code from code_input text window */
+    code=code_input->value();
+
+    /* put the code in the tmp file */
+#ifdef WIN32
+    if (code != NULL)
+    {
+        hwfile=CreateFile(s_tmpfile,
+                GENERIC_WRITE,
+                0,
+                NULL,
+                CREATE_ALWAYS,
+                FILE_ATTRIBUTE_NORMAL,
+                NULL);
+
+        if (hwfile != NULL)
+        {
+            WriteFile(hwfile,code,(DWORD) strlen(code),&nOut,NULL);
+            CloseHandle(hwfile);
+        }
+
+    }
+#else /* UNIX */
+    if (code != NULL)
+    {
+        FILE
+            *fp;
+
+        fp=fopen(s_tmpfile,"wb");
+        if (fp != NULL)
+        {
+            (void) fprintf(fp,code);
+            (void) fclose(fp);
+        }
+    }
+
+    /*
+    ** we'll fork a process and start editor, setup the signal handler
+    ** so that the parent knows when the child ends
+    */
+    sigemptyset(&act.sa_mask);
+    act.sa_flags=0;
+    act.sa_handler=editorDone;
+    sigaction(SIGCHLD,&act,NULL);
+
+    /* signal(SIGCHLD,editorDone); */ /* old way */
+#endif /* !WIN32 (UNIX) */
+
+
+    /* start the editor */
+    startEditor(buf,s_tmpfile);
+}
+
+/*
+**  codePanelExitCb()
+**    exit callback of the code panel window
+**
+**  Parameters:
+**      Fl_Wiget *  - not used
+**      void *      - not used
+**
+**  Return Values:
+**      none
+**
+**  Limitations and Comments:
+**      args are not used at this time      
+**
+**  Development History:
+**      who                  when           why
+**      muquit@muquit.com   May-13-2001     first cut
+*/
+void codePanelExitCb(Fl_Widget *widget,void *)
+{
+    if (! s_editor_running)
+    {
+        code_panel->hide();
+    }
+    else
+        doBeep();
+}
+
diff -Naur /usr/local/src/fltk-1.0.11/fluid/code_editor.h fluid/code_editor.h
--- /usr/local/src/fltk-1.0.11/fluid/code_editor.h	1969-12-31 16:00:00.000000000 -0800
+++ fluid/code_editor.h	2001-06-11 17:53:33.000000000 -0700
@@ -0,0 +1,29 @@
+#ifndef CODE_EDITOR_H
+#define CODE_EDITOR_H
+
+/*
+ $Id: code_editor.h,v 1.1 2001/06/12 00:53:33 muquit Exp $
+ */
+
+/*
+** Header for code editing with editor.
+** muquit@muquit.com Sun May 13 22:57:51 EDT 2001 
+*/
+
+#include <FL/Fl.H>
+#include <FL/Fl_Window.H>
+#include <FL/Fl_Button.H>
+#include <FL/fl_ask.H>
+
+#include "function_panel.h"
+
+/* function prototypes */
+int tempFilename(char *filename,int len);
+char *getFileContent(char *path);
+
+void codePaneleditorButtonCb(void);
+void codePanelexitCb(Fl_Widget *,void *);
+
+
+
+#endif /* ! CODE_EDITOR_H */
diff -Naur /usr/local/src/fltk-1.0.11/fluid/factory.cxx fluid/factory.cxx
--- /usr/local/src/fltk-1.0.11/fluid/factory.cxx	2001-04-13 12:07:40.000000000 -0700
+++ fluid/factory.cxx	2001-05-13 08:26:24.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: factory.cxx,v 1.4.2.11 2001/04/13 19:07:40 easysw Exp $"
+// "$Id: factory.cxx,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $"
 //
 // Widget factory code for the Fast Light Tool Kit (FLTK).
 //
@@ -727,5 +727,5 @@
 }
 
 //
-// End of "$Id: factory.cxx,v 1.4.2.11 2001/04/13 19:07:40 easysw Exp $".
+// End of "$Id: factory.cxx,v 1.1.1.1 2001/05/13 15:26:24 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/file.cxx fluid/file.cxx
--- /usr/local/src/fltk-1.0.11/fluid/file.cxx	2001-01-22 07:13:39.000000000 -0800
+++ fluid/file.cxx	2001-05-13 08:26:23.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: file.cxx,v 1.7.2.6 2001/01/22 15:13:39 easysw Exp $"
+// "$Id: file.cxx,v 1.1.1.1 2001/05/13 15:26:23 muquit Exp $"
 //
 // Fluid file routines for the Fast Light Tool Kit (FLTK).
 //
@@ -639,5 +639,5 @@
 }
 
 //
-// End of "$Id: file.cxx,v 1.7.2.6 2001/01/22 15:13:39 easysw Exp $".
+// End of "$Id: file.cxx,v 1.1.1.1 2001/05/13 15:26:23 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/fluid.cxx fluid/fluid.cxx
--- /usr/local/src/fltk-1.0.11/fluid/fluid.cxx	2001-03-15 14:39:56.000000000 -0800
+++ fluid/fluid.cxx	2001-07-19 14:24:59.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: fluid.cxx,v 1.15.2.13 2001/03/15 22:39:56 easysw Exp $"
+// "$Id: fluid.cxx,v 1.3 2001/07/19 21:24:59 muquit Exp $"
 //
 // FLUID main entry for the Fast Light Tool Kit (FLTK).
 //
@@ -23,6 +23,8 @@
 // Please report all bugs and problems to "fltk-bugs@fltk.org".
 //
 
+#define FLUID_VERSION   "1.0.11"
+
 const char *copyright =
 "The FLTK user interface designer version 1.0.11\n"
 "Copyright 1998-2001 by Bill Spitzak and others.\n"
@@ -62,6 +64,9 @@
 #include <ctype.h>
 #include <errno.h>
 
+#include <time.h> /* MMM */
+#include <stdarg.h> /* MMM */
+
 #if defined(WIN32) && !defined(__CYGWIN__)
 #  include <direct.h>
 #  include <windows.h>
@@ -73,11 +78,57 @@
 
 #include "Fl_Type.h"
 
+Fl_Box
+    *widget_browser_status; // MMM, muquit@muquit.com 
 ////////////////////////////////////////////////////////////////
 
+/// muquit@muquit.com Fri May 18 23:52:19 EDT 2001 
+char *getTime()
+{
+    time_t
+        t;
+
+    char
+        *time_string;
+
+    t=time(NULL);
+    time_string=ctime(&t);
+    time_string[strlen(time_string)-1]='\0';
+
+    return (time_string);
+}
+
+void writeStatus(char *fmt,...)
+{
+    static char
+        *s=NULL;
+
+    char
+        buf[1024];
+
+    va_list
+        args;
+
+    va_start(args,fmt);
+    vsprintf(buf,fmt,args);
+    va_end(args);
+    if (s)
+    {
+        (void) free((char *) s);
+        s=NULL;
+    }
+    s=strdup(buf);
+    if (s != NULL)
+    {
+        widget_browser_status->label(s);
+        widget_browser_status->redraw();
+    }
+}
+
 void nyi(Fl_Widget *,void *) {
     fl_message("That's not yet implemented, sorry");
 }
+/// muquit@muquit.com  Sat May 19 00:06:46 EDT 2001 
 
 static const char *filename;
 void set_filename(const char *c);
@@ -121,6 +172,10 @@
     fl_message("Error writing %s: %s", c, strerror(errno));
     return;
   }
+  // muquit@muquit.com Sat May 19 00:08:46 EDT 2001 
+  writeStatus("%s - Wrote file \"%s\"",getTime(),c);
+  // muquit@muquit.com Sat May 19 00:08:46 EDT 2001 
+
   modflag = 0;
 }
 
@@ -203,7 +258,11 @@
     if (!x) {
       fl_message("Can't write %s: %s", cname, strerror(errno));
     } else {
-      fl_message("Wrote %s", cname, 0);
+        // Sorry I hate this dialog.. muquit@muquit.com 
+//      fl_message("Wrote %s", cname, 0);
+        // MMM, muquit@muquit.com Fri May 18 23:45:31 EDT 2001 
+        writeStatus("%s - Wrote %s",getTime(),cname);
+        // MMM
     }
   }
 }
@@ -226,7 +285,10 @@
     if (x) {
       fl_message("Can't write %s: %s", sname, strerror(errno));
     } else {
-      fl_message("Wrote %s", sname);
+//      fl_message("Wrote %s", sname);
+        // muquit@muquit.com Sat May 19 00:21:39 EDT 2001 
+        writeStatus("%s - Wrote %s",getTime(),sname);
+        // muquit@muquit.com Sat May 19 00:21:39 EDT 2001 
     }
   }
 }
@@ -367,20 +429,67 @@
   {0},
 {0}};
 
-#define BROWSERWIDTH 300
+//#define BROWSERWIDTH 300
+//#define BROWSERHEIGHT 500
+//#define WINWIDTH 300
+//#define MENUHEIGHT 30
+
+#define BROWSERWIDTH  335
 #define BROWSERHEIGHT 500
-#define WINWIDTH 300
-#define MENUHEIGHT 30
-#define WINHEIGHT (BROWSERHEIGHT+MENUHEIGHT)
+#define WINWIDTH      335
+#define MENUHEIGHT    30
+#define STATUS_HEIGHT 30
+#define WINHEIGHT (BROWSERHEIGHT+MENUHEIGHT+STATUS_HEIGHT)
 
 extern void fill_in_New_Menu();
 
+
 void make_main_window() {
   if (!main_window) {
     Fl_Widget *o;
     main_window = new Fl_Double_Window(WINWIDTH,WINHEIGHT,"fluid");
     main_window->box(FL_NO_BOX);
+//    o = make_widget_browser(0,MENUHEIGHT,BROWSERWIDTH,BROWSERHEIGHT);
+//    o->box(FL_FLAT_BOX);
+    // MMM 
+    { 
+        
+        /*
+        ** my original black status box at the to of the window is gone!
+        ** now it's a gray box at the bottom of the window. 
+        ** code modified by Yucel, Adnan" <adnan.yucel@lmco.com>
+        ** Thu Jul 19 12:09:15 EDT 2001 
+        */
+
+        /* old code left for historical reasons only */
+
+#if 0
+      Fl_Box* s = widget_browser_status = new Fl_Box(0,MENUHEIGHT,
+                                            BROWSERWIDTH,STATUS_HEIGHT);
+
+      s->box(FL_EMBOSSED_BOX);
+      s->color(0);
+      s->labelsize(10);
+      s->labelcolor(FL_CYAN);
+      s->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
+#endif /* if 0 */
+
+        Fl_Box* s = widget_browser_status = new Fl_Box(0,
+                MENUHEIGHT+BROWSERHEIGHT,BROWSERWIDTH,STATUS_HEIGHT);    
+        s->box(FL_EMBOSSED_BOX);
+        s->color(FL_GRAY);  
+        s->labelsize(10);
+        s->labelcolor(FL_BLACK);
+        s->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
+    }
+    // MMM 
+#if 0
+    o = make_widget_browser(0,MENUHEIGHT+STATUS_HEIGHT,BROWSERWIDTH,
+                              BROWSERHEIGHT);
+#endif /* if 0 */
+
     o = make_widget_browser(0,MENUHEIGHT,BROWSERWIDTH,BROWSERHEIGHT);
+
     o->box(FL_FLAT_BOX);
     main_window->resizable(o);
     Fl_Menu_Bar *m = new Fl_Menu_Bar(0,0,BROWSERWIDTH,MENUHEIGHT);
@@ -456,6 +565,7 @@
     Fl::visual((Fl_Mode)(FL_DOUBLE|FL_INDEX));
     main_window->callback(exit_cb);
     main_window->show(argc,argv);
+    writeStatus("FLTK User Interface Designer version: %s",FLUID_VERSION);
   }
   if (c && !read_file(c,0)) {
     if (compile_only) {
@@ -474,5 +584,5 @@
 }
 
 //
-// End of "$Id: fluid.cxx,v 1.15.2.13 2001/03/15 22:39:56 easysw Exp $".
+// End of "$Id: fluid.cxx,v 1.3 2001/07/19 21:24:59 muquit Exp $".
 //
diff -Naur /usr/local/src/fltk-1.0.11/fluid/function_panel.cxx fluid/function_panel.cxx
--- /usr/local/src/fltk-1.0.11/fluid/function_panel.cxx	2000-03-15 10:57:06.000000000 -0800
+++ fluid/function_panel.cxx	2001-07-19 14:24:59.000000000 -0700
@@ -1,4 +1,4 @@
-// generated by Fast Light User Interface Designer (fluid) version 1.0008
+// generated by Fast Light User Interface Designer (fluid) version 1.0011
 
 #include "function_panel.h"
 
@@ -60,11 +60,32 @@
 
 Fl_Button *code_panel_cancel=(Fl_Button *)0;
 
+Fl_Button *code_panel_editor=(Fl_Button *)0;
+
+static void cb_code_panel_editor(Fl_Button*, void*) {
+  codePanelEditorButtonCb();
+}
+
+Fl_Box *code_panel_status=(Fl_Box *)0;
+
+Fl_Button *code_panel_help=(Fl_Button *)0;
+
+static void cb_code_panel_help(Fl_Button*, void*) {
+  codePanelHelpButtonCb();
+}
+
+Fl_Window *code_editor_help_win=(Fl_Window *)0;
+
+static void cb_Cancel(Fl_Button*, void*) {
+  code_editor_help_win->hide();
+}
+
 Fl_Window* make_code_panel() {
   Fl_Window* w;
-  { Fl_Window* o = code_panel = new Fl_Window(290, 175, "code");
+  { Fl_Window* o = code_panel = new Fl_Window(499, 298, "code");
     w = o;
-    { Fl_Input* o = code_input = new Fl_Input(10, 10, 270, 120);
+    o->callback((Fl_Callback*)codePanelExitCb);
+    { Fl_Input* o = code_input = new Fl_Input(10, 10, 480, 225);
       o->type(4);
       o->labelsize(12);
       o->textfont(4);
@@ -72,12 +93,53 @@
       o->when(FL_WHEN_NEVER);
       Fl_Group::current()->resizable(o);
     }
-    { Fl_Return_Button* o = code_panel_ok = new Fl_Return_Button(115, 140, 80, 25, "OK");
+    { Fl_Return_Button* o = code_panel_ok = new Fl_Return_Button(325, 270, 80, 25, "OK");
       w->hotspot(o);
     }
-    { Fl_Button* o = code_panel_cancel = new Fl_Button(200, 140, 80, 25, "Cancel");
+    { Fl_Button* o = code_panel_cancel = new Fl_Button(410, 270, 80, 25, "Cancel");
       o->shortcut(0xff1b);
     }
+    { Fl_Button* o = code_panel_editor = new Fl_Button(10, 270, 80, 25, "Editor...");
+      o->callback((Fl_Callback*)cb_code_panel_editor);
+      o->shortcut(FL_ALT+'e');
+    }
+    { Fl_Box* o = code_panel_status = new Fl_Box(10, 240, 480, 25);
+      o->box(FL_EMBOSSED_BOX);
+      o->labelsize(10);
+      o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
+    }
+    { Fl_Button* o = code_panel_help = new Fl_Button(95, 270, 80, 25, "Help...");
+      o->callback((Fl_Callback*)cb_code_panel_help);
+      o->shortcut(FL_ALT+'h');
+    }
+    o->set_modal();
+    o->end();
+  }
+  { Fl_Window* o = code_editor_help_win = new Fl_Window(341, 404, "code editor help");
+    w = o;
+    { Fl_Box* o = new Fl_Box(0, 0, 340, 370, "In order to use your editor, you must set the FLUID_EDITOR environment variab\
+le!!\nTo set the FLUID_EDITOR  environment variable:\n\nIn Unix:\nIf you\'re u\
+sing bash or its variant, at the shell prompt, type:\n \n FLUID_EDITOR=\"xterm\
+ -e vi\"\n export FLUID_EDITOR\n\nIf you\'re using csh or its variant, at the \
+shell prompt, type:\n\n setenv FLUID_EDITOR \"xterm -e vi\"\n \nYou can set th\
+e variable in .profile for bash and .login for csh.\nSpecify your favorite edi\
+tor instead of xterm -e vi. I use vim in\nmansi_xterm.\n\nIn Window NT:\nStart\
+->Settings->Control Panel\n    Double click on System, Select Environment Tab\
+\nSet the FLUID_EDITOR in System or User Variable space. \nenter FLUID_EDITOR \
+in Variable and the editor e.g. notepad.exe\nin Value. If you use vim you can \
+set the Value as:\ncmd /c vim.exe. If you use gvim.exe, set the Value as gvim.\
+exe.\n\n(Note: this is a modal dialog)");
+      o->box(FL_ENGRAVED_BOX);
+      o->color(7);
+      o->labelsize(10);
+      o->labelcolor(136);
+      o->align(133|FL_ALIGN_INSIDE);
+      Fl_Group::current()->resizable(o);
+    }
+    { Fl_Button* o = new Fl_Button(265, 375, 70, 25, "Cancel");
+      o->labelsize(12);
+      o->callback((Fl_Callback*)cb_Cancel);
+    }
     o->set_modal();
     o->end();
   }
diff -Naur /usr/local/src/fltk-1.0.11/fluid/function_panel.fl fluid/function_panel.fl
--- /usr/local/src/fltk-1.0.11/fluid/function_panel.fl	2000-03-15 10:57:06.000000000 -0800
+++ fluid/function_panel.fl	2001-07-19 14:24:59.000000000 -0700
@@ -1,5 +1,5 @@
 # data file for the Fltk User Interface Designer (fluid)
-version 1.0008 
+version 1.0011 
 header_name {.h} 
 code_name {.cxx} 
 gridx 5 
@@ -9,7 +9,7 @@
 } {
   Fl_Window function_panel {
     label {function/method} open
-    xywh {774 432 285 170} resizable modal visible
+    xywh {497 423 285 170} resizable modal visible
   } {
     Fl_Light_Button f_public_button {
       label public
@@ -41,19 +41,77 @@
 Function {make_code_panel()} {open
 } {
   Fl_Window code_panel {
-    label code open
-    xywh {260 242 290 175} resizable modal visible
+    label code
+    callback codePanelExitCb open selected
+    xywh {285 49 499 298} resizable
+    code0 {extern void codePanelExitCb(Fl_Widget *,void *);} modal visible
   } {
     Fl_Input code_input {
-      xywh {10 10 270 120} type Multiline labelsize 12 align 0 when 0 textfont 4 resizable
+      xywh {10 10 480 225} type Multiline labelsize 12 align 0 when 0 textfont 4 resizable
     }
     Fl_Return_Button code_panel_ok {
       label OK
-      xywh {115 140 80 25} hotspot
+      xywh {325 270 80 25} hotspot
     }
     Fl_Button code_panel_cancel {
       label Cancel
-      xywh {200 140 80 25} shortcut 0xff1b
+      xywh {410 270 80 25} shortcut 0xff1b
+    }
+    Fl_Button code_panel_editor {
+      label {Editor...}
+      callback {codePanelEditorButtonCb();}
+      xywh {10 270 80 25}
+      code0 {o->shortcut(FL_ALT+'e');}
+      code1 {extern void codePanelEditorButtonCb(void);}
+    }
+    Fl_Box code_panel_status {
+      xywh {10 240 480 25} box EMBOSSED_BOX labelsize 10 align 20
+    }
+    Fl_Button code_panel_help {
+      label {Help...}
+      callback {codePanelHelpButtonCb();}
+      xywh {95 270 80 25}
+      code0 {o->shortcut(FL_ALT+'h');}
+      code1 {extern void codePanelHelpButtonCb(void);}
+    }
+  }
+  Fl_Window code_editor_help_win {
+    label {code editor help} open
+    xywh {690 157 341 404} resizable modal visible
+  } {
+    Fl_Box {} {
+      label {In order to use your editor, you must set the FLUID_EDITOR environment variable!!
+To set the FLUID_EDITOR  environment variable:
+
+In Unix:
+If you're using bash or its variant, at the shell prompt, type:
+ 
+ FLUID_EDITOR="xterm -e vi"
+ export FLUID_EDITOR
+
+If you're using csh or its variant, at the shell prompt, type:
+
+ setenv FLUID_EDITOR "xterm -e vi"
+ 
+You can set the variable in .profile for bash and .login for csh.
+Specify your favorite editor instead of xterm -e vi. I use vim in
+mansi_xterm.
+
+In Window NT:
+Start->Settings->Control Panel
+    Double click on System, Select Environment Tab
+Set the FLUID_EDITOR in System or User Variable space. 
+enter FLUID_EDITOR in Variable and the editor e.g. notepad.exe
+in Value. If you use vim you can set the Value as:
+cmd /c vim.exe. If you use gvim.exe, set the Value as gvim.exe.
+
+(Note: this is a modal dialog)}
+      xywh {0 0 340 370} box ENGRAVED_BOX color 7 labelsize 10 labelcolor 136 align 149 resizable
+    }
+    Fl_Button {} {
+      label Cancel
+      callback {code_editor_help_win->hide();}
+      xywh {265 375 70 25} labelsize 12
     }
   }
 } 
@@ -62,7 +120,7 @@
 } {
   Fl_Window codeblock_panel {
     label codeblock open
-    xywh {289 462 295 130} resizable modal visible
+    xywh {319 492 295 130} resizable modal visible
   } {
     Fl_Input code_before_input {
       xywh {10 10 275 25} labelsize 12 align 5 when 0 textfont 4 resizable
@@ -89,7 +147,7 @@
 } {
   Fl_Window declblock_panel {
     label {declaration block} open
-    xywh {314 255 295 130} resizable modal visible
+    xywh {236 495 295 130} resizable modal visible
   } {
     Fl_Input decl_before_input {
       xywh {10 10 275 25} labelsize 12 align 5 when 0 textfont 4 resizable
@@ -116,7 +174,7 @@
 } {
   Fl_Window decl_panel {
     label declaration open
-    xywh {393 601 290 180} resizable visible
+    xywh {423 589 290 180} resizable visible
   } {
     Fl_Light_Button decl_public_button {
       label public
@@ -144,8 +202,8 @@
 Function {make_class_panel()} {open
 } {
   Fl_Window class_panel {
-    label class open selected
-    xywh {517 813 285 170} resizable modal visible
+    label class open
+    xywh {547 599 285 170} resizable modal visible
   } {
     Fl_Light_Button c_public_button {
       label public
diff -Naur /usr/local/src/fltk-1.0.11/fluid/function_panel.h fluid/function_panel.h
--- /usr/local/src/fltk-1.0.11/fluid/function_panel.h	2000-03-15 10:57:06.000000000 -0800
+++ fluid/function_panel.h	2001-06-11 17:53:33.000000000 -0700
@@ -1,4 +1,4 @@
-// generated by Fast Light User Interface Designer (fluid) version 1.0008
+// generated by Fast Light User Interface Designer (fluid) version 1.0011
 
 #ifndef function_panel_h
 #define function_panel_h
@@ -16,14 +16,22 @@
 #include <FL/Fl_Button.H>
 extern Fl_Button *f_panel_cancel;
 Fl_Window* make_function_panel();
+extern void codePanelExitCb(Fl_Widget *,void *);
+extern void codePanelExitCb(Fl_Window*, void*);
 extern Fl_Window *code_panel;
 extern Fl_Input *code_input;
 extern Fl_Return_Button *code_panel_ok;
 extern Fl_Button *code_panel_cancel;
+extern void codePanelEditorButtonCb(void);
+extern Fl_Button *code_panel_editor;
+#include <FL/Fl_Box.H>
+extern Fl_Box *code_panel_status;
+extern void codePanelHelpButtonCb(void);
+extern Fl_Button *code_panel_help;
+extern Fl_Window *code_editor_help_win;
 Fl_Window* make_code_panel();
 extern Fl_Window *codeblock_panel;
 extern Fl_Input *code_before_input;
-#include <FL/Fl_Box.H>
 extern Fl_Input *code_after_input;
 extern Fl_Return_Button *codeblock_panel_ok;
 extern Fl_Button *codeblock_panel_cancel;
diff -Naur /usr/local/src/fltk-1.0.11/fluid/gif.cxx fluid/gif.cxx
--- /usr/local/src/fltk-1.0.11/fluid/gif.cxx	2001-01-22 07:13:39.000000000 -0800
+++ fluid/gif.cxx	2001-05-13 08:26:23.000000000 -0700
@@ -1,5 +1,5 @@
 //
-// "$Id: gif.cxx,v 1.3.2.5 2001/01/22 15:13:39 easysw Exp $"
+// "$Id: gif.cxx,v 1.1.1.1 2001/05/13 15:26:23 muquit Exp $"
 //
 // GIF support for the Fast Light Tool Kit (FLTK).
 //
@@ -359,5 +359,5 @@
 }
 
 //
-// End of "$Id: gif.cxx,v 1.3.2.5 2001/01/22 15:13:39 easysw Exp $".
+// End of "$Id: gif.cxx,v 1.1.1.1 2001/05/13 15:26:23 muquit Exp $".
 //
