From 76b3033e9dc3cf307d2ec71f65d94bc3a0c69195 Mon Sep 17 00:00:00 2001 From: bothorel Date: Wed, 19 Jan 2000 18:58:53 +0000 Subject: Ajout lib GTK --- src/Makefile | 36 ++++++++++++--- src/ivygtkloop.c | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 164 insertions(+), 5 deletions(-) create mode 100644 src/ivygtkloop.c (limited to 'src') 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 -# Stéphane Chatty +# Authors: François-Régis Colin +# Stéphane Chatty # # $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 + * + * $Id$ + * + * Please refer to file version.h for the + * copyright notice regarding this software + */ + +#ifdef WIN32 +#include +#endif +#include +#include +#include +#include +#include + +#ifdef WIN32 +#else +#include +#include +#include +#include +#include +#include +#include +#include +#endif + + +#include + +#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 */ +} + -- cgit v1.1