libcvd-members
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libcvd-members] gvars3 Makefile.in configure configure.ac gvars...


From: Edward Rosten
Subject: [libcvd-members] gvars3 Makefile.in configure configure.ac gvars...
Date: Wed, 20 Feb 2008 19:03:59 +0000

CVSROOT:        /cvsroot/libcvd
Module name:    gvars3
Changes by:     Edward Rosten <edrosten>        08/02/20 19:03:59

Modified files:
        .              : Makefile.in configure configure.ac 
        gvars3         : GUI_Fltk.h GUI_Motif.h instances.h 
        src            : GUI_Fltk.cc GUI_Fltk2.cc GUI_Motif.cc inst.cc 
                         inst_headless.cc 
Added files:
        gvars3         : GUI_Widgets.h 
        src            : GUI_none.cc 

Log message:
        Large changes: **WARNING** your code will probably break if you use the
        graphical interface.
        
        If you need the old version, use the CVS tag END_VERSION_0_5
        
        The version has been bumped to 0.6, so it shouldn't overwrite the old 
0.5 
        library, so compiled programs shouldn't break (hpefully).
        
        Changes:
        
        1 The GUI_{motif,fltk,fltk2} interface has been reworked.
        
          You should now include GUI_Widgets.h. This has a class called 
GUI_Widgets.h
          with two methods: run_thread() and process_in_crnt_thread(). This 
does the
          same as before, except that your code will now always compile, 
regardless of
          the type of widget set available.
        
          Also, all GUI calls are via GUI.*, not GUI_{motif,fltk,fltk2}.*, so 
you won't
          have to rewrite your .cfg files if you have a different library set 
available.
        
        2 GUI_Motif now supports process_in_crnt_thread(), so the mysterious 
segfaults
          have probably vanished. YMMV
        
        3 GUI_Fltk has been converted to GVars3. fltk2 and motif still use the 
backwards
          compatibility interface
        
        4 The configure script now selects only one of the available widget 
sets to
          compile, choosing (in order) fltk2, fltk, motif, none. There are 
various
          enable/disable options.
        
        With any luck, programs should "just work" rather better than they used 
to, and
        the interface is simpler.
        
        It currently uses some implementation defined behaviour in g++, that 
static
        constructres are run in the reverse order of object files on the 
commandline.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gvars3/Makefile.in?cvsroot=libcvd&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/gvars3/configure?cvsroot=libcvd&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/gvars3/configure.ac?cvsroot=libcvd&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/gvars3/gvars3/GUI_Fltk.h?cvsroot=libcvd&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/gvars3/gvars3/GUI_Motif.h?cvsroot=libcvd&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/gvars3/gvars3/instances.h?cvsroot=libcvd&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/gvars3/gvars3/GUI_Widgets.h?cvsroot=libcvd&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gvars3/src/GUI_Fltk.cc?cvsroot=libcvd&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/gvars3/src/GUI_Fltk2.cc?cvsroot=libcvd&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/gvars3/src/GUI_Motif.cc?cvsroot=libcvd&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/gvars3/src/inst.cc?cvsroot=libcvd&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/gvars3/src/inst_headless.cc?cvsroot=libcvd&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/gvars3/src/GUI_none.cc?cvsroot=libcvd&rev=1.1

Patches:
Index: Makefile.in
===================================================================
RCS file: /cvsroot/libcvd/gvars3/Makefile.in,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- Makefile.in 12 Feb 2008 19:37:15 -0000      1.21
+++ Makefile.in 20 Feb 2008 19:03:58 -0000      1.22
@@ -82,7 +82,8 @@
        src/GStringUtil.o               \
        src/gvars2.o                    \
        src/serialize.o                 \
-       src/inst_headless.o             \
+       src/GUI_none.o                  \
+       src/inst.o                              \
 
 OBJS=\
        src/gvars3.o                    \
@@ -90,29 +91,21 @@
        src/GStringUtil.o               \
        src/gvars2.o                    \
        src/serialize.o                 \
-       src/inst.o                              \
+       src/@address@hidden          \
+       src/GUI_non_readline.o  \
+       src/inst.o
 
 ifeq (@have_readline@,yes)
        OBJS+=src/GUI_readline.o 
-    CPPFLAGS+=-DGUI_HAVE_READLINE
-else
-       OBJS+=src/GUI_non_readline.o 
 endif
 
-ifeq (@have_fltk@,yes)
-       OBJS+=src/GUI_Fltk.o
-    CPPFLAGS+=-DGUI_HAVE_FLTK
-endif
+       #src/@address@hidden     \
+#G++ seems to run constructors in the reverse order
+#so inst needs to be last.
+
+
 
-ifeq (@have_fltk2@,yes)
-       OBJS+=src/GUI_Fltk2.o
-    CPPFLAGS+=-DGUI_HAVE_FLTK2
-endif
 
-ifeq (@have_motif@,yes)
-       OBJS+=src/GUI_Motif.o
-    CPPFLAGS+=-DGUI_HAVE_MOTIF
-endif
 
 ifeq (@build_cpu@,x86_64)
     CPPFLAGS+=-fPIC
@@ -146,7 +139,7 @@
 hsos= $(hsoname) $(hsoname1) $(hsoname2)
 
 ifeq (@make_headless@,yes)
-       HEADLESS=$(harchive) $(hsos)
+       HEADLESS=$(harchive) $(hsoname)
 endif
 
 all: $(archive) $(soname) $(HEADLESS)

Index: configure
===================================================================
RCS file: /cvsroot/libcvd/gvars3/configure,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- configure   12 Feb 2008 19:37:15 -0000      1.14
+++ configure   20 Feb 2008 19:03:58 -0000      1.15
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for gvars3 0.5.
+# Generated by GNU Autoconf 2.59 for gvars3 0.6.
 #
 # Copyright (C) 2003 Free Software Foundation, Inc.
 # This configure script is free software; the Free Software Foundation
@@ -267,8 +267,8 @@
 # Identity of this package.
 PACKAGE_NAME='gvars3'
 PACKAGE_TARNAME='gvars3'
-PACKAGE_VERSION='0.5'
-PACKAGE_STRING='gvars3 0.5'
+PACKAGE_VERSION='0.6'
+PACKAGE_STRING='gvars3 0.6'
 PACKAGE_BUGREPORT=''
 
 # Factoring default headers for most tests.
@@ -308,7 +308,7 @@
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME 
PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix 
program_transform_name bindir sbindir libexecdir datadir sysconfdir 
sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir 
build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS AWK CXX 
CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT CXXCPP EGREP build build_cpu 
build_vendor build_os host host_cpu host_vendor host_os osx_hacks have_toon 
have_readline have_fltk have_motif a have_fltk2 make_headless major minor HLIBS 
LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME 
PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix 
program_transform_name bindir sbindir libexecdir datadir sysconfdir 
sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir 
build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS AWK CXX 
CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT CXXCPP EGREP build build_cpu 
build_vendor build_os host host_cpu host_vendor host_os osx_hacks have_toon 
have_readline a guiobj make_headless major minor HLIBS LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -777,7 +777,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures gvars3 0.5 to adapt to many kinds of systems.
+\`configure' configures gvars3 0.6 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -842,10 +842,18 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of gvars3 0.5:";;
+     short | recursive ) echo "Configuration of gvars3 0.6:";;
    esac
   cat <<\_ACEOF
 
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-widgets
+  --disable-fltk2
+  --disable-fltk
+  --disable-motif
+
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
@@ -961,7 +969,7 @@
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
-gvars3 configure 0.5
+gvars3 configure 0.6
 generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
@@ -975,7 +983,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by gvars3 $as_me 0.5, which was
+It was created by gvars3 $as_me 0.6, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
@@ -2550,7 +2558,7 @@
 done
 
 
-optionlist="fltk motif fltk2 readline"
+optionlist="gui readline toon"
 options=""
 
 #Host detection
@@ -3057,11 +3065,94 @@
 echo ------------------------------------------------
 
 
+
 #dnl check_GUI(fltk,FL/Fl.h,fltk)
+enable_any=yes
+# Check whether --enable-widgets or --disable-widgets was given.
+if test "${enable_widgets+set}" = set; then
+  enableval="$enable_widgets"
+
+fi;
+
+# Check whether --enable-fltk2 or --disable-fltk2 was given.
+if test "${enable_fltk2+set}" = set; then
+  enableval="$enable_fltk2"
+
+fi;
+# Check whether --enable-fltk or --disable-fltk was given.
+if test "${enable_fltk+set}" = set; then
+  enableval="$enable_fltk"
+
+fi;
+# Check whether --enable-motif or --disable-motif was given.
+if test "${enable_motif+set}" = set; then
+  enableval="$enable_motif"
+
+fi;
+
+enable_fltk2=${enable_fltk2:-$enable_any}
+enable_fltk=${enable_fltk:-$enable_any}
+enable_motif=${enable_motif:-$enable_any}
+
+gui=none
+
+if test $enable_fltk2 == yes && test $gui == none
+then
+       a=
+       # Extract the first word of "fltk2-config", so it can be a program name 
with args.
+set dummy fltk2-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_a+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $a in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_a="$a" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_a="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
 
+  ;;
+esac
+fi
+a=$ac_cv_path_a
+
+if test -n "$a"; then
+  echo "$as_me:$LINENO: result: $a" >&5
+echo "${ECHO_T}$a" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
 
+       if test x$a != x
+       then
+               FLTK2_CPPFLAGS=`$a --cxxflags`
+               FLTK2_LIBS=`$a --ldflags`
+               CPPFLAGS="$FLTK2_CPPFLAGS $CPPFLAGS"
+               LIBS="$FLTK2_LIBS $LIBS"
+               guiobj=GUI_Fltk2
 
+               options="$options gui"
+               gui=fltk2
+       fi
+fi
 
+if test $gui == none && test $enable_fltk == yes
+then
 
 for ac_header in FL/Fl.H
 do
@@ -3207,13 +3298,12 @@
   cat >>confdefs.h <<_ACEOF
 #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- a_fltk=yes
+ have_fltk_headers=yes
 fi
 
 done
 
-
-echo "$as_me:$LINENO: checking for main in -lfltk" >&5
+       echo "$as_me:$LINENO: checking for main in -lfltk" >&5
 echo $ECHO_N "checking for main in -lfltk... $ECHO_C" >&6
 if test "${ac_cv_lib_fltk_main+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3272,24 +3362,24 @@
 echo "$as_me:$LINENO: result: $ac_cv_lib_fltk_main" >&5
 echo "${ECHO_T}$ac_cv_lib_fltk_main" >&6
 if test $ac_cv_lib_fltk_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBFLTK 1
-_ACEOF
-
-  LIBS="-lfltk $LIBS"
-
+  have_fltk_lib=yes
 fi
 
-if test x$ac_cv_lib_fltk_main == xyes && test x$a_fltk == xyes
-then
-       have_fltk=yes
 
-       options="$options fltk"
-       fltk=yes
+       if test x$have_fltk_headers$have_fltk_lib == xyesyes
+       then
+               LIBS="$LIBS -lfltk"
+               options="$options gui"
+               gui=fltk
+               guiobj=GUI_Fltk
+
+       fi
 fi
 
 
-echo "$as_me:$LINENO: checking for X" >&5
+if test $gui = none && test $enable_motif == yes
+then
+       echo "$as_me:$LINENO: checking for X" >&5
 echo $ECHO_N "checking for X... $ECHO_C" >&6
 
 
@@ -3384,7 +3474,7 @@
 /usr/openwin/share/include'
 
 if test "$ac_x_includes" = no; then
-  # Guess where to find include files, by looking for Xlib.h.
+  # Guess where to find include files, by looking for Intrinsic.h.
   # First, try using that file with no special directory specified.
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -3392,7 +3482,7 @@
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <X11/Xlib.h>
+#include <X11/Intrinsic.h>
 _ACEOF
 if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
@@ -3419,7 +3509,7 @@
 sed 's/^/| /' conftest.$ac_ext >&5
 
   for ac_dir in $ac_x_header_dirs; do
-  if test -r "$ac_dir/X11/Xlib.h"; then
+  if test -r "$ac_dir/X11/Intrinsic.h"; then
     ac_x_includes=$ac_dir
     break
   fi
@@ -3440,11 +3530,11 @@
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <X11/Xlib.h>
+#include <X11/Intrinsic.h>
 int
 main ()
 {
-XrmInitialize ()
+XtMalloc (0)
   ;
   return 0;
 }
@@ -3523,10 +3613,10 @@
 echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6
 fi
 
-foo_LIBS="$LIBS"
-foo_CPPFLAGS="$CPPFLAGS"
-test -n "$x_libraries" && LIBS="-L$x_libraries $LIBS"
-test -n "$x_includes" && CPPFLAGS="$CPPFLAGS -I$x_includes"
+       foo_LIBS="$LIBS"
+       foo_CPPFLAGS="$CPPFLAGS"
+       test -n "$x_libraries" && LIBS="-L$x_libraries $LIBS"
+       test -n "$x_includes" && CPPFLAGS="$CPPFLAGS -I$x_includes"
 
 
 for ac_header in Xm/Xm.h
@@ -3673,13 +3763,12 @@
   cat >>confdefs.h <<_ACEOF
 #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- a_motif=yes
+ have_motif_headers=yes
 fi
 
 done
 
-
-echo "$as_me:$LINENO: checking for main in -lXm" >&5
+       echo "$as_me:$LINENO: checking for main in -lXm" >&5
 echo $ECHO_N "checking for main in -lXm... $ECHO_C" >&6
 if test "${ac_cv_lib_Xm_main+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3738,83 +3827,23 @@
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xm_main" >&5
 echo "${ECHO_T}$ac_cv_lib_Xm_main" >&6
 if test $ac_cv_lib_Xm_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBXM 1
-_ACEOF
-
-  LIBS="-lXm $LIBS"
-
+  have_motif_lib=yes
 fi
 
-if test x$ac_cv_lib_Xm_main == xyes && test x$a_motif == xyes
-then
-       have_motif=yes
-
-       options="$options motif"
-       motif=yes
-fi
+       if test x$have_motif_headers$have_motif_lib == xyesyes
+       then
+               LIBS="$LIBS -lXm"
+               options="$options gui"
+               gui=motif
+               guiobj=GUI_Motif
 
-if test x$motif != xyes
-then
+       else
        LIBS="$foo_LIBS"
        CPPFLAGS="$foo_CPPFLAGS"
-fi
-
-
-# check_GUI(fltk2,fltk/Button.h,fltk2)
-a=
-# Extract the first word of "fltk2-config", so it can be a program name with 
args.
-set dummy fltk2-config; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_a+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $a in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_a="$a" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_a="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
   fi
-done
-done
-
-  ;;
-esac
-fi
-a=$ac_cv_path_a
-
-if test -n "$a"; then
-  echo "$as_me:$LINENO: result: $a" >&5
-echo "${ECHO_T}$a" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-if test x$a != x
-then
-    FLTK2_CPPFLAGS=`$a --cxxflags`
-    FLTK2_LIBS=`$a --ldflags`
-    CPPFLAGS="$FLTK2_CPPFLAGS $CPPFLAGS"
-    LIBS="$FLTK2_LIBS $LIBS"
-    have_fltk2=yes
-
-    options="$options fltk2"
-    fltk2=yes
 fi
 
-if test x$fltk$motif$fltk2 == x
+if test $gui == none
 then
        { echo "$as_me:$LINENO: WARNING: No GUI functionality enabled" >&5
 echo "$as_me: WARNING: No GUI functionality enabled" >&2;}
@@ -3854,6 +3883,8 @@
 echo
 echo Missing options:
 echo $options $optionlist |  $AWK 'BEGIN{RS=" "}{a[$1]++}END{for(i in 
a)if(a[i]==1)printf(i" "); print""}'
+echo GUI support:
+echo $gui
 echo
 
 
@@ -4252,7 +4283,7 @@
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by gvars3 $as_me 0.5, which was
+This file was extended by gvars3 $as_me 0.6, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -4307,7 +4338,7 @@
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-gvars3 config.status 0.5
+gvars3 config.status 0.6
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -4514,10 +4545,8 @@
 s,@osx_hacks@,$osx_hacks,;t t
 s,@have_toon@,$have_toon,;t t
 s,@have_readline@,$have_readline,;t t
-s,@have_fltk@,$have_fltk,;t t
-s,@have_motif@,$have_motif,;t t
 s,@a@,$a,;t t
-s,@have_fltk2@,$have_fltk2,;t t
+s,@guiobj@,$guiobj,;t t
 s,@make_headless@,$make_headless,;t t
 s,@major@,$major,;t t
 s,@minor@,$minor,;t t

Index: configure.ac
===================================================================
RCS file: /cvsroot/libcvd/gvars3/configure.ac,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- configure.ac        12 Feb 2008 19:37:15 -0000      1.13
+++ configure.ac        20 Feb 2008 19:03:58 -0000      1.14
@@ -1,10 +1,10 @@
-AC_INIT(gvars3, 0.5)
+AC_INIT(gvars3, 0.6)
 AC_PROG_AWK
 AC_LANG(C++)
 
 AC_CHECK_HEADERS(iostream)
 
-optionlist="fltk motif fltk2 readline"
+optionlist="gui readline toon"
 options=""
 
 #Host detection
@@ -157,49 +157,75 @@
 echo ------------------------------------------------
 
 
-#dnl check_GUI(fltk,FL/Fl.h,fltk)
 
-define(check_GUI,[
-AC_CHECK_HEADERS($2,a_$1=yes)
-AC_CHECK_LIB($3,main)
-if test x$ac_cv_lib_[]$3[]_main == xyes && test x$[]a_$1 == xyes
-then
-       AC_SUBST(have_[]$1, yes)
-       options="$options $1"
-       $1=yes
-fi
-])
+#dnl check_GUI(fltk,FL/Fl.h,fltk)
+enable_any=yes
+AC_ARG_ENABLE(widgets,[  --disable-widgets])
 
-check_GUI(fltk,FL/Fl.H,fltk)
+AC_ARG_ENABLE(fltk2,[  --disable-fltk2])
+AC_ARG_ENABLE(fltk,[  --disable-fltk])
+AC_ARG_ENABLE(motif,[  --disable-motif])
 
-AC_PATH_X
-foo_LIBS="$LIBS"
-foo_CPPFLAGS="$CPPFLAGS"
-test -n "$x_libraries" && LIBS="-L$x_libraries $LIBS"
-test -n "$x_includes" && CPPFLAGS="$CPPFLAGS -I$x_includes"
-check_GUI(motif,Xm/Xm.h,Xm)
-if test x$motif != xyes
-then
-       LIBS="$foo_LIBS"
-       CPPFLAGS="$foo_CPPFLAGS"
-fi
+enable_fltk2=${enable_fltk2:-$enable_any}
+enable_fltk=${enable_fltk:-$enable_any}
+enable_motif=${enable_motif:-$enable_any}
        
+gui=none
 
-# check_GUI(fltk2,fltk/Button.h,fltk2)
-a=
-AC_PATH_PROG(a,fltk2-config)
-if test x$a != x
+if test $enable_fltk2 == yes && test $gui == none
 then
+       a=
+       AC_PATH_PROG(a,fltk2-config)
+       if test x$a != x
+       then
     FLTK2_CPPFLAGS=`$a --cxxflags`
     FLTK2_LIBS=`$a --ldflags`
     CPPFLAGS="$FLTK2_CPPFLAGS $CPPFLAGS"
     LIBS="$FLTK2_LIBS $LIBS"
-    AC_SUBST(have_fltk2, yes)
-    options="$options fltk2"
-    fltk2=yes
+               AC_SUBST(guiobj, GUI_Fltk2)
+               options="$options gui"
+               gui=fltk2
+       fi
+fi
+
+if test $gui == none && test $enable_fltk == yes
+then
+       AC_CHECK_HEADERS(FL/Fl.H, have_fltk_headers=yes)
+       AC_CHECK_LIB(fltk, main, have_fltk_lib=yes)
+
+       if test x$have_fltk_headers$have_fltk_lib == xyesyes
+       then
+               LIBS="$LIBS -lfltk"
+               options="$options gui"
+               gui=fltk
+               AC_SUBST(guiobj, GUI_Fltk)
+       fi
+fi
+
+
+if test $gui = none && test $enable_motif == yes
+then
+       AC_PATH_X
+       foo_LIBS="$LIBS"
+       foo_CPPFLAGS="$CPPFLAGS"
+       test -n "$x_libraries" && LIBS="-L$x_libraries $LIBS"
+       test -n "$x_includes" && CPPFLAGS="$CPPFLAGS -I$x_includes"
+
+       AC_CHECK_HEADERS(Xm/Xm.h, have_motif_headers=yes)
+       AC_CHECK_LIB(Xm, main, have_motif_lib=yes)
+       if test x$have_motif_headers$have_motif_lib == xyesyes
+       then
+               LIBS="$LIBS -lXm"
+               options="$options gui"
+               gui=motif
+               AC_SUBST(guiobj, GUI_Motif)
+       else
+               LIBS="$foo_LIBS"
+               CPPFLAGS="$foo_CPPFLAGS"
+       fi
 fi
 
-if test x$fltk$motif$fltk2 == x
+if test $gui == none
 then
        AC_MSG_WARN(No GUI functionality enabled)
 fi
@@ -229,6 +255,8 @@
 echo
 echo Missing options:
 echo $options $optionlist |  $AWK 'BEGIN{RS=" "}{a[$1]++}END{for(i in 
a)if(a[i]==1)printf(i" "); print""}'
+echo GUI support:
+echo $gui
 echo
 changequote([,])
 

Index: gvars3/GUI_Fltk.h
===================================================================
RCS file: /cvsroot/libcvd/gvars3/gvars3/GUI_Fltk.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- gvars3/GUI_Fltk.h   14 Jun 2007 21:37:27 -0000      1.5
+++ gvars3/GUI_Fltk.h   20 Feb 2008 19:03:58 -0000      1.6
@@ -36,7 +36,7 @@
 class GUI_Fltk
 {
        public:
-               GUI_Fltk(class GUI *pGUI, GVars2 *pGV2);
+               GUI_Fltk();
                static const int widget_height = 25;
                static const int widget_padding_x = 5;
                static const int widget_padding_y = 2;

Index: gvars3/GUI_Motif.h
===================================================================
RCS file: /cvsroot/libcvd/gvars3/gvars3/GUI_Motif.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- gvars3/GUI_Motif.h  2 May 2006 22:44:52 -0000       1.5
+++ gvars3/GUI_Motif.h  20 Feb 2008 19:03:58 -0000      1.6
@@ -19,8 +19,8 @@
     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#ifndef __GUI_MOTIF_H
-#define __GUI_MOTIF_H
+#ifndef GVARS3_INCLUDE_GUI_MOTIF_H
+#define GVARS3_INCLUDE_GUI_MOTIF_H
 
 #include <gvars3/GUI.h>
 #include <Xm/Xm.h>
@@ -29,6 +29,7 @@
 {
 
 
+
 class GUI_Motif
 {
  public:
@@ -40,6 +41,8 @@
   void AddSlider(std::string sCommand, std::string sParams);
   void AddWindow(std::string sParams);
   void DestroyWindow(std::string sCommand);
+  void poll();
+  void start_thread();
   
   
   
@@ -67,7 +70,7 @@
   class GUI *mpGUI;
   class GVars2 *mpGV2;
   
-  void* mpMutex;
+  pthread_mutex_t* mpMutex;
   
  
   Display* mpDisplay;
@@ -92,6 +95,7 @@
   
 };
 
+
 }
 
 

Index: gvars3/instances.h
===================================================================
RCS file: /cvsroot/libcvd/gvars3/gvars3/instances.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- gvars3/instances.h  1 Feb 2008 14:57:36 -0000       1.9
+++ gvars3/instances.h  20 Feb 2008 19:03:58 -0000      1.10
@@ -20,9 +20,11 @@
 */
 
 #include <gvars3/GUI.h>
+#include <gvars3/GUI_Widgets.h>
 
 namespace GVars3
 {
   extern GVars2 GV2;
   extern class GUI GUI;
+  extern class GUIWidgets GUI_Widgets;
 };

Index: src/GUI_Fltk.cc
===================================================================
RCS file: /cvsroot/libcvd/gvars3/src/GUI_Fltk.cc,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- src/GUI_Fltk.cc     18 Sep 2007 04:15:03 -0000      1.6
+++ src/GUI_Fltk.cc     20 Feb 2008 19:03:59 -0000      1.7
@@ -19,12 +19,16 @@
     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
+#include "gvars3/instances.h"
 #include "gvars3/GUI_Fltk.h"
 #include "gvars3/GStringUtil.h"
 #include <vector>
 #include <string.h>
 #include <sstream>
 #include <unistd.h>
+#include <map>
+#include <set>
+#include <string>
 
 #include <error.h>
 
@@ -44,13 +48,10 @@
 namespace GVars3
 {
 
-
-GUI_Fltk::GUI_Fltk(GUI *pGUI, GVars2* pGV2)
+GUI_Fltk::GUI_Fltk()
 {
-       gui=pGUI;
-       gv2=pGV2;
        init = 0;
-       gui->RegisterCommand("GUI_Fltk.InitXInterface", InitXInterfaceCB, this);
+       GUI.RegisterCommand("GUI.InitXInterface", InitXInterfaceCB, this);
 }
 
 
@@ -106,9 +107,9 @@
        if(vs.size() > 0)
                name = vs[0];
        else
-               name = "GUI_Fltk";
+               name = "GUI";
 
-       gui->RegisterCommand(name + ".AddWindow", AddWindowCB, this);
+       GUI.RegisterCommand(name + ".AddWindow", AddWindowCB, this);
 
        init = 1;
 }
@@ -162,8 +163,8 @@
 class GUI_Fltk_win:public Fl_Window
 {
        public:
-               GUI_Fltk_win(int w, string name, string caption, GUI* pgui)
-               :Fl_Window(w, 0),win_name(name),labl(caption),gui(pgui)
+               GUI_Fltk_win(int w, string name, string caption)
+               :Fl_Window(w, 0),win_name(name),labl(caption)
                {
                        label(caption.c_str());
                        callback(my_callback);
@@ -198,13 +199,12 @@
 
        private:
                string  win_name, labl;
-               GUI*    gui;
                
                static void my_callback(Fl_Widget* w)
                {
                        //Called on close event
                        GUI_Fltk_win* win = (GUI_Fltk_win*) w;
-                       win->gui->ParseLine(win->win_name+".Destroy");
+                       GUI.ParseLine(win->win_name+".Destroy");
                }
 };
 
@@ -256,19 +256,19 @@
                width = atoi(vs[2].c_str());
 
        window w;
-       w.win = new GUI_Fltk_win(width, vs[0], sCaption, gui);
+       w.win = new GUI_Fltk_win(width, vs[0], sCaption);
        w.showme = true;
        w.win->end();
        //w.win->show();
 
        windows[vs[0]] = w;
 
-       gui->RegisterCommand(vs[0] + ".Destroy", DestroyWindowCB, this);
-       gui->RegisterCommand(vs[0] + ".AddPushButton", AddPushButtonCB, this);
-       gui->RegisterCommand(vs[0] + ".AddToggleButton", AddToggleButtonCB, 
this);
-       gui->RegisterCommand(vs[0] + ".AddSlider", AddSliderCB, this);
-       gui->RegisterCommand(vs[0] + ".AddMonitor", AddMonitorCB, this);
-       gui->RegisterCommand(vs[0] + ".AddSpin", AddSpinCB, this);
+       GUI.RegisterCommand(vs[0] + ".Destroy", DestroyWindowCB, this);
+       GUI.RegisterCommand(vs[0] + ".AddPushButton", AddPushButtonCB, this);
+       GUI.RegisterCommand(vs[0] + ".AddToggleButton", AddToggleButtonCB, 
this);
+       GUI.RegisterCommand(vs[0] + ".AddSlider", AddSliderCB, this);
+       GUI.RegisterCommand(vs[0] + ".AddMonitor", AddMonitorCB, this);
+       GUI.RegisterCommand(vs[0] + ".AddSpin", AddSpinCB, this);
        //gui->RegisterCommand(vs[0] + ".AddSmallToggleButton", 
AddSmallToggleCB, this);
 }
 
@@ -286,12 +286,12 @@
        if(!check_window(win_name, "Destroy"))
                return;
        
-       gui->UnRegisterCommand(win_name + ".Destroy");
-       gui->UnRegisterCommand(win_name + ".AddPushButton");
-       gui->UnRegisterCommand(win_name + ".AddToggleButton");
-       gui->UnRegisterCommand(win_name + ".AddSlider");
-       gui->UnRegisterCommand(win_name + ".AddMonitor");
-       gui->UnRegisterCommand(win_name + ".AddSpin");
+       GUI.UnRegisterCommand(win_name + ".Destroy");
+       GUI.UnRegisterCommand(win_name + ".AddPushButton");
+       GUI.UnRegisterCommand(win_name + ".AddToggleButton");
+       GUI.UnRegisterCommand(win_name + ".AddSlider");
+       GUI.UnRegisterCommand(win_name + ".AddMonitor");
+       GUI.UnRegisterCommand(win_name + ".AddSpin");
        //gui->UnRegisterCommand(win_name + ".AddSmallToggleButton");
 
 
@@ -318,8 +318,8 @@
 class cmd_button:public Fl_Button
 {
        public:
-               cmd_button(string name, string command, GUI* pgui)
-               :Fl_Button(0, 0, 1, 1),labl(name), cmd(command), gui(pgui)
+               cmd_button(string name, string command)
+               :Fl_Button(0, 0, 1, 1),labl(name), cmd(command)
                {
                        label(labl.c_str());
                        callback(my_callback);
@@ -328,15 +328,13 @@
        private:
                //The button label just stores the pointer, so we need to store 
the string here 
                string cmd, labl;
-               GUI*   gui;
-
                static void my_callback(Fl_Widget* w, long what_shall_I_do)
                {
                        if(what_shall_I_do == POLL_UPDATE)
                                return;
        
                        cmd_button* b = (cmd_button*) w;
-                       b->gui->ParseLine(b->cmd);
+                       GUI.ParseLine(b->cmd);
                }
 };
 
@@ -360,7 +358,7 @@
 
        //Create button
 
-       Fl_Button* b = new cmd_button(vs[0], vs[1], gui);
+       Fl_Button* b = new cmd_button(vs[0], vs[1]);
        w.win->add(b);
 }
 
@@ -380,12 +378,10 @@
 class toggle_button: public Fl_Check_Button
 {
        public:
-               toggle_button(string name, string gvar, GVars2* gv2, string def)
-               :Fl_Check_Button(0, 0, 1, 1),labl(name)
+               toggle_button(string name, string gvar, string def)
+               :Fl_Check_Button(0, 0, 1, 1),labl(name),my_int(gvar, def, true)
                {
                        callback(my_callback);
-
-                       gv2->Register(my_int, gvar, def, true);
                        value(*my_int);
                        label(labl.c_str());
 
@@ -399,7 +395,7 @@
                }
 
        private:
-               gvar2_int my_int;
+               gvar3<int> my_int;
                string labl;
 
                static void my_callback(Fl_Widget* w, long what_shall_I_do)
@@ -433,7 +429,7 @@
        if(vs.size() == 2)
                vs.push_back("true");
 
-       Fl_Widget* b = new toggle_button(vs[0], vs[1], gv2, vs[2]);
+       Fl_Widget* b = new toggle_button(vs[0], vs[1], vs[2]);
        w.win->add(b);
 }
 
@@ -454,8 +450,8 @@
 class slider_bar: public slider_type
 {
        public:
-               slider_bar(string gvar_name, GVars2 *pgv2, double min, double 
max)
-               :slider_type(0, 0, 1, 1),gv2(pgv2),varname(gvar_name)
+               slider_bar(string gvar_name, double min, double max)
+               :slider_type(0, 0, 1, 1),varname(gvar_name)
                {
                        type(FL_HOR_SLIDER);
                        bounds(min, max);
@@ -467,7 +463,7 @@
 
                void poll_update()
                {
-                       string crnt=gv2->StringValue(varname, true);
+                       string crnt=GV3::get_var(varname);
 
                        
                        if(crnt != cached_value)
@@ -488,12 +484,11 @@
                {       
                        ostringstream ost;
                        ost << value();
-                       gv2->SetVar(varname, ost.str(), 1);
+                       GV3::set_var(varname, ost.str(), 1);
                        cached_value = ost.str();
                }
 
        private:
-               GVars2 *gv2;
                string varname, cached_value;
 
                static void my_callback(Fl_Widget* w, long what_shall_I_do)
@@ -528,7 +523,7 @@
        serialize::from_string(vs[1], min);
        serialize::from_string(vs[2], max);
 
-       Fl_Widget* b = new slider_bar(vs[0], gv2, min, max);
+       Fl_Widget* b = new slider_bar(vs[0], min, max);
 
        w.win->add(b);
 }
@@ -549,8 +544,8 @@
 class monitor: public Fl_Box
 {
        public:
-               monitor(string t, string gvar_name, GVars2* pgv)
-               :Fl_Box(0, 0, 1, 1),title(t), gv_name(gvar_name),gv(pgv) 
+               monitor(string t, string gvar_name)
+               :Fl_Box(0, 0, 1, 1),title(t), gv_name(gvar_name) 
                {
                        callback(my_callback);
                        align(FL_ALIGN_TOP|FL_ALIGN_INSIDE|FL_ALIGN_LEFT);
@@ -559,7 +554,7 @@
 
                void poll_update()
                {
-                       string gvar_text = gv->StringValue(gv_name);
+                       string gvar_text = "\"" + GV3::get_var(gv_name) + "\"";
 
                        if(gvar_text != cached_gv_text)
                        {
@@ -571,7 +566,6 @@
 
        private:
                string title, gv_name, full_label, cached_gv_text;
-               GVars2* gv;
 
                static void my_callback(Fl_Widget* w, long what_shall_I_do)
                {
@@ -598,7 +592,7 @@
 
        window& w = windows[win_name];
        
-       Fl_Widget* m = new monitor(vs[0], vs[1], gv2);
+       Fl_Widget* m = new monitor(vs[0], vs[1]);
        w.win->add(m);
 }
 
@@ -623,8 +617,8 @@
 class spin2: public Fl_Value_Input
 {
        public:
-               spin2(string gvar_name, string t,  GVars2 *pgv2, double min, 
double max)
-               :Fl_Value_Input(0, 0, 1, 1),gv2(pgv2),varname(gvar_name), 
title(t)
+               spin2(string gvar_name, string t,  double min, double max)
+               :Fl_Value_Input(0, 0, 1, 1),varname(gvar_name), title(t)
                {
                        label(title.c_str());
                        align(FL_ALIGN_LEFT);
@@ -637,7 +631,7 @@
 
                void poll_update()
                {
-                       string crnt=gv2->StringValue(varname, true);
+                       string crnt=GV3::get_var(varname);
 
 
                        if(crnt != cached_value)
@@ -658,12 +652,11 @@
                {
                        ostringstream ost;
                        ost << value();
-                       gv2->SetVar(varname, ost.str(), 1);
+                       GV3::set_var(varname, ost.str(), 1);
                        cached_value = ost.str();
                }
 
        private:
-               GVars2 *gv2;
                string varname, cached_value, title;
 
                static void my_callback(Fl_Widget* w, long what_shall_I_do)
@@ -702,10 +695,23 @@
     if( vs.size() == 4)
         title = vs[3];
 
-       Fl_Widget* b = new spin2(vs[0], title, gv2, min, max);
+       Fl_Widget* b = new spin2(vs[0], title, min, max);
 
        w.win->add(b);
 }
 
+//Instantiations
+class GUI_Fltk GUI_Fltk_instance;
+
+void GUIWidgets::process_in_crnt_thread()
+{
+       GUI_Fltk_instance.process_in_crnt_thread();
+}
+
+void GUIWidgets::start_thread()
+{
+       GUI_Fltk_instance.start_thread();
+}
+
 
 }

Index: src/GUI_Fltk2.cc
===================================================================
RCS file: /cvsroot/libcvd/gvars3/src/GUI_Fltk2.cc,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- src/GUI_Fltk2.cc    16 Jul 2007 10:28:20 -0000      1.9
+++ src/GUI_Fltk2.cc    20 Feb 2008 19:03:59 -0000      1.10
@@ -20,7 +20,9 @@
 */
 
 #include <gvars3/GUI_Fltk2.h>
+#include <gvars3/GUI_Widgets.h>
 #include <gvars3/GStringUtil.h>
+#include <gvars3/instances.h>
 
 #include <vector>
 #include <string.h>
@@ -44,12 +46,12 @@
 namespace GVars3
 {
 
-GUI_Fltk2::GUI_Fltk2(GUI *pGUI, GVars2* pGV2)
+GUI_Fltk2::GUI_Fltk2(class GUI *pGUI, GVars2* pGV2)
 {
        gui=pGUI;
        gv2=pGV2;
        init = 0;
-       gui->RegisterCommand("GUI_Fltk2.InitXInterface", InitXInterfaceCB, 
this);
+       gui->RegisterCommand("GUI.InitXInterface", InitXInterfaceCB, this);
 }
 
 static void poll_callback(void* v)
@@ -101,7 +103,7 @@
        if(vs.size() > 0)
                name = vs[0];
        else
-               name = "GUI_Fltk2";
+               name = "GUI";
 
        gui->RegisterCommand(name + ".AddWindow", AddWindowCB, this);
 
@@ -157,7 +159,7 @@
 class GUI_Fltk2_win:public fltk::Window
 {
        public:
-               GUI_Fltk2_win(int w, string name, string caption, GUI* pgui)
+               GUI_Fltk2_win(int w, string name, string caption, class GUI* 
pgui)
                :fltk::Window(w, 10),win_name(name),labl(caption),gui(pgui)
                {
                        label(caption.c_str());
@@ -190,7 +192,7 @@
 
        private:
                string  win_name, labl;
-               GUI*    gui;
+               class GUI*      gui;
 
                static void my_callback(fltk::Widget* w)
                {
@@ -301,7 +303,7 @@
 class cmd_button2 :public fltk::Button
 {
        public:
-               cmd_button2(string name, string command, GUI* pgui)
+               cmd_button2(string name, string command, class GUI* pgui)
                :fltk::Button(0, 0, 1, 1),labl(name), cmd(command), gui(pgui)
                {
                        label(labl.c_str());
@@ -311,7 +313,7 @@
        private:
                //The button label just stores the pointer, so we need to store 
the string here
                string cmd, labl;
-               GUI*   gui;
+               class GUI*   gui;
 
                static void my_callback(fltk::Widget* w, long what_shall_I_do)
                {
@@ -762,4 +764,19 @@
        w.win->add(b);
 }
 
+//Instantiations
+class GUI_Fltk2 GUI_Fltk2_instance(&GUI, &GV2);
+
+void GUIWidgets::process_in_crnt_thread()
+{
+       GUI_Fltk2_instance.process_in_crnt_thread();
+}
+
+void GUIWidgets::start_thread()
+{
+       GUI_Fltk2_instance.start_thread();
+}
+
+
+
 }

Index: src/GUI_Motif.cc
===================================================================
RCS file: /cvsroot/libcvd/gvars3/src/GUI_Motif.cc,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- src/GUI_Motif.cc    22 Nov 2005 18:33:34 -0000      1.3
+++ src/GUI_Motif.cc    20 Feb 2008 19:03:59 -0000      1.4
@@ -18,7 +18,7 @@
        Foundation, Inc., 
     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
-
+#include "gvars3/instances.h"
 #include "gvars3/GUI_Motif.h"
 #include "gvars3/GStringUtil.h"
 #include <Xm/PushB.h>
@@ -36,15 +36,14 @@
 using namespace std;
 namespace GVars3
 {
-       //GUI_Motif GUI_motif(&GUI, &GV2);
 
-GUI_Motif::GUI_Motif(GUI *pGUI, GVars2 *pGV2)
+GUI_Motif::GUI_Motif(class GUI *pGUI, GVars2 *pGV2)
 {
   mpGUI=pGUI;
   mpGV2=pGV2;
   mpDisplay=NULL;
+       mpGUI->RegisterCommand("GUI.InitXInterface", InitXInterfaceCB, this);
   mpGUI->RegisterCommand("GUI_Motif.InitXInterface", InitXInterfaceCB, this);
-
 }
 
 
@@ -162,7 +161,7 @@
   if(vs.size()>1)
     msName = vs[1];
   else
-    msName = "GUI_Motif";
+               msName = "GUI";
   
 
   if(mpDisplay)
@@ -198,13 +197,15 @@
   pthread_mutexattr_init(&attr);
   pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
   mpMutex = new(pthread_mutex_t);
-  pthread_mutex_init( (pthread_mutex_t*) mpMutex,  &attr);
-  pthread_t t;
-  pthread_create(&t, NULL, GUI_Motif_Thread_CB, this);
-
+       pthread_mutex_init(mpMutex,  &attr);
   mpGUI->RegisterCommand(msName+".AddWindow", AddWindowCB, this);
   
+}
   
+void GUI_Motif::start_thread()
+{
+  pthread_t t;
+  pthread_create(&t, NULL, GUI_Motif_Thread_CB, this);
 }
 
 void GUI_Motif::RemoveWindow(Widget w)
@@ -600,11 +601,20 @@
 
 void GUI_Motif::GUI_Motif_Thread()
 {
-  static char szString[1000];
-
   while(mpDisplay)
     {
-      pthread_mutex_lock((pthread_mutex_t*)mpMutex);
+               poll();
+               usleep(20000);
+       }
+}
+
+void GUI_Motif::poll()
+{
+       if(!mpDisplay)
+               return;
+  static char szString[1000];
+
+  pthread_mutex_lock(mpMutex);
       for(map<string,GUIWindowStruct>::iterator 
w=mmWindows.begin();w!=mmWindows.end();w++)
        {
          for(map< Widget, toggleMapStruct >::iterator i = 
w->second.ToggleButtonMap.begin(); i!=w->second.ToggleButtonMap.end(); i++)
@@ -661,12 +671,9 @@
          
        };
       DoMotifEvents();
-      pthread_mutex_unlock((pthread_mutex_t*)mpMutex);
       
-      usleep(20000);
-    };
-}
 
+} 
 void* GUI_Motif::GUI_Motif_Thread_CB(void* ptr)
 {
   ((GUI_Motif*) ptr)->GUI_Motif_Thread();
@@ -683,4 +690,17 @@
   }
 }
 
+//Instantiations, link time virtual function definitions 
+class GUI_Motif GUI_Motif_instance(&GUI, &GV2);
+
+void GUIWidgets::process_in_crnt_thread()
+{
+       GUI_Motif_instance.poll();
+}
+
+void GUIWidgets::start_thread()
+{
+       GUI_Motif_instance.start_thread();
+}
+
 }

Index: src/inst.cc
===================================================================
RCS file: /cvsroot/libcvd/gvars3/src/inst.cc,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- src/inst.cc 12 Feb 2008 17:56:54 -0000      1.14
+++ src/inst.cc 20 Feb 2008 19:03:59 -0000      1.15
@@ -21,21 +21,6 @@
 
 #include <gvars3/instances.h>
 
-#ifdef GUI_HAVE_FLTK
-       #include <gvars3/GUI_Fltk.h>
-#endif
-
-#ifdef GUI_HAVE_FLTK2
-       #include <gvars3/GUI_Fltk2.h>
-#endif
-
-#ifdef GUI_HAVE_MOTIF
-       #include <gvars3/GUI_Motif.h>
-#endif
-
-#include "gvars3/GUI.h"
-#include "gvars3/GStringUtil.h"
-
 #include <iostream>
 using namespace std;
 
@@ -43,14 +28,5 @@
 {
        GVars2 GV2;
        class GUI GUI;
-
-       #ifdef GUI_HAVE_FLTK
-       class GUI_Fltk GUI_Fltk(&GUI, &GV2);
-       #endif
-       #ifdef GUI_HAVE_FLTK2
-        class GUI_Fltk2 GUI_Fltk2(&GUI, &GV2);
-        #endif
-       #ifdef GUI_HAVE_MOTIF
-       class GUI_Motif GUI_Motif(&GUI, &GV2);
-       #endif
+       class GUIWidgets GUI_Widgets;
 }

Index: src/inst_headless.cc
===================================================================
RCS file: /cvsroot/libcvd/gvars3/src/inst_headless.cc,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- src/inst_headless.cc        1 Feb 2008 14:57:36 -0000       1.2
+++ src/inst_headless.cc        20 Feb 2008 19:03:59 -0000      1.3
@@ -43,6 +43,4 @@
        void print_history(ostream &ost)
        {
        }
-
-
 }

Index: gvars3/GUI_Widgets.h
===================================================================
RCS file: gvars3/GUI_Widgets.h
diff -N gvars3/GUI_Widgets.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ gvars3/GUI_Widgets.h        20 Feb 2008 19:03:58 -0000      1.1
@@ -0,0 +1,40 @@
+/*                       
+       This file is part of the GVars3 Library.
+
+       Copyright (C) 2005 The Authors
+
+       This library is free software; you can redistribute it and/or
+       modify it under the terms of the GNU Lesser General Public
+       License as published by the Free Software Foundation; either
+       version 2.1 of the License, or (at your option) any later version.
+
+       This library is distributed in the hope that it will be useful,
+       but WITHOUT ANY WARRANTY; without even the implied warranty of
+       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+       Lesser General Public License for more details.
+
+       You should have received a copy of the GNU Lesser General Public
+       License along with this library; if not, write to the Free Software
+       Foundation, Inc., 
+    51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+#ifndef GVARS3_INC_GUI_WIDGETS_H
+#define GVARS3_INC_GUI_WIDGETS_H
+
+#include <gvars3/GUI.h>
+#include <pthread.h>
+
+namespace GVars3
+{
+
+class GUIWidgets
+{
+       public:
+               void process_in_crnt_thread();
+               void start_thread();
+};
+               
+}
+
+#endif

Index: src/GUI_none.cc
===================================================================
RCS file: src/GUI_none.cc
diff -N src/GUI_none.cc
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ src/GUI_none.cc     20 Feb 2008 19:03:59 -0000      1.1
@@ -0,0 +1,37 @@
+/*                       
+       This file is part of the GVars3 Library.
+
+       Copyright (C) 2005 The Authors
+
+       This library is free software; you can redistribute it and/or
+       modify it under the terms of the GNU Lesser General Public
+       License as published by the Free Software Foundation; either
+       version 2.1 of the License, or (at your option) any later version.
+
+       This library is distributed in the hope that it will be useful,
+       but WITHOUT ANY WARRANTY; without even the implied warranty of
+       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+       Lesser General Public License for more details.
+
+       You should have received a copy of the GNU Lesser General Public
+       License along with this library; if not, write to the Free Software
+       Foundation, Inc., 
+    51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+#include <gvars3/instances.h>
+
+
+#include <iostream>
+using namespace std;
+
+namespace GVars3
+{
+       void GUIWidgets::process_in_crnt_thread()
+       {
+       }
+
+       void GUIWidgets::start_thread()
+       {
+       }
+}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]