summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbothorel2000-01-19 18:58:53 +0000
committerbothorel2000-01-19 18:58:53 +0000
commit76b3033e9dc3cf307d2ec71f65d94bc3a0c69195 (patch)
tree5240a7ca4d7810454a113fee24c14ef9cd945e5b /src
parent5cbf3a82bfce3690f608653df7fda885fdd5112a (diff)
downloadivy-c-76b3033e9dc3cf307d2ec71f65d94bc3a0c69195.zip
ivy-c-76b3033e9dc3cf307d2ec71f65d94bc3a0c69195.tar.gz
ivy-c-76b3033e9dc3cf307d2ec71f65d94bc3a0c69195.tar.bz2
ivy-c-76b3033e9dc3cf307d2ec71f65d94bc3a0c69195.tar.xz
Ajout lib GTK
Diffstat (limited to 'src')
-rw-r--r--src/Makefile36
-rw-r--r--src/ivygtkloop.c133
2 files changed, 164 insertions, 5 deletions
diff --git a/src/Makefile b/src/Makefile
index b5c8f97..564d7e4 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -6,8 +6,8 @@
#
# Makefile
#
-# Authors: François-Régis Colin <colin@cenatoulouse.dgac.fr>
-# Stéphane Chatty <chatty@cenatoulouse.dgac.fr>
+# Authors: François-Régis Colin <colin@tls.cena.fr>
+# Stéphane Chatty <chatty@tls.cena.fr>
#
# $Id$
#
@@ -21,28 +21,34 @@ MINOR=2
XTINC = /usr/X11R6/include
XTLIB = /usr/X11R6/lib
+GTKINC = /usr/include -I/usr/lib/glib/include
+GTKLIB = /usr/lib -L/usr/X11R6/lib
CC=gcc
CFLAGS = -g
OBJ = ivyloop.o timer.o ivysocket.o ivy.o
GOBJ = ivyloop.o timer.o ivysocket.o givy.o
XTOBJ = ivyxtloop.o ivysocket.o ivy.o
+GTKOBJ = ivygtkloop.o ivysocket.o ivy.o
TCLOBJ = ivytcl.o ivysocket.o givy.o
-TARGETS = ivyprobe ivyxtprobe
+TARGETS = ivyprobe ivygtkprobe ivyxtprobe
.c.o:
$(CC) $(CFLAGS) -c $*.c
all: static-libs commands shared-libs
-static-libs: libivy.a libgivy.a libxtivy.a libtclivy.a
+static-libs: libivy.a libgivy.a libxtivy.a libgtkivy.a libtclivy.a
-shared-libs: libivy.so.$(MAJOR).$(MINOR) libgivy.so.$(MAJOR).$(MINOR) libxtivy.so.$(MAJOR).$(MINOR) libtclivy.so.$(MAJOR).$(MINOR)
+shared-libs: libivy.so.$(MAJOR).$(MINOR) libgivy.so.$(MAJOR).$(MINOR) libxtivy.so.$(MAJOR).$(MINOR) libgtkivy.so.$(MAJOR).$(MINOR) libtclivy.so.$(MAJOR).$(MINOR
commands: $(TARGETS)
givy.o: ivy.c
$(CC) -DGNU_REGEXP -c $(CFLAGS) -o givy.o ivy.c
+ivygtkloop.o: ivygtkloop.c ivygtkloop.h
+ $(CC) -c $(CFLAGS) -I$(GTKINC) -o ivygtkloop.o ivygtkloop.c
+
ivyprobe: ivyprobe.o libivy.a
$(CC) $(CFLAGS) -o ivyprobe ivyprobe.o -L. -livy
@@ -52,6 +58,12 @@ ivyxtprobe.o : ivyprobe.c
ivyxtprobe: ivyxtprobe.o libxtivy.a
$(CC) -o ivyxtprobe ivyxtprobe.o -L. -L$(XTLIB) -lxtivy -lXt -lX11 -lSM -lICE
+ivygtkprobe.o : ivyprobe.c
+ $(CC) $(CFLAGS) -c ivyprobe.c -o ivygtkprobe.o -I$(XTINC) -DGTKMAINLOOP
+
+ivygtkprobe: ivygtkprobe.o libgtkivy.a
+ $(CC) -o ivygtkprobe ivygtkprobe.o -L. -L$(GTKLIB) -lgtkivy -lgtk -lgdk -lX11 -lSM -lICE
+
libivy.a: $(OBJ)
rm -f $@
ar q $@ $(OBJ)
@@ -64,6 +76,10 @@ libxtivy.a: $(XTOBJ)
rm -f $@
ar cq $@ $(XTOBJ)
+libgtkivy.a: $(GTKOBJ)
+ rm -f $@
+ ar cq $@ $(GTKOBJ)
+
libtclivy.a: $(TCLOBJ)
rm -f $@
ar cq $@ $(TCLOBJ)
@@ -78,6 +94,10 @@ libxtivy.so.$(MAJOR).$(MINOR): $(XTOBJ)
$(CC) -shared -Wl,-soname,libxtivy.so.$(MAJOR) -o $@ \
$(XTOBJ) -L$(XTLIB) -lXt -lX11 -lc
+libgtkivy.so.$(MAJOR).$(MINOR): $(GTKOBJ)
+ $(CC) -shared -Wl,-soname,libgtkivy.so.$(MAJOR) -o $@ \
+ $(GTKOBJ) -L$(GTKLIB) -lX11 -lc
+
libtclivy.so.$(MAJOR).$(MINOR): $(TCLOBJ)
$(CC) -shared -Wl,-soname,libtclivy.so.$(MAJOR) -o $@ \
$(TCLOBJ) -L$(TCLLIB) -ltcl -lc
@@ -93,11 +113,13 @@ installlibs: static-libs shared-libs
install -m644 libgivy.a $(PREFIX)/usr/lib
install -m644 libxtivy.a $(PREFIX)/usr/X11R6/lib
install -m644 libtclivy.a $(PREFIX)/usr/lib
+ install -m644 libgtkivy.a $(PREFIX)/usr/X11R6/lib
install -m644 libivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/lib
install -m644 libgivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/lib
install -m644 libxtivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib
install -m644 libtclivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/lib
+ install -m644 libgtkivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib
install -m644 *.h $(PREFIX)/usr/include
@@ -109,6 +131,10 @@ installliblinks: installlibs
ln -s /usr/lib/libgivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/lib/libgivy.so.$(MAJOR)
ln -s /usr/X11R6/lib/libxtivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib/libxtivy.so
ln -s /usr/X11R6/lib/libxtivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib/libxtivy.so.$(MAJOR)
+ ln -s /usr/X11R6/lib/libgtkivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib/libgtkivy.so
+ ln -s /usr/X11R6/lib/libgtkivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib/libgtkivy.so.$(MAJOR)
+ ln -s /usr/X11R6/lib/libtclivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib/libtclivy.so
+ ln -s /usr/X11R6/lib/libtclivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib/libtclivy.so.$(MAJOR)
installbins: commands
test -d $(PREFIX)/usr/bin || mkdirhier $(PREFIX)/usr/bin
diff --git a/src/ivygtkloop.c b/src/ivygtkloop.c
new file mode 100644
index 0000000..5521e32
--- /dev/null
+++ b/src/ivygtkloop.c
@@ -0,0 +1,133 @@
+/*
+ * Ivy, C interface
+ *
+ * Copyright (C) 1997-1999
+ * Centre d'Études de la Navigation Aérienne
+ *
+ * Main loop based on Gtk Toolkit
+ *
+ * Authors: François-Régis Colin <colin@tls.cena.fr>
+ *
+ * $Id$
+ *
+ * Please refer to file version.h for the
+ * copyright notice regarding this software
+ */
+
+#ifdef WIN32
+#include <windows.h>
+#endif
+#include <stdlib.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+
+#ifdef WIN32
+#else
+#include <unistd.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <signal.h>
+#endif
+
+
+#include <gdk/gdk.h>
+
+#include "ivychannel.h"
+#include "ivygtkloop.h"
+
+struct _channel {
+ guint id_read;
+ guint id_delete;
+ gpointer data;
+ ChannelHandleDelete handle_delete;
+ ChannelHandleRead handle_read;
+ };
+
+
+static int channel_initialized = 0;
+
+
+ChannelInit channel_init = IvyGtkChannelInit;
+ChannelSetUp channel_setup = IvyGtkChannelSetUp;
+ChannelClose channel_close = IvyGtkChannelClose;
+
+
+void IvyGtkChannelInit(void)
+{
+
+ if ( channel_initialized ) return;
+
+ /* pour eviter les plantages quand les autres applis font core-dump */
+#ifndef WIN32
+ signal( SIGPIPE, SIG_IGN);
+#endif
+ channel_initialized = 1;
+}
+
+void IvyGtkChannelClose( Channel channel )
+{
+
+ if ( channel->handle_delete )
+ (*channel->handle_delete)( channel->data );
+ gtk_input_remove( channel->id_read );
+ gtk_input_remove( channel->id_delete );
+}
+
+
+static void IvyGtkHandleChannelRead(gpointer data, gint source, GdkInputCondition condition)
+{
+ Channel channel = (Channel)data;
+#ifdef DEBUG
+ printf("Handle Channel read %d\n",source );
+#endif
+ (*channel->handle_read)(channel,source,channel->data);
+}
+
+static void IvyGtkHandleChannelDelete(gpointer data, gint source, GdkInputCondition condition)
+{
+ Channel channel = (Channel)data;
+#ifdef DEBUG
+ printf("Handle Channel delete %d\n",source );
+#endif
+ (*channel->handle_delete)(channel->data);
+}
+
+
+
+Channel IvyGtkChannelSetUp(HANDLE fd, void *data,
+ ChannelHandleDelete handle_delete,
+ ChannelHandleRead handle_read
+ )
+{
+ Channel channel;
+
+ channel = (Channel)malloc( sizeof(struct _channel) );
+ if ( !channel )
+ {
+ fprintf(stderr,"NOK Memory Alloc Error\n");
+ exit(0);
+ }
+
+ channel->handle_delete = handle_delete;
+ channel->handle_read = handle_read;
+ channel->data = data;
+
+ channel->id_read = gdk_input_add( fd, GDK_INPUT_READ, IvyGtkHandleChannelRead, channel);
+ channel->id_delete = gdk_input_add( fd, GDK_INPUT_EXCEPTION, IvyGtkHandleChannelDelete, channel);
+
+ return channel;
+}
+
+
+void
+IvyStop ()
+{
+ /* To be implemented */
+}
+