vdkbuilder2-2.4.0/0000777000000000000000000000000010052402422007434 5vdkbuilder2-2.4.0/data/0000777000000000000000000000000010052402421010344 5vdkbuilder2-2.4.0/data/res/0000777000000000000000000000000010052402421011135 5vdkbuilder2-2.4.0/data/res/README0000644000000000000000000000000707252426572011753 readme vdkbuilder2-2.4.0/data/res/Makefile.in0000644000000000000000000002455510052401332013131 # Makefile.in generated by automake 1.7.8 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GENCAT = @GENCAT@ GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLBISON = @INTLBISON@ INTLLIBS = @INTLLIBS@ INTLOBJS = @INTLOBJS@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PLUGINS_LIBDIR = @PLUGINS_LIBDIR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_NLS = @USE_NLS@ VDK_CFLAGS = @VDK_CFLAGS@ VDK_CONFIG = @VDK_CONFIG@ VDK_LIBS = @VDK_LIBS@ VDK_VERSION_MAJOR = @VDK_VERSION_MAJOR@ VDK_VERSION_MICRO = @VDK_VERSION_MICRO@ VDK_VERSION_MINOR = @VDK_VERSION_MINOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ vdkxdbpath = @vdkxdbpath@ vdkbdatadir = $(datadir)/vdkb2/res Iconsdir = $(datadir)/pixmaps Icons_DATA = vdkb2.png vdkbdata_DATA = \ tokens.db \ cpphints\ logo.png\ vdkb2.png\ vdkbide.defaults\ vdkbrc\ AUTHORS\ INSTALL\ README\ ChangeLog\ COPYING\ autogen.sh\ aclocal.m4\ NEWS\ rgb.txt\ plugins.db # index.htm # tutor1.htm # tutor2.htm # desk.gif # logo.gif # prjman.gif # saveprj.gif # prjwiz.gif # vdkbmaker.gif # filedlg.gif # newprj.gif # run.gif # step1.0.gif # wi1.gif # step2.gif # tutor3.htm # step3.gif # fixed.gif # tutor4.htm EXTRA_DIST = $(vdkbdata_DATA) \ plugins.db.in subdir = data/res ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = plugins.db DIST_SOURCES = DATA = $(Icons_DATA) $(vdkbdata_DATA) DIST_COMMON = README $(srcdir)/Makefile.in AUTHORS COPYING ChangeLog \ INSTALL Makefile.am NEWS plugins.db.in all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu data/res/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) plugins.db: $(top_builddir)/config.status plugins.db.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: IconsDATA_INSTALL = $(INSTALL_DATA) install-IconsDATA: $(Icons_DATA) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(Iconsdir) @list='$(Icons_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " $(IconsDATA_INSTALL) $$d$$p $(DESTDIR)$(Iconsdir)/$$f"; \ $(IconsDATA_INSTALL) $$d$$p $(DESTDIR)$(Iconsdir)/$$f; \ done uninstall-IconsDATA: @$(NORMAL_UNINSTALL) @list='$(Icons_DATA)'; for p in $$list; do \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " rm -f $(DESTDIR)$(Iconsdir)/$$f"; \ rm -f $(DESTDIR)$(Iconsdir)/$$f; \ done vdkbdataDATA_INSTALL = $(INSTALL_DATA) install-vdkbdataDATA: $(vdkbdata_DATA) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(vdkbdatadir) @list='$(vdkbdata_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " $(vdkbdataDATA_INSTALL) $$d$$p $(DESTDIR)$(vdkbdatadir)/$$f"; \ $(vdkbdataDATA_INSTALL) $$d$$p $(DESTDIR)$(vdkbdatadir)/$$f; \ done uninstall-vdkbdataDATA: @$(NORMAL_UNINSTALL) @list='$(vdkbdata_DATA)'; for p in $$list; do \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " rm -f $(DESTDIR)$(vdkbdatadir)/$$f"; \ rm -f $(DESTDIR)$(vdkbdatadir)/$$f; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: $(mkinstalldirs) $(DESTDIR)$(Iconsdir) $(DESTDIR)$(vdkbdatadir) install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: info: info-am info-am: install-data-am: install-IconsDATA install-vdkbdataDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-IconsDATA uninstall-info-am \ uninstall-vdkbdataDATA .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am info info-am install install-IconsDATA install-am \ install-data install-data-am install-exec install-exec-am \ install-info install-info-am install-man install-strip \ install-vdkbdataDATA installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-IconsDATA uninstall-am uninstall-info-am \ uninstall-vdkbdataDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vdkbuilder2-2.4.0/data/res/AUTHORS0000644000000000000000000000000707252426572012143 author vdkbuilder2-2.4.0/data/res/COPYING0000644000000000000000000000000707252426572012126 copyingvdkbuilder2-2.4.0/data/res/ChangeLog0000644000000000000000000000001107252426572012640 changelogvdkbuilder2-2.4.0/data/res/INSTALL0000644000000000000000000000000707252426572012124 installvdkbuilder2-2.4.0/data/res/Makefile.am0000644000000000000000000000111207437165160013123 vdkbdatadir = $(datadir)/vdkb2/res Iconsdir = $(datadir)/pixmaps Icons_DATA = vdkb2.png vdkbdata_DATA = \ tokens.db \ cpphints\ logo.png\ vdkb2.png\ vdkbide.defaults\ vdkbrc\ AUTHORS\ INSTALL\ README\ ChangeLog\ COPYING\ autogen.sh\ aclocal.m4\ NEWS\ rgb.txt\ plugins.db # index.htm # tutor1.htm # tutor2.htm # desk.gif # logo.gif # prjman.gif # saveprj.gif # prjwiz.gif # vdkbmaker.gif # filedlg.gif # newprj.gif # run.gif # step1.0.gif # wi1.gif # step2.gif # tutor3.htm # step3.gif # fixed.gif # tutor4.htm EXTRA_DIST = $(vdkbdata_DATA) \ plugins.db.in vdkbuilder2-2.4.0/data/res/NEWS0000644000000000000000000000000507252426572011570 news vdkbuilder2-2.4.0/data/res/plugins.db.in0000644000000000000000000000026310031614366013461 @PLUGINS_LIBDIR@,libvdkbcalendar.so @PLUGINS_LIBDIR@,libvdkbdclock.so @PLUGINS_LIBDIR@,libvdkbtreeview.so @PLUGINS_LIBDIR@,libvdkbdrawarea.so @PLUGINS_LIBDIR@,libvdkbcomboentry.sovdkbuilder2-2.4.0/data/res/tokens.db0000644000000000000000000000020107252426572012701 include define ifdef endif else delete return break continue true false bool unsigned register protected public private vdkbuilder2-2.4.0/data/res/cpphints0000644000000000000000000002460607252426576012665 HINT{ KEY[ActiveBackground] TEXT[VDKRgb VDKObject::ActiveBackground ] } HINT{ KEY[Add] TEXT[void VDKBox::Add(VDKObject* obj, int justify = l_justify, int expand = TRUE, int fill = TRUE, int padding = 1); void VDKObjectContainer::Add(VDKObject* obj, int justify = l_justify, int expand = TRUE, int fill = TRUE, int padding = 1); void VDKObject::Add(VDKObject* obj, int justify = l_justify, int expand = TRUE, int fill = TRUE, int padding = 1); void VDKScrolled::Add(VDKObject* obj, int justify = l_justify, int expand = TRUE, int fill = TRUE, int padding = 1);] } HINT{ KEY[AddRow] TEXT[VDKCustomList::AddRow(char **texts,char** pixdata = NULL,int col = 0);] } HINT{ KEY[AddWithViewport] TEXT[void VDKScrolled::AddWithViewport(VDKObject* obj);] } HINT{ KEY[AddWithoutViewport] TEXT[void VDKScrolled::AddWithoutViewport(VDKObject* obj);] } HINT{ KEY[Application] TEXT[VDKApplication* VDKForm::Application(); Application constructor] } HINT{ KEY[BackgroundPixmap] TEXT[VDKRawPixmap VDKForm::BackgroundPixmap ] } HINT{ KEY[BorderWidth] TEXT[void VDKObjectContainer::BorderWidth(int w);] } HINT{ KEY[Box] TEXT[VDKBox* VDKForm::Box();] } HINT{ KEY[ButtonBox] TEXT[VDKBox* VDKCustomButton::ButtonBox ] } HINT{ KEY[CanClose] TEXT[virtual bool VDKForm::CanClose();] } HINT{ KEY[Caption] TEXT[char* VDKCustomButton::Caption ] } HINT{ KEY[Captured] TEXT[bool VDKCanvas::Captured ] } HINT{ KEY[Checked] TEXT[bool VDKCheckButton::Checked ] } HINT{ KEY[Childs] TEXT[ChildList& VDKForm::Childs();] } HINT{ KEY[Clear] TEXT[void VDKCanvas::Clear();] } HINT{ KEY[Close] TEXT[virtual void VDKForm::Close();] } HINT{ KEY[Cursor] TEXT[VDKCursorType VDKObject::Cursor ] } HINT{ KEY[Destroy] TEXT[void VDKForm::Destroy(); void VDKObject::Destroy()] } HINT{ KEY[Draw] TEXT[void VDKObject::Draw(GdkRectangle* area);] } HINT{ KEY[DrawArc] TEXT[void VDKCanvas::DrawArc(int filled,int x, int y,int w, int h, int angle1, int angle2);] } HINT{ KEY[DrawLine] TEXT[void VDKCanvas::DrawLine(int x, int y,int x1, int y1);] } HINT{ KEY[DrawLines] TEXT[void VDKCanvas::DrawLines(GdkPoints* points, gint npoints);] } HINT{ KEY[DrawPixmap] TEXT[void VDKCanvas::DrawPixmap(int x, int y, char* pixfile); void VDKCanvas::DrawPixmap(int x, int y, VDKRawPixmap pix); void VDKCanvas::DrawPixmap(int x, int y, char** pixdata);] } HINT{ KEY[DrawPoint] TEXT[void VDKCanvas::DrawPoint(int x, int y);] } HINT{ KEY[DrawPoints] TEXT[void VDKCanvas::DrawPoints(GdkPoints* points, gint npoints);] } HINT{ KEY[DrawPolygon] TEXT[void VDKCanvas::DrawPolygon(int filled, GdkPoints* points, gint npoints);] } HINT{ KEY[DrawRect] TEXT[void VDKCanvas::DrawRect(int filled, int x, int y,int w, int h);] } HINT{ KEY[DrawSegments] TEXT[void VDKCanvas::DrawSegments( GdkSegment * segs, gint nsegs);] } HINT{ KEY[DrawString] TEXT[void VDKCanvas::DrawString(int x, int y, char* text);] } HINT{ KEY[DrawText] TEXT[void VDKCanvas::DrawText(int x, int y, char* text, int n);] } HINT{ KEY[EnableClear] TEXT[bool VDKCanvas::EnableClear ] } HINT{ KEY[EnableDrag] TEXT[bool VDKCanvas::EnableDrag ] } HINT{ KEY[Enabled] TEXT[bool VDKObject::Enabled ] } HINT{ KEY[EventAttach] TEXT[EventAttach(event) ] } HINT{ KEY[EventConnect] TEXT[int VDKObject::EventConnect(VDKObject* object, char* event, bool (ownerClass::*pmf)(VDKObject* sender,GdkEvent* ev), bool after = false); int VDKObject::EventConnect(char* signal, bool (ownerClass::*pmf)(VDKObject* sender,GdkEvent* ev), bool after = false);] } HINT{ KEY[EventDetach] TEXT[EventDetach(object,event) ] } HINT{ KEY[EventDisconnect] TEXT[bool VDKObject::SignalDisconnect(int slot);] } HINT{ KEY[FindTag] TEXT[VDKObject* VDKObjectContainer::FindTag(int tag);] } HINT{ KEY[FocusWidget] TEXT[VDKObject VDKForm::FocusWidget ] } HINT{ KEY[Font] TEXT[VDKFont* VDKObject::Font ] } HINT{ KEY[ForEachDo] TEXT[void VDKObjectContainer::ForEachDo(void (*action)(VDKObject*));] } HINT{ KEY[Foreground] TEXT[VDKRgb VDKObject::Foreground ] } HINT{ KEY[GrabFocus] TEXT[GtkWidget* VDKObject::GrabFocus();] } HINT{ KEY[HasResources] TEXT[bool VDKApplication::HasResources();] } HINT{ KEY[Hide] TEXT[void VDKForm::Hide();] } HINT{ KEY[Iconized] TEXT[bool VDKForm::Iconized ] } HINT{ KEY[InsensitiveBackground] TEXT[VDKRgb VDKObject::InsensitiveBackground ] } HINT{ KEY[IsModal] TEXT[bool VDKForm::IsModal();] } HINT{ KEY[Items] TEXT[ItemList& VDKObject::Items();] } HINT{ KEY[Label] TEXT[VDKLabel* VDKCustomButton::Label ] } HINT{ KEY[Lower] TEXT[void VDKForm::Lower();] } HINT{ KEY[MainForm] TEXT[VDKForm* VDKApplication::MainForm (public data)] } HINT{ KEY[MainWindow] TEXT[GtkWidget* VDKApplication::MainWindow();] } HINT{ KEY[MessageBox] TEXT[void VDKApplication::MessageBox(char* text,int mode = MB_OK, char *oktext = NULL, char* canceltext = NULL, unsigned int wait = 0);] } HINT{ KEY[NormalBackground] TEXT[VDKRgb VDKObject::NormalBackground ] } HINT{ KEY[Objects] TEXT[ObjectList& VDKForm::Objects();] } HINT{ KEY[OnChildClosing] TEXT[virtual void VDKForm::OnChildClosing(VDKForm* child);] } HINT{ KEY[OnExpose] TEXT[virtual void VDKForm::OnExpose(VDKForm* sender, GdkRectangle area);] } HINT{ KEY[OnFormActivate] TEXT[virtual void VDKForm::OnFormActivate(VDKForm* sender, bool active);] } HINT{ KEY[OnIconize] TEXT[virtual void VDKForm::OnIconize(VDKForm* sender);] } HINT{ KEY[OnRestore] TEXT[virtual void VDKForm::OnRestore(VDKForm* sender);] } HINT{ KEY[OnShow] TEXT[virtual void VDKForm::OnShow(VDKForm* sender);] } HINT{ KEY[Owner] TEXT[VDKForm* VDKForm::Owner(); VDKForm* VDKObject::Owner()] } HINT{ KEY[Pixmap] TEXT[VDKPixmap* VDKCustomButton::Pixmap ] } HINT{ KEY[Position] TEXT[VDKPoint VDKForm::Position ] } HINT{ KEY[PrelightBackground] TEXT[VDKRgb VDKObject::PrelightBackground ] } HINT{ KEY[Raise] TEXT[void VDKForm::Raise();] } HINT{ KEY[Redraw] TEXT[void VDKCanvas::Redraw();] } HINT{ KEY[Relief] TEXT[GtkReliefStyle VDKCustomButton::Relief ] } HINT{ KEY[RemoveGarbageCollection] TEXT[void VDKApplication::RemoveGarbageCollection();] } HINT{ KEY[RemoveObject] TEXT[void VDKObjectContainer::RemoveObject(VDKObject* object);] } HINT{ KEY[RemoveObjectFromContainer] TEXT[void VDKObjectContainer::RemoveObjectFromContainer(VDKObject*obj); Tip: This functions will remove an object from container without destroying it (see reference)] } HINT{ KEY[RemoveObjects] TEXT[void VDKObjectContainer::RemoveObject();] } HINT{ KEY[RemoveRow] TEXT[VDKCustomList::RemoveRow(int row);] } HINT{ KEY[Run] TEXT[void VDKApplication::Run();] } HINT{ KEY[ScreenSize] TEXT[VDKPoint VDKApplication::ScreenSize();] } HINT{ KEY[Select] TEXT[void VDKObjectContainer::Select(ItemList* list, bool (*condition)(VDKObject*));] } HINT{ KEY[SelectedBackground] TEXT[VDKRgb VDKObject::SelectedBackground ] } HINT{ KEY[Selection] TEXT[VDKPoint VDKCustomList::Selection(void);] } HINT{ KEY[SetDefaultSize] TEXT[void VDKForm::SetDefaultSize(VDKPoint p);] } HINT{ KEY[SetFormSize] TEXT[void VDKForm::SetFormSize(VDKPoint p);] } HINT{ KEY[SetGarbageCollection] TEXT[void VDKApplication::SetGarbageCollection(int timing = 1000);] } HINT{ KEY[SetIcon] TEXT[void VDKForm::SetIcon();] } HINT{ KEY[SetIconName] TEXT[void VDKForm::SetIconName(char* name);] } HINT{ KEY[SetIdleCallback] TEXT[void VDKApplication::SetIdleCallback(GtkFunction idlecb,gpointer data); Tip: arg must be non NULL] } HINT{ KEY[SetResourceFile] TEXT[void VDKApplication::SetResourceFile(char* rcf);] } HINT{ KEY[SetTip] TEXT[void VDKObject::SetTip(char* tip);] } HINT{ KEY[Setup] TEXT[virtual void VDKApplication::Setup(void); virtual void VDKForm::Setup(void); virtual void VDKObject::Setup(void);] } HINT{ KEY[Show] TEXT[void VDKForm::Show(GtkWindowPosition pos = GTK_WIN_POS_NONE);] } HINT{ KEY[ShowModal] TEXT[void VDKForm::ShowModal(GtkWindowPosition pos = GTK_WIN_POS_NONE);] } HINT{ KEY[SignalAttach] TEXT[SignalAttach(signal) ] } HINT{ KEY[SignalConnect] TEXT[int VDKObject::SignalConnect(VDKObject* object, char* signal, bool (ownerClass::*pmf)(VDKObject* sender), bool gtk = true, bool after = false); int VDKObject::SignalConnect(char* signal, bool (ownerClass::*pmf)(VDKObject* sender), bool gtk = true, bool after = false);] } HINT{ KEY[SignalDetach] TEXT[SignalDetach(object,signal) ] } HINT{ KEY[SignalDisconnect] TEXT[bool VDKObject::SignalDisconnect(int slot);] } HINT{ KEY[SignalEmit] TEXT[void VDKObject::SignalEmit(int signal); void VDKObject::SignalEmit(char* signal);] } HINT{ KEY[SignalEmitParent] TEXT[void VDKObject::SignalEmitParent(int signal); void VDKObject::SignalEmitParent(char* signal);] } HINT{ KEY[Terminate] TEXT[bool VDKApplication::Terminate(); Tip: This method is called after a destroy event on MainForm, user doesn't care of it] } HINT{ KEY[Title] TEXT[VDKString VDKForm::Title ] } HINT{ KEY[Toggle] TEXT[void VDKCheckButton::Toggle;] } HINT{ KEY[UpdateCell] TEXT[VDKCustomList::UpdateCell(int row, int col, char* s, char** pixdata = NULL);] } HINT{ KEY[UpdateRow] TEXT[VDKCustomList::UpdateRow(int row, char** s,char** pixdata = NULL,int col = 0); VDKCustomList::UpdateRow(int row, Tuple& t,char** pixdata = NULL,int col = 0);] } HINT{ KEY[Usize] TEXT[VDKPoint VDKObject::Usize ] } HINT{ KEY[VDKApplication] TEXT[VDKApplication::VDKApplication(int*argc,char** argv, char* rc = NULL, bool have_locale=false);] } HINT{ KEY[VDKCanvas] TEXT[VDKCanvas::VDKCanvas(VDKForm* owner, int w = 100, int h = 100);] } HINT{ KEY[VDKCheckButton] TEXT[VDKCheckButton::VDKCheckButton(VDKForm* owner, char* label = NULL, char* tip = NULL);] } HINT{ KEY[VDKCustomButton] TEXT[VDKCustomButton::VDKCustomButton(VDKForm* owner, char* label, unsigned int type = VDK_CBUTTON_UNTOGGLED | VDK_CBUTTON_NORMAL); VDKCustomButton::VDKCustomButton(VDKForm* owner, char* pixfile,char* label, unsigned int type = VDK_CBUTTON_UNTOGGLED | VDK_CBUTTON_NORMAL, GtkPositionType position = GTK_POS_RIGHT); VDKCustomButton::VDKCustomButton(VDKForm* owner, char** pixdata,char* label, unsigned int type = VDK_CBUTTON_UNTOGGLED | VDK_CBUTTON_NORMAL, GtkPositionType position = GTK_POS_RIGHT);] } HINT{ KEY[VDKForm] TEXT[VDKForm::VDKForm(VDKApplication* app, gchar* title = "",int mode = v_box, GtkWindowTypeDisplay = GTK_WINDOW_TOPLEVEL); VDKForm::VDKForm(VDKForm* owner, gchar* title = "", int mode = v_box, GtkWindowTypeDisplay = GTK_WINDOW_TOPLEVEL); ] } HINT{ KEY[Widget] TEXT[GtkWidget* VDKObject::Widget();] } HINT{ KEY[Window] TEXT[VDKForm* VDKForm::Window();] } HINT{ KEY[WrappedWidget] TEXT[GtkWidget* VDKObject::WrappedWidget();] } vdkbuilder2-2.4.0/data/res/logo.png0000644000000000000000000012123007561574004012540 PNG  IHDR\rfbKGD pHYs  d_tIME + IDATxW%WvБЅfih6o3m8?p~E1ka D!$R]9~3*BHw݈@"_?{E1[?l?11111111111111}v7/6B|q8^xSO>>a] R!<pquuE7a2=~/x͟03@f?۰%@=!b^BRHٽ~h|@ 1`Mu->Xb @Dʋ""! Fk mSu%R1 ! l[10h!x e^Oes?ښ6 삪Z\ £T$)"J H "PzHkI=]z1YC(ͷEG[ m gж woy7a%G_}W,'T ԣ'[kq EdgD_TfVx'{p޻!/s?uwŖD@lnԦiѣG|f3Xk0֠3>;#ortx^oHX,k|C,X.ϸ|W̦WvN]P25H 1Lk0GiEWpt5UU\VT*#$$1M[ '78q{z8yamǮuƝ;.IgN[|;^-@ihB`a:\R2R༥\]%#{߾Ͻ7r-vvѺG>Zg I8B z-)3.?ӏϾDpE0Hh(BQiP2`Ǻb ^+ELC̮dVX۰4rqKfǟvwe8&[|?>p~~)R*Itxxp"JAu5OKCkJY~-ndo!{{9:zx#U: ė#O-)_pq9/YbEB)O:s/!@ %% MMFiAӔAԖ.>'1+>nX.͍Ѫdro=s|m⵽1FBTUɗ䣏>F ɛo[#I4BxblqnjuNObH_XyG,g998[o)B{==D)S`#Ćrv1>;. k$GFP2`-6Ҷ)@' KڱZIw\2 rm)%eIӂE|1{oxbkkr~~·|N۴eI{[e<ӟ'~`V+j"Qc]JVx;B'G;Ga8b/2t%D{V b^SV+?he\rަG~omEUsu9gb"--^#DC変DI")6!B z1`4D+\IB"D@%FTa-z٩F""d4>Fea|-}1 xdӏ˃ϏsF#5Oaí}EHs"G N"+%ٔ?\MTLJ9I?vp4͌미8U"_gYX/I@R;OڄH4bm-mkI^) $ZN(YȊ$qn*hgoHYqv"QwSL1γR"eR [kB=ΖKVgcrA]+x̺\\PUszd[}o< mi1tK( q."d 5ŌUeh@>bhOI_/~hs.gɊ"7HQccz ^֢S BT'"wZC ƈkwة\ Z )RH(ۖ$ =1<}FƓaD')Uuyig2x|}&_OnjsN?ӟ1~HY9Q4{c..S V[CbZOY ˄(Z{Ǘ1>9ǷMCф7f<:@} mssS?p zYsq}fi*XRV ШqvS~;t4o[g+M o=sϸ;%Ry|L<#!*ƣ4d:m7˜$+blPڢ ӄ9jy pq>/]|p0A%!bsk<9g"`?3uKk*KAB!Nk+Yd4|x QĻg 8 ށ,Mh+z$d͔e2ݻ;ϸg4R-_Ƚo0_=89%+"ੈZ?ٟm2BfA,a]X;?PVPG&CUӓHsc<'s[߸˨?܂^H,/x觬W2.9>N EӶFHB=x!\Ęz(HuXA"!.JӄtddmKRF`9y 7.G3 {Qz%R*!&(%;^aesNG9; Yfqq(@ \/2X%}|>s}`!'$وLgU 33-L Lo<'gSήoIz3!/X}-Э/pFryrJ^0{vwIcՕe-u;1!R w(pњy( J>Q4 1)D)E4uD~3WO8agG/@|iMK&.dn%<?{M^s\$Y"%D%#{{#4epNsttLCK0fd6RzK! SM{tgx v\SURW#[>Z( 8L,Y@SGVBke 52mhi*6QŻ]0RB6OpXܕFVmSL+<ӓ>~?į;!xE f<1 G%CO`YKtB* R()}̧0^.>w~Bɜsn<%Y%AU2mȇ "*$%xŲm[;ys8}Yv L?鳟qvR9ñ&R$ɐ԰%I$Ju@uY"nL$i5H ]ڀ$2tو! \Xq(Qڡ(t9!(y)-YRGE wW[81'ܼu V-J@82jW~k{ %:N.Ӈ4sz:c\3[QJ5:}O1 [lРz$T՜siȳwۿq_'bxl1'pB^ V5m;'I$z,+8<~AY81&1d?g0hm!FP &4$/W[A tz^JC8^O0[su /w#4="i_^޲Z?e4=cĺE)d'GUcښ&B6d`5=esĝ;ǘ*ru`1J'|+~ kv wʹd%68RYM%hOWWXkB"Hog>'mL,mEy:aO G9EO$˅d6[sum_ "%}ΎD'Ϊ뜡i"B8 //o'kC][ڶG A`m!ghX/rvzW_w~= ywG7[}J^rr nNo t5vjQ:r#2D'֨b\$GӜXxX2DfK޸s݈A{B D1B Gl BH}EU]/xѸƍ>u9نWo<7dr>9Á7к{Zy4a8hYj+sEa{9D']!B#e$nTBJ'`(Fg$A&4UX*ڰ^$$dBJ*^s5ԄRTɍNklt;<(P*AK5b8ԂGW,V%9)y04'FAry.-X yɨuB E KY/ņ!J" 5b#mv!!9C5w&jA^aے2Θ͗i>M~? $zߥj? -`y#:$jxZ16P#  :FR-I!u'C %J*.("3u.qAI\!O(WtH,+.Y-W4e~/Gڀg};A)!Mv.o@Y 7^CBWORMj-Zc놪E9MKqM٥'lӄ!FM(8=yd6`1J+ٜ֫WKʸyIÖ^Q(Qjȍw2%7I=`2NIR)+c20d=,C|'5N Iyo[{ )#+v'p7jS.)QFh6 6 =D1縈uc5Y2g c ѪOL!i"vOgGup^Jg0ndC)E]5Xc:]AH!SKKG)A1}>1''_pG^t=f OpSNk(|JkstC܎}|=C{ܾ1.?_ nJF{w}X0׈P3_4ʒ$i0Jך" eHy|a(4ö'_.곆z ?.;ZZ =ΤF1 ӔYךN/D M5r#[p&rZc!G}q2[XV G'nm6MC#mea(X`f/ȲNIP!"cOvfӶ3>oͮy?֭{$YƓӟǘ抻Cdg>]Sٟ w4^ax Y6@+s}{ɓ\]TS|㰥Ĩq:dԧPxls-eU9:H):'}}ښĈ 螬1x"c"mkʳq#a<뚺HHuJ$a}|ZED&@莹k!C$zU `G!$ժFBִV+4Y@n޿$r}m29$GHB%WD.i:>GgQX^=1vGj)J)4-N9 Ŕ(2lP2vǭݛ %zӋ9)x [n).GGd&Og schGQ4;>m^UsG6HZ1'&b'a_+ї"v>s=oh@jb%W%^ vxmDn"d'HBж %$ 6#u1&,U }\ц U@Ao1ocz"b0x 7Hˌ)^R[4'zc?v8к7 kEB -,:PgJmKU9 [5 9ꓤ)l[ 5'IÃc?8ӿczL kST%"=QJX1Hsdߓ.G28Ll1Fj+hqfVg dM700%ܻ7`_Uw qqru2e+HMs񲫯N4v_ mb*P-i%C:65 8TdiN mú'K7 eeY-UHƅ"Wk#^3|G7ڧwk[Rut;C,%<'WpfF[K,:IM᥏  HwD<(I+wQ`>8z %u}}Ax,sbϟ5\_bL)YM)6%U#~!t34%pnKUc]9eׁIkIu%M!x'@ ldpB@nw"-P]4}ŭ WgoPNRv)o+֥5]+P0$$@nOt{*14奏@)թ|gIssVuSi)kdDN@kI7DzP E=8; ͺtY:P)rPl2;L/I`?^#7YʺV4() xm+rN9&5Mrc@1H ?9 !!讂-JN/4ZPg)p0ARmSh6nI7ùvHICA!Fd87C=RIg{)Mx/)A'4UD!:4!B:ϪlYQ`8g-O.N*@=KJK?6i=~L&co7݁x *t3"=ecZ!0bz}“'_:irnscGs.|p3Rue7x0 b$-Q3:g:Z03aAHM r1mMHwĘg qhB8Bǐ>ɂ;CP 0E  [eE3'/ ƶdfkpޝ>{ E`OrUҶpg =!`:@!U !tsFxq(6M@Txh7 GCחVaTgx1NL$SX=iB~n M7݀W%$$(3]]S%.8bAA`crr'g_R̛3gOOvѲ_ily?s.%JAɲYe'(7q틴)hEP@H/E AZ8iqÉ-۲$˒hQxKr{3ZJU[%Z=>/-Jhm)tL6Se!zPzsjH*(Hؠ\TX$UATUBQe(7LE Q" H. I IQ}t9;Xz'tQta 躮7 eR%Б4 K(+e "2bDB>z´r\ϋxB(':hGëVQ-UlzO/ .f!kz ,ȵY.N*!5.:m bQ@G.]X^5 huЄXR& q7TDE4k$.a |N\$ё שy@9Gr%DAƱM8OCv O;^]m`.J<%Sj+Uj V* @TQ0b2`Wx] (MEQ5՗XEݮPS8oo[`DABT"Qh "16rHhHU3qU˳HE`XENGȭy6lozLwP=<ɗ&1KFj(KCpi6K5R3Q/j: rb8$bCh-]7w}q 4wy4|Ed$IF$,W1 EQTW) 5r%ƋH$uԸ hԫx82h-lӡnh&CHT"SDOqiM-bYVHRDL="g FiU8Hh"J!kwIuKP˅R5mu 5Qlr<\UddqelS+ ȊF4 wVup%GD},TK6:mN3ܸm }J".b0$X8TlzJAѱu2rLFP|f8YsdԆv\_S@pOȪ$zYZEStڢx[o[he *B{{N%GAkS@^te]ݷTjfFW&N-4\W m aZGٶ)5,Es2+4DR/;5612񈌢ģ.E`Y'5MAE|bk;BPzx8Ŷ>ӗC1g (MbäT[cJ\F\CT/!m9  c5[]pШ;fMSuɥ bQI'%Q%ieBdtfP%ѕQDD[Tk"Ho]$ ڴFTt"7A842{uϣdykUjg!zE:eIV)&Bב1*J膊,,AR-%$/Te@\W]<ƴ뗥3p]_Aq¤U(E T1$ Gl6H !jA=m`#+ʰk5.Tk6IZňEDA$aȶDĭIo[ (*4D(9x1d Fµ\Qڒ1l4_ŝIBT]@%lU{O@U$uXL[GqA&zXص]`vLU|"6,*⑈z!g^fPSYXd\Z 3}/A+ϗYߨR#_(ALgh:؊8͑^s#D18OZ  il԰,jB!$Lfqm3E;ٿ#A?o፱e֤(hNG{7wWpX(T"-icVm솋h 5")6F K{D2\C<ex徕$ߙh,!yX :s˓nFcY`lɢJ:C4s  O"vìۨqdzSd]{ I@tAt%ن(!x._{e;'xxf "`92岋mS$IE%dEFץA"/k#6sJ+Mϓ_\1pI$Q$Y֩X $"8p$ A@h>f5@ߡ(2' 6+!eQ(XXŴLaqSRx..bt]FG03ҢCXgmhK +KʾqpM,O:6$K""D=*C)bFHA>_Q&i'.٥JiHXX4)l$gUj~VLJU DB%I4?޶lєPTdfx^H$CGglLmmi$f XC+F\~5 5<"h`˸Uw)xӏ] ,QYb q=E&Յ"[D-:%D4ҭ%ϳN\BTl^^d6w+s)-ꂉH@<YlxSq"2Z 0kuu `=FgBt]ÈƱ ۱Q8x?g-N<.#1-ikiYTk.i m ==adQF$A$':Zddt5JOG?z\ai.^`fD<9QoJvy-282%DdT4MDhiEHE"ZbqbɦTDo@DDEDTt5F- ["$"$q(&L-\efWqlI0H*1-N&E6Fshlmn<$z$ h{}֞mxokGD|c%~k/ςD$ 6l&_" #)2}A 5B 7﮿ӭ|c) =.H Zy fdQӲpm U0e lvGDtD$`6v fgY]ahn-F4dIA%7<2WCߋ7y;עUVUE-fd`{ZATuW\캃+$I8-2o M+C J:dt %F0Z9 B4#h#K)zwƽq7/ټlhvZB`UZ-$K2mf^P/W}DݣZ+&Mwdǖx \o77i? (B TQ՟#IQ-zoDQ[5 z_Ӳ,kvk/(,+9JԜ L6kdyGqb`o*O+%W$*Erز'm;v- 63T5]1z~G+ :l X][AmVdd2I< iZHy\_r4,FzARX [%dҔǪ5 R_(%Ģq #RU4MEUOTh(XfZi6n^ D$%5iGh nz+DZ1 l i5T˶}FdQVb5=CDnk:t&S\+!Xגtte92Jgh$o A^g$3Ifff(JXkyn؃.B~=yoZ {:xov]4lkjA\. $ʈܜKi &ym^󼦢MTjr%IK$#ׯ$QZztJ\N߷+&Pי311lfYsVk׵ǶkyoM'7'*SZJ{\-Ueի(K,(/Sy؎ٌf A"-M Bw/\[a76١Ef~mzS|y7hA6bٟ,J 2IgIwZW` o[XHQ~7~sΑ˭`H>hoO.K\xiWVTʼ!ŨeQzp[ 7^hWqy!]SGqqi-P&UY#6>pA*;-l[}[¯1 k--cla تl}E IcccfP"42x(xO{}:{[` kxXPTx"gϞ%k.P7^\ A(Jr9|>I"322B60rwѝ"͒J…555ٳg:ėefffя~D^geN:EVömN<ɫLlAmYI&{MW㩧¶mΝ;BUUǹc{ 0MiN8 hDצFox[]tu,Jµkטʕ+QEd2Ihthחޱ뺘*nll077$#2lAr~<_ Çpo@j'OsܦESO ʧ>)xDQ>Ε+WXYYT*QCR*}}}d24hq(βF"2 T* qқan2qy}$ILNNmY>,}v((R<$_>?( J%~OH$8s mۤix>7{(H$ h4ڵk?FQ;h4399ٳg̙3LMMQ,ƶmضm=z444JQNRm*333<Ӵg>0x,gvM^g~~˗/~]ٷo۶mcpp^iA 嘘`||_|+WlpzՅ,T*C7̰ 쿢v.AAe]n,h5~~s ?<|Zf[q,//333C.YΜ9 /3g‡5GكP0 RݻЅr !m7e+PVs:_SNq5t!z{}"Ie?̙3aexuu_|]?<3R)vE&TIu=\Gann'||_ǯ{KV#s&&&8wW^ڵkŐ188H4 wU.^ȶm8nyy'N_2\|J. v H$P۶Lu$ll6K"@UUA^S.) $j&''e޽ ypP`rr2L^MLL0==MT ]`3ض"W^ennNN>ǹpXE4%NAZKKKT*Ʀp0SSStwwcFgggpB ,.]ZryH$?ȇ?a<wdWWWG-=kL$q ;/(Ǯ]t:Mww7ҥK \ӧ5rUU顿0_*zY.I$A tuu{n:DOOa쳠*sssa)qvvpwuucT*/O311jUUioo;"N( |g2>>Kq%̞={"J;yAEΜ9ѣGrg)N? ǵ[5/i"tH$8|0ɓkm*Jxr#xÐ p!|A>1;;|ߟ8q"" BC~q=oh~j!{>tsss?~iDQd۶mٳC}vD"躎y8e9<[UUصkcccڵPb+BX KCdL&NRAUՐL躾s8nsi4e&''IRqdWr9^X۶mc׮]aL988Hgg'iTU* b14|qd2ر;3M=9,//[ ###LLx/qaacǎ۾};;w;vjy(BWWQ{OOٹs'O>$W^ ۷]Qmۆ$I\t'O?Qz^_|L&Cggmv9>gqq1,h4ٳ'$IZ2<<s._L,\.8h8ٱcG{bXJ ܾ~B|h=Cuhqlz{{;HsαիWyWb( ayZ"Iڵrioox<&vZ8i=mQ(NvA:Fjυ ?̶m~iСC l"-9իW9qDwwo}??<:::]/dh4?ZaC>D0,zh&ҥK?vHR*=$DHӴL&x|켪 o>IRؒ@|<KT Ļ 0BcFX JKFX,(a}>Lx`:::ؾ};\B8,..= [uq5M#Lǡ0b'''gzzug߾} NÄD?O<ɘe2/~6, %fggy}=5(8zhH !$I"Q.{̙3̄moo٥B{y^|E>O{_W```L&,E"rp绱.|188H*qIDe줫x<~C< xL˲Ha ϳM=nv \pD"(D4-|ǡV)6}cʲL*bppÇs!D"PTĉ ]wŇ>!BO4@UݻwSӧi4޽'rXE1`Fa5p FGGyWxm۶Q8qb1lվvd߾}!exzzbȮ]n[ ރ xX&FY__Zrtww[~{{;R0k8Ndhoonx X uDieJRX&zE1,ɤr̕+Wf jZ^*N{{;;wd߾}ܹt:i /_f||K.ٶmwqcccw]q!Q'N_*KKK<9r??ԩSo>$+=^sܹaH{;77)J+BVT^z*W^0 W븮˫NQD"d2&lO|O~LNNr9COd2%!? Ͽb8jh46hj,--QBbN* qA1pkz\.G> uY[[իF'xm.D"o{.o*- ,G$7u\.9u HwqGxVK dwi[g> {(<a`yy L ¬(pwߍy\t}k?~SNHT¶0OGGٳg9s $8###>|8Lvwwo]h4VAjƽ{Z@P(pe._L[[###ܪr2<\._][[{Pq_~3gP,CÇvW_嗿%Ǐ{;錄z):_җfwr>򑏰}uO7={رcۿŋ9~8'NԩS,--f9p_"?__{v奥%nk=mݱ-,ݕJp6UU%JfrW[@+P d6$aFw#Z3ʳyAL|\^cF4Z׺v)x#zzR/_L>;v0::&@W ?$(?:tt:8Ga!=;ONN277G4d2) pI:::{X__ҥK<3HDOO˜:ujShrr#J122O0_piR =m6000;󬯯3݂V*`M0 =@ 2YTd2iaf> v`!ԊV< OF4-e[Bm\xg277 |mS2~3>я!j5{1~FFFxC$as nx/| <!?4.:::mUUrb^]] CVV)Jaci?& 4iuejjޗu]e,!g很TZؑxi I u@Aa2vhI\A:Ď7YdYE(3Crh6r8r~(̐BQA}{25XEEJJJR~flVA%`qqSn)Ij #.>1O̩ (8(fr ֛;T0<<̳}}=vtf~tسgF#~`vv@ @| Μ97166k׮h4&eE6囊?fp8 ^ÇF놆 QeeeF旵6U*L&(k-"@K/6  p8v>2228-M;>s[K#nHMP+J݋4Ph0?^udee! BT⩧3b݋rX,?~z>ْڤgff"??<8SΝ{B ^0kFaKt(,,Dvv6|>RK*jLh0m{x$NI1TO;; qAQ|߸q`pEnTu'Fdv;˱@i ?^~e,,,@Pᡇ⥓@zz:v;Ru:044ۍÁp8x"=L=4.: aZZ,8q=yWwʼn'6p_fJA.|~~> z=gn.N>&7y)@Vh^X{EGAy|<)6??ļ{~MOOx-V>9*'bϞ=8x v;ׇ+Wr%J6zvSOGp3xg3__i(P0 0Ldqqf‘sBEg6()Sӭ04#S `2k~~!arii @{c4yf^PqH5ЀeLNNhZ 1A̱u8m}G?Sܷo@gB\p <p@2Ew χK.d2L_QQ^Jn{VDp8RY=|G✌'l|X^^˗/vchh{rQd8؅w |>N݂DK U(CVVfb1N'G099 ˅ޗ&JŹR-h"ϏcC+}V Rb i#fqx/ܸqW\kט2{;P\\g}W\W  Aףg\z*N';:U=z(zsϱ'pe233|~bX@B$Vje]y ^rך ܜ5Z-j5k-$R CŋYJ{yy* W ׾_|O<⌬`u?%Y̥x 0j+MBGL?L jax)@W\AZZk(0FW\A0Duu5oSt``΀YG?BMM <B񹖃GWWW7 k ^dBQQQB@1^N}4<<9YQ{ x'OO׿SO=7|(--?{ ٨ QCZݍ>?<Ϣ:[ܒ7إ_H6UEva|g8<^ BFgTBDhBdk-C &'' VH,BAS"A%zƓO>e裏ڵkZe*Ȉ}"5V~|(++s=rr! "773? ]ml9PPP<y<LNNh4}^i.ZK%ЮRЍ7vΝ; .r.lFee%ok@@H^PʔDYxH8f#']P/Y-2Z-CqߏYҽ#WUUk>ɓ'P(駟?)sD"܋-ihZq `j.--N$[I @ ,IE===rII vލ]vGBT*k"!ψH2|zz.]TWW3g=1/OLLp a,L&X, uo.hQB§~b T7/^ùso~*^~e<0 "LdgΜAoo/0233/ 7 񐱱1D"z=70}}}u/U4jgggۋz HgqіΝ;q!444wW^V˩ˤD38g0 ׋L&t\Bb`0K'~ш*߿w+6݆ p~!WiA(2,=fffߏW_}| }Yz `bb. iZD"\cXPPPݾ&ZP1a~~xwb4ȬV% cn!77h4n a``===(--Eii) Q rq (\f3f3P]]/ IDATr |>><χnU(..,? .3aƏcXヒ+W?8xJ w 2m`Q\\ ZiLNN28B!0-s0'3cm%MYYY\q877w,@cc#8BA4 (N'.]`0Fyqu.3-x ~?jh4pl6u:=I p~?WF"x<ѷw^L&fL&7~ رc_z?Gee%}EII gxP(r _eeeZ' @FFF@I+$Dn:>=;lUUv؁"[KĖm?"R#??ؿ?~aTTT@ӭ^)FJTqe(J刉" M{Jebv`'eͽg"!Osss|2D|gؿ?fff`6sαA(**8y$:|;B@uu5/߯ Ҡg4o7x<̆G–6R~x<8^7ZCRqUUUCyyshm ͬŜešMX^^F (┊vرc7g^񔒒f09(`r/X,> :|I<p, |Ah48Nj8qj~W^122†>(>cwp8nʔ+8y'G–6bHDxRdxɄR7L0qkXX<'i a߾}_@'==~hkt+**P__3%d¡CXߞVi hx3i0??Nիb ۇ˗_`088ݻPۯTbp|M|[ߺZ "6U%fffVS.|X,l6TVVv}lzAT =rb1L޽{g`0ҽRHBwclG]]עNCZZz=z^dׇ"x<\pO?t ,..p\qSDCxrr/"B{1deeqQ"eY8իW gKJJ`Z9Fy`GYY:vִb;vA_^^Fs[KhX1l64662`࢟@}ݻw^Cee%"?k~ٌavD"$w<@zgΜA__~m|k_TNb `~~>eFb{{$]VVhu.|+f^шrN橮Fmm-Wz.˽{%$RRDQQ, v;كjN.׿P(nt L^tuuq@3 O>^i? LOO?9}D"Hv-! w\vm vV_PP>ߩZ ՊE^NرV|T {BRh4ͅhdB~~ U~?g?xpEl6|g?#ۿWi&ѥybb"N @L',, `h4w ˑ%hZּen4v܉]va~~>PVSz|+_~3|{ßٟK_rssl6ę3g)`#S QL&9ZݼuAJ{ئ~f0,T@C =4@ X8F(bc:[L='|Ǐ<~ `P~N+ OO022|vqر NO?s7\Yy?! 1nCbaBॗ^cD"&58 X1XHA駟BTbvv9,e=zHK_V+222XQ̔)jG1==y O0U\QQQföXȐ!#1d@} 'K܋vo&@} rIv]}vȽ RGmvڗU&433Y 1SnZήRBIIl@M48aaaaKRPUUuKwdzzz055E6ZF~_`yy>,rssD033)oWTLX{ ndu÷ M t% fgg9Ӓp8qu⽑@:roS_mFlPwcRDUUv-61'sas`vhWh4w}HKKCaa!_myƁvնs O ˑ ~~_V>C*eD"ddd2_bh4~pۃ~?^/(S(&k;`jj @M_**))7D,!tW>C4~vv@ N ٳ$LI/4>\F;v]Xu kZT*x'`xxVGY3)~?+;brrheeep\ڤYb{{{122i( ڵ YYY|X\\FAqq1JJJX鈔0rss{;i_zb1ڵkBΆlf {$Ҵ@ wyCmm-^/L&z=Fcqx<8ddd}}}pn7Cr[$׋3gŋDjQYY 8~ @###O|ff70;;@ ~׋իp:zL277FPף UUUjVe z=+,}|PըB4E]]f=ޔ }D" t~ơCgϞ8E\. bzz .FQbll CCCp\|b1cnnArV2;22N曬<|#@;^}}}x뭷 Á`0X,Ƅ~}}}O ł;vСC8z(ӋѽNOOcpppE_EQv8\.t" !++ |m:DW˃  \|OyQp~~>a&$`FYmg$Fӱh׻F']K.ҥK4/[J%b<Ȣky\v /^Dww7`襥%;PʲB@vv6v;X~ML)F`"% }EYl$dp"COOrssQSS*#q"OJ100gŋpq =t\deeB>3={ ʄ9YXXFGGa6b y1KKK|' OWUBhff. NSSSPTE.< H$¤࿝a^%bFaa!L&̤8??P(ri@LP\AEIV@6[ ,qp8XcG4梡۝!)z177b𓪐FAMM pdDo!FaXP]] |OlI,//cqqk6#h@kpdy M066jܹZ>zTVhjqID"f! "''hhhlgTآH>߬3?xC *J։PTp\bqJ B)EFEѠ* 555ì IRkei@ƦHEB)ϟX,ߏQ CTfh4h] jeeeh4FP*,z/%d Jgeeũ6k:E։C@R%J\P(Ra;55?~)'jh4ZAb@N d FfL&&-=l"󨨨@(b=)lFii)<OHKK`@uu5oqq/{meE@knn., KfV7DAAt:^/oKmR` 6>ﶌ*pQHM=eff2a ݎu"ǁPQQj8z&@HCTn|eh4^\5ayy HKK|>ߊ " bQeddl*[l6!rrrPPPb /==zPwшL&Į]`6yb1`Ν|ȀZ$8J~~>_ l#77U*KHx6i"pbj<Fo| t:rrr0<< ߏZ}oOr/++J@\FF&&&FV2䠬 vnZ XLyln㡇Y VQ\\ PxQSSùV;vJLWj>ɄqLMM!Bee%"JKKx<\UUjF>|%%%+5 v;v`^dlfwb|>ӹ2/;;\C hۑˋF444@fv# A1y(Ql6屬zAAJ%9źǎKW: Sۄz\'uKa4j9U/YWzL9(44 t:nܸ9$S*h4a!MK eP|nn@bQff&V*\u*r9iN& Qzj:.Ֆ 08Wj KKKHOO |>_Ҿt,w5`2KD,dYZZbw-3/-Q}&E/e%{h[IיXm-Ju cO6mdD}?QTl@@^lJ/f^>z233URo!Q֜E#5р6]i`2(t K2=kؤHI!΋&ږ" 9~s֮h۹{ Ȑ)q릍~u [ p X{.C͗~deȸ!{2dlc !cC62dlc@m Ȑ!21d C6ldش ]]]踫HӉӧO߱vTt:t:ӧONXof3lnYnᮧ6!bXggg¿'=wKKK%eq[Vj})?9766fA~L!V5p8b8}4:::ގNX֤Ǧ)rlgg'>s:p8L:555ŝN[ZZԄl|ss3bYٳgގ&b18={vr^Ν[p8vq#]5/Y@d++K\GoDG"$jWT@SSS7w8+ںcgH$DE?[{kjjvMĦ`ZԴVhnnY,---nzҶp8>;r, b,K\[N---ٶNA9#bٳgXBcc^+сXVrttt3oGG] :;;q)XָՅf |=tM,ىvrhoo_Skk+YkmmjEgg'FaKK {liiAkk+MMMIt⮚u"8+R8d]NJ^L:CѹsXSC VgKd6q&[}/}(Κtn͈%??_ugk"Τ5ދdGt>:%b?l*lm696466Յ6`-t mXN'C-, Y555q[ d]tttȑ#kQc(fڊSNpDV]Kq #ަt,ں{V+dhZ<[>|xŵҲyhn'Vச[t]DV9c#XyKVDk1$D/钁fvi_\BX;R45vi[4"oKK ϬODb@sOz 3yދdh.3$l >TI=D7X%156owK)))Dmāp8W5BwjHPVAtH t:166v׮~ӧqԩ˦ 1᧫ MMMx66U `Z+N'q=FQy^ .#!CdȐq{ !cC62dlc@m Ȑ!21d C6ldƐ !cC62dlc@m Ȑe x!s-8VcpS<Ӊز (t+Kbk% iTvvv+OFX,~BKK˪w]ke =DeY^{scKzh$Đuvv3Y ' o%$!$H(蘮.9rMhq'^yy3+9 PG6ťT8C[$sɂɮMz_ΛN477s{ȑ={]2 }ǽ${hooc&X,J:񭭭 pD'.WQ{t.B[z}"8E-^/}@bQ(GggvHLڟt=[ZZْ]jM>$:<ٻ[edAX/xbY1:N>F|LdϛW+knnfYvo8N>^lLmZy@%lԩSq3}[[xTM>=SNq<~!wwŽ^-6(. 0JqkcJ~Q[55MO:ԁHM&}&:OkjXJHUDyD}d+y(v"ޕT߽W*Nw.A3qA( m{2Or!_d@m-$CԐ !cC62dlc@m Ȑ!21d C6ldƐ !cC62dlc]IENDB`vdkbuilder2-2.4.0/data/res/vdkb2.png0000644000000000000000000000373207561535107012617 PNG  IHDR szz pHYs  ~tIME 3 XyIDATx]Uk333vR uH MԘ?_#~0HP@PZ^v̜Ϝ9̾}[{-?J//keeyW§c ߑ4鳾6KTT3qRi'BOג agn.\0}FLvKVNfՄI^ua(RC^A! 7ع60ᝳ#_FԬ^D\y-Ea6y~rKD-c6uH*M k9# Iׅ4ը,Ob1&)R5G?N;4F˴Zwn &>.!#DKSu-6ItCn A9ePJOe(aKK$+Li6FW\E{hcȳ.,Lɷ-404I"YE与5ŢA*t]W\khy?OHnRf{OPDky(>?ER~/>0;lIENDB`vdkbuilder2-2.4.0/data/res/vdkbide.defaults0000644000000000000000000000275307252426654014247 ======================= VDKBuilder version 0.1 December 1998 Mario Motta Ionutz Borcoman ======================= IDE defaults file Compilation instructions: - file is divided in sections - all text outside {} is a remark - text is case sensitive - be careful file parser is'nt protected against syntax errors ! - section format: section_name { key: value ; key: value ; ,.... } ------------------ SECTIONS BEGIN HERE ------------------ defaults for units units are a pair of .cc and .h files ------------------ vdkb_units { count: 1; name: unit; cc_ext: cc; h_ext: h; obj_ext: o; } ----------------------- defaults for project TIP: do not change prj_ext must be fixed to .prj ---------------------- vdkb_project { count: 1; name: project; prj_ext: prj; hide_on_run: no; autosave: no; startup_dir: home; wi_resizeable: no; save_session: yes; code_indent: yes; code_autoindent: no; run_modal: yes; emacs: no; show_line_numbers: yes; ext_ascii: no; } ------------------- defaults for editor ------------------- fg,bg accept standard x color names only vdkb_editor { font: "courier 12"; fg: "black"; bg: "ivory"; h_size:500; v_size:300; key_font: "courier bold 12"; key_color: "firebrick"; gtk_font: "courier 12"; gtk_color: "firebrick"; macro_color: "forest green"; macro_font: "courier 12"; preprocess_color: "forest green"; preprocess_font: "courier bold 12"; const_color: "blue"; const_font: "courier 12"; comment_color: "navy blue"; comment_font: "courier oblique 12"; timed_save:0; backup:yes; } vdkbuilder2-2.4.0/data/res/vdkbrc0000644000000000000000000000255207453331246012274 # # VDKBuilder 2.0 - default rc file # # common fonts pixmap_path "/root:/usr/local/share/vdkb2/res" style "notebook" { bg[ACTIVE] = "#b4c3d4" fg[SELECTED] = "white" # bg[PRELIGHT] = "#e8eff42" } class "GtkNotebook" style "notebook" style "editable" { fg[NORMAL] ="black" base[NORMAL] = "white" } class "GtkEntry" style "editable" class "GtkTextView" style "editable" style "clist" { bg[PRELIGHT] = "#e8eff4" fg[PRELIGHT] = "#e8eff4" fg[SELECTED] = "white" base[NORMAL] = "white" } class "GtkCList" style "clist" class "GtkTreeView" style "clist" style "checkbutton" { bg[PRELIGHT] = "#b4c3d4" } class "GtkCheckButton" style "checkbutton" style "default" { font = "helvetica medium 10" fg[NORMAL] = "#000000" fg[PRELIGHT] = "white" fg[ACTIVE] = "black" fg[SELECTED] = "#000000" fg[INSENSITIVE] = { 0.3, 0.3, 0.3 } bg[NORMAL] = "#b4c3d4" bg[PRELIGHT] = "#6e89ab" bg[ACTIVE] = "#486380" bg[SELECTED] = "#6e89ab" bg[INSENSITIVE] = "#b4c3d4" base[NORMAL] = "#b4c3d4" base[ACTIVE] = "#e8eff4" # bg_pixmap[NORMAL] = "fuzzy.xpm" } # common default class "GtkWidget" style "default" style "tooltip" { bg[NORMAL] = "white" fg[NORMAL] = "navyblue" font_name = "helvetica 10" } # tip style, remove comment to enable widget "gtk-tooltips*" style "tooltip" vdkbuilder2-2.4.0/data/res/autogen.sh0000644000000000000000000000562707252426655013110 #!/bin/sh # Run this to generate all the initial makefiles, etc. srcdir=`dirname $0` test -z "$srcdir" && srcdir=. DIE=0 PKG_NAME="the package" (autoconf --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`autoconf' installed to compile Gnome." echo "Download the appropriate package for your distribution," echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" DIE=1 } (grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { (libtool --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`libtool' installed to compile Gnome." echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2.tar.gz" echo "(or a newer version if it is available)" DIE=1 } } (automake --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`automake' installed to compile Gnome." echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" echo "(or a newer version if it is available)" DIE=1 NO_AUTOMAKE=yes } # if no automake, don't bother testing for aclocal test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: Missing \`aclocal'. The version of \`automake'" echo "installed doesn't appear recent enough." echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" echo "(or a newer version if it is available)" DIE=1 } if test "$DIE" -eq 1; then exit 1 fi if test -z "$*"; then echo "**Warning**: I am going to run \`configure' with no arguments." echo "If you wish to pass any to it, please specify them on the" echo \`$0\'" command line." echo fi case $CC in xlc ) am_opt=--include-deps;; esac for coin in `find $srcdir -name configure.in -print` do dr=`dirname $coin` if test -f $dr/NO-AUTO-GEN; then echo skipping $dr -- flagged as no auto-gen else echo processing $dr macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin` ( cd $dr aclocalinclude="$ACLOCAL_FLAGS" for k in $macrodirs; do if test -d $k; then aclocalinclude="$aclocalinclude -I $k" ##else ## echo "**Warning**: No such directory \`$k'. Ignored." fi done if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then echo "Running libtoolize..." libtoolize --force --copy fi echo "Running aclocal $aclocalinclude ..." aclocal $aclocalinclude if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then echo "Running autoheader..." autoheader fi echo "Running automake --gnu $am_opt ..." automake --add-missing --gnu $am_opt echo "Running autoconf ..." autoconf ) fi done conf_flags="--enable-maintainer-mode --enable-compile-warnings" if test x$NOCONFIGURE = x; then echo Running $srcdir/configure $conf_flags "$@" ... $srcdir/configure $conf_flags "$@" \ && echo Now type \`make\' to compile $PKG_NAME else echo Skipping configure process. fi vdkbuilder2-2.4.0/data/res/aclocal.m40000644000000000000000000042456507437165216012756 dnl aclocal.m4 generated automatically by aclocal 1.4-p1 dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A dnl PARTICULAR PURPOSE. # Do all the work for Automake. This macro actually does too much -- # some checks are only needed if your package does certain things. # But this isn't really a big deal. # serial 1 dnl Usage: dnl AM_INIT_AUTOMAKE(package,version, [no-define]) AC_DEFUN(AM_INIT_AUTOMAKE, [AC_REQUIRE([AC_PROG_INSTALL]) PACKAGE=[$1] AC_SUBST(PACKAGE) VERSION=[$2] AC_SUBST(VERSION) dnl test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi ifelse([$3],, AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) AC_REQUIRE([AM_SANITY_CHECK]) AC_REQUIRE([AC_ARG_PROGRAM]) dnl FIXME This is truly gross. missing_dir=`cd $ac_aux_dir && pwd` AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) AC_REQUIRE([AC_PROG_MAKE_SET])]) # # Check to make sure that the build environment is sane. # AC_DEFUN(AM_SANITY_CHECK, [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftestfile # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` if test "[$]*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftestfile` fi if test "[$]*" != "X $srcdir/configure conftestfile" \ && test "[$]*" != "X conftestfile $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "[$]2" = conftestfile ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi rm -f conftest* AC_MSG_RESULT(yes)]) dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) dnl The program must properly implement --version. AC_DEFUN(AM_MISSING_PROG, [AC_MSG_CHECKING(for working $2) # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if ($2 --version) < /dev/null > /dev/null 2>&1; then $1=$2 AC_MSG_RESULT(found) else $1="$3/missing $2" AC_MSG_RESULT(missing) fi AC_SUBST($1)]) # Add --enable-maintainer-mode option to configure. # From Jim Meyering # serial 1 AC_DEFUN(AM_MAINTAINER_MODE, [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode is disabled by default AC_ARG_ENABLE(maintainer-mode, [ --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer], USE_MAINTAINER_MODE=$enableval, USE_MAINTAINER_MODE=no) AC_MSG_RESULT($USE_MAINTAINER_MODE) AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST(MAINT)dnl ] ) # Define a conditional. AC_DEFUN(AM_CONDITIONAL, [AC_SUBST($1_TRUE) AC_SUBST($1_FALSE) if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi]) # Like AC_CONFIG_HEADER, but automatically create stamp file. AC_DEFUN(AM_CONFIG_HEADER, [AC_PREREQ([2.12]) AC_CONFIG_HEADER([$1]) dnl When config.status generates a header, we must update the stamp-h file. dnl This file resides in the same directory as the config header dnl that is generated. We must strip everything past the first ":", dnl and everything past the last "/". AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, <>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, <>; do case " <<$>>CONFIG_HEADERS " in *" <<$>>am_file "*<<)>> echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx ;; esac am_indx=`expr "<<$>>am_indx" + 1` done<<>>dnl>>) changequote([,]))]) # libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- # serial 46 AC_PROG_LIBTOOL AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Prevent multiple expansion define([AC_PROG_LIBTOOL], []) ]) AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.13)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl AC_REQUIRE([AC_OBJEXT])dnl AC_REQUIRE([AC_EXEEXT])dnl dnl _LT_AC_PROG_ECHO_BACKSLASH # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;; esac AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], enable_win32_dll=yes, enable_win32_dll=no) AC_ARG_ENABLE(libtool-lock, [ --disable-libtool-lock avoid locking (might break parallel builds)]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_SAVE AC_LANG_C AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_RESTORE]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, [AC_TRY_LINK([], [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); DllMain (0, 0, 0);], [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) case $host/$CC in *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) # old mingw systems require "-dll" to link a DLL, while more recent ones # require "-mdll" SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -mdll" AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) CFLAGS="$SAVE_CFLAGS" ;; *-*-cygwin* | *-*-pw32*) # cygwin systems need to pass --dll to the linker, and not link # crt.o which will require a WinMain@16 definition. lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; esac ;; ]) esac _LT_AC_LTCONFIG_HACK ]) # _LT_AC_CHECK_DLFCN # -------------------- AC_DEFUN(_LT_AC_CHECK_DLFCN, [AC_CHECK_HEADERS(dlfcn.h) ])# _LT_AC_CHECK_DLFCN # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # --------------------------------- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_OBJEXT]) # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. [symcode='[BCDEGRST]'] # Regexp to match symbols that can be accessed directly from C. [sympat='\([_A-Za-z][_A-Za-z0-9]*\)'] # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" # Define system-specific variables. case $host_os in aix*) [symcode='[BCDT]'] ;; cygwin* | mingw* | pw32*) [symcode='[ABCDGISTW]'] ;; hpux*) # Its linker distinguishes data from code symbols lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ;; irix*) [symcode='[BCDEGRST]'] ;; solaris* | sysv5*) [symcode='[BDT]'] ;; sysv4) [symcode='[DFNSTU]'] ;; esac # Handle CRLF in mingw tool chain opt_cr= case $host_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then [symcode='[ABCDGISTW]'] fi # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. [lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"] # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } [lt_preloaded_symbols[] =] { EOF sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" if AC_TRY_EVAL(ac_link) && test -s conftest; then pipe_works=yes fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AC_FD_CC fi else echo "cannot find nm_test_var in $nlist" >&AC_FD_CC fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC fi else echo "$progname: failed program was:" >&AC_FD_CC cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" if test -z "$lt_cv_sys_global_symbol_pipe"; then global_symbol_to_cdecl= else global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" fi if test -z "$global_symbol_pipe$global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi ]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR # --------------------------------- AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], [# Find the correct PATH separator. Usually this is `:', but # DJGPP uses `;' like DOS. if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac fi ])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR # _LT_AC_PROG_ECHO_BACKSLASH # -------------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn;t interpret backslashes. AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH /usr/ucb; do if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) AC_DIVERT_POP ])# _LT_AC_PROG_ECHO_BACKSLASH # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ------------------------------------------------------------------ AC_DEFUN(_LT_AC_TRY_DLOPEN_SELF, [if test "$cross_compiling" = yes; then : [$4] else AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_unknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_AC_TRY_DLOPEN_SELF # AC_LIBTOOL_DLOPEN_SELF # ------------------- AC_DEFUN(AC_LIBTOOL_DLOPEN_SELF, [if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; cygwin* | mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; *) AC_CHECK_LIB(dl, dlopen, [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_FUNC(dlopen, lt_cv_dlopen="dlopen", [AC_CHECK_FUNC(shl_load, lt_cv_dlopen="shl_load", [AC_CHECK_LIB(svld, dlopen, [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB(dld, shl_load, [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ])# AC_LIBTOOL_DLOPEN_SELF AC_DEFUN([_LT_AC_LTCONFIG_HACK], [AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] # Same as above, but do not quote variable references. [double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" need_locks="$enable_libtool_lock" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o if test x"$host" != x"$build"; then ac_tool_prefix=${host_alias}- else ac_tool_prefix= fi # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case $host_os in linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" fi # Allow CC to be a program name with arguments. set dummy $CC compiler="[$]2" AC_MSG_CHECKING([for objdir]) rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. objdir=_libs fi rmdir .libs 2>/dev/null AC_MSG_RESULT($objdir) AC_ARG_WITH(pic, [ --with-pic try to use only PIC/non-PIC objects [default=use both]], pic_mode="$withval", pic_mode=default) test -z "$pic_mode" && pic_mode=default # We assume here that the value for lt_cv_prog_cc_pic will not be cached # in isolation, and that seeing it set (from the cache) indicates that # the associated values are set (in the cache) correctly too. AC_MSG_CHECKING([for $compiler option to produce PIC]) AC_CACHE_VAL(lt_cv_prog_cc_pic, [ lt_cv_prog_cc_pic= lt_cv_prog_cc_shlib= lt_cv_prog_cc_wl= lt_cv_prog_cc_static= lt_cv_prog_cc_no_builtin= lt_cv_prog_cc_can_build_shared=$can_build_shared if test "$GCC" = yes; then lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-static' case $host_os in aix*) # Below there is a dirty hack to force normal static linking with -ldl # The problem is because libdl dynamically linked with both libc and # libC (AIX C++ library), which obviously doesn't included in libraries # list by gcc. This cause undefined symbols with -static flags. # This hack allows C programs to be linked with "-static -ldl", but # we not sure about C++ programs. lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_cv_prog_cc_pic='-fno-common' ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; sysv4*MP*) if test -d /usr/nec; then lt_cv_prog_cc_pic=-Kconform_pic fi ;; *) lt_cv_prog_cc_pic='-fPIC' ;; esac else # PORTME Check for PIC flags for the system compiler. case $host_os in aix3* | aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' else lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' fi ;; hpux9* | hpux10* | hpux11*) # Is there a better lt_cv_prog_cc_static that works with the bundled CC? lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" lt_cv_prog_cc_pic='+Z' ;; irix5* | irix6*) lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' # PIC (with -KPIC) is the default. ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; newsos6) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' ;; osf3* | osf4* | osf5*) # All OSF/1 code is PIC. lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' ;; sco3.2v5*) lt_cv_prog_cc_pic='-Kpic' lt_cv_prog_cc_static='-dn' lt_cv_prog_cc_shlib='-belf' ;; solaris*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' ;; sunos4*) lt_cv_prog_cc_pic='-PIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' if test "x$host_vendor" = xsni; then lt_cv_prog_cc_wl='-LD' else lt_cv_prog_cc_wl='-Wl,' fi ;; uts4*) lt_cv_prog_cc_pic='-pic' lt_cv_prog_cc_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_cv_prog_cc_pic='-Kconform_pic' lt_cv_prog_cc_static='-Bstatic' fi ;; *) lt_cv_prog_cc_can_build_shared=no ;; esac fi ]) if test -z "$lt_cv_prog_cc_pic"; then AC_MSG_RESULT([none]) else AC_MSG_RESULT([$lt_cv_prog_cc_pic]) # Check to make sure the pic_flag actually works. AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" AC_TRY_COMPILE([], [], [dnl case $host_os in hpux9* | hpux10* | hpux11*) # On HP-UX, both CC and GCC only warn that PIC is supported... then # they create non-PIC objects. So, if there were any warnings, we # assume that PIC is not supported. if test -s conftest.err; then lt_cv_prog_cc_pic_works=no else lt_cv_prog_cc_pic_works=yes fi ;; *) lt_cv_prog_cc_pic_works=yes ;; esac ], [dnl lt_cv_prog_cc_pic_works=no ]) CFLAGS="$save_CFLAGS" ]) if test "X$lt_cv_prog_cc_pic_works" = Xno; then lt_cv_prog_cc_pic= lt_cv_prog_cc_can_build_shared=no else lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" fi AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) fi # Check for any special shared library compilation flags. if test -n "$lt_cv_prog_cc_shlib"; then AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) if echo "$old_CC $old_CFLAGS " | [egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]"] >/dev/null; then : else AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) lt_cv_prog_cc_can_build_shared=no fi fi AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl lt_cv_prog_cc_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) LDFLAGS="$save_LDFLAGS" ]) # Belt *and* braces to stop my trousers falling down: test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) pic_flag="$lt_cv_prog_cc_pic" special_shlib_compile_flags="$lt_cv_prog_cc_shlib" wl="$lt_cv_prog_cc_wl" link_static_flag="$lt_cv_prog_cc_static" no_builtin_flag="$lt_cv_prog_cc_no_builtin" can_build_shared="$lt_cv_prog_cc_can_build_shared" # Check to see if options -o and -c are simultaneously supported by compiler AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) AC_CACHE_VAL([lt_cv_compiler_c_o], [ $rm -r conftest 2>/dev/null mkdir conftest cd conftest echo "int some_variable = 0;" > conftest.$ac_ext mkdir out # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then lt_cv_compiler_c_o=no else lt_cv_compiler_c_o=yes fi else # Append any errors to the config.log. cat out/conftest.err 1>&AC_FD_CC lt_cv_compiler_c_o=no fi CFLAGS="$save_CFLAGS" chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm -r conftest 2>/dev/null ]) compiler_c_o=$lt_cv_compiler_c_o AC_MSG_RESULT([$compiler_c_o]) if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) AC_CACHE_VAL([lt_cv_compiler_o_lo], [ lt_cv_compiler_o_lo=no save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -c -o conftest.lo" AC_TRY_COMPILE([], [int some_variable = 0;], [dnl # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then lt_cv_compiler_o_lo=no else lt_cv_compiler_o_lo=yes fi ]) CFLAGS="$save_CFLAGS" ]) compiler_o_lo=$lt_cv_compiler_o_lo AC_MSG_RESULT([$compiler_o_lo]) else compiler_o_lo=no fi # Check to see if we can do hard links to lock some files if needed hard_links="nottested" if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi if test "$GCC" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) echo "int some_variable = 0;" > conftest.$ac_ext save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" compiler_rtti_exceptions=no AC_TRY_COMPILE([], [int some_variable = 0;], [dnl # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then compiler_rtti_exceptions=no else compiler_rtti_exceptions=yes fi ]) CFLAGS="$save_CFLAGS" AC_MSG_RESULT([$compiler_rtti_exceptions]) if test "$compiler_rtti_exceptions" = "yes"; then no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' else no_builtin_flag=' -fno-builtin' fi fi # See if the linker supports building shared libraries. AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) allow_undefined_flag= no_undefined_flag= need_lib_prefix=unknown need_version=unknown # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments archive_cmds= archive_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_into_libs=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported runpath_var= link_all_deplibs=unknown always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an egrep regular expression of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* ) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX, the GNU linker is very broken # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=yes extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ test -f $output_objdir/impgen.exe || (cd $output_objdir && \ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ else $CC -o impgen impgen.c ; fi)~ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' # cygwin and mingw dlls have different entry points and sets of symbols # to exclude. # FIXME: what about values for MSVC? dll_entry=__cygwin_dll_entry@12 dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ case $host_os in mingw*) # mingw values dll_entry=_DllMainCRTStartup@12 dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ ;; esac # mingw and cygwin differ, and it's simplest to just exclude the union # of the two symbol sets. dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one (in ltdll.c) if test "x$lt_cv_need_dllmain" = "xyes"; then ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < [$]0 > $output_objdir/$soname-ltdll.c~ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' else ltdll_obj= ltdll_cmds= fi # Extract the symbol export list from an `--export-all' def file, # then regenerate the def file from the symbol export list, so that # the compiled dll only exports the symbol export list. # Be careful not to strip the DATA tag left be newer dlltools. export_symbols_cmds="$ltdll_cmds"' $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ [sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//"] < $output_objdir/$soname-def > $export_symbols' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is. # If DATA tags from a recent dlltool are present, honour them! archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname-def; else echo EXPORTS > $output_objdir/$soname-def; _lt_hint=1; cat $export_symbols | while read symbol; do set dummy \$symbol; case \[$]# in 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; esac; _lt_hint=`expr 1 + \$_lt_hint`; done; fi~ '"$ltdll_cmds"' $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' case $host_os in cygwin* | mingw* | pw32*) # dlltool doesn't understand --whole-archive et. al. whole_archive_flag_spec= ;; *) # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi ;; esac fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_libdir_separator=':' if test "$GCC" = yes; then collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi shared_flag='-shared' else if test "$host_cpu" = ia64; then shared_flag='-G' else shared_flag='${wl}-bM:SRE' fi hardcode_direct=yes fi if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # Test if we are trying to use run time linking, or normal AIX style linking. # If -brtl is somewhere in LDFLAGS, we need to do run time linking. aix_use_runtimelinking=no for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then aix_use_runtimelinking=yes break fi done exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # It seems that -bexpall can do strange things, so it is better to # generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' allow_undefined_flag=' -Wl,-G' archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-znodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' # Warning - without using the other run time loading flags, -berok will # link without error, but may produce a broken library. allow_undefined_flag='${wl}-berok' # This is a bit strange, but is similar to how AIX traditionally builds # it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' ;; darwin* | rhapsody*) allow_undefined_flag='-undefined suppress' # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. archive_cmds='$CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linkopts -install_name $rpath/$soname $(test -n "$verstring" -a x$verstring != x0.0 && echo $verstring)' # We need to add '_' to the symbols in $export_symbols first #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' hardcode_direct=yes hardcode_shlibpath_var=no whole_archive_flag_spec='-all_load $convenience' ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9* | hpux10* | hpux11*) case $host_os in hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' #Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag=' -z defs' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in [solaris2.[0-5] | solaris2.[0-5].*]) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) if test "x$host_vendor" = xsno; then archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_direct=yes # is this really true??? else archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5uw7* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi AC_MSG_RESULT([$ld_shlibs]) test "$ld_shlibs" = no && can_build_shared=no # Check hardcoding attributes. AC_MSG_CHECKING([how to hardcode library paths into programs]) hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$hardcode_shlibpath_var" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi AC_MSG_RESULT([$hardcode_action]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi reload_cmds='$LD$reload_flag -o $output$reload_objs' test -z "$deplibs_check_method" && deplibs_check_method=unknown # PORTME Fill in your ld.so characteristics AC_MSG_CHECKING([dynamic linker characteristics]) library_names_spec= libname_spec='lib$name' soname_spec= postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}.so$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' ;; aix4* | aix5*) version_type=linux if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in [ aix4 | aix4.[01] | aix4.[01].*)] if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so instead of # lib.a to let people know that these are not typical AIX shared libraries. library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}.so$major' fi shlibpath_var=LIBPATH deplibs_check_method=pass_all fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | [$Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\'']`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}.so' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" export_dynamic_flag_spec=-rdynamic # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin*) library_names_spec='$libname.dll.a' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll' postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog .libs/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' ;; yes,mingw*) library_names_spec='${libname}`echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` ;; yes,pw32*) library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' ;; *) library_names_spec='${libname}`echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; *) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. dynamic_linker="$host_os dld.sl" version_type=sunos need_lib_prefix=no need_version=no shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' soname_spec='${libname}${release}.sl$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6*) version_type=irix need_lib_prefix=no need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' case $host_os in irix5*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ;; # No shared lib support for Linux oldld, aout, or coff. linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) dynamic_linker=no ;; # This must be Linux ELF. linux-gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' soname_spec='${libname}${release}.so$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos if test "$with_gnu_ld" = yes; then need_lib_prefix=no need_version=no fi library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; os2*) libname_spec='$name' need_lib_prefix=no library_names_spec='$libname.dll $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_version=no soname_spec='${libname}${release}.so' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; uts4*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' soname_spec='$libname.so.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no # Report the final consequences. AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi AC_LIBTOOL_DLOPEN_SELF if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], [$rm conftest* echo 'static int dummy;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_cv_prog_cc_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 fi]) AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) ;; esac fi need_lc=${lt_cv_archive_cmds_need_lc-yes} # The second clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then : else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi if test -f "$ltmain"; then trap "$rm \"${ofile}T\"; exit 1" 1 2 15 $rm -f "${ofile}T" echo creating $ofile # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS \ AR AR_FLAGS CC LD LN_S NM SHELL \ reload_flag reload_cmds wl \ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ library_names_spec soname_spec \ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ old_striplib striplib file_magic_cmd export_symbols_cmds \ deplibs_check_method allow_undefined_flag no_undefined_flag \ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ hardcode_libdir_flag_spec hardcode_libdir_separator \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do case $var in reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ postinstall_cmds | postuninstall_cmds | \ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done cat <<__EOF__ > "${ofile}T" #! $SHELL # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996-2000 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="sed -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$need_lc # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # The default C compiler. CC=$lt_CC # Is the compiler the GNU C compiler? with_gcc=$GCC # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_pic_flag pic_mode=$pic_mode # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_compiler_c_o # Can we write directly to a .lo ? compiler_o_lo=$lt_compiler_o_lo # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_link_static_flag # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_global_symbol_to_cdecl # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "${ofile}T" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac case $host_os in cygwin* | mingw* | pw32* | os2*) cat <<'EOF' >> "${ofile}T" # This is a source program that is used to create dlls on Windows # Don't remove nor modify the starting and closing comments # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ # This is a source program that is used to create import libraries # on Windows for dlls which lack them. Don't remove nor modify the # starting and closing comments # /* impgen.c starts here */ # /* Copyright (C) 1999-2000 Free Software Foundation, Inc. # # This file is part of GNU libtool. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # */ # # #include /* for printf() */ # #include /* for open(), lseek(), read() */ # #include /* for O_RDONLY, O_BINARY */ # #include /* for strdup() */ # # /* O_BINARY isn't required (or even defined sometimes) under Unix */ # #ifndef O_BINARY # #define O_BINARY 0 # #endif # # static unsigned int # pe_get16 (fd, offset) # int fd; # int offset; # { # unsigned char b[2]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 2); # return b[0] + (b[1]<<8); # } # # static unsigned int # pe_get32 (fd, offset) # int fd; # int offset; # { # unsigned char b[4]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 4); # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # static unsigned int # pe_as32 (ptr) # void *ptr; # { # unsigned char *b = ptr; # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # int # main (argc, argv) # int argc; # char *argv[]; # { # int dll; # unsigned long pe_header_offset, opthdr_ofs, num_entries, i; # unsigned long export_rva, export_size, nsections, secptr, expptr; # unsigned long name_rvas, nexp; # unsigned char *expdata, *erva; # char *filename, *dll_name; # # filename = argv[1]; # # dll = open(filename, O_RDONLY|O_BINARY); # if (dll < 1) # return 1; # # dll_name = filename; # # for (i=0; filename[i]; i++) # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') # dll_name = filename + i +1; # # pe_header_offset = pe_get32 (dll, 0x3c); # opthdr_ofs = pe_header_offset + 4 + 20; # num_entries = pe_get32 (dll, opthdr_ofs + 92); # # if (num_entries < 1) /* no exports */ # return 1; # # export_rva = pe_get32 (dll, opthdr_ofs + 96); # export_size = pe_get32 (dll, opthdr_ofs + 100); # nsections = pe_get16 (dll, pe_header_offset + 4 +2); # secptr = (pe_header_offset + 4 + 20 + # pe_get16 (dll, pe_header_offset + 4 + 16)); # # expptr = 0; # for (i = 0; i < nsections; i++) # { # char sname[8]; # unsigned long secptr1 = secptr + 40 * i; # unsigned long vaddr = pe_get32 (dll, secptr1 + 12); # unsigned long vsize = pe_get32 (dll, secptr1 + 16); # unsigned long fptr = pe_get32 (dll, secptr1 + 20); # lseek(dll, secptr1, SEEK_SET); # read(dll, sname, 8); # if (vaddr <= export_rva && vaddr+vsize > export_rva) # { # expptr = fptr + (export_rva - vaddr); # if (export_rva + export_size > vaddr + vsize) # export_size = vsize - (export_rva - vaddr); # break; # } # } # # expdata = (unsigned char*)malloc(export_size); # lseek (dll, expptr, SEEK_SET); # read (dll, expdata, export_size); # erva = expdata - export_rva; # # nexp = pe_as32 (expdata+24); # name_rvas = pe_as32 (expdata+32); # # printf ("EXPORTS\n"); # for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) mv -f "${ofile}T" "$ofile" || \ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") chmod +x "$ofile" fi ])# _LT_AC_LTCONFIG_HACK # AC_LIBTOOL_DLOPEN - enable checks for dlopen support AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) # AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) # AC_ENABLE_SHARED - implement the --enable-shared flag # Usage: AC_ENABLE_SHARED[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN([AC_ENABLE_SHARED], [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(shared, changequote(<<, >>)dnl << --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac], enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl ]) # AC_DISABLE_SHARED - set the default shared flag to --disable-shared AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no)]) # AC_ENABLE_STATIC - implement the --enable-static flag # Usage: AC_ENABLE_STATIC[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN([AC_ENABLE_STATIC], [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(static, changequote(<<, >>)dnl << --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac], enable_static=AC_ENABLE_STATIC_DEFAULT)dnl ]) # AC_DISABLE_STATIC - set the default static flag to --disable-static AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no)]) # AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN([AC_ENABLE_FAST_INSTALL], [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(fast-install, changequote(<<, >>)dnl << --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac], enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl ]) # AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no)]) # AC_LIBTOOL_PICMODE - implement the --with-pic flag # Usage: AC_LIBTOOL_PICMODE[(MODE)] # Where MODE is either `yes' or `no'. If omitted, it defaults to # `both'. AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl pic_mode=ifelse($#,1,$1,default)]) # AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi ]) # AC_PATH_MAGIC - find a file program which can recognise a shared library AC_DEFUN([AC_PATH_MAGIC], [AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH) else MAGIC_CMD=: fi fi ]) # AC_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else lt_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$lt_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_PROG_LD_GNU ]) # AC_PROG_LD_GNU - AC_DEFUN([AC_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then lt_cv_prog_gnu_ld=yes else lt_cv_prog_gnu_ld=no fi]) with_gnu_ld=$lt_cv_prog_gnu_ld ]) # AC_PROG_LD_RELOAD_FLAG - find reload flag for linker # -- PORTME Some linkers may need a different reload flag. AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], [AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, [lt_cv_ld_reload_flag='-r']) reload_flag=$lt_cv_ld_reload_flag test -n "$reload_flag" && reload_flag=" $reload_flag" ]) # AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], [AC_CACHE_CHECK([how to recognise dependant libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # ['file_magic [regex]'] -- check by looking for files in library path # which responds to the $file_magic_cmd with a given egrep regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi4*) [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'] lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin* | mingw* | pw32*) lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' lt_cv_file_magic_cmd='/usr/bin/file -L' case "$host_os" in rhapsody* | darwin1.[012]) lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` ;; *) # Darwin 1.3 on lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' ;; esac ;; freebsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. [lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'] lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20*|hpux11*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'] lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; irix5* | irix6*) case $host_os in irix5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac # this will be overridden with pass_all, but let us keep it just in case [lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"] ;; esac lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux-gnu*) case $host_cpu in alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;] esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] else [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'] fi ;; newos6*) [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'] lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; osf3* | osf4* | osf5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' lt_cv_file_magic_test_file=/shlib/libc.so lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_test_file=/lib/libc.so ;; [sysv5uw[78]* | sysv4*uw2*)] lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'] lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'] ;; sni) lt_cv_file_magic_cmd='/bin/file' [lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"] lt_cv_file_magic_test_file=/lib/libc.so ;; esac ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method ]) # AC_PROG_NM - find the path to a BSD-compatible name lister AC_DEFUN([AC_PROG_NM], [AC_MSG_CHECKING([for BSD-compatible nm]) AC_CACHE_VAL(lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/${ac_tool_prefix}nm if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then lt_cv_path_NM="$tmp_nm -B" break elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then lt_cv_path_NM="$tmp_nm -p" break else lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" AC_MSG_RESULT([$NM]) ]) # AC_CHECK_LIBM - check for math library AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32*) # These system don't have libm ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, main, LIBM="-lm") ;; esac ]) # AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for # the libltdl convenience library and INCLTDL to the include flags for # the libltdl header and adds --enable-ltdl-convenience to the # configure arguments. Note that LIBLTDL and INCLTDL are not # AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not # provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed # with '${top_builddir}/' and INCLTDL will be prefixed with # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) ]) # AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for # the libltdl installable library and INCLTDL to the include flags for # the libltdl header and adds --enable-ltdl-install to the configure # arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is # AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed # libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will # be prefixed with '${top_builddir}/' and INCLTDL will be prefixed # with '${top_srcdir}/' (note the single quotes!). If your package is # not flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, main, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" INCLTDL= fi ]) # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) # This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL]) # Macro to add for using GNU gettext. # Ulrich Drepper , 1995. # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # serial 10 dnl Usage: AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR]). dnl If TOOLSYMBOL is specified and is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). Otherwise, a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. dnl LIBDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_WITH_NLS], [AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT($USE_NLS) AC_SUBST(USE_NLS) BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no INTLLIBS= dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH(included-gettext, [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. CATOBJEXT=NONE dnl Add a version number to the cache macros. define(gt_cv_func_gnugettext_libc, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libc]) define(gt_cv_func_gnugettext_libintl, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libintl]) AC_CHECK_HEADER(libintl.h, [AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, [AC_TRY_LINK([#include extern int _nl_msg_cat_cntr;], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], gt_cv_func_gnugettext_libc=yes, gt_cv_func_gnugettext_libc=no)]) if test "$gt_cv_func_gnugettext_libc" != "yes"; then AC_CACHE_CHECK([for GNU gettext in libintl], gt_cv_func_gnugettext_libintl, [gt_save_LIBS="$LIBS" LIBS="$LIBS -lintl $LIBICONV" AC_TRY_LINK([#include extern int _nl_msg_cat_cntr;], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], gt_cv_func_gnugettext_libintl=yes, gt_cv_func_gnugettext_libintl=no) LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if test "$gt_cv_func_gnugettext_libc" = "yes" \ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ && test "$PACKAGE" != gettext; }; then AC_DEFINE(HAVE_GETTEXT, 1, [Define if the GNU gettext() function is already present or preinstalled.]) if test "$gt_cv_func_gnugettext_libintl" = "yes"; then dnl If iconv() is in a separate libiconv library, then anyone dnl linking with libintl{.a,.so} also needs to link with dnl libiconv. INTLLIBS="-lintl $LIBICONV" fi gt_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" AC_CHECK_FUNCS(dcgettext) LIBS="$gt_save_LIBS" dnl Search for GNU msgfmt in the PATH. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) dnl Search for GNU xgettext in the PATH. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) CATOBJEXT=.gmo fi ]) if test "$CATOBJEXT" = "NONE"; then dnl GNU gettext is not found in the C library. dnl Fall back on GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. INTLOBJS="\$(GETTOBJS)" AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) AC_SUBST(MSGFMT) BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes CATOBJEXT=.gmo INTLLIBS="ifelse([$3],[],\$(top_builddir)/intl,[$3])/libintl.ifelse([$1], use-libtool, [l], [])a $LIBICONV" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU msgfmt. if test "$GMSGFMT" != ":"; then dnl If it is no GNU msgfmt we define it as : so that the dnl Makefiles still can work. if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then : ; else AC_MSG_RESULT( [found msgfmt program is not GNU msgfmt; ignore it]) GMSGFMT=":" fi fi dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is no GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi fi dnl We need to process the po/ directory. POSUB=po fi AC_OUTPUT_COMMANDS( [for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" fi ;; esac done]) dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext; then BUILD_INCLUDED_LIBINTL=yes fi dnl intl/plural.c is generated from intl/plural.y. It requires bison, dnl because plural.y uses bison specific features. It requires at least dnl bison-1.26 because earlier versions generate a plural.c that doesn't dnl compile. dnl bison is only needed for the maintainer (who touches plural.y). But in dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put dnl the rule in general Makefile. Now, some people carelessly touch the dnl files or have a broken "make" program, hence the plural.c rule will dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not dnl present or too old. AC_CHECK_PROGS([INTLBISON], [bison]) if test -z "$INTLBISON"; then ac_verc_fail=yes else dnl Found it, now check the version. AC_MSG_CHECKING([version of bison]) changequote(<<,>>)dnl ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison .* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) changequote([,])dnl ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac AC_MSG_RESULT([$ac_prog_version]) fi if test $ac_verc_fail = yes; then INTLBISON=: fi dnl These rules are solely for the distribution goal. While doing this dnl we only have to keep exactly one list of the available catalogs dnl in configure.in. for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done dnl Make all variables we use known to autoconf. AC_SUBST(BUILD_INCLUDED_LIBINTL) AC_SUBST(USE_INCLUDED_LIBINTL) AC_SUBST(CATALOGS) AC_SUBST(CATOBJEXT) AC_SUBST(GMOFILES) AC_SUBST(INTLLIBS) AC_SUBST(INTLOBJS) AC_SUBST(POFILES) AC_SUBST(POSUB) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST(DATADIRNAME) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST(INSTOBJEXT) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST(GENCAT) ]) dnl Usage: Just like AM_WITH_NLS, which see. AC_DEFUN([AM_GNU_GETTEXT], [AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_ISC_POSIX])dnl AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_C_CONST])dnl AC_REQUIRE([AC_C_INLINE])dnl AC_REQUIRE([AC_TYPE_OFF_T])dnl AC_REQUIRE([AC_TYPE_SIZE_T])dnl AC_REQUIRE([AC_FUNC_ALLOCA])dnl AC_REQUIRE([AC_FUNC_MMAP])dnl AC_REQUIRE([jm_GLIBC21])dnl AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h]) AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getcwd getegid geteuid \ getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \ strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) AM_ICONV AM_LANGINFO_CODESET AM_LC_MESSAGES AM_WITH_NLS([$1],[$2],[$3]) if test "x$CATOBJEXT" != "x"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else AC_MSG_CHECKING(for catalogs to be installed) NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS AC_MSG_RESULT($LINGUAS) fi dnl Construct list of names of catalog files to be constructed. if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but $(top_srcdir). dnl Try to locate is. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=ifelse([$1], use-libtool, [l], []) AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ]) # Search path for a program which passes the given test. # Ulrich Drepper , 1996. # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # serial 2 dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [# Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in /*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in ifelse([$5], , $PATH, [$5]); do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) #serial 1 # This test replaces the one in autoconf. # Currently this macro should have the same name as the autoconf macro # because gettext's gettext.m4 (distributed in the automake package) # still uses it. Otherwise, the use in gettext.m4 makes autoheader # give these diagnostics: # configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX # configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX undefine([AC_ISC_POSIX]) AC_DEFUN([AC_ISC_POSIX], [ dnl This test replaces the obsolescent AC_ISC_POSIX kludge. AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) ] ) #serial 2 # Test for the GNU C Library, version 2.1 or newer. # From Bruno Haible. AC_DEFUN([jm_GLIBC21], [ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, ac_cv_gnu_library_2_1, [AC_EGREP_CPP([Lucky GNU user], [ #include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) Lucky GNU user #endif #endif ], ac_cv_gnu_library_2_1=yes, ac_cv_gnu_library_2_1=no) ] ) AC_SUBST(GLIBC21) GLIBC21="$ac_cv_gnu_library_2_1" ] ) #serial AM2 dnl From Bruno Haible. AC_DEFUN([AM_ICONV], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). AC_ARG_WITH([libiconv-prefix], [ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [ for dir in `echo "$withval" | tr : ' '`; do if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi done ]) AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_func_iconv=yes) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS -liconv" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_lib_iconv=yes am_cv_func_iconv=yes) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL(am_cv_proto_iconv, [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([$]{ac_t:- }[$]am_cv_proto_iconv) AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, [Define as const if the declaration of iconv() needs const.]) fi LIBICONV= if test "$am_cv_lib_iconv" = yes; then LIBICONV="-liconv" fi AC_SUBST(LIBICONV) ]) #serial AM1 dnl From Bruno Haible. AC_DEFUN([AM_LANGINFO_CODESET], [ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, [AC_TRY_LINK([#include ], [char* cs = nl_langinfo(CODESET);], am_cv_langinfo_codeset=yes, am_cv_langinfo_codeset=no) ]) if test $am_cv_langinfo_codeset = yes; then AC_DEFINE(HAVE_LANGINFO_CODESET, 1, [Define if you have and nl_langinfo(CODESET).]) fi ]) # Check whether LC_MESSAGES is available in . # Ulrich Drepper , 1995. # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # serial 2 AC_DEFUN([AM_LC_MESSAGES], [if test $ac_cv_header_locale_h = yes; then AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your file defines LC_MESSAGES.]) fi fi]) # Configure paths for VDK # Mario Motta 11-19-2000 # stolen from Frank Belew # stolen from Manish Singh # Shamelessly stolen from Owen Taylor AC_DEFUN(AM_PATH_VDK_2, [dnl dnl Get the cflags and libraries from the vdk-config script dnl AC_ARG_WITH(vdk-prefix,[ --with-vdk-prefix=PFX Prefix where VDK is installed (optional)], vdk_prefix="$withval", vdk_prefix="") AC_ARG_WITH(vdk-exec-prefix,[ --with-vdk-exec-prefix=PFX Exec prefix where VDK is installed (optional)], vdk_exec_prefix="$withval", vdk_exec_prefix="") AC_ARG_ENABLE(vdktest, [ --disable-vdktest Do not try to compile and run a test VDK program], , enable_vdktest=yes) if test x$vdk_exec_prefix != x ; then vdk_args="$vdk_args --exec-prefix=$vdk_exec_prefix" if test x${VDK_CONFIG+set} != xset ; then VDK_CONFIG=$vdk_exec_prefix/bin/vdk-config-2 fi fi if test x$vdk_prefix != x ; then vdk_args="$vdk_args --prefix=$vdk_prefix" if test x${VDK_CONFIG+set} != xset ; then VDK_CONFIG=$vdk_prefix/bin/vdk-config-2 fi fi AC_PATH_PROG(VDK_CONFIG, vdk-config-2, no) min_vdk_version=ifelse([$1], ,2.0.0,$1) AC_MSG_CHECKING(for VDK - version >= $min_vdk_version) no_vdk="" if test "$VDK_CONFIG" = "no" ; then no_vdk=yes else AC_LANG_SAVE AC_LANG_CPLUSPLUS VDK_CFLAGS=`$VDK_CONFIG $vdkconf_args --cflags` VDK_LIBS=`$VDK_CONFIG $vdkconf_args --libs` vdk_major_version=`$VDK_CONFIG $vdk_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` vdk_minor_version=`$VDK_CONFIG $vdk_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` vdk_micro_version=`$VDK_CONFIG $vdk_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_vdktest" = "xyes" ; then ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CXXFLAGS="$CXXFLAGS $VDK_CFLAGS" LIBS="$LIBS $VDK_LIBS" dnl dnl Now check if the installed VDK is sufficiently new. (Also sanity dnl checks the results of vdk-config to some extent dnl rm -f conf.vdktest AC_TRY_RUN([ #include #include #include int main () { system ("touch conf.vdktest"); if (($vdk_major_version > VDK_VERSION_MAJOR) || (($vdk_major_version == VDK_VERSION_MAJOR) && ($vdk_minor_version > VDK_VERSION_MINOR)) || (($vdk_major_version == VDK_VERSION_MAJOR) && ($vdk_minor_version == VDK_VERSION_MINOR) && ($vdk_micro_version >= VDK_VERSION_MICRO))) { return 0; } else { printf("\n*** 'vdk-config-2 --version' returned %d.%d, but the minimum version\n", $vdk_major_version, $vdk_minor_version); printf("*** of VDK required is %d.%d. If vdk-config is correct, then it is\n", VDK_VERSION_MAJOR, VDK_VERSION_MINOR); printf("*** best to upgrade to the required version.\n"); printf("*** If vdk-config was wrong, set the environment variable VDK_CONFIG\n"); printf("*** to point to the correct copy of vdk-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } ],, no_vdk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_vdk" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$VDK_CONFIG" = "no" ; then echo "*** The vdk-config-2 script installed by VDK could not be found" echo "*** If VDK was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the VDK_CONFIG environment variable to the" echo "*** full path to vdk-config." else if test -f conf.vdktest ; then : else echo "*** Could not run VDK test program, checking why..." CXXFLAGS="$CXXFLAGS $VDK_CFLAGS" LIBS="$LIBS $VDK_LIBS" AC_TRY_LINK([ #include #include ], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding VDK or finding the wrong" echo "*** version of VDK. If it is not finding VDK, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means VDK was incorrectly installed" echo "*** or that you have moved VDK since it was installed. In the latter case, you" echo "*** may want to edit the vdk-config script: $VDK_CONFIG" ]) CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi VDK_CFLAGS="" VDK_LIBS="" ifelse([$3], , :, [$3]) fi VDK_VERSION_MAJOR=2 VDK_VERSION_MINOR=0 VDK_VERSION_MICRO=0 AC_SUBST(VDK_VERSION_MAJOR) AC_SUBST(VDK_VERSION_MINOR) AC_SUBST(VDK_VERSION_MICRO) AC_SUBST(VDK_CFLAGS) AC_SUBST(VDK_LIBS) rm -f conf.vdktest ]) vdkbuilder2-2.4.0/data/res/rgb.txt0000644000000000000000000003503407256046132012410 ! $XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp $ 255 250 250 snow 248 248 255 ghost white 245 245 245 white smoke 220 220 220 gainsboro 255 250 240 floral white 253 245 230 old lace 250 240 230 linen 250 235 215 antique white 255 239 213 papaya whip 255 235 205 blanched almond 255 228 196 bisque 255 218 185 peach puff 255 222 173 navajo white 255 228 181 moccasin 255 248 220 cornsilk 255 255 240 ivory 255 250 205 lemon chiffon 255 245 238 seashell 240 255 240 honeydew 245 255 250 mint cream 240 255 255 azure 240 248 255 alice blue 230 230 250 lavender 255 240 245 lavender blush 255 228 225 misty rose 255 255 255 white 0 0 0 black 47 79 79 dark slate gray 105 105 105 dim gray 112 128 144 slate gray 119 136 153 light slate gray 190 190 190 gray 211 211 211 light grey 25 25 112 midnight blue 0 0 128 navy 0 0 128 navy blue 100 149 237 cornflower blue 72 61 139 dark slate blue 106 90 205 slate blue 123 104 238 medium slate blue 132 112 255 light slate blue 0 0 205 medium blue 65 105 225 royal blue 0 0 255 blue 30 144 255 dodger blue 0 191 255 deep sky blue 135 206 235 sky blue 135 206 250 light sky blue 70 130 180 steel blue 176 196 222 light steel blue 173 216 230 light blue 176 224 230 powder blue 175 238 238 pale turquoise 0 206 209 dark turquoise 72 209 204 medium turquoise 64 224 208 turquoise 0 255 255 cyan 224 255 255 light cyan 95 158 160 cadet blue 102 205 170 medium aquamarine 127 255 212 aquamarine 0 100 0 dark green 85 107 47 dark olive green 143 188 143 dark sea green 46 139 87 sea green 60 179 113 medium sea green 32 178 170 light sea green 152 251 152 pale green 0 255 127 spring green 124 252 0 lawn green 0 255 0 green 127 255 0 chartreuse 0 250 154 medium spring green 173 255 47 green yellow 50 205 50 lime green 154 205 50 yellow green 34 139 34 forest green 107 142 35 olive drab 189 183 107 dark khaki 240 230 140 khaki 238 232 170 pale goldenrod 250 250 210 light goldenrod yellow 255 255 224 light yellow 255 255 0 yellow 255 215 0 gold 238 221 130 light goldenrod 218 165 32 goldenrod 184 134 11 dark goldenrod 188 143 143 rosy brown 205 92 92 indian red 139 69 19 saddle brown 160 82 45 sienna 205 133 63 peru 222 184 135 burlywood 245 245 220 beige 245 222 179 wheat 244 164 96 sandy brown 210 180 140 tan 210 105 30 chocolate 178 34 34 firebrick 165 42 42 brown 233 150 122 dark salmon 250 128 114 salmon 255 160 122 light salmon 255 165 0 orange 255 140 0 dark orange 255 127 80 coral 240 128 128 light coral 255 99 71 tomato 255 69 0 orange red 255 0 0 red 255 105 180 hot pink 255 20 147 deep pink 255 192 203 pink 255 182 193 light pink 219 112 147 pale violet red 176 48 96 maroon 199 21 133 medium violet red 208 32 144 violet red 255 0 255 magenta 238 130 238 violet 221 160 221 plum 218 112 214 orchid 186 85 211 medium orchid 153 50 204 dark orchid 148 0 211 dark violet 138 43 226 blue violet 160 32 240 purple 147 112 219 medium purple 216 191 216 thistle 255 250 250 snow1 238 233 233 snow2 205 201 201 snow3 139 137 137 snow4 255 245 238 seashell1 238 229 222 seashell2 205 197 191 seashell3 139 134 130 seashell4 255 239 219 AntiqueWhite1 238 223 204 AntiqueWhite2 205 192 176 AntiqueWhite3 139 131 120 AntiqueWhite4 255 228 196 bisque1 238 213 183 bisque2 205 183 158 bisque3 139 125 107 bisque4 255 218 185 PeachPuff1 238 203 173 PeachPuff2 205 175 149 PeachPuff3 139 119 101 PeachPuff4 255 222 173 NavajoWhite1 238 207 161 NavajoWhite2 205 179 139 NavajoWhite3 139 121 94 NavajoWhite4 255 250 205 LemonChiffon1 238 233 191 LemonChiffon2 205 201 165 LemonChiffon3 139 137 112 LemonChiffon4 255 248 220 cornsilk1 238 232 205 cornsilk2 205 200 177 cornsilk3 139 136 120 cornsilk4 255 255 240 ivory1 238 238 224 ivory2 205 205 193 ivory3 139 139 131 ivory4 240 255 240 honeydew1 224 238 224 honeydew2 193 205 193 honeydew3 131 139 131 honeydew4 255 240 245 LavenderBlush1 238 224 229 LavenderBlush2 205 193 197 LavenderBlush3 139 131 134 LavenderBlush4 255 228 225 MistyRose1 238 213 210 MistyRose2 205 183 181 MistyRose3 139 125 123 MistyRose4 240 255 255 azure1 224 238 238 azure2 193 205 205 azure3 131 139 139 azure4 131 111 255 SlateBlue1 122 103 238 SlateBlue2 105 89 205 SlateBlue3 71 60 139 SlateBlue4 72 118 255 RoyalBlue1 67 110 238 RoyalBlue2 58 95 205 RoyalBlue3 39 64 139 RoyalBlue4 0 0 255 blue1 0 0 238 blue2 0 0 205 blue3 0 0 139 blue4 30 144 255 DodgerBlue1 28 134 238 DodgerBlue2 24 116 205 DodgerBlue3 16 78 139 DodgerBlue4 99 184 255 SteelBlue1 92 172 238 SteelBlue2 79 148 205 SteelBlue3 54 100 139 SteelBlue4 0 191 255 DeepSkyBlue1 0 178 238 DeepSkyBlue2 0 154 205 DeepSkyBlue3 0 104 139 DeepSkyBlue4 135 206 255 SkyBlue1 126 192 238 SkyBlue2 108 166 205 SkyBlue3 74 112 139 SkyBlue4 176 226 255 LightSkyBlue1 164 211 238 LightSkyBlue2 141 182 205 LightSkyBlue3 96 123 139 LightSkyBlue4 198 226 255 SlateGray1 185 211 238 SlateGray2 159 182 205 SlateGray3 108 123 139 SlateGray4 202 225 255 LightSteelBlue1 188 210 238 LightSteelBlue2 162 181 205 LightSteelBlue3 110 123 139 LightSteelBlue4 191 239 255 LightBlue1 178 223 238 LightBlue2 154 192 205 LightBlue3 104 131 139 LightBlue4 224 255 255 LightCyan1 209 238 238 LightCyan2 180 205 205 LightCyan3 122 139 139 LightCyan4 187 255 255 PaleTurquoise1 174 238 238 PaleTurquoise2 150 205 205 PaleTurquoise3 102 139 139 PaleTurquoise4 152 245 255 CadetBlue1 142 229 238 CadetBlue2 122 197 205 CadetBlue3 83 134 139 CadetBlue4 0 245 255 turquoise1 0 229 238 turquoise2 0 197 205 turquoise3 0 134 139 turquoise4 0 255 255 cyan1 0 238 238 cyan2 0 205 205 cyan3 0 139 139 cyan4 151 255 255 DarkSlateGray1 141 238 238 DarkSlateGray2 121 205 205 DarkSlateGray3 82 139 139 DarkSlateGray4 127 255 212 aquamarine1 118 238 198 aquamarine2 102 205 170 aquamarine3 69 139 116 aquamarine4 193 255 193 DarkSeaGreen1 180 238 180 DarkSeaGreen2 155 205 155 DarkSeaGreen3 105 139 105 DarkSeaGreen4 84 255 159 SeaGreen1 78 238 148 SeaGreen2 67 205 128 SeaGreen3 46 139 87 SeaGreen4 154 255 154 PaleGreen1 144 238 144 PaleGreen2 124 205 124 PaleGreen3 84 139 84 PaleGreen4 0 255 127 SpringGreen1 0 238 118 SpringGreen2 0 205 102 SpringGreen3 0 139 69 SpringGreen4 0 255 0 green1 0 238 0 green2 0 205 0 green3 0 139 0 green4 127 255 0 chartreuse1 118 238 0 chartreuse2 102 205 0 chartreuse3 69 139 0 chartreuse4 192 255 62 OliveDrab1 179 238 58 OliveDrab2 154 205 50 OliveDrab3 105 139 34 OliveDrab4 202 255 112 DarkOliveGreen1 188 238 104 DarkOliveGreen2 162 205 90 DarkOliveGreen3 110 139 61 DarkOliveGreen4 255 246 143 khaki1 238 230 133 khaki2 205 198 115 khaki3 139 134 78 khaki4 255 236 139 LightGoldenrod1 238 220 130 LightGoldenrod2 205 190 112 LightGoldenrod3 139 129 76 LightGoldenrod4 255 255 224 LightYellow1 238 238 209 LightYellow2 205 205 180 LightYellow3 139 139 122 LightYellow4 255 255 0 yellow1 238 238 0 yellow2 205 205 0 yellow3 139 139 0 yellow4 255 215 0 gold1 238 201 0 gold2 205 173 0 gold3 139 117 0 gold4 255 193 37 goldenrod1 238 180 34 goldenrod2 205 155 29 goldenrod3 139 105 20 goldenrod4 255 185 15 DarkGoldenrod1 238 173 14 DarkGoldenrod2 205 149 12 DarkGoldenrod3 139 101 8 DarkGoldenrod4 255 193 193 RosyBrown1 238 180 180 RosyBrown2 205 155 155 RosyBrown3 139 105 105 RosyBrown4 255 106 106 IndianRed1 238 99 99 IndianRed2 205 85 85 IndianRed3 139 58 58 IndianRed4 255 130 71 sienna1 238 121 66 sienna2 205 104 57 sienna3 139 71 38 sienna4 255 211 155 burlywood1 238 197 145 burlywood2 205 170 125 burlywood3 139 115 85 burlywood4 255 231 186 wheat1 238 216 174 wheat2 205 186 150 wheat3 139 126 102 wheat4 255 165 79 tan1 238 154 73 tan2 205 133 63 tan3 139 90 43 tan4 255 127 36 chocolate1 238 118 33 chocolate2 205 102 29 chocolate3 139 69 19 chocolate4 255 48 48 firebrick1 238 44 44 firebrick2 205 38 38 firebrick3 139 26 26 firebrick4 255 64 64 brown1 238 59 59 brown2 205 51 51 brown3 139 35 35 brown4 255 140 105 salmon1 238 130 98 salmon2 205 112 84 salmon3 139 76 57 salmon4 255 160 122 LightSalmon1 238 149 114 LightSalmon2 205 129 98 LightSalmon3 139 87 66 LightSalmon4 255 165 0 orange1 238 154 0 orange2 205 133 0 orange3 139 90 0 orange4 255 127 0 DarkOrange1 238 118 0 DarkOrange2 205 102 0 DarkOrange3 139 69 0 DarkOrange4 255 114 86 coral1 238 106 80 coral2 205 91 69 coral3 139 62 47 coral4 255 99 71 tomato1 238 92 66 tomato2 205 79 57 tomato3 139 54 38 tomato4 255 69 0 OrangeRed1 238 64 0 OrangeRed2 205 55 0 OrangeRed3 139 37 0 OrangeRed4 255 0 0 red1 238 0 0 red2 205 0 0 red3 139 0 0 red4 255 20 147 DeepPink1 238 18 137 DeepPink2 205 16 118 DeepPink3 139 10 80 DeepPink4 255 110 180 HotPink1 238 106 167 HotPink2 205 96 144 HotPink3 139 58 98 HotPink4 255 181 197 pink1 238 169 184 pink2 205 145 158 pink3 139 99 108 pink4 255 174 185 LightPink1 238 162 173 LightPink2 205 140 149 LightPink3 139 95 101 LightPink4 255 130 171 PaleVioletRed1 238 121 159 PaleVioletRed2 205 104 137 PaleVioletRed3 139 71 93 PaleVioletRed4 255 52 179 maroon1 238 48 167 maroon2 205 41 144 maroon3 139 28 98 maroon4 255 62 150 VioletRed1 238 58 140 VioletRed2 205 50 120 VioletRed3 139 34 82 VioletRed4 255 0 255 magenta1 238 0 238 magenta2 205 0 205 magenta3 139 0 139 magenta4 255 131 250 orchid1 238 122 233 orchid2 205 105 201 orchid3 139 71 137 orchid4 255 187 255 plum1 238 174 238 plum2 205 150 205 plum3 139 102 139 plum4 224 102 255 MediumOrchid1 209 95 238 MediumOrchid2 180 82 205 MediumOrchid3 122 55 139 MediumOrchid4 191 62 255 DarkOrchid1 178 58 238 DarkOrchid2 154 50 205 DarkOrchid3 104 34 139 DarkOrchid4 155 48 255 purple1 145 44 238 purple2 125 38 205 purple3 85 26 139 purple4 171 130 255 MediumPurple1 159 121 238 MediumPurple2 137 104 205 MediumPurple3 93 71 139 MediumPurple4 255 225 255 thistle1 238 210 238 thistle2 205 181 205 thistle3 139 123 139 thistle4 0 0 0 gray0 0 0 0 grey0 3 3 3 gray1 3 3 3 grey1 5 5 5 gray2 5 5 5 grey2 8 8 8 gray3 8 8 8 grey3 10 10 10 gray4 10 10 10 grey4 13 13 13 gray5 13 13 13 grey5 15 15 15 gray6 15 15 15 grey6 18 18 18 gray7 18 18 18 grey7 20 20 20 gray8 20 20 20 grey8 23 23 23 gray9 23 23 23 grey9 26 26 26 gray10 26 26 26 grey10 28 28 28 gray11 28 28 28 grey11 31 31 31 gray12 31 31 31 grey12 33 33 33 gray13 33 33 33 grey13 36 36 36 gray14 36 36 36 grey14 38 38 38 gray15 38 38 38 grey15 41 41 41 gray16 41 41 41 grey16 43 43 43 gray17 43 43 43 grey17 46 46 46 gray18 46 46 46 grey18 48 48 48 gray19 48 48 48 grey19 51 51 51 gray20 51 51 51 grey20 54 54 54 gray21 54 54 54 grey21 56 56 56 gray22 56 56 56 grey22 59 59 59 gray23 59 59 59 grey23 61 61 61 gray24 61 61 61 grey24 64 64 64 gray25 64 64 64 grey25 66 66 66 gray26 66 66 66 grey26 69 69 69 gray27 69 69 69 grey27 71 71 71 gray28 71 71 71 grey28 74 74 74 gray29 74 74 74 grey29 77 77 77 gray30 77 77 77 grey30 79 79 79 gray31 79 79 79 grey31 82 82 82 gray32 82 82 82 grey32 84 84 84 gray33 84 84 84 grey33 87 87 87 gray34 87 87 87 grey34 89 89 89 gray35 89 89 89 grey35 92 92 92 gray36 92 92 92 grey36 94 94 94 gray37 94 94 94 grey37 97 97 97 gray38 97 97 97 grey38 99 99 99 gray39 99 99 99 grey39 102 102 102 gray40 102 102 102 grey40 105 105 105 gray41 105 105 105 grey41 107 107 107 gray42 107 107 107 grey42 110 110 110 gray43 110 110 110 grey43 112 112 112 gray44 112 112 112 grey44 115 115 115 gray45 115 115 115 grey45 117 117 117 gray46 117 117 117 grey46 120 120 120 gray47 120 120 120 grey47 122 122 122 gray48 122 122 122 grey48 125 125 125 gray49 125 125 125 grey49 127 127 127 gray50 127 127 127 grey50 130 130 130 gray51 130 130 130 grey51 133 133 133 gray52 133 133 133 grey52 135 135 135 gray53 135 135 135 grey53 138 138 138 gray54 138 138 138 grey54 140 140 140 gray55 140 140 140 grey55 143 143 143 gray56 143 143 143 grey56 145 145 145 gray57 145 145 145 grey57 148 148 148 gray58 148 148 148 grey58 150 150 150 gray59 150 150 150 grey59 153 153 153 gray60 153 153 153 grey60 156 156 156 gray61 156 156 156 grey61 158 158 158 gray62 158 158 158 grey62 161 161 161 gray63 161 161 161 grey63 163 163 163 gray64 163 163 163 grey64 166 166 166 gray65 166 166 166 grey65 168 168 168 gray66 168 168 168 grey66 171 171 171 gray67 171 171 171 grey67 173 173 173 gray68 173 173 173 grey68 176 176 176 gray69 176 176 176 grey69 179 179 179 gray70 179 179 179 grey70 181 181 181 gray71 181 181 181 grey71 184 184 184 gray72 184 184 184 grey72 186 186 186 gray73 186 186 186 grey73 189 189 189 gray74 189 189 189 grey74 191 191 191 gray75 191 191 191 grey75 194 194 194 gray76 194 194 194 grey76 196 196 196 gray77 196 196 196 grey77 199 199 199 gray78 199 199 199 grey78 201 201 201 gray79 201 201 201 grey79 204 204 204 gray80 204 204 204 grey80 207 207 207 gray81 207 207 207 grey81 209 209 209 gray82 209 209 209 grey82 212 212 212 gray83 212 212 212 grey83 214 214 214 gray84 214 214 214 grey84 217 217 217 gray85 217 217 217 grey85 219 219 219 gray86 219 219 219 grey86 222 222 222 gray87 222 222 222 grey87 224 224 224 gray88 224 224 224 grey88 227 227 227 gray89 227 227 227 grey89 229 229 229 gray90 229 229 229 grey90 232 232 232 gray91 232 232 232 grey91 235 235 235 gray92 235 235 235 grey92 237 237 237 gray93 237 237 237 grey93 240 240 240 gray94 240 240 240 grey94 242 242 242 gray95 242 242 242 grey95 245 245 245 gray96 245 245 245 grey96 247 247 247 gray97 247 247 247 grey97 250 250 250 gray98 250 250 250 grey98 252 252 252 gray99 252 252 252 grey99 255 255 255 gray100 255 255 255 grey100 169 169 169 dark grey 169 169 169 dark gray 0 0 139 dark blue 0 139 139 dark cyan 139 0 139 dark magenta 139 0 0 dark red 144 238 144 light green vdkbuilder2-2.4.0/data/res/plugins.db0000644000000000000000000000025110052401360013040 /usr/local/lib,libvdkbcalendar.so /usr/local/lib,libvdkbdclock.so /usr/local/lib,libvdkbtreeview.so /usr/local/lib,libvdkbdrawarea.so /usr/local/lib,libvdkbcomboentry.sovdkbuilder2-2.4.0/data/Makefile.in0000644000000000000000000003240110052401332012325 # Makefile.in generated by automake 1.7.8 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GENCAT = @GENCAT@ GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLBISON = @INTLBISON@ INTLLIBS = @INTLLIBS@ INTLOBJS = @INTLOBJS@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PLUGINS_LIBDIR = @PLUGINS_LIBDIR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_NLS = @USE_NLS@ VDK_CFLAGS = @VDK_CFLAGS@ VDK_CONFIG = @VDK_CONFIG@ VDK_LIBS = @VDK_LIBS@ VDK_VERSION_MAJOR = @VDK_VERSION_MAJOR@ VDK_VERSION_MICRO = @VDK_VERSION_MICRO@ VDK_VERSION_MINOR = @VDK_VERSION_MINOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ vdkxdbpath = @vdkxdbpath@ SUBDIRS = res subdir = data ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = DIST_SOURCES = RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ ps-recursive install-info-recursive uninstall-info-recursive \ all-recursive install-data-recursive install-exec-recursive \ installdirs-recursive install-recursive uninstall-recursive \ check-recursive installcheck-recursive DIST_COMMON = $(srcdir)/Makefile.in Makefile.am DIST_SUBDIRS = $(SUBDIRS) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu data/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ETAGS = etags ETAGSFLAGS = CTAGS = ctags CTAGSFLAGS = tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if (etags --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ else \ include_option=--include; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -f $$subdir/TAGS && \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$tags$$unique" \ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" \ distdir=../$(distdir)/$$subdir \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: info: info-recursive info-am: install-data-am: install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ clean-generic clean-libtool clean-recursive ctags \ ctags-recursive distclean distclean-generic distclean-libtool \ distclean-recursive distclean-tags distdir dvi dvi-am \ dvi-recursive info info-am info-recursive install install-am \ install-data install-data-am install-data-recursive \ install-exec install-exec-am install-exec-recursive \ install-info install-info-am install-info-recursive install-man \ install-recursive install-strip installcheck installcheck-am \ installdirs installdirs-am installdirs-recursive \ maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-generic \ mostlyclean-libtool mostlyclean-recursive pdf pdf-am \ pdf-recursive ps ps-am ps-recursive tags tags-recursive \ uninstall uninstall-am uninstall-info-am \ uninstall-info-recursive uninstall-recursive # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vdkbuilder2-2.4.0/data/Makefile.am0000644000000000000000000000001607252426567012342 SUBDIRS = res vdkbuilder2-2.4.0/intl/0000777000000000000000000000000010052402422010402 5vdkbuilder2-2.4.0/intl/ChangeLog0000666000000000000000000010461407252427472012126 1998-04-29 Ulrich Drepper * intl/localealias.c (read_alias_file): Use unsigned char for local variables. Remove unused variable tp. * intl/l10nflist.c (_nl_normalize_codeset): Use unsigned char * for type of codeset. For loosing Solaris systems. * intl/loadinfo.h: Adapt prototype of _nl_normalize_codeset. * intl/bindtextdom.c (BINDTEXTDOMAIN): Don't define local variable len if not needed. Patches by Jim Meyering. 1998-04-28 Ulrich Drepper * loadmsgcat.c (_nl_load_domain): Don't assign the element use_mmap if mmap is not supported. * hash-string.h: Don't include . 1998-04-27 Ulrich Drepper * textdomain.c: Use strdup is available. * localealias.c: Define HAVE_MEMPCPY so that we can use this function. Define and use semapahores to protect modfication of global objects when compiling for glibc. Add code to allow freeing alias table. * l10nflist.c: Don't assume stpcpy not being a macro. * gettextP.h: Define internal_function macri if not already done. Use glibc byte-swap macros instead of defining SWAP when compiled for glibc. (struct loaded_domain): Add elements to allow unloading. * Makefile.in (distclean): Don't remove libintl.h here. * bindtextdomain.c: Carry over changes from glibc. Use strdup if available. * dcgettext.c: Don't assume stpcpy not being a macro. Mark internal functions. Add memory freeing code for glibc. * dgettext.c: Update copyright. * explodename.c: Include stdlib.h and string.h only if they exist. Use strings.h eventually. * finddomain.c: Mark internal functions. Use strdup if available. Add memory freeing code for glibc. 1997-10-10 20:00 Ulrich Drepper * libgettext.h: Fix dummy textdomain and bindtextdomain macros. They should return reasonable values. Reported by Tom Tromey . 1997-09-16 03:33 Ulrich Drepper * libgettext.h: Define PARAMS also to `args' if __cplusplus is defined. * intlh.inst.in: Likewise. Reported by Jean-Marc Lasgouttes . * libintl.glibc: Update from current glibc version. 1997-09-06 02:10 Ulrich Drepper * intlh.inst.in: Reformat copyright. 1997-08-19 15:22 Ulrich Drepper * dcgettext.c (DCGETTEXT): Remove wrong comment. 1997-08-16 00:13 Ulrich Drepper * Makefile.in (install-data): Don't change directory to install. 1997-08-01 14:30 Ulrich Drepper * cat-compat.c: Fix copyright. * localealias.c: Don't define strchr unless !HAVE_STRCHR. * loadmsgcat.c: Update copyright. Fix typos. * l10nflist.c: Don't define strchr unless !HAVE_STRCHR. (_nl_make_l10nflist): Handle sponsor and revision correctly. * gettext.c: Update copyright. * gettext.h: Likewise. * hash-string.h: Likewise. * finddomain.c: Remoave dead code. Define strchr only if !HAVE_STRCHR. * explodename.c: Include . * explodename.c: Reformat copyright text. (_nl_explode_name): Fix typo. * dcgettext.c: Define and use __set_errno. (guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is not defined. * bindtextdom.c: Pretty printing. 1997-05-01 02:25 Ulrich Drepper * dcgettext.c (guess_category_value): Don't depend on HAVE_LC_MESSAGES. We don't need the macro here. Patch by Bruno Haible . * cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL macro. Instead use HAVE_LOCALE_NULL and define it when using glibc, as in dcgettext.c. Patch by Bruno Haible . * Makefile.in (CPPFLAGS): New variable. Reported by Franc,ois Pinard. Mon Mar 10 06:51:17 1997 Ulrich Drepper * Makefile.in: Implement handling of libtool. * gettextP.h: Change data structures for use of generic lowlevel i18n file handling. Wed Dec 4 20:21:18 1996 Ulrich Drepper * textdomain.c: Put parentheses around arguments of memcpy macro definition. * localealias.c: Likewise. * l10nflist.c: Likewise. * finddomain.c: Likewise. * bindtextdom.c: Likewise. Reported by Thomas Esken. Mon Nov 25 22:57:51 1996 Ulrich Drepper * textdomain.c: Move definition of `memcpy` macro to right position. Fri Nov 22 04:01:58 1996 Ulrich Drepper * finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using bcopy if not already defined. Reported by Thomas Esken. * bindtextdom.c: Likewise. * l10nflist.c: Likewise. * localealias.c: Likewise. * textdomain.c: Likewise. Tue Oct 29 11:10:27 1996 Ulrich Drepper * Makefile.in (libdir): Change to use exec_prefix instead of prefix. Reported by Knut-HvardAksnes . Sat Aug 31 03:07:09 1996 Ulrich Drepper * l10nflist.c (_nl_normalize_codeset): We convert to lower case, so don't prepend uppercase `ISO' for only numeric arg. Fri Jul 19 00:15:46 1996 Ulrich Drepper * l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after definition of _GNU_SOURCE. Patch by Roland McGrath. * Makefile.in (uninstall): Fix another bug with `for' loop and empty arguments. Patch by Jim Meyering. Correct name os uninstalled files: no intl- prefix anymore. * Makefile.in (install-data): Again work around shells which cannot handle mpty for list. Reported by Jim Meyering. Sat Jul 13 18:11:35 1996 Ulrich Drepper * Makefile.in (install): Split goal. Now depend on install-exec and install-data. (install-exec, install-data): New goals. Created from former install goal. Reported by Karl Berry. Sat Jun 22 04:58:14 1996 Ulrich Drepper * Makefile.in (MKINSTALLDIRS): New variable. Path to mkinstalldirs script. (install): use MKINSTALLDIRS variable or if the script is not present try to find it in the $top_scrdir). Wed Jun 19 02:56:56 1996 Ulrich Drepper * l10nflist.c: Linux libc *partly* includes the argz_* functions. Grr. Work around by renaming the static version and use macros for renaming. Tue Jun 18 20:11:17 1996 Ulrich Drepper * l10nflist.c: Correct presence test macros of __argz_* functions. * l10nflist.c: Include based on test of it instead when __argz_* functions are available. Reported by Andreas Schwab. Thu Jun 13 15:17:44 1996 Ulrich Drepper * explodename.c, l10nflist.c: Define NULL for dumb systems. Tue Jun 11 17:05:13 1996 Ulrich Drepper * intlh.inst.in, libgettext.h (dcgettext): Rename local variable result to __result to prevent name clash. * l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to get prototype for stpcpy and strcasecmp. * intlh.inst.in, libgettext.h: Move declaration of `_nl_msg_cat_cntr' outside __extension__ block to prevent warning from gcc's -Wnested-extern option. Fri Jun 7 01:58:00 1996 Ulrich Drepper * Makefile.in (install): Remove comment. Thu Jun 6 17:28:17 1996 Ulrich Drepper * Makefile.in (install): Work around for another Buglix stupidity. Always use an `else' close for `if's. Reported by Nelson Beebe. * Makefile.in (intlh.inst): Correct typo in phony rule. Reported by Nelson Beebe. Thu Jun 6 01:49:52 1996 Ulrich Drepper * dcgettext.c (read_alias_file): Rename variable alloca_list to block_list as the macro calls assume. Patch by Eric Backus. * localealias.c [!HAVE_ALLOCA]: Define alloca as macro using malloc. (read_alias_file): Rename varriabe alloca_list to block_list as the macro calls assume. Patch by Eric Backus. * l10nflist.c: Correct conditional for inclusion. Reported by Roland McGrath. * Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not all-@USE_NLS@. * Makefile.in (install): intlh.inst comes from local dir, not $(srcdir). * Makefile.in (intlh.inst): Special handling of this goal. If used in gettext, this is really a rul to construct this file. If used in any other package it is defined as a .PHONY rule with empty body. * finddomain.c: Extract locale file information handling into l10nfile.c. Rename local stpcpy__ function to stpcpy. * dcgettext.c (stpcpy): Add local definition. * l10nflist.c: Solve some portability problems. Patches partly by Thomas Esken. Add local definition of stpcpy. Tue Jun 4 02:47:49 1996 Ulrich Drepper * intlh.inst.in: Don't depend including on HAVE_LOCALE_H. Instead configure must rewrite this fiile depending on the result of the configure run. * Makefile.in (install): libintl.inst is now called intlh.inst. Add rules for updating intlh.inst from intlh.inst.in. * libintl.inst: Renamed to intlh.inst.in. * localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1 because gcc has __buitlin_alloca. Reported by Roland McGrath. Mon Jun 3 00:32:16 1996 Ulrich Drepper * Makefile.in (installcheck): New goal to fulfill needs of automake's distcheck. * Makefile.in (install): Reorder commands so that VERSION is found. * Makefile.in (gettextsrcdir): Now use subdirectory intl/ in @datadir@/gettext. (COMSRCS): Add l10nfile.c. (OBJECTS): Add l10nfile.o. (DISTFILES): Rename to DISTFILE.normal. Remove $(DISTFILES.common). (DISTFILE.gettext): Remove $(DISTFILES.common). (all-gettext): Remove goal. (install): If $(PACKAGE) = gettext install, otherwose do nothing. No package but gettext itself should install libintl.h + headers. (dist): Extend goal to work for gettext, too. (dist-gettext): Remove goal. * dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc. Sun Jun 2 17:33:06 1996 Ulrich Drepper * loadmsgcat.c (_nl_load_domain): Parameter is now comes from find_l10nfile. Sat Jun 1 02:23:03 1996 Ulrich Drepper * l10nflist.c (__argz_next): Add definition. * dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca code. Use new l10nfile handling. * localealias.c [!HAVE_ALLOCA]: Add code for handling missing alloca code. * l10nflist.c: Initial revision. Tue Apr 2 18:51:18 1996 Ulrich Drepper * Makefile.in (all-gettext): New goal. Same as all-yes. Thu Mar 28 23:01:22 1996 Karl Eichwalder * Makefile.in (gettextsrcdir): Define using @datadir@. Tue Mar 26 12:39:14 1996 Ulrich Drepper * finddomain.c: Include . Reported by Roland McGrath. Sat Mar 23 02:00:35 1996 Ulrich Drepper * finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing with external declaration. Sat Mar 2 00:47:09 1996 Ulrich Drepper * Makefile.in (all-no): Rename from all_no. Sat Feb 17 00:25:59 1996 Ulrich Drepper * gettextP.h [loaded_domain]: Array `successor' must now contain up to 63 elements (because of codeset name normalization). * finddomain.c: Implement codeset name normalization. Thu Feb 15 04:39:09 1996 Ulrich Drepper * Makefile.in (all): Define to `all-@USE_NLS@'. (all-yes, all_no): New goals. `all-no' is noop, `all-yes' is former all. Mon Jan 15 21:46:01 1996 Howard Gayle * localealias.c (alias_compare): Increment string pointers in loop of strcasecmp replacement. Fri Dec 29 21:16:34 1995 Ulrich Drepper * Makefile.in (install-src): Who commented this goal out ? :-) Fri Dec 29 15:08:16 1995 Ulrich Drepper * dcgettext.c (DCGETTEXT): Save `errno'. Failing system calls should not effect it because a missing catalog is no error. Reported by Harald Knig . Tue Dec 19 22:09:13 1995 Ulrich Drepper * Makefile.in (Makefile): Explicitly use $(SHELL) for running shell scripts. Fri Dec 15 17:34:59 1995 Andreas Schwab * Makefile.in (install-src): Only install library and header when we use the own implementation. Don't do it when using the system's gettext or catgets functions. * dcgettext.c (find_msg): Must not swap domain->hash_size here. Sat Dec 9 16:24:37 1995 Ulrich Drepper * localealias.c, libintl.inst, libgettext.h, hash-string.h, gettextP.h, finddomain.c, dcgettext.c, cat-compat.c: Use PARAMS instead of __P. Suggested by Roland McGrath. Tue Dec 5 11:39:14 1995 Larry Schwimmer * libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if !_LIBINTL_H' because Solaris defines _LIBINTL_H as empty. Mon Dec 4 15:42:07 1995 Ulrich Drepper * Makefile.in (install-src): Install libintl.inst instead of libintl.h.install. Sat Dec 2 22:51:38 1995 Marcus Daniels * cat-compat.c (textdomain): Reverse order in which files are tried you load. First try local file, when this failed absolute path. Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe * cat-compat.c (bindtextdomain): Add missing { }. Sun Nov 26 18:21:41 1995 Ulrich Drepper * libintl.inst: Add missing __P definition. Reported by Nelson Beebe. * Makefile.in: Add dummy `all' and `dvi' goals. Reported by Tom Tromey. Sat Nov 25 16:12:01 1995 Franc,ois Pinard * hash-string.h: Capitalize arguments of macros. Sat Nov 25 12:01:36 1995 Ulrich Drepper * Makefile.in (DISTFILES): Prevent files names longer than 13 characters. libintl.h.glibc->libintl.glibc, libintl.h.install->libintl.inst. Reported by Joshua R. Poulson. Sat Nov 25 11:31:12 1995 Eric Backus * dcgettext.c: Fix bug in preprocessor conditionals. Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe * libgettext.h: Solaris cc does not understand #if !SYMBOL1 && !SYMBOL2. Sad but true. Thu Nov 23 16:22:14 1995 Ulrich Drepper * hash-string.h (hash_string): Fix for machine with >32 bit `unsigned long's. * dcgettext.c (DCGETTEXT): Fix horrible bug in loop for alternative translation. Thu Nov 23 01:45:29 1995 Ulrich Drepper * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed: Some further simplifications in message number generation. Mon Nov 20 21:08:43 1995 Ulrich Drepper * libintl.h.glibc: Use __const instead of const in prototypes. * Makefile.in (install-src): Install libintl.h.install instead of libintl.h. This is a stripped-down version. Suggested by Peter Miller. * libintl.h.install, libintl.h.glibc: Initial revision. * localealias.c (_nl_expand_alias, read_alias_file): Protect prototypes in type casts by __P. Tue Nov 14 16:43:58 1995 Ulrich Drepper * hash-string.h: Correct prototype for hash_string. Sun Nov 12 12:42:30 1995 Ulrich Drepper * hash-string.h (hash_string): Add prototype. * gettextP.h: Fix copyright. (SWAP): Add prototype. Wed Nov 8 22:56:33 1995 Ulrich Drepper * localealias.c (read_alias_file): Forgot sizeof. Avoid calling *printf function. This introduces a big overhead. Patch by Roland McGrath. Tue Nov 7 14:21:08 1995 Ulrich Drepper * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy. * finddomain.c (stpcpy): Define substitution function local. The macro was to flaky. * cat-compat.c: Fix typo. * xopen-msg.sed, linux-msg.sed: While bringing message number to right place only accept digits. * linux-msg.sed, xopen-msg.sed: Now that the counter does not have leading 0s we don't need to remove them. Reported by Marcus Daniels. * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in dependency. Reported by Marcus Daniels. * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement. Generally cleanup using #if instead of #ifndef. * Makefile.in: Correct typos in comment. By Franc,ois Pinard. Mon Nov 6 00:27:02 1995 Ulrich Drepper * Makefile.in (install-src): Don't install libintl.h and libintl.a if we use an available gettext implementation. Sun Nov 5 22:02:08 1995 Ulrich Drepper * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported by Franc,ois Pinard. * libgettext.h: Use #if instead of #ifdef/#ifndef. * finddomain.c: Comments describing what has to be done should start with FIXME. Sun Nov 5 19:38:01 1995 Ulrich Drepper * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning. DISTFILES.common names the files common to both dist goals. DISTFILES.gettext are the files only distributed in GNU gettext. Sun Nov 5 17:32:54 1995 Ulrich Drepper * dcgettext.c (DCGETTEXT): Correct searching in derived locales. This was necessary since a change in _nl_find_msg several weeks ago. I really don't know this is still not fixed. Sun Nov 5 12:43:12 1995 Ulrich Drepper * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This might mark a special condition. * finddomain.c (make_entry_rec): Don't make illegal entry as decided. * Makefile.in (dist): Suppress error message when ln failed. Get files from $(srcdir) explicitly. * libgettext.h (gettext_const): Rename to gettext_noop. Fri Nov 3 07:36:50 1995 Ulrich Drepper * finddomain.c (make_entry_rec): Protect against wrong locale names by testing mask. * libgettext.h (gettext_const): Add macro definition. Capitalize macro arguments. Thu Nov 2 23:15:51 1995 Ulrich Drepper * finddomain.c (_nl_find_domain): Test for pointer != NULL before accessing value. Reported by Tom Tromey. * gettext.c (NULL): Define as (void*)0 instad of 0. Reported by Franc,ois Pinard. Mon Oct 30 21:28:52 1995 Ulrich Drepper * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering. Sat Oct 28 23:20:47 1995 Ulrich Drepper * libgettext.h: Disable dcgettext optimization for Solaris 2.3. * localealias.c (alias_compare): Peter Miller reported that tolower in some systems is even dumber than I thought. Protect call by `isupper'. Fri Oct 27 22:22:51 1995 Ulrich Drepper * Makefile.in (libdir, includedir): New variables. (install-src): Install libintl.a and libintl.h in correct dirs. Fri Oct 27 22:07:29 1995 Ulrich Drepper * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c. * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques. * localealias.c: Fix typo and superflous test. Reported by Christian von Roques. Fri Oct 6 11:52:05 1995 Ulrich Drepper * finddomain.c (_nl_find_domain): Correct some remainder from the pre-CEN syntax. Now we don't have a constant number of successors anymore. Wed Sep 27 21:41:13 1995 Ulrich Drepper * Makefile.in (DISTFILES): Add libintl.h.glibc. * Makefile.in (dist-libc): Add goal for packing sources for glibc. (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc. * loadmsgcat.c: Forget to continue #if line. * localealias.c: [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name space clean. * dcgettext.c, finddomain.c: Better comment to last change. * loadmsgcat.c: [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to __fstat, __open, __close, __read, __mmap, and __munmap resp to keep ANSI C name space clean. * finddomain.c: [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean. * dcgettext.c: [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to keep ANSI C name space clean. * libgettext.h: Include sys/types.h for those old SysV systems out there. Reported by Francesco Potorti`. * loadmsgcat.c (use_mmap): Define if compiled for glibc. * bindtextdom.c: Include all those standard headers unconditionally if _LIBC is defined. * finddomain.c: Fix 2 times defiend -> defined. * textdomain.c: Include libintl.h instead of libgettext.h when compiling for glibc. Include all those standard headers unconditionally if _LIBC is defined. * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc. * gettext.c: Include libintl.h instead of libgettext.h when compiling for glibc. Get NULL from stddef.h if we compile for glibc. * finddomain.c: Include libintl.h instead of libgettext.h when compiling for glibc. Include all those standard headers unconditionally if _LIBC is defined. * dcgettext.c: Include all those standard headers unconditionally if _LIBC is defined. * dgettext.c: If compiled in glibc include libintl.h instead of libgettext.h. (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc. * dcgettext.c: If compiled in glibc include libintl.h instead of libgettext.h. (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc. * bindtextdom.c: If compiled in glibc include libintl.h instead of libgettext.h. Mon Sep 25 22:23:06 1995 Ulrich Drepper * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0. Reported by Marcus Daniels. * cat-compat.c (bindtextdomain): String used in putenv must not be recycled. Reported by Marcus Daniels. * libgettext.h (__USE_GNU_GETTEXT): Additional symbol to signal that we use GNU gettext library. * cat-compat.c (bindtextdomain): Fix bug with the strange stpcpy replacement. Reported by Nelson Beebe. Sat Sep 23 08:23:51 1995 Ulrich Drepper * cat-compat.c: Include for stpcpy prototype. * localealias.c (read_alias_file): While expand strdup code temporary variable `cp' hided higher level variable with same name. Rename to `tp'. * textdomain.c (textdomain): Avoid warning by using temporary variable in strdup code. * finddomain.c (_nl_find_domain): Remove unused variable `application'. Thu Sep 21 15:51:44 1995 Ulrich Drepper * localealias.c (alias_compare): Use strcasecmp() only if available. Else use implementation in place. * intl-compat.c: Wrapper functions now call *__ functions instead of __*. * libgettext.h: Declare prototypes for *__ functions instead for __*. * cat-compat.c, loadmsgcat.c: Don't use xmalloc, xstrdup, and stpcpy. These functions are not part of the standard libc and so prevent libintl.a from being used standalone. * bindtextdom.c: Don't use xmalloc, xstrdup, and stpcpy. These functions are not part of the standard libc and so prevent libintl.a from being used standalone. Rename to bindtextdomain__ if not used in GNU C Library. * dgettext.c: Rename function to dgettext__ if not used in GNU C Library. * gettext.c: Don't use xmalloc, xstrdup, and stpcpy. These functions are not part of the standard libc and so prevent libintl.a from being used standalone. Functions now called gettext__ if not used in GNU C Library. * dcgettext.c, localealias.c, textdomain.c, finddomain.c: Don't use xmalloc, xstrdup, and stpcpy. These functions are not part of the standard libc and so prevent libintl.a from being used standalone. Sun Sep 17 23:14:49 1995 Ulrich Drepper * finddomain.c: Correct some bugs in handling of CEN standard locale definitions. Thu Sep 7 01:49:28 1995 Ulrich Drepper * finddomain.c: Implement CEN syntax. * gettextP.h (loaded_domain): Extend number of successors to 31. Sat Aug 19 19:25:29 1995 Ulrich Drepper * Makefile.in (aliaspath): Remove path to X11 locale dir. * Makefile.in: Make install-src depend on install. This helps gettext to install the sources and other packages can use the install goal. Sat Aug 19 15:19:33 1995 Ulrich Drepper * Makefile.in (uninstall): Remove stuff installed by install-src. Tue Aug 15 13:13:53 1995 Ulrich Drepper * VERSION.in: Initial revision. * Makefile.in (DISTFILES): Add VERSION file. This is not necessary for gettext, but for other packages using this library. Tue Aug 15 06:16:44 1995 Ulrich Drepper * gettextP.h (_nl_find_domain): New prototype after changing search strategy. * finddomain.c (_nl_find_domain): We now try only to find a specified catalog. Fall back to other catalogs listed in the locale list is now done in __dcgettext. * dcgettext.c (__dcgettext): Now we provide message fall back even to different languages. I.e. if a message is not available in one language all the other in the locale list a tried. Formerly fall back was only possible within one language. Implemented by moving one loop from _nl_find_domain to here. Mon Aug 14 23:45:50 1995 Ulrich Drepper * Makefile.in (gettextsrcdir): Directory where source of GNU gettext library are made available. (INSTALL, INSTALL_DATA): Programs used for installing sources. (gettext-src): New. Rule to install GNU gettext sources for use in gettextize shell script. Sun Aug 13 14:40:48 1995 Ulrich Drepper * loadmsgcat.c (_nl_load_domain): Use mmap for loading only when munmap function is also available. * Makefile.in (install): Depend on `all' goal. Wed Aug 9 11:04:33 1995 Ulrich Drepper * localealias.c (read_alias_file): Do not overwrite '\n' when terminating alias value string. * localealias.c (read_alias_file): Handle long lines. Ignore the rest not fitting in the buffer after the initial `fgets' call. Wed Aug 9 00:54:29 1995 Ulrich Drepper * gettextP.h (_nl_load_domain): Add prototype, replacing prototype for _nl_load_msg_cat. * finddomain.c (_nl_find_domain): Remove unneeded variable filename and filename_len. (expand_alias): Remove prototype because functions does not exist anymore. * localealias.c (read_alias_file): Change type of fname_len parameter to int. (xmalloc): Add prototype. * loadmsgcat.c: Better prototypes for xmalloc. Tue Aug 8 22:30:39 1995 Ulrich Drepper * finddomain.c (_nl_find_domain): Allow alias name to be constructed from the four components. * Makefile.in (aliaspath): New variable. Set to preliminary value. (SOURCES): Add localealias.c. (OBJECTS): Add localealias.o. * gettextP.h: Add prototype for _nl_expand_alias. * finddomain.c: Aliasing handled in intl/localealias.c. * localealias.c: Aliasing for locale names. * bindtextdom.c: Better prototypes for xmalloc and xstrdup. Mon Aug 7 23:47:42 1995 Ulrich Drepper * Makefile.in (DISTFILES): gettext.perl is now found in misc/. * cat-compat.c (bindtextdomain): Correct implementation. dirname parameter was not used. Reported by Marcus Daniels. * gettextP.h (loaded_domain): New fields `successor' and `decided' for oo, lazy message handling implementation. * dcgettext.c: Adopt for oo, lazy message handliing. Now we can inherit translations from less specific locales. (find_msg): New function. * loadmsgcat.c, finddomain.c: Complete rewrite. Implement oo, lazy message handling :-). We now have an additional environment variable `LANGUAGE' with a higher priority than LC_ALL for the LC_MESSAGE locale. Here we can set a colon separated list of specifications each of the form `language[_territory[.codeset]][@modifier]'. Sat Aug 5 09:55:42 1995 Ulrich Drepper * finddomain.c (unistd.h): Include to get _PC_PATH_MAX defined on system having it. Fri Aug 4 22:42:00 1995 Ulrich Drepper * finddomain.c (stpcpy): Include prototype. * Makefile.in (dist): Remove `copying instead' message. Wed Aug 2 18:52:03 1995 Ulrich Drepper * Makefile.in (ID, TAGS): Do not use $^. Tue Aug 1 20:07:11 1995 Ulrich Drepper * Makefile.in (TAGS, ID): Use $^ as command argument. (TAGS): Give etags -o option t write to current directory, not $(srcdir). (ID): Use $(srcdir) instead os $(top_srcdir)/src. (distclean): Remove ID. Sun Jul 30 11:51:46 1995 Ulrich Drepper * Makefile.in (gnulocaledir): New variable, always using share/ for data directory. (DEFS): Add GNULOCALEDIR, used in finddomain.c. * finddomain.c (_nl_default_dirname): Set to GNULOCALEDIR, because it always has to point to the directory where GNU gettext Library writes it to. * intl-compat.c (textdomain, bindtextdomain): Undefine macros before function definition. Sat Jul 22 01:10:02 1995 Ulrich Drepper * libgettext.h (_LIBINTL_H): Protect definition in case where this file is included as libgettext.h on Solaris machines. Add comment about this. Wed Jul 19 02:36:42 1995 Ulrich Drepper * intl-compat.c (textdomain): Correct typo. Wed Jul 19 01:51:35 1995 Ulrich Drepper * dcgettext.c (dcgettext): Function now called __dcgettext. * dgettext.c (dgettext): Now called __dgettext and calls __dcgettext. * gettext.c (gettext): Function now called __gettext and calls __dgettext. * textdomain.c (textdomain): Function now called __textdomain. * bindtextdom.c (bindtextdomain): Function now called __bindtextdomain. * intl-compat.c: Initial revision. * Makefile.in (SOURCES): Add intl-compat.c. (OBJECTS): We always compile the GNU gettext library functions. OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o, and intl-compat.o. (GETTOBJS): Contains now only intl-compat.o. * libgettext.h: Re-include protection matches dualistic character of libgettext.h. For all functions in GNU gettext library define __ counter part. * finddomain.c (strchr): Define as index if not found in C library. (_nl_find_domain): For relative paths paste / in between. Tue Jul 18 16:37:45 1995 Ulrich Drepper * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h. * xopen-msg.sed: Fix bug with `msgstr ""' lines. A little bit better comments. Tue Jul 18 01:18:27 1995 Ulrich Drepper * Makefile.in: po-mode.el, makelinks, combine-sh are now found in ../misc. * po-mode.el, makelinks, combine-sh, elisp-comp: Moved to ../misc/. * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__. Sun Jul 16 22:33:02 1995 Ulrich Drepper * Makefile.in (INSTALL, INSTALL_DATA): New variables. (install-data, uninstall): Install/uninstall .elc file. * po-mode.el (Installation comment): Add .pox as possible extension of .po files. Sun Jul 16 13:23:27 1995 Ulrich Drepper * elisp-comp: Complete new version by Franc,ois: This does not fail when not compiling in the source directory. Sun Jul 16 00:12:17 1995 Ulrich Drepper * Makefile.in (../po/cat-id-tbl.o): Use $(MAKE) instead of make for recursive make. * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh. (install-exec): Add missing dummy goal. (install-data, uninstall): @ in multi-line shell command at beginning, not in front of echo. Reported by Eric Backus. Sat Jul 15 00:21:28 1995 Ulrich Drepper * Makefile.in (DISTFILES): Rename libgettext.perl to gettext.perl to fit in 14 chars file systems. * gettext.perl: Rename to gettext.perl to fit in 14 chars file systems. Thu Jul 13 23:17:20 1995 Ulrich Drepper * cat-compat.c: If !STDC_HEADERS try to include malloc.h. Thu Jul 13 20:55:02 1995 Ulrich Drepper * po2tbl.sed.in: Pretty printing. * linux-msg.sed, xopen-msg.sed: Correct bugs with handling substitute flags in branches. * hash-string.h (hash_string): Old K&R compilers don't under stand `unsigned char'. * gettext.h (nls_uint32): Some old K&R compilers (eg HP) don't understand `unsigned int'. * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes. Thu Jul 13 01:34:33 1995 Ulrich Drepper * Makefile.in (ELCFILES): New variable. (DISTFILES): Add elisp-comp. Add implicit rule for .el -> .elc compilation. (install-data): install $ELCFILES (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp. * elisp-comp: Initial revision Wed Jul 12 16:14:52 1995 Ulrich Drepper * Makefile.in: cat-id-tbl.c is now found in po/. This enables us to use an identical intl/ directory in all packages. * dcgettext.c (dcgettext): hashing does not work for table size <= 2. * textdomain.c: fix typo (#if def -> #if defined) Tue Jul 11 18:44:43 1995 Ulrich Drepper * Makefile.in (stamp-cat-id): use top_srcdir to address source files (DISTFILES,distclean): move tupdate.perl to src/ * po-to-tbl.sed.in: add additional jump to clear change flag to recognize multiline strings Tue Jul 11 01:32:50 1995 Ulrich Drepper * textdomain.c: Protect inclusion of stdlib.h and string.h. * loadmsgcat.c: Protect inclusion of stdlib.h. * libgettext.h: Protect inclusion of locale.h. Allow use in C++ programs. Define NULL is not happened already. * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of po-to-tbl.sed. (distclean): remove po-to-tbl.sed and tupdate.perl. * tupdate.perl.in: Substitute Perl path even in exec line. Don't include entries without translation from old .po file. Tue Jul 4 00:41:51 1995 Ulrich Drepper * tupdate.perl.in: use "Updated: " in msgid "". * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR). Define getenv if !__STDC__. * bindtextdom.c: Protect stdlib.h and string.h inclusion. Define free if !__STDC__. * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. Define free if !__STDC__. * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. Mon Jul 3 23:56:30 1995 Ulrich Drepper * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR. Remove unneeded $(srcdir) from Makefile.in dependency. * makelinks: Add copyright and short description. * po-mode.el: Last version for 0.7. * tupdate.perl.in: Fix die message. * dcgettext.c: Protect include of string.h. * gettext.c: Protect include of stdlib.h and further tries to get NULL. * finddomain.c: Some corrections in includes. * Makefile.in (INCLUDES): Prune list correct path to Makefile.in. * po-to-tbl.sed: Adopt for new .po file format. * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format. Sun Jul 2 23:55:03 1995 Ulrich Drepper * tupdate.perl.in: Complete rewrite for new .po file format. Sun Jul 2 02:06:50 1995 Ulrich Drepper * First official release. This directory contains all the code needed to internationalize own packages. It provides functions which allow to use the X/Open catgets function with an interface like the Uniforum gettext function. For system which does not have neither of those a complete implementation is provided. vdkbuilder2-2.4.0/intl/Makefile.in0000666000000000000000000001446707252427473012430 # Makefile for directory with message catalog handling in GNU NLS Utilities. # Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = /bin/sh srcdir = @srcdir@ top_srcdir = @top_srcdir@ top_builddir = .. VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ transform = @program_transform_name@ libdir = $(exec_prefix)/lib includedir = $(prefix)/include datadir = $(prefix)/@DATADIRNAME@ localedir = $(datadir)/locale gnulocaledir = $(prefix)/share/locale gettextsrcdir = @datadir@/gettext/intl aliaspath = $(localedir):. subdir = intl INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ MKINSTALLDIRS = @MKINSTALLDIRS@ l = @l@ AR = ar CC = @CC@ LIBTOOL = @LIBTOOL@ RANLIB = @RANLIB@ DEFS = -DLOCALEDIR=\"$(localedir)\" -DGNULOCALEDIR=\"$(gnulocaledir)\" \ -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" @DEFS@ CPPFLAGS = @CPPFLAGS@ CFLAGS = @CFLAGS@ LDFLAGS = @LDFLAGS@ COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) HEADERS = $(COMHDRS) libgettext.h loadinfo.h COMHDRS = gettext.h gettextP.h hash-string.h SOURCES = $(COMSRCS) intl-compat.c cat-compat.c COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ explodename.c OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ explodename.$lo CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo GETTOBJS = intl-compat.$lo DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \ xopen-msg.sed $(HEADERS) $(SOURCES) DISTFILES.normal = VERSION DISTFILES.gettext = libintl.glibc intlh.inst.in .SUFFIXES: .SUFFIXES: .c .o .lo .c.o: $(COMPILE) $< .c.lo: $(LIBTOOL) --mode=compile $(COMPILE) $< INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib all: all-@USE_INCLUDED_LIBINTL@ all-yes: libintl.$la intlh.inst all-no: libintl.a: $(OBJECTS) rm -f $@ $(AR) cru $@ $(OBJECTS) $(RANLIB) $@ libintl.la: $(OBJECTS) $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \ -version-info 1:0 -rpath $(libdir) ../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot cd ../po && $(MAKE) cat-id-tbl.$lo check: all # This installation goal is only used in GNU gettext. Packages which # only use the library should use install instead. # We must not install the libintl.h/libintl.a files if we are on a # system which has the gettext() function in its C library or in a # separate library or use the catgets interface. A special case is # where configure found a previously installed GNU gettext library. # If you want to use the one which comes with this version of the # package, you have to use `configure --with-included-gettext'. install: install-exec install-data install-exec: all if test "$(PACKAGE)" = "gettext" \ && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ if test -r $(MKINSTALLDIRS); then \ $(MKINSTALLDIRS) $(libdir) $(includedir); \ else \ $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \ fi; \ $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \ $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \ else \ : ; \ fi install-data: all if test "$(PACKAGE)" = "gettext"; then \ if test -r $(MKINSTALLDIRS); then \ $(MKINSTALLDIRS) $(gettextsrcdir); \ else \ $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ fi; \ $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \ dists="$(DISTFILES.common)"; \ for file in $$dists; do \ $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi # Define this as empty until I found a useful application. installcheck: uninstall: dists="$(DISTFILES.common)"; \ for file in $$dists; do \ rm -f $(gettextsrcdir)/$$file; \ done info dvi: $(OBJECTS): ../config.h libgettext.h bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h tags: TAGS TAGS: $(HEADERS) $(SOURCES) here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) id: ID ID: $(HEADERS) $(SOURCES) here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) mostlyclean: rm -f *.a *.o *.lo core core.* clean: mostlyclean distclean: clean rm -f Makefile ID TAGS po2msg.sed po2tbl.sed maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." # GNU gettext needs not contain the file `VERSION' but contains some # other files which should not be distributed in other packages. distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: Makefile $(DISTFILES) if test "$(PACKAGE)" = gettext; then \ additional="$(DISTFILES.gettext)"; \ else \ additional="$(DISTFILES.normal)"; \ fi; \ for file in $(DISTFILES.common) $$additional; do \ ln $(srcdir)/$$file $(distdir) 2> /dev/null \ || cp -p $(srcdir)/$$file $(distdir); \ done dist-libc: tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc Makefile: Makefile.in ../config.status cd .. \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status # The dependency for intlh.inst is different in gettext and all other # packages. Because we cannot you GNU make features we have to solve # the problem while rewriting Makefile.in. @GT_YES@intlh.inst: intlh.inst.in ../config.status @GT_YES@ cd .. \ @GT_YES@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \ @GT_YES@ $(SHELL) ./config.status @GT_NO@.PHONY: intlh.inst @GT_NO@intlh.inst: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vdkbuilder2-2.4.0/intl/linux-msg.sed0000666000000000000000000000520507252427474012772 # po2msg.sed - Convert Uniforum style .po file to Linux style .msg file # Copyright (C) 1995 Free Software Foundation, Inc. # Ulrich Drepper , 1995. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # # The first directive in the .msg should be the definition of the # message set number. We use always set number 1. # 1 { i\ $set 1 # Automatically created by po2msg.sed h s/.*/0/ x } # # Mitch's old catalog format does not allow comments. # # We copy the original message as a comment into the .msg file. # /^msgid/ { s/msgid[ ]*"// # # This does not work now with the new format. # /"$/! { # s/\\$// # s/$/ ... (more lines following)"/ # } x # The following nice solution is by # Bruno td # Increment a decimal number in pattern space. # First hide trailing `9' digits. :d s/9\(_*\)$/_\1/ td # Assure at least one digit is available. s/^\(_*\)$/0\1/ # Increment the last digit. s/8\(_*\)$/9\1/ s/7\(_*\)$/8\1/ s/6\(_*\)$/7\1/ s/5\(_*\)$/6\1/ s/4\(_*\)$/5\1/ s/3\(_*\)$/4\1/ s/2\(_*\)$/3\1/ s/1\(_*\)$/2\1/ s/0\(_*\)$/1\1/ # Convert the hidden `9' digits to `0's. s/_/0/g x G s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p } # # The .msg file contains, other then the .po file, only the translations # but each given a unique ID. Starting from 1 and incrementing by 1 for # each message we assign them to the messages. # It is important that the .po file used to generate the cat-id-tbl.c file # (with po-to-tbl) is the same as the one used here. (At least the order # of declarations must not be changed.) # /^msgstr/ { s/msgstr[ ]*"\(.*\)"/# \1/ # Clear substitution flag. tb # Append the next line. :b N # Look whether second part is continuation line. s/\(.*\n\)"\(.*\)"/\1\2/ # Yes, then branch. ta P D # Note that D includes a jump to the start!! # We found a continuation line. But before printing insert '\'. :a s/\(.*\)\(\n.*\)/\1\\\2/ P # We cannot use D here. s/.*\n\(.*\)/\1/ tb } d vdkbuilder2-2.4.0/intl/po2tbl.sed.in0000666000000000000000000000456507252427475012667 # po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets # Copyright (C) 1995 Free Software Foundation, Inc. # Ulrich Drepper , 1995. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # 1 { i\ /* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\ \ #if HAVE_CONFIG_H\ # include \ #endif\ \ #include "libgettext.h"\ \ const struct _msg_ent _msg_tbl[] = { h s/.*/0/ x } # # Write msgid entries in C array form. # /^msgid/ { s/msgid[ ]*\(".*"\)/ {\1/ tb # Append the next line :b N # Look whether second part is continuation line. s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/ # Yes, then branch. ta # Because we assume that the input file correctly formed the line # just read cannot be again be a msgid line. So it's safe to ignore # it. s/\(.*\)\n.*/\1/ bc # We found a continuation line. But before printing insert '\'. :a s/\(.*\)\(\n.*\)/\1\\\2/ P # We cannot use D here. s/.*\n\(.*\)/\1/ # Some buggy seds do not clear the `successful substitution since last ``t''' # flag on `N', so we do a `t' here to clear it. tb # Not reached :c x # The following nice solution is by # Bruno td # Increment a decimal number in pattern space. # First hide trailing `9' digits. :d s/9\(_*\)$/_\1/ td # Assure at least one digit is available. s/^\(_*\)$/0\1/ # Increment the last digit. s/8\(_*\)$/9\1/ s/7\(_*\)$/8\1/ s/6\(_*\)$/7\1/ s/5\(_*\)$/6\1/ s/4\(_*\)$/5\1/ s/3\(_*\)$/4\1/ s/2\(_*\)$/3\1/ s/1\(_*\)$/2\1/ s/0\(_*\)$/1\1/ # Convert the hidden `9' digits to `0's. s/_/0/g x G s/\(.*\)\n\([0-9]*\)/\1, \2},/ s/\(.*\)"$/\1/ p } # # Last line. # $ { i\ };\ g s/0*\(.*\)/int _msg_tbl_length = \1;/p } d vdkbuilder2-2.4.0/intl/xopen-msg.sed0000666000000000000000000000537607252427475012776 # po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file # Copyright (C) 1995 Free Software Foundation, Inc. # Ulrich Drepper , 1995. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # # The first directive in the .msg should be the definition of the # message set number. We use always set number 1. # 1 { i\ $set 1 # Automatically created by po2msg.sed h s/.*/0/ x } # # We copy all comments into the .msg file. Perhaps they can help. # /^#/ s/^#[ ]*/$ /p # # We copy the original message as a comment into the .msg file. # /^msgid/ { # Does not work now # /"$/! { # s/\\$// # s/$/ ... (more lines following)"/ # } s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/ p } # # The .msg file contains, other then the .po file, only the translations # but each given a unique ID. Starting from 1 and incrementing by 1 for # each message we assign them to the messages. # It is important that the .po file used to generate the cat-id-tbl.c file # (with po-to-tbl) is the same as the one used here. (At least the order # of declarations must not be changed.) # /^msgstr/ { s/msgstr[ ]*"\(.*\)"/\1/ x # The following nice solution is by # Bruno td # Increment a decimal number in pattern space. # First hide trailing `9' digits. :d s/9\(_*\)$/_\1/ td # Assure at least one digit is available. s/^\(_*\)$/0\1/ # Increment the last digit. s/8\(_*\)$/9\1/ s/7\(_*\)$/8\1/ s/6\(_*\)$/7\1/ s/5\(_*\)$/6\1/ s/4\(_*\)$/5\1/ s/3\(_*\)$/4\1/ s/2\(_*\)$/3\1/ s/1\(_*\)$/2\1/ s/0\(_*\)$/1\1/ # Convert the hidden `9' digits to `0's. s/_/0/g x # Bring the line in the format ` ' G s/^[^\n]*$/& / s/\(.*\)\n\([0-9]*\)/\2 \1/ # Clear flag from last substitution. tb # Append the next line. :b N # Look whether second part is a continuation line. s/\(.*\n\)"\(.*\)"/\1\2/ # Yes, then branch. ta P D # Note that `D' includes a jump to the start!! # We found a continuation line. But before printing insert '\'. :a s/\(.*\)\(\n.*\)/\1\\\2/ P # We cannot use the sed command `D' here s/.*\n\(.*\)/\1/ tb } d vdkbuilder2-2.4.0/intl/gettext.h0000666000000000000000000000620507252427476012212 /* Internal header for GNU gettext internationalization functions. Copyright (C) 1995, 1997 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _GETTEXT_H #define _GETTEXT_H 1 #include #if HAVE_LIMITS_H || _LIBC # include #endif /* @@ end of prolog @@ */ /* The magic number of the GNU message catalog format. */ #define _MAGIC 0x950412de #define _MAGIC_SWAPPED 0xde120495 /* Revision number of the currently used .mo (binary) file format. */ #define MO_REVISION_NUMBER 0 /* The following contortions are an attempt to use the C preprocessor to determine an unsigned integral type that is 32 bits wide. An alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but doing that would require that the configure script compile and *run* the resulting executable. Locally running cross-compiled executables is usually not possible. */ #if __STDC__ # define UINT_MAX_32_BITS 4294967295U #else # define UINT_MAX_32_BITS 0xFFFFFFFF #endif /* If UINT_MAX isn't defined, assume it's a 32-bit type. This should be valid for all systems GNU cares about because that doesn't include 16-bit systems, and only modern systems (that certainly have ) have 64+-bit integral types. */ #ifndef UINT_MAX # define UINT_MAX UINT_MAX_32_BITS #endif #if UINT_MAX == UINT_MAX_32_BITS typedef unsigned nls_uint32; #else # if USHRT_MAX == UINT_MAX_32_BITS typedef unsigned short nls_uint32; # else # if ULONG_MAX == UINT_MAX_32_BITS typedef unsigned long nls_uint32; # else /* The following line is intended to throw an error. Using #error is not portable enough. */ "Cannot determine unsigned 32-bit data type." # endif # endif #endif /* Header for binary .mo file format. */ struct mo_file_header { /* The magic number. */ nls_uint32 magic; /* The revision number of the file format. */ nls_uint32 revision; /* The number of strings pairs. */ nls_uint32 nstrings; /* Offset of table with start offsets of original strings. */ nls_uint32 orig_tab_offset; /* Offset of table with start offsets of translation strings. */ nls_uint32 trans_tab_offset; /* Size of hashing table. */ nls_uint32 hash_tab_size; /* Offset of first hashing entry. */ nls_uint32 hash_tab_offset; }; struct string_desc { /* Length of addressed string. */ nls_uint32 length; /* Offset of string in file. */ nls_uint32 offset; }; /* @@ begin of epilog @@ */ #endif /* gettext.h */ vdkbuilder2-2.4.0/intl/gettextP.h0000666000000000000000000000420607252427500012315 /* Header describing internals of gettext library Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Written by Ulrich Drepper , 1995. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _GETTEXTP_H #define _GETTEXTP_H #include "loadinfo.h" /* @@ end of prolog @@ */ #ifndef PARAMS # if __STDC__ # define PARAMS(args) args # else # define PARAMS(args) () # endif #endif #ifndef internal_function # define internal_function #endif #ifndef W # define W(flag, data) ((flag) ? SWAP (data) : (data)) #endif #ifdef _LIBC # include # define SWAP(i) bswap_32 (i) #else static nls_uint32 SWAP PARAMS ((nls_uint32 i)); static inline nls_uint32 SWAP (i) nls_uint32 i; { return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); } #endif struct loaded_domain { const char *data; int use_mmap; size_t mmap_size; int must_swap; nls_uint32 nstrings; struct string_desc *orig_tab; struct string_desc *trans_tab; nls_uint32 hash_size; nls_uint32 *hash_tab; }; struct binding { struct binding *next; char *domainname; char *dirname; }; struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname, char *__locale, const char *__domainname)) internal_function; void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain)) internal_function; void _nl_unload_domain PARAMS ((struct loaded_domain *__domain)) internal_function; /* @@ begin of epilog @@ */ #endif /* gettextP.h */ vdkbuilder2-2.4.0/intl/hash-string.h0000666000000000000000000000337307252427500012744 /* Implements a string hashing function. Copyright (C) 1995, 1997 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* @@ end of prolog @@ */ #ifndef PARAMS # if __STDC__ # define PARAMS(Args) Args # else # define PARAMS(Args) () # endif #endif /* We assume to have `unsigned long int' value with at least 32 bits. */ #define HASHWORDBITS 32 /* Defines the so called `hashpjw' function by P.J. Weinberger [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, 1986, 1987 Bell Telephone Laboratories, Inc.] */ static unsigned long hash_string PARAMS ((const char *__str_param)); static inline unsigned long hash_string (str_param) const char *str_param; { unsigned long int hval, g; const char *str = str_param; /* Compute the hash value for the given string. */ hval = 0; while (*str != '\0') { hval <<= 4; hval += (unsigned long) *str++; g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4)); if (g != 0) { hval ^= g >> (HASHWORDBITS - 8); hval ^= g; } } return hval; } vdkbuilder2-2.4.0/intl/libgettext.h0000666000000000000000000001314507252427501012667 /* Message catalogs for internationalization. Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Because on some systems (e.g. Solaris) we sometimes have to include the systems libintl.h as well as this file we have more complex include protection above. But the systems header might perhaps also define _LIBINTL_H and therefore we have to protect the definition here. */ #if !defined _LIBINTL_H || !defined _LIBGETTEXT_H #ifndef _LIBINTL_H # define _LIBINTL_H 1 #endif #define _LIBGETTEXT_H 1 /* We define an additional symbol to signal that we use the GNU implementation of gettext. */ #define __USE_GNU_GETTEXT 1 #include #if HAVE_LOCALE_H # include #endif #ifdef __cplusplus extern "C" { #endif /* @@ end of prolog @@ */ #ifndef PARAMS # if __STDC__ || defined __cplusplus # define PARAMS(args) args # else # define PARAMS(args) () # endif #endif #ifndef NULL # if !defined __cplusplus || defined __GNUC__ # define NULL ((void *) 0) # else # define NULL (0) # endif #endif #if !HAVE_LC_MESSAGES /* This value determines the behaviour of the gettext() and dgettext() function. But some system does not have this defined. Define it to a default value. */ # define LC_MESSAGES (-1) #endif /* Declarations for gettext-using-catgets interface. Derived from Jim Meyering's libintl.h. */ struct _msg_ent { const char *_msg; int _msg_number; }; #if HAVE_CATGETS /* These two variables are defined in the automatically by po-to-tbl.sed generated file `cat-id-tbl.c'. */ extern const struct _msg_ent _msg_tbl[]; extern int _msg_tbl_length; #endif /* For automatical extraction of messages sometimes no real translation is needed. Instead the string itself is the result. */ #define gettext_noop(Str) (Str) /* Look up MSGID in the current default message catalog for the current LC_MESSAGES locale. If not found, returns MSGID itself (the default text). */ extern char *gettext PARAMS ((const char *__msgid)); extern char *gettext__ PARAMS ((const char *__msgid)); /* Look up MSGID in the DOMAINNAME message catalog for the current LC_MESSAGES locale. */ extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid)); extern char *dgettext__ PARAMS ((const char *__domainname, const char *__msgid)); /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY locale. */ extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid, int __category)); extern char *dcgettext__ PARAMS ((const char *__domainname, const char *__msgid, int __category)); /* Set the current default message catalog to DOMAINNAME. If DOMAINNAME is null, return the current default. If DOMAINNAME is "", reset to the default of "messages". */ extern char *textdomain PARAMS ((const char *__domainname)); extern char *textdomain__ PARAMS ((const char *__domainname)); /* Specify that the DOMAINNAME message catalog will be found in DIRNAME rather than in the system locale data base. */ extern char *bindtextdomain PARAMS ((const char *__domainname, const char *__dirname)); extern char *bindtextdomain__ PARAMS ((const char *__domainname, const char *__dirname)); #if ENABLE_NLS /* Solaris 2.3 has the gettext function but dcgettext is missing. So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4 has dcgettext. */ # if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT) # define gettext(Msgid) \ dgettext (NULL, Msgid) # define dgettext(Domainname, Msgid) \ dcgettext (Domainname, Msgid, LC_MESSAGES) # if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7 /* This global variable is defined in loadmsgcat.c. We need a sign, whether a new catalog was loaded, which can be associated with all translations. */ extern int _nl_msg_cat_cntr; # define dcgettext(Domainname, Msgid, Category) \ (__extension__ \ ({ \ char *__result; \ if (__builtin_constant_p (Msgid)) \ { \ static char *__translation__; \ static int __catalog_counter__; \ if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \ { \ __translation__ = \ dcgettext__ (Domainname, Msgid, Category); \ __catalog_counter__ = _nl_msg_cat_cntr; \ } \ __result = __translation__; \ } \ else \ __result = dcgettext__ (Domainname, Msgid, Category); \ __result; \ })) # endif # endif #else # define gettext(Msgid) (Msgid) # define dgettext(Domainname, Msgid) (Msgid) # define dcgettext(Domainname, Msgid, Category) (Msgid) # define textdomain(Domainname) ((char *) Domainname) # define bindtextdomain(Domainname, Dirname) ((char *) Dirname) #endif /* @@ begin of epilog @@ */ #ifdef __cplusplus } #endif #endif vdkbuilder2-2.4.0/intl/loadinfo.h0000666000000000000000000000455507252427502012315 /* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef PARAMS # if __STDC__ # define PARAMS(args) args # else # define PARAMS(args) () # endif #endif /* Encoding of locale name parts. */ #define CEN_REVISION 1 #define CEN_SPONSOR 2 #define CEN_SPECIAL 4 #define XPG_NORM_CODESET 8 #define XPG_CODESET 16 #define TERRITORY 32 #define CEN_AUDIENCE 64 #define XPG_MODIFIER 128 #define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE) #define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER) struct loaded_l10nfile { const char *filename; int decided; const void *data; struct loaded_l10nfile *next; struct loaded_l10nfile *successor[1]; }; extern const char *_nl_normalize_codeset PARAMS ((const unsigned char *codeset, size_t name_len)); extern struct loaded_l10nfile * _nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list, const char *dirlist, size_t dirlist_len, int mask, const char *language, const char *territory, const char *codeset, const char *normalized_codeset, const char *modifier, const char *special, const char *sponsor, const char *revision, const char *filename, int do_allocate)); extern const char *_nl_expand_alias PARAMS ((const char *name)); extern int _nl_explode_name PARAMS ((char *name, const char **language, const char **modifier, const char **territory, const char **codeset, const char **normalized_codeset, const char **special, const char **sponsor, const char **revision)); vdkbuilder2-2.4.0/intl/bindtextdom.c0000666000000000000000000001232307252427503013027 /* Implementation of the bindtextdomain(3) function Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H # include #endif #if defined STDC_HEADERS || defined _LIBC # include #else # ifdef HAVE_MALLOC_H # include # else void free (); # endif #endif #if defined HAVE_STRING_H || defined _LIBC # include #else # include # ifndef memcpy # define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) # endif #endif #ifdef _LIBC # include #else # include "libgettext.h" #endif #include "gettext.h" #include "gettextP.h" /* @@ end of prolog @@ */ /* Contains the default location of the message catalogs. */ extern const char _nl_default_dirname[]; /* List with bindings of specific domains. */ extern struct binding *_nl_domain_bindings; /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define BINDTEXTDOMAIN __bindtextdomain # ifndef strdup # define strdup(str) __strdup (str) # endif #else # define BINDTEXTDOMAIN bindtextdomain__ #endif /* Specify that the DOMAINNAME message catalog will be found in DIRNAME rather than in the system locale data base. */ char * BINDTEXTDOMAIN (domainname, dirname) const char *domainname; const char *dirname; { struct binding *binding; /* Some sanity checks. */ if (domainname == NULL || domainname[0] == '\0') return NULL; for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) { int compare = strcmp (domainname, binding->domainname); if (compare == 0) /* We found it! */ break; if (compare < 0) { /* It is not in the list. */ binding = NULL; break; } } if (dirname == NULL) /* The current binding has be to returned. */ return binding == NULL ? (char *) _nl_default_dirname : binding->dirname; if (binding != NULL) { /* The domain is already bound. If the new value and the old one are equal we simply do nothing. Otherwise replace the old binding. */ if (strcmp (dirname, binding->dirname) != 0) { char *new_dirname; if (strcmp (dirname, _nl_default_dirname) == 0) new_dirname = (char *) _nl_default_dirname; else { #if defined _LIBC || defined HAVE_STRDUP new_dirname = strdup (dirname); if (new_dirname == NULL) return NULL; #else size_t len = strlen (dirname) + 1; new_dirname = (char *) malloc (len); if (new_dirname == NULL) return NULL; memcpy (new_dirname, dirname, len); #endif } if (binding->dirname != _nl_default_dirname) free (binding->dirname); binding->dirname = new_dirname; } } else { /* We have to create a new binding. */ #if !defined _LIBC && !defined HAVE_STRDUP size_t len; #endif struct binding *new_binding = (struct binding *) malloc (sizeof (*new_binding)); if (new_binding == NULL) return NULL; #if defined _LIBC || defined HAVE_STRDUP new_binding->domainname = strdup (domainname); if (new_binding->domainname == NULL) return NULL; #else len = strlen (domainname) + 1; new_binding->domainname = (char *) malloc (len); if (new_binding->domainname == NULL) return NULL; memcpy (new_binding->domainname, domainname, len); #endif if (strcmp (dirname, _nl_default_dirname) == 0) new_binding->dirname = (char *) _nl_default_dirname; else { #if defined _LIBC || defined HAVE_STRDUP new_binding->dirname = strdup (dirname); if (new_binding->dirname == NULL) return NULL; #else len = strlen (dirname) + 1; new_binding->dirname = (char *) malloc (len); if (new_binding->dirname == NULL) return NULL; memcpy (new_binding->dirname, dirname, len); #endif } /* Now enqueue it. */ if (_nl_domain_bindings == NULL || strcmp (domainname, _nl_domain_bindings->domainname) < 0) { new_binding->next = _nl_domain_bindings; _nl_domain_bindings = new_binding; } else { binding = _nl_domain_bindings; while (binding->next != NULL && strcmp (domainname, binding->next->domainname) > 0) binding = binding->next; new_binding->next = binding->next; binding->next = new_binding; } binding = new_binding; } return binding->dirname; } #ifdef _LIBC /* Alias for function name in GNU C Library. */ weak_alias (__bindtextdomain, bindtextdomain); #endif vdkbuilder2-2.4.0/intl/dcgettext.c0000666000000000000000000004020007252427510012472 /* Implementation of the dcgettext(3) function. Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #ifdef __GNUC__ # define alloca __builtin_alloca # define HAVE_ALLOCA 1 #else # if defined HAVE_ALLOCA_H || defined _LIBC # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca char *alloca (); # endif # endif # endif #endif #include #ifndef errno extern int errno; #endif #ifndef __set_errno # define __set_errno(val) errno = (val) #endif #if defined STDC_HEADERS || defined _LIBC # include #else char *getenv (); # ifdef HAVE_MALLOC_H # include # else void free (); # endif #endif #if defined HAVE_STRING_H || defined _LIBC # ifndef _GNU_SOURCE # define _GNU_SOURCE 1 # endif # include #else # include #endif #if !HAVE_STRCHR && !defined _LIBC # ifndef strchr # define strchr index # endif #endif #if defined HAVE_UNISTD_H || defined _LIBC # include #endif #include "gettext.h" #include "gettextP.h" #ifdef _LIBC # include #else # include "libgettext.h" #endif #include "hash-string.h" /* @@ end of prolog @@ */ #ifdef _LIBC /* Rename the non ANSI C functions. This is required by the standard because some ANSI C functions will require linking with this object file and the name space must not be polluted. */ # define getcwd __getcwd # ifndef stpcpy # define stpcpy __stpcpy # endif #else # if !defined HAVE_GETCWD char *getwd (); # define getcwd(buf, max) getwd (buf) # else char *getcwd (); # endif # ifndef HAVE_STPCPY static char *stpcpy PARAMS ((char *dest, const char *src)); # endif #endif /* Amount to increase buffer size by in each try. */ #define PATH_INCR 32 /* The following is from pathmax.h. */ /* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define PATH_MAX but might cause redefinition warnings when sys/param.h is later included (as on MORE/BSD 4.3). */ #if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__)) # include #endif #ifndef _POSIX_PATH_MAX # define _POSIX_PATH_MAX 255 #endif #if !defined(PATH_MAX) && defined(_PC_PATH_MAX) # define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) #endif /* Don't include sys/param.h if it already has been. */ #if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN) # include #endif #if !defined(PATH_MAX) && defined(MAXPATHLEN) # define PATH_MAX MAXPATHLEN #endif #ifndef PATH_MAX # define PATH_MAX _POSIX_PATH_MAX #endif /* XPG3 defines the result of `setlocale (category, NULL)' as: ``Directs `setlocale()' to query `category' and return the current setting of `local'.'' However it does not specify the exact format. And even worse: POSIX defines this not at all. So we can use this feature only on selected system (e.g. those using GNU C Library). */ #ifdef _LIBC # define HAVE_LOCALE_NULL #endif /* Name of the default domain used for gettext(3) prior any call to textdomain(3). The default value for this is "messages". */ const char _nl_default_default_domain[] = "messages"; /* Value used as the default domain for gettext(3). */ const char *_nl_current_default_domain = _nl_default_default_domain; /* Contains the default location of the message catalogs. */ const char _nl_default_dirname[] = GNULOCALEDIR; /* List with bindings of specific domains created by bindtextdomain() calls. */ struct binding *_nl_domain_bindings; /* Prototypes for local functions. */ static char *find_msg PARAMS ((struct loaded_l10nfile *domain_file, const char *msgid)) internal_function; static const char *category_to_name PARAMS ((int category)) internal_function; static const char *guess_category_value PARAMS ((int category, const char *categoryname)) internal_function; /* For those loosing systems which don't have `alloca' we have to add some additional code emulating it. */ #ifdef HAVE_ALLOCA /* Nothing has to be done. */ # define ADD_BLOCK(list, address) /* nothing */ # define FREE_BLOCKS(list) /* nothing */ #else struct block_list { void *address; struct block_list *next; }; # define ADD_BLOCK(list, addr) \ do { \ struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ /* If we cannot get a free block we cannot add the new element to \ the list. */ \ if (newp != NULL) { \ newp->address = (addr); \ newp->next = (list); \ (list) = newp; \ } \ } while (0) # define FREE_BLOCKS(list) \ do { \ while (list != NULL) { \ struct block_list *old = list; \ list = list->next; \ free (old); \ } \ } while (0) # undef alloca # define alloca(size) (malloc (size)) #endif /* have alloca */ /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define DCGETTEXT __dcgettext #else # define DCGETTEXT dcgettext__ #endif /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY locale. */ char * DCGETTEXT (domainname, msgid, category) const char *domainname; const char *msgid; int category; { #ifndef HAVE_ALLOCA struct block_list *block_list = NULL; #endif struct loaded_l10nfile *domain; struct binding *binding; const char *categoryname; const char *categoryvalue; char *dirname, *xdomainname; char *single_locale; char *retval; int saved_errno = errno; /* If no real MSGID is given return NULL. */ if (msgid == NULL) return NULL; /* If DOMAINNAME is NULL, we are interested in the default domain. If CATEGORY is not LC_MESSAGES this might not make much sense but the defintion left this undefined. */ if (domainname == NULL) domainname = _nl_current_default_domain; /* First find matching binding. */ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) { int compare = strcmp (domainname, binding->domainname); if (compare == 0) /* We found it! */ break; if (compare < 0) { /* It is not in the list. */ binding = NULL; break; } } if (binding == NULL) dirname = (char *) _nl_default_dirname; else if (binding->dirname[0] == '/') dirname = binding->dirname; else { /* We have a relative path. Make it absolute now. */ size_t dirname_len = strlen (binding->dirname) + 1; size_t path_max; char *ret; path_max = (unsigned) PATH_MAX; path_max += 2; /* The getcwd docs say to do this. */ dirname = (char *) alloca (path_max + dirname_len); ADD_BLOCK (block_list, dirname); __set_errno (0); while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE) { path_max += PATH_INCR; dirname = (char *) alloca (path_max + dirname_len); ADD_BLOCK (block_list, dirname); __set_errno (0); } if (ret == NULL) { /* We cannot get the current working directory. Don't signal an error but simply return the default string. */ FREE_BLOCKS (block_list); __set_errno (saved_errno); return (char *) msgid; } stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname); } /* Now determine the symbolic name of CATEGORY and its value. */ categoryname = category_to_name (category); categoryvalue = guess_category_value (category, categoryname); xdomainname = (char *) alloca (strlen (categoryname) + strlen (domainname) + 5); ADD_BLOCK (block_list, xdomainname); stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), domainname), ".mo"); /* Creating working area. */ single_locale = (char *) alloca (strlen (categoryvalue) + 1); ADD_BLOCK (block_list, single_locale); /* Search for the given string. This is a loop because we perhaps got an ordered list of languages to consider for th translation. */ while (1) { /* Make CATEGORYVALUE point to the next element of the list. */ while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') ++categoryvalue; if (categoryvalue[0] == '\0') { /* The whole contents of CATEGORYVALUE has been searched but no valid entry has been found. We solve this situation by implicitly appending a "C" entry, i.e. no translation will take place. */ single_locale[0] = 'C'; single_locale[1] = '\0'; } else { char *cp = single_locale; while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') *cp++ = *categoryvalue++; *cp = '\0'; } /* If the current locale value is C (or POSIX) we don't load a domain. Return the MSGID. */ if (strcmp (single_locale, "C") == 0 || strcmp (single_locale, "POSIX") == 0) { FREE_BLOCKS (block_list); __set_errno (saved_errno); return (char *) msgid; } /* Find structure describing the message catalog matching the DOMAINNAME and CATEGORY. */ domain = _nl_find_domain (dirname, single_locale, xdomainname); if (domain != NULL) { retval = find_msg (domain, msgid); if (retval == NULL) { int cnt; for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) { retval = find_msg (domain->successor[cnt], msgid); if (retval != NULL) break; } } if (retval != NULL) { FREE_BLOCKS (block_list); __set_errno (saved_errno); return retval; } } } /* NOTREACHED */ } #ifdef _LIBC /* Alias for function name in GNU C Library. */ weak_alias (__dcgettext, dcgettext); #endif static char * internal_function find_msg (domain_file, msgid) struct loaded_l10nfile *domain_file; const char *msgid; { size_t top, act, bottom; struct loaded_domain *domain; if (domain_file->decided == 0) _nl_load_domain (domain_file); if (domain_file->data == NULL) return NULL; domain = (struct loaded_domain *) domain_file->data; /* Locate the MSGID and its translation. */ if (domain->hash_size > 2 && domain->hash_tab != NULL) { /* Use the hashing table. */ nls_uint32 len = strlen (msgid); nls_uint32 hash_val = hash_string (msgid); nls_uint32 idx = hash_val % domain->hash_size; nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]); if (nstr == 0) /* Hash table entry is empty. */ return NULL; if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len && strcmp (msgid, domain->data + W (domain->must_swap, domain->orig_tab[nstr - 1].offset)) == 0) return (char *) domain->data + W (domain->must_swap, domain->trans_tab[nstr - 1].offset); while (1) { if (idx >= domain->hash_size - incr) idx -= domain->hash_size - incr; else idx += incr; nstr = W (domain->must_swap, domain->hash_tab[idx]); if (nstr == 0) /* Hash table entry is empty. */ return NULL; if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len && strcmp (msgid, domain->data + W (domain->must_swap, domain->orig_tab[nstr - 1].offset)) == 0) return (char *) domain->data + W (domain->must_swap, domain->trans_tab[nstr - 1].offset); } /* NOTREACHED */ } /* Now we try the default method: binary search in the sorted array of messages. */ bottom = 0; top = domain->nstrings; while (bottom < top) { int cmp_val; act = (bottom + top) / 2; cmp_val = strcmp (msgid, domain->data + W (domain->must_swap, domain->orig_tab[act].offset)); if (cmp_val < 0) top = act; else if (cmp_val > 0) bottom = act + 1; else break; } /* If an translation is found return this. */ return bottom >= top ? NULL : (char *) domain->data + W (domain->must_swap, domain->trans_tab[act].offset); } /* Return string representation of locale CATEGORY. */ static const char * internal_function category_to_name (category) int category; { const char *retval; switch (category) { #ifdef LC_COLLATE case LC_COLLATE: retval = "LC_COLLATE"; break; #endif #ifdef LC_CTYPE case LC_CTYPE: retval = "LC_CTYPE"; break; #endif #ifdef LC_MONETARY case LC_MONETARY: retval = "LC_MONETARY"; break; #endif #ifdef LC_NUMERIC case LC_NUMERIC: retval = "LC_NUMERIC"; break; #endif #ifdef LC_TIME case LC_TIME: retval = "LC_TIME"; break; #endif #ifdef LC_MESSAGES case LC_MESSAGES: retval = "LC_MESSAGES"; break; #endif #ifdef LC_RESPONSE case LC_RESPONSE: retval = "LC_RESPONSE"; break; #endif #ifdef LC_ALL case LC_ALL: /* This might not make sense but is perhaps better than any other value. */ retval = "LC_ALL"; break; #endif default: /* If you have a better idea for a default value let me know. */ retval = "LC_XXX"; } return retval; } /* Guess value of current locale from value of the environment variables. */ static const char * internal_function guess_category_value (category, categoryname) int category; const char *categoryname; { const char *retval; /* The highest priority value is the `LANGUAGE' environment variable. This is a GNU extension. */ retval = getenv ("LANGUAGE"); if (retval != NULL && retval[0] != '\0') return retval; /* `LANGUAGE' is not set. So we have to proceed with the POSIX methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some systems this can be done by the `setlocale' function itself. */ #if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL return setlocale (category, NULL); #else /* Setting of LC_ALL overwrites all other. */ retval = getenv ("LC_ALL"); if (retval != NULL && retval[0] != '\0') return retval; /* Next comes the name of the desired category. */ retval = getenv (categoryname); if (retval != NULL && retval[0] != '\0') return retval; /* Last possibility is the LANG environment variable. */ retval = getenv ("LANG"); if (retval != NULL && retval[0] != '\0') return retval; /* We use C as the default domain. POSIX says this is implementation defined. */ return "C"; #endif } /* @@ begin of epilog @@ */ /* We don't want libintl.a to depend on any other library. So we avoid the non-standard function stpcpy. In GNU C Library this function is available, though. Also allow the symbol HAVE_STPCPY to be defined. */ #if !_LIBC && !HAVE_STPCPY static char * stpcpy (dest, src) char *dest; const char *src; { while ((*dest++ = *src++) != '\0') /* Do nothing. */ ; return dest - 1; } #endif #ifdef _LIBC /* If we want to free all resources we have to do some work at program's end. */ static void __attribute__ ((unused)) free_mem (void) { struct binding *runp; for (runp = _nl_domain_bindings; runp != NULL; runp = runp->next) { free (runp->domainname); if (runp->dirname != _nl_default_dirname) /* Yes, this is a pointer comparison. */ free (runp->dirname); } if (_nl_current_default_domain != _nl_default_default_domain) /* Yes, again a pointer comparison. */ free ((char *) _nl_current_default_domain); } text_set_element (__libc_subfreeres, free_mem); #endif vdkbuilder2-2.4.0/intl/dgettext.c0000666000000000000000000000337207252427511012341 /* Implementation of the dgettext(3) function Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H # include #endif #if defined HAVE_LOCALE_H || defined _LIBC # include #endif #ifdef _LIBC # include #else # include "libgettext.h" #endif /* @@ end of prolog @@ */ /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define DGETTEXT __dgettext # define DCGETTEXT __dcgettext #else # define DGETTEXT dgettext__ # define DCGETTEXT dcgettext__ #endif /* Look up MSGID in the DOMAINNAME message catalog of the current LC_MESSAGES locale. */ char * DGETTEXT (domainname, msgid) const char *domainname; const char *msgid; { return DCGETTEXT (domainname, msgid, LC_MESSAGES); } #ifdef _LIBC /* Alias for function name in GNU C Library. */ weak_alias (__dgettext, dgettext); #endif vdkbuilder2-2.4.0/intl/gettext.c0000666000000000000000000000362307252427511012174 /* Implementation of gettext(3) function. Copyright (C) 1995, 1997 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H # include #endif #ifdef _LIBC # define __need_NULL # include #else # ifdef STDC_HEADERS # include /* Just for NULL. */ # else # ifdef HAVE_STRING_H # include # else # define NULL ((void *) 0) # endif # endif #endif #ifdef _LIBC # include #else # include "libgettext.h" #endif /* @@ end of prolog @@ */ /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define GETTEXT __gettext # define DGETTEXT __dgettext #else # define GETTEXT gettext__ # define DGETTEXT dgettext__ #endif /* Look up MSGID in the current default message catalog for the current LC_MESSAGES locale. If not found, returns MSGID itself (the default text). */ char * GETTEXT (msgid) const char *msgid; { return DGETTEXT (NULL, msgid); } #ifdef _LIBC /* Alias for function name in GNU C Library. */ weak_alias (__gettext, gettext); #endif vdkbuilder2-2.4.0/intl/finddomain.c0000666000000000000000000001333407252427513012622 /* Handle list of needed message catalogs Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Written by Ulrich Drepper , 1995. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #if defined STDC_HEADERS || defined _LIBC # include #else # ifdef HAVE_MALLOC_H # include # else void free (); # endif #endif #if defined HAVE_STRING_H || defined _LIBC # include #else # include # ifndef memcpy # define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) # endif #endif #if !HAVE_STRCHR && !defined _LIBC # ifndef strchr # define strchr index # endif #endif #if defined HAVE_UNISTD_H || defined _LIBC # include #endif #include "gettext.h" #include "gettextP.h" #ifdef _LIBC # include #else # include "libgettext.h" #endif /* @@ end of prolog @@ */ /* List of already loaded domains. */ static struct loaded_l10nfile *_nl_loaded_domains; /* Return a data structure describing the message catalog described by the DOMAINNAME and CATEGORY parameters with respect to the currently established bindings. */ struct loaded_l10nfile * internal_function _nl_find_domain (dirname, locale, domainname) const char *dirname; char *locale; const char *domainname; { struct loaded_l10nfile *retval; const char *language; const char *modifier; const char *territory; const char *codeset; const char *normalized_codeset; const char *special; const char *sponsor; const char *revision; const char *alias_value; int mask; /* LOCALE can consist of up to four recognized parts for the XPG syntax: language[_territory[.codeset]][@modifier] and six parts for the CEN syntax: language[_territory][+audience][+special][,[sponsor][_revision]] Beside the first part all of them are allowed to be missing. If the full specified locale is not found, the less specific one are looked for. The various parts will be stripped off according to the following order: (1) revision (2) sponsor (3) special (4) codeset (5) normalized codeset (6) territory (7) audience/modifier */ /* If we have already tested for this locale entry there has to be one data set in the list of loaded domains. */ retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, strlen (dirname) + 1, 0, locale, NULL, NULL, NULL, NULL, NULL, NULL, NULL, domainname, 0); if (retval != NULL) { /* We know something about this locale. */ int cnt; if (retval->decided == 0) _nl_load_domain (retval); if (retval->data != NULL) return retval; for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) { if (retval->successor[cnt]->decided == 0) _nl_load_domain (retval->successor[cnt]); if (retval->successor[cnt]->data != NULL) break; } return cnt >= 0 ? retval : NULL; /* NOTREACHED */ } /* See whether the locale value is an alias. If yes its value *overwrites* the alias name. No test for the original value is done. */ alias_value = _nl_expand_alias (locale); if (alias_value != NULL) { #if defined _LIBC || defined HAVE_STRDUP locale = strdup (alias_value); if (locale == NULL) return NULL; #else size_t len = strlen (alias_value) + 1; locale = (char *) malloc (len); if (locale == NULL) return NULL; memcpy (locale, alias_value, len); #endif } /* Now we determine the single parts of the locale name. First look for the language. Termination symbols are `_' and `@' if we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ mask = _nl_explode_name (locale, &language, &modifier, &territory, &codeset, &normalized_codeset, &special, &sponsor, &revision); /* Create all possible locale entries which might be interested in generalization. */ retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, strlen (dirname) + 1, mask, language, territory, codeset, normalized_codeset, modifier, special, sponsor, revision, domainname, 1); if (retval == NULL) /* This means we are out of core. */ return NULL; if (retval->decided == 0) _nl_load_domain (retval); if (retval->data == NULL) { int cnt; for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) { if (retval->successor[cnt]->decided == 0) _nl_load_domain (retval->successor[cnt]); if (retval->successor[cnt]->data != NULL) break; } } /* The room for an alias was dynamically allocated. Free it now. */ if (alias_value != NULL) free (locale); return retval; } #ifdef _LIBC static void __attribute__ ((unused)) free_mem (void) { struct loaded_l10nfile *runp = _nl_loaded_domains; while (runp != NULL) { struct loaded_l10nfile *here = runp; if (runp->data != NULL) _nl_unload_domain ((struct loaded_domain *) runp->data); runp = runp->next; free (here); } } text_set_element (__libc_subfreeres, free_mem); #endif vdkbuilder2-2.4.0/intl/loadmsgcat.c0000666000000000000000000001374507252427514012637 /* Load needed message catalogs. Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #if defined STDC_HEADERS || defined _LIBC # include #endif #if defined HAVE_UNISTD_H || defined _LIBC # include #endif #if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC # include #endif #include "gettext.h" #include "gettextP.h" /* @@ end of prolog @@ */ #ifdef _LIBC /* Rename the non ISO C functions. This is required by the standard because some ISO C functions will require linking with this object file and the name space must not be polluted. */ # define open __open # define close __close # define read __read # define mmap __mmap # define munmap __munmap #endif /* We need a sign, whether a new catalog was loaded, which can be associated with all translations. This is important if the translations are cached by one of GCC's features. */ int _nl_msg_cat_cntr = 0; /* Load the message catalogs specified by FILENAME. If it is no valid message catalog do nothing. */ void internal_function _nl_load_domain (domain_file) struct loaded_l10nfile *domain_file; { int fd; size_t size; struct stat st; struct mo_file_header *data = (struct mo_file_header *) -1; #if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ || defined _LIBC int use_mmap = 0; #endif struct loaded_domain *domain; domain_file->decided = 1; domain_file->data = NULL; /* If the record does not represent a valid locale the FILENAME might be NULL. This can happen when according to the given specification the locale file name is different for XPG and CEN syntax. */ if (domain_file->filename == NULL) return; /* Try to open the addressed file. */ fd = open (domain_file->filename, O_RDONLY); if (fd == -1) return; /* We must know about the size of the file. */ if (fstat (fd, &st) != 0 || (size = (size_t) st.st_size) != st.st_size || size < sizeof (struct mo_file_header)) { /* Something went wrong. */ close (fd); return; } #if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ || defined _LIBC /* Now we are ready to load the file. If mmap() is available we try this first. If not available or it failed we try to load it. */ data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, MAP_PRIVATE, fd, 0); if (data != (struct mo_file_header *) -1) { /* mmap() call was successful. */ close (fd); use_mmap = 1; } #endif /* If the data is not yet available (i.e. mmap'ed) we try to load it manually. */ if (data == (struct mo_file_header *) -1) { size_t to_read; char *read_ptr; data = (struct mo_file_header *) malloc (size); if (data == NULL) return; to_read = size; read_ptr = (char *) data; do { long int nb = (long int) read (fd, read_ptr, to_read); if (nb == -1) { close (fd); return; } read_ptr += nb; to_read -= nb; } while (to_read > 0); close (fd); } /* Using the magic number we can test whether it really is a message catalog file. */ if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED) { /* The magic number is wrong: not a message catalog file. */ #if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ || defined _LIBC if (use_mmap) munmap ((caddr_t) data, size); else #endif free (data); return; } domain_file->data = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); if (domain_file->data == NULL) return; domain = (struct loaded_domain *) domain_file->data; domain->data = (char *) data; #if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ || defined _LIBC domain->use_mmap = use_mmap; #endif domain->mmap_size = size; domain->must_swap = data->magic != _MAGIC; /* Fill in the information about the available tables. */ switch (W (domain->must_swap, data->revision)) { case 0: domain->nstrings = W (domain->must_swap, data->nstrings); domain->orig_tab = (struct string_desc *) ((char *) data + W (domain->must_swap, data->orig_tab_offset)); domain->trans_tab = (struct string_desc *) ((char *) data + W (domain->must_swap, data->trans_tab_offset)); domain->hash_size = W (domain->must_swap, data->hash_tab_size); domain->hash_tab = (nls_uint32 *) ((char *) data + W (domain->must_swap, data->hash_tab_offset)); break; default: /* This is an illegal revision. */ #if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ || defined _LIBC if (use_mmap) munmap ((caddr_t) data, size); else #endif free (data); free (domain); domain_file->data = NULL; return; } /* Show that one domain is changed. This might make some cached translations invalid. */ ++_nl_msg_cat_cntr; } #ifdef _LIBC void internal_function _nl_unload_domain (domain) struct loaded_domain *domain; { if (domain->use_mmap) munmap ((caddr_t) domain->data, domain->mmap_size); else free ((void *) domain->data); free (domain); } #endif vdkbuilder2-2.4.0/intl/localealias.c0000666000000000000000000002355407252427520012766 /* Handle aliases for locale names. Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Written by Ulrich Drepper , 1995. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #ifdef __GNUC__ # define alloca __builtin_alloca # define HAVE_ALLOCA 1 #else # if defined HAVE_ALLOCA_H || defined _LIBC # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca char *alloca (); # endif # endif # endif #endif #if defined STDC_HEADERS || defined _LIBC # include #else char *getenv (); # ifdef HAVE_MALLOC_H # include # else void free (); # endif #endif #if defined HAVE_STRING_H || defined _LIBC # ifndef _GNU_SOURCE # define _GNU_SOURCE 1 # endif # include #else # include # ifndef memcpy # define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) # endif #endif #if !HAVE_STRCHR && !defined _LIBC # ifndef strchr # define strchr index # endif #endif #include "gettext.h" #include "gettextP.h" /* @@ end of prolog @@ */ #ifdef _LIBC /* Rename the non ANSI C functions. This is required by the standard because some ANSI C functions will require linking with this object file and the name space must not be polluted. */ # define strcasecmp __strcasecmp # define mempcpy __mempcpy # define HAVE_MEMPCPY 1 /* We need locking here since we can be called from different places. */ # include __libc_lock_define_initialized (static, lock); #endif /* For those loosing systems which don't have `alloca' we have to add some additional code emulating it. */ #ifdef HAVE_ALLOCA /* Nothing has to be done. */ # define ADD_BLOCK(list, address) /* nothing */ # define FREE_BLOCKS(list) /* nothing */ #else struct block_list { void *address; struct block_list *next; }; # define ADD_BLOCK(list, addr) \ do { \ struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ /* If we cannot get a free block we cannot add the new element to \ the list. */ \ if (newp != NULL) { \ newp->address = (addr); \ newp->next = (list); \ (list) = newp; \ } \ } while (0) # define FREE_BLOCKS(list) \ do { \ while (list != NULL) { \ struct block_list *old = list; \ list = list->next; \ free (old); \ } \ } while (0) # undef alloca # define alloca(size) (malloc (size)) #endif /* have alloca */ struct alias_map { const char *alias; const char *value; }; static char *string_space = NULL; static size_t string_space_act = 0; static size_t string_space_max = 0; static struct alias_map *map; static size_t nmap = 0; static size_t maxmap = 0; /* Prototypes for local functions. */ static size_t read_alias_file PARAMS ((const char *fname, int fname_len)) internal_function; static void extend_alias_table PARAMS ((void)); static int alias_compare PARAMS ((const struct alias_map *map1, const struct alias_map *map2)); const char * _nl_expand_alias (name) const char *name; { static const char *locale_alias_path = LOCALE_ALIAS_PATH; struct alias_map *retval; const char *result = NULL; size_t added; #ifdef _LIBC __libc_lock_lock (lock); #endif do { struct alias_map item; item.alias = name; if (nmap > 0) retval = (struct alias_map *) bsearch (&item, map, nmap, sizeof (struct alias_map), (int (*) PARAMS ((const void *, const void *)) ) alias_compare); else retval = NULL; /* We really found an alias. Return the value. */ if (retval != NULL) { result = retval->value; break; } /* Perhaps we can find another alias file. */ added = 0; while (added == 0 && locale_alias_path[0] != '\0') { const char *start; while (locale_alias_path[0] == ':') ++locale_alias_path; start = locale_alias_path; while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':') ++locale_alias_path; if (start < locale_alias_path) added = read_alias_file (start, locale_alias_path - start); } } while (added != 0); #ifdef _LIBC __libc_lock_unlock (lock); #endif return result; } static size_t internal_function read_alias_file (fname, fname_len) const char *fname; int fname_len; { #ifndef HAVE_ALLOCA struct block_list *block_list = NULL; #endif FILE *fp; char *full_fname; size_t added; static const char aliasfile[] = "/locale.alias"; full_fname = (char *) alloca (fname_len + sizeof aliasfile); ADD_BLOCK (block_list, full_fname); #ifdef HAVE_MEMPCPY mempcpy (mempcpy (full_fname, fname, fname_len), aliasfile, sizeof aliasfile); #else memcpy (full_fname, fname, fname_len); memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); #endif fp = fopen (full_fname, "r"); if (fp == NULL) { FREE_BLOCKS (block_list); return 0; } added = 0; while (!feof (fp)) { /* It is a reasonable approach to use a fix buffer here because a) we are only interested in the first two fields b) these fields must be usable as file names and so must not be that long */ unsigned char buf[BUFSIZ]; unsigned char *alias; unsigned char *value; unsigned char *cp; if (fgets (buf, sizeof buf, fp) == NULL) /* EOF reached. */ break; /* Possibly not the whole line fits into the buffer. Ignore the rest of the line. */ if (strchr (buf, '\n') == NULL) { char altbuf[BUFSIZ]; do if (fgets (altbuf, sizeof altbuf, fp) == NULL) /* Make sure the inner loop will be left. The outer loop will exit at the `feof' test. */ break; while (strchr (altbuf, '\n') == NULL); } cp = buf; /* Ignore leading white space. */ while (isspace (cp[0])) ++cp; /* A leading '#' signals a comment line. */ if (cp[0] != '\0' && cp[0] != '#') { alias = cp++; while (cp[0] != '\0' && !isspace (cp[0])) ++cp; /* Terminate alias name. */ if (cp[0] != '\0') *cp++ = '\0'; /* Now look for the beginning of the value. */ while (isspace (cp[0])) ++cp; if (cp[0] != '\0') { size_t alias_len; size_t value_len; value = cp++; while (cp[0] != '\0' && !isspace (cp[0])) ++cp; /* Terminate value. */ if (cp[0] == '\n') { /* This has to be done to make the following test for the end of line possible. We are looking for the terminating '\n' which do not overwrite here. */ *cp++ = '\0'; *cp = '\n'; } else if (cp[0] != '\0') *cp++ = '\0'; if (nmap >= maxmap) extend_alias_table (); alias_len = strlen (alias) + 1; value_len = strlen (value) + 1; if (string_space_act + alias_len + value_len > string_space_max) { /* Increase size of memory pool. */ size_t new_size = (string_space_max + (alias_len + value_len > 1024 ? alias_len + value_len : 1024)); char *new_pool = (char *) realloc (string_space, new_size); if (new_pool == NULL) { FREE_BLOCKS (block_list); return added; } string_space = new_pool; string_space_max = new_size; } map[nmap].alias = memcpy (&string_space[string_space_act], alias, alias_len); string_space_act += alias_len; map[nmap].value = memcpy (&string_space[string_space_act], value, value_len); string_space_act += value_len; ++nmap; ++added; } } } /* Should we test for ferror()? I think we have to silently ignore errors. --drepper */ fclose (fp); if (added > 0) qsort (map, nmap, sizeof (struct alias_map), (int (*) PARAMS ((const void *, const void *))) alias_compare); FREE_BLOCKS (block_list); return added; } static void extend_alias_table () { size_t new_size; struct alias_map *new_map; new_size = maxmap == 0 ? 100 : 2 * maxmap; new_map = (struct alias_map *) realloc (map, (new_size * sizeof (struct alias_map))); if (new_map == NULL) /* Simply don't extend: we don't have any more core. */ return; map = new_map; maxmap = new_size; } #ifdef _LIBC static void __attribute__ ((unused)) free_mem (void) { if (string_space != NULL) free (string_space); if (map != NULL) free (map); } text_set_element (__libc_subfreeres, free_mem); #endif static int alias_compare (map1, map2) const struct alias_map *map1; const struct alias_map *map2; { #if defined _LIBC || defined HAVE_STRCASECMP return strcasecmp (map1->alias, map2->alias); #else const unsigned char *p1 = (const unsigned char *) map1->alias; const unsigned char *p2 = (const unsigned char *) map2->alias; unsigned char c1, c2; if (p1 == p2) return 0; do { /* I know this seems to be odd but the tolower() function in some systems libc cannot handle nonalpha characters. */ c1 = isupper (*p1) ? tolower (*p1) : *p1; c2 = isupper (*p2) ? tolower (*p2) : *p2; if (c1 == '\0') break; ++p1; ++p2; } while (c1 == c2); return c1 - c2; #endif } vdkbuilder2-2.4.0/intl/textdomain.c0000666000000000000000000000630107252427521012661 /* Implementation of the textdomain(3) function. Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Written by Ulrich Drepper , 1995. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H # include #endif #if defined STDC_HEADERS || defined _LIBC # include #endif #if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC # include #else # include # ifndef memcpy # define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) # endif #endif #ifdef _LIBC # include #else # include "libgettext.h" #endif /* @@ end of prolog @@ */ /* Name of the default text domain. */ extern const char _nl_default_default_domain[]; /* Default text domain in which entries for gettext(3) are to be found. */ extern const char *_nl_current_default_domain; /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define TEXTDOMAIN __textdomain # ifndef strdup # define strdup(str) __strdup (str) # endif #else # define TEXTDOMAIN textdomain__ #endif /* Set the current default message catalog to DOMAINNAME. If DOMAINNAME is null, return the current default. If DOMAINNAME is "", reset to the default of "messages". */ char * TEXTDOMAIN (domainname) const char *domainname; { char *old; /* A NULL pointer requests the current setting. */ if (domainname == NULL) return (char *) _nl_current_default_domain; old = (char *) _nl_current_default_domain; /* If domain name is the null string set to default domain "messages". */ if (domainname[0] == '\0' || strcmp (domainname, _nl_default_default_domain) == 0) _nl_current_default_domain = _nl_default_default_domain; else { /* If the following malloc fails `_nl_current_default_domain' will be NULL. This value will be returned and so signals we are out of core. */ #if defined _LIBC || defined HAVE_STRDUP _nl_current_default_domain = strdup (domainname); #else size_t len = strlen (domainname) + 1; char *cp = (char *) malloc (len); if (cp != NULL) memcpy (cp, domainname, len); _nl_current_default_domain = cp; #endif } if (old != _nl_default_default_domain) free (old); return (char *) _nl_current_default_domain; } #ifdef _LIBC /* Alias for function name in GNU C Library. */ weak_alias (__textdomain, textdomain); #endif vdkbuilder2-2.4.0/intl/l10nflist.c0000666000000000000000000002424407252427527012335 /* Handle list of needed message catalogs Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. Contributed by Ulrich Drepper , 1995. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H # include #endif #if defined HAVE_STRING_H || defined _LIBC # ifndef _GNU_SOURCE # define _GNU_SOURCE 1 # endif # include #else # include # ifndef memcpy # define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) # endif #endif #if !HAVE_STRCHR && !defined _LIBC # ifndef strchr # define strchr index # endif #endif #if defined _LIBC || defined HAVE_ARGZ_H # include #endif #include #include #if defined STDC_HEADERS || defined _LIBC # include #endif #include "loadinfo.h" /* On some strange systems still no definition of NULL is found. Sigh! */ #ifndef NULL # if defined __STDC__ && __STDC__ # define NULL ((void *) 0) # else # define NULL 0 # endif #endif /* @@ end of prolog @@ */ #ifdef _LIBC /* Rename the non ANSI C functions. This is required by the standard because some ANSI C functions will require linking with this object file and the name space must not be polluted. */ # ifndef stpcpy # define stpcpy(dest, src) __stpcpy(dest, src) # endif #else # ifndef HAVE_STPCPY static char *stpcpy PARAMS ((char *dest, const char *src)); # endif #endif /* Define function which are usually not available. */ #if !defined _LIBC && !defined HAVE___ARGZ_COUNT /* Returns the number of strings in ARGZ. */ static size_t argz_count__ PARAMS ((const char *argz, size_t len)); static size_t argz_count__ (argz, len) const char *argz; size_t len; { size_t count = 0; while (len > 0) { size_t part_len = strlen (argz); argz += part_len + 1; len -= part_len + 1; count++; } return count; } # undef __argz_count # define __argz_count(argz, len) argz_count__ (argz, len) #endif /* !_LIBC && !HAVE___ARGZ_COUNT */ #if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY /* Make '\0' separated arg vector ARGZ printable by converting all the '\0's except the last into the character SEP. */ static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep)); static void argz_stringify__ (argz, len, sep) char *argz; size_t len; int sep; { while (len > 0) { size_t part_len = strlen (argz); argz += part_len; len -= part_len + 1; if (len > 0) *argz++ = sep; } } # undef __argz_stringify # define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) #endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */ #if !defined _LIBC && !defined HAVE___ARGZ_NEXT static char *argz_next__ PARAMS ((char *argz, size_t argz_len, const char *entry)); static char * argz_next__ (argz, argz_len, entry) char *argz; size_t argz_len; const char *entry; { if (entry) { if (entry < argz + argz_len) entry = strchr (entry, '\0') + 1; return entry >= argz + argz_len ? NULL : (char *) entry; } else if (argz_len > 0) return argz; else return 0; } # undef __argz_next # define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) #endif /* !_LIBC && !HAVE___ARGZ_NEXT */ /* Return number of bits set in X. */ static int pop PARAMS ((int x)); static inline int pop (x) int x; { /* We assume that no more than 16 bits are used. */ x = ((x & ~0x5555) >> 1) + (x & 0x5555); x = ((x & ~0x3333) >> 2) + (x & 0x3333); x = ((x >> 4) + x) & 0x0f0f; x = ((x >> 8) + x) & 0xff; return x; } struct loaded_l10nfile * _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language, territory, codeset, normalized_codeset, modifier, special, sponsor, revision, filename, do_allocate) struct loaded_l10nfile **l10nfile_list; const char *dirlist; size_t dirlist_len; int mask; const char *language; const char *territory; const char *codeset; const char *normalized_codeset; const char *modifier; const char *special; const char *sponsor; const char *revision; const char *filename; int do_allocate; { char *abs_filename; struct loaded_l10nfile *last = NULL; struct loaded_l10nfile *retval; char *cp; size_t entries; int cnt; /* Allocate room for the full file name. */ abs_filename = (char *) malloc (dirlist_len + strlen (language) + ((mask & TERRITORY) != 0 ? strlen (territory) + 1 : 0) + ((mask & XPG_CODESET) != 0 ? strlen (codeset) + 1 : 0) + ((mask & XPG_NORM_CODESET) != 0 ? strlen (normalized_codeset) + 1 : 0) + (((mask & XPG_MODIFIER) != 0 || (mask & CEN_AUDIENCE) != 0) ? strlen (modifier) + 1 : 0) + ((mask & CEN_SPECIAL) != 0 ? strlen (special) + 1 : 0) + (((mask & CEN_SPONSOR) != 0 || (mask & CEN_REVISION) != 0) ? (1 + ((mask & CEN_SPONSOR) != 0 ? strlen (sponsor) + 1 : 0) + ((mask & CEN_REVISION) != 0 ? strlen (revision) + 1 : 0)) : 0) + 1 + strlen (filename) + 1); if (abs_filename == NULL) return NULL; retval = NULL; last = NULL; /* Construct file name. */ memcpy (abs_filename, dirlist, dirlist_len); __argz_stringify (abs_filename, dirlist_len, ':'); cp = abs_filename + (dirlist_len - 1); *cp++ = '/'; cp = stpcpy (cp, language); if ((mask & TERRITORY) != 0) { *cp++ = '_'; cp = stpcpy (cp, territory); } if ((mask & XPG_CODESET) != 0) { *cp++ = '.'; cp = stpcpy (cp, codeset); } if ((mask & XPG_NORM_CODESET) != 0) { *cp++ = '.'; cp = stpcpy (cp, normalized_codeset); } if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0) { /* This component can be part of both syntaces but has different leading characters. For CEN we use `+', else `@'. */ *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@'; cp = stpcpy (cp, modifier); } if ((mask & CEN_SPECIAL) != 0) { *cp++ = '+'; cp = stpcpy (cp, special); } if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0) { *cp++ = ','; if ((mask & CEN_SPONSOR) != 0) cp = stpcpy (cp, sponsor); if ((mask & CEN_REVISION) != 0) { *cp++ = '_'; cp = stpcpy (cp, revision); } } *cp++ = '/'; stpcpy (cp, filename); /* Look in list of already loaded domains whether it is already available. */ last = NULL; for (retval = *l10nfile_list; retval != NULL; retval = retval->next) if (retval->filename != NULL) { int compare = strcmp (retval->filename, abs_filename); if (compare == 0) /* We found it! */ break; if (compare < 0) { /* It's not in the list. */ retval = NULL; break; } last = retval; } if (retval != NULL || do_allocate == 0) { free (abs_filename); return retval; } retval = (struct loaded_l10nfile *) malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len) * (1 << pop (mask)) * sizeof (struct loaded_l10nfile *))); if (retval == NULL) return NULL; retval->filename = abs_filename; retval->decided = (__argz_count (dirlist, dirlist_len) != 1 || ((mask & XPG_CODESET) != 0 && (mask & XPG_NORM_CODESET) != 0)); retval->data = NULL; if (last == NULL) { retval->next = *l10nfile_list; *l10nfile_list = retval; } else { retval->next = last->next; last->next = retval; } entries = 0; /* If the DIRLIST is a real list the RETVAL entry corresponds not to a real file. So we have to use the DIRLIST separation mechanism of the inner loop. */ cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask; for (; cnt >= 0; --cnt) if ((cnt & ~mask) == 0 && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0) && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0)) { /* Iterate over all elements of the DIRLIST. */ char *dir = NULL; while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) != NULL) retval->successor[entries++] = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt, language, territory, codeset, normalized_codeset, modifier, special, sponsor, revision, filename, 1); } retval->successor[entries] = NULL; return retval; } /* Normalize codeset name. There is no standard for the codeset names. Normalization allows the user to use any of the common names. */ const char * _nl_normalize_codeset (codeset, name_len) const unsigned char *codeset; size_t name_len; { int len = 0; int only_digit = 1; char *retval; char *wp; size_t cnt; for (cnt = 0; cnt < name_len; ++cnt) if (isalnum (codeset[cnt])) { ++len; if (isalpha (codeset[cnt])) only_digit = 0; } retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); if (retval != NULL) { if (only_digit) wp = stpcpy (retval, "iso"); else wp = retval; for (cnt = 0; cnt < name_len; ++cnt) if (isalpha (codeset[cnt])) *wp++ = tolower (codeset[cnt]); else if (isdigit (codeset[cnt])) *wp++ = codeset[cnt]; *wp = '\0'; } return (const char *) retval; } /* @@ begin of epilog @@ */ /* We don't want libintl.a to depend on any other library. So we avoid the non-standard function stpcpy. In GNU C Library this function is available, though. Also allow the symbol HAVE_STPCPY to be defined. */ #if !_LIBC && !HAVE_STPCPY static char * stpcpy (dest, src) char *dest; const char *src; { while ((*dest++ = *src++) != '\0') /* Do nothing. */ ; return dest - 1; } #endif vdkbuilder2-2.4.0/intl/explodename.c0000666000000000000000000001101007252427531013000 /* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Contributed by Ulrich Drepper , 1995. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H # include #endif #if defined STDC_HEADERS || defined _LIBC # include #endif #if defined HAVE_STRING_H || defined _LIBC # include #else # include #endif #include #include "loadinfo.h" /* On some strange systems still no definition of NULL is found. Sigh! */ #ifndef NULL # if defined __STDC__ && __STDC__ # define NULL ((void *) 0) # else # define NULL 0 # endif #endif /* @@ end of prolog @@ */ int _nl_explode_name (name, language, modifier, territory, codeset, normalized_codeset, special, sponsor, revision) char *name; const char **language; const char **modifier; const char **territory; const char **codeset; const char **normalized_codeset; const char **special; const char **sponsor; const char **revision; { enum { undecided, xpg, cen } syntax; char *cp; int mask; *modifier = NULL; *territory = NULL; *codeset = NULL; *normalized_codeset = NULL; *special = NULL; *sponsor = NULL; *revision = NULL; /* Now we determine the single parts of the locale name. First look for the language. Termination symbols are `_' and `@' if we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ mask = 0; syntax = undecided; *language = cp = name; while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@' && cp[0] != '+' && cp[0] != ',') ++cp; if (*language == cp) /* This does not make sense: language has to be specified. Use this entry as it is without exploding. Perhaps it is an alias. */ cp = strchr (*language, '\0'); else if (cp[0] == '_') { /* Next is the territory. */ cp[0] = '\0'; *territory = ++cp; while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@' && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') ++cp; mask |= TERRITORY; if (cp[0] == '.') { /* Next is the codeset. */ syntax = xpg; cp[0] = '\0'; *codeset = ++cp; while (cp[0] != '\0' && cp[0] != '@') ++cp; mask |= XPG_CODESET; if (*codeset != cp && (*codeset)[0] != '\0') { *normalized_codeset = _nl_normalize_codeset (*codeset, cp - *codeset); if (strcmp (*codeset, *normalized_codeset) == 0) free ((char *) *normalized_codeset); else mask |= XPG_NORM_CODESET; } } } if (cp[0] == '@' || (syntax != xpg && cp[0] == '+')) { /* Next is the modifier. */ syntax = cp[0] == '@' ? xpg : cen; cp[0] = '\0'; *modifier = ++cp; while (syntax == cen && cp[0] != '\0' && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') ++cp; mask |= XPG_MODIFIER | CEN_AUDIENCE; } if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_')) { syntax = cen; if (cp[0] == '+') { /* Next is special application (CEN syntax). */ cp[0] = '\0'; *special = ++cp; while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_') ++cp; mask |= CEN_SPECIAL; } if (cp[0] == ',') { /* Next is sponsor (CEN syntax). */ cp[0] = '\0'; *sponsor = ++cp; while (cp[0] != '\0' && cp[0] != '_') ++cp; mask |= CEN_SPONSOR; } if (cp[0] == '_') { /* Next is revision (CEN syntax). */ cp[0] = '\0'; *revision = ++cp; mask |= CEN_REVISION; } } /* For CEN syntax values it might be important to have the separator character in the file name, not for XPG syntax. */ if (syntax == xpg) { if (*territory != NULL && (*territory)[0] == '\0') mask &= ~TERRITORY; if (*codeset != NULL && (*codeset)[0] == '\0') mask &= ~XPG_CODESET; if (*modifier != NULL && (*modifier)[0] == '\0') mask &= ~XPG_MODIFIER; } return mask; } vdkbuilder2-2.4.0/intl/intl-compat.c0000666000000000000000000000315607252427532012743 /* intl-compat.c - Stub functions to call gettext functions from GNU gettext Library. Copyright (C) 1995 Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include "libgettext.h" /* @@ end of prolog @@ */ #undef gettext #undef dgettext #undef dcgettext #undef textdomain #undef bindtextdomain char * bindtextdomain (domainname, dirname) const char *domainname; const char *dirname; { return bindtextdomain__ (domainname, dirname); } char * dcgettext (domainname, msgid, category) const char *domainname; const char *msgid; int category; { return dcgettext__ (domainname, msgid, category); } char * dgettext (domainname, msgid) const char *domainname; const char *msgid; { return dgettext__ (domainname, msgid); } char * gettext (msgid) const char *msgid; { return gettext__ (msgid); } char * textdomain (domainname) const char *domainname; { return textdomain__ (domainname); } vdkbuilder2-2.4.0/intl/cat-compat.c0000666000000000000000000001474107252427534012550 /* Compatibility code for gettext-using-catgets interface. Copyright (C) 1995, 1997 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #ifdef STDC_HEADERS # include # include #else char *getenv (); # ifdef HAVE_MALLOC_H # include # endif #endif #ifdef HAVE_NL_TYPES_H # include #endif #include "libgettext.h" /* @@ end of prolog @@ */ /* XPG3 defines the result of `setlocale (category, NULL)' as: ``Directs `setlocale()' to query `category' and return the current setting of `local'.'' However it does not specify the exact format. And even worse: POSIX defines this not at all. So we can use this feature only on selected system (e.g. those using GNU C Library). */ #ifdef _LIBC # define HAVE_LOCALE_NULL #endif /* The catalog descriptor. */ static nl_catd catalog = (nl_catd) -1; /* Name of the default catalog. */ static const char default_catalog_name[] = "messages"; /* Name of currently used catalog. */ static const char *catalog_name = default_catalog_name; /* Get ID for given string. If not found return -1. */ static int msg_to_cat_id PARAMS ((const char *msg)); /* Substitution for systems lacking this function in their C library. */ #if !_LIBC && !HAVE_STPCPY static char *stpcpy PARAMS ((char *dest, const char *src)); #endif /* Set currently used domain/catalog. */ char * textdomain (domainname) const char *domainname; { nl_catd new_catalog; char *new_name; size_t new_name_len; char *lang; #if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES \ && defined HAVE_LOCALE_NULL lang = setlocale (LC_MESSAGES, NULL); #else lang = getenv ("LC_ALL"); if (lang == NULL || lang[0] == '\0') { lang = getenv ("LC_MESSAGES"); if (lang == NULL || lang[0] == '\0') lang = getenv ("LANG"); } #endif if (lang == NULL || lang[0] == '\0') lang = "C"; /* See whether name of currently used domain is asked. */ if (domainname == NULL) return (char *) catalog_name; if (domainname[0] == '\0') domainname = default_catalog_name; /* Compute length of added path element. */ new_name_len = sizeof (LOCALEDIR) - 1 + 1 + strlen (lang) + sizeof ("/LC_MESSAGES/") - 1 + sizeof (PACKAGE) - 1 + sizeof (".cat"); new_name = (char *) malloc (new_name_len); if (new_name == NULL) return NULL; strcpy (new_name, PACKAGE); new_catalog = catopen (new_name, 0); if (new_catalog == (nl_catd) -1) { /* NLSPATH search didn't work, try absolute path */ sprintf (new_name, "%s/%s/LC_MESSAGES/%s.cat", LOCALEDIR, lang, PACKAGE); new_catalog = catopen (new_name, 0); if (new_catalog == (nl_catd) -1) { free (new_name); return (char *) catalog_name; } } /* Close old catalog. */ if (catalog != (nl_catd) -1) catclose (catalog); if (catalog_name != default_catalog_name) free ((char *) catalog_name); catalog = new_catalog; catalog_name = new_name; return (char *) catalog_name; } char * bindtextdomain (domainname, dirname) const char *domainname; const char *dirname; { #if HAVE_SETENV || HAVE_PUTENV char *old_val, *new_val, *cp; size_t new_val_len; /* This does not make much sense here but to be compatible do it. */ if (domainname == NULL) return NULL; /* Compute length of added path element. If we use setenv we don't need the first byts for NLSPATH=, but why complicate the code for this peanuts. */ new_val_len = sizeof ("NLSPATH=") - 1 + strlen (dirname) + sizeof ("/%L/LC_MESSAGES/%N.cat"); old_val = getenv ("NLSPATH"); if (old_val == NULL || old_val[0] == '\0') { old_val = NULL; new_val_len += 1 + sizeof (LOCALEDIR) - 1 + sizeof ("/%L/LC_MESSAGES/%N.cat"); } else new_val_len += strlen (old_val); new_val = (char *) malloc (new_val_len); if (new_val == NULL) return NULL; # if HAVE_SETENV cp = new_val; # else cp = stpcpy (new_val, "NLSPATH="); # endif cp = stpcpy (cp, dirname); cp = stpcpy (cp, "/%L/LC_MESSAGES/%N.cat:"); if (old_val == NULL) { # if __STDC__ stpcpy (cp, LOCALEDIR "/%L/LC_MESSAGES/%N.cat"); # else cp = stpcpy (cp, LOCALEDIR); stpcpy (cp, "/%L/LC_MESSAGES/%N.cat"); # endif } else stpcpy (cp, old_val); # if HAVE_SETENV setenv ("NLSPATH", new_val, 1); free (new_val); # else putenv (new_val); /* Do *not* free the environment entry we just entered. It is used from now on. */ # endif #endif return (char *) domainname; } #undef gettext char * gettext (msg) const char *msg; { int msgid; if (msg == NULL || catalog == (nl_catd) -1) return (char *) msg; /* Get the message from the catalog. We always use set number 1. The message ID is computed by the function `msg_to_cat_id' which works on the table generated by `po-to-tbl'. */ msgid = msg_to_cat_id (msg); if (msgid == -1) return (char *) msg; return catgets (catalog, 1, msgid, (char *) msg); } /* Look through the table `_msg_tbl' which has `_msg_tbl_length' entries for the one equal to msg. If it is found return the ID. In case when the string is not found return -1. */ static int msg_to_cat_id (msg) const char *msg; { int cnt; for (cnt = 0; cnt < _msg_tbl_length; ++cnt) if (strcmp (msg, _msg_tbl[cnt]._msg) == 0) return _msg_tbl[cnt]._msg_number; return -1; } /* @@ begin of epilog @@ */ /* We don't want libintl.a to depend on any other library. So we avoid the non-standard function stpcpy. In GNU C Library this function is available, though. Also allow the symbol HAVE_STPCPY to be defined. */ #if !_LIBC && !HAVE_STPCPY static char * stpcpy (dest, src) char *dest; const char *src; { while ((*dest++ = *src++) != '\0') /* Do nothing. */ ; return dest - 1; } #endif vdkbuilder2-2.4.0/intl/VERSION0000666000000000000000000000005107252427534011411 GNU gettext library from gettext-0.10.35 vdkbuilder2-2.4.0/po/0000777000000000000000000000000010052402422010052 5vdkbuilder2-2.4.0/po/ChangeLog0000644000000000000000000000000007400664763011553 vdkbuilder2-2.4.0/po/Makefile.in.in0000666000000000000000000001530607252427231012466 # Makefile for program source directory in GNU NLS utilities package. # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper # # This file file be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # Please note that the actual code is *not* freely available. PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datadir = $(prefix)/@DATADIRNAME@ localedir = $(datadir)/locale gnulocaledir = $(prefix)/share/locale gettextsrcdir = $(prefix)/share/gettext/po subdir = po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@ CC = @CC@ GENCAT = @GENCAT@ GMSGFMT = PATH=../src:$$PATH @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = PATH=../src:$$PATH @XGETTEXT@ MSGMERGE = PATH=../src:$$PATH msgmerge DEFS = @DEFS@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ INCLUDES = -I.. -I$(top_srcdir)/intl COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) SOURCES = cat-id-tbl.c POFILES = @POFILES@ GMOFILES = @GMOFILES@ DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) POTFILES = \ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ INSTOBJEXT = @INSTOBJEXT@ .SUFFIXES: .SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat .c.o: $(COMPILE) $< .po.pox: $(MAKE) $(PACKAGE).pot $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox .po.mo: $(MSGFMT) -o $@ $< .po.gmo: file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ && rm -f $$file && $(GMSGFMT) -o $$file $< .po.cat: sed -f ../intl/po2msg.sed < $< > $*.msg \ && rm -f $@ && $(GENCAT) $@ $*.msg all: all-@USE_NLS@ all-yes: cat-id-tbl.c $(CATALOGS) all-no: $(srcdir)/$(PACKAGE).pot: $(POTFILES) $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ --add-comments --keyword=_ --keyword=N_ \ --files-from=$(srcdir)/POTFILES.in \ && test ! -f $(PACKAGE).po \ || ( rm -f $(srcdir)/$(PACKAGE).pot \ && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) $(srcdir)/cat-id-tbl.c: stamp-cat-id; @: $(srcdir)/stamp-cat-id: $(PACKAGE).pot rm -f cat-id-tbl.tmp sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \ | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \ rm cat-id-tbl.tmp; \ else \ echo cat-id-tbl.c changed; \ rm -f $(srcdir)/cat-id-tbl.c; \ mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \ fi cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ install-data-no: all install-data-yes: all if test -r "$(MKINSTALLDIRS)"; then \ $(MKINSTALLDIRS) $(datadir); \ else \ $(SHELL) $(top_srcdir)/mkinstalldirs $(datadir); \ fi @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ case "$$cat" in \ *.gmo) destdir=$(gnulocaledir);; \ *) destdir=$(localedir);; \ esac; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ dir=$$destdir/$$lang/LC_MESSAGES; \ if test -r "$(MKINSTALLDIRS)"; then \ $(MKINSTALLDIRS) $$dir; \ else \ $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \ fi; \ if test -r $$cat; then \ $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \ else \ $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ echo "installing $(srcdir)/$$cat as" \ "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \ fi; \ if test -r $$cat.m; then \ $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ else \ if test -r $(srcdir)/$$cat.m ; then \ $(INSTALL_DATA) $(srcdir)/$$cat.m \ $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ echo "installing $(srcdir)/$$cat as" \ "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ else \ true; \ fi; \ fi; \ done if test "$(PACKAGE)" = "gettext"; then \ if test -r "$(MKINSTALLDIRS)"; then \ $(MKINSTALLDIRS) $(gettextsrcdir); \ else \ $(SHELL) $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ fi; \ $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ $(gettextsrcdir)/Makefile.in.in; \ else \ : ; \ fi # Define this as empty until I found a useful application. installcheck: uninstall: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ done rm -f $(gettextsrcdir)/po-Makefile.in.in check: all cat-id-tbl.o: ../intl/libgettext.h dvi info tags TAGS ID: mostlyclean: rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f $(GMOFILES) distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: update-po $(DISTFILES) dists="$(DISTFILES)"; \ for file in $$dists; do \ ln $(srcdir)/$$file $(distdir) 2> /dev/null \ || cp -p $(srcdir)/$$file $(distdir); \ done update-po: Makefile $(MAKE) $(PACKAGE).pot PATH=`pwd`/../src:$$PATH; \ cd $(srcdir); \ catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ mv $$lang.po $$lang.old.po; \ echo "$$lang:"; \ if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ rm -f $$lang.old.po; \ else \ echo "msgmerge for $$cat failed!"; \ rm -f $$lang.po; \ mv $$lang.old.po $$lang.po; \ fi; \ done POTFILES: POTFILES.in ( if test 'x$(srcdir)' != 'x.'; then \ posrcprefix='$(top_srcdir)/'; \ else \ posrcprefix="../"; \ fi; \ rm -f $@-t $@ \ && (sed -e '/^#/d' -e '/^[ ]*$$/d' \ -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ | sed -e '$$s/\\$$//') > $@-t \ && chmod a-w $@-t \ && mv $@-t $@ ) Makefile: Makefile.in.in ../config.status POTFILES cd .. \ && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ $(SHELL) ./config.status # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vdkbuilder2-2.4.0/po/POTFILES.in0000644000000000000000000000337107561464616011577 # List of source files containing translatable strings. vdkbuilder/vdkb.cc vdkbuilder/vdkb_about.cc vdkbuilder/vdkb_acsupport.cc vdkbuilder/vdkb_cbrowse.cc vdkbuilder/vdkb_cbuttdlg.cc vdkbuilder/vdkb_checkbutton.cc vdkbuilder/vdkb_clipdlg.cc vdkbuilder/vdkb_clistdlg.cc vdkbuilder/vdkb_clistdlg_gui.cc vdkbuilder/vdkb_combo.cc vdkbuilder/vdkb_compodb.cc vdkbuilder/vdkb_custombutton.cc vdkbuilder/vdkb_customlist.cc vdkbuilder/vdkb_customtree.cc vdkbuilder/vdkb_dedit.cc vdkbuilder/vdkb_dlgs.cc vdkbuilder/vdkb_editor.cc vdkbuilder/vdkb_Env.cc vdkbuilder/vdkb_evbox.cc vdkbuilder/vdkb_evcontain.cc vdkbuilder/vdkb_fixed.cc vdkbuilder/vdkb_form.cc vdkbuilder/vdkb_frame.cc vdkbuilder/vdkb_frmlist.cc vdkbuilder/vdkb_grep.cc vdkbuilder/vdkb_logo.cc vdkbuilder/vdkb_maker.cc vdkbuilder/vdkb_main_sig.cc vdkbuilder/vdkb_menu.cc vdkbuilder/vdkb_menubar.cc vdkbuilder/vdkb_menuitem.cc vdkbuilder/vdkb_nls.cc vdkbuilder/vdkb_notebook.cc vdkbuilder/vdkb_PWizard.cc vdkbuilder/vdkb_objinspect.cc vdkbuilder/vdkb_orderdlg.cc vdkbuilder/vdkb_paned.cc vdkbuilder/vdkb_pbar.cc vdkbuilder/vdkb_pixmap.cc vdkbuilder/vdkb_pholder.cc vdkbuilder/vdkb_prjman.cc vdkbuilder/vdkb_prj.cc vdkbuilder/vdkb_prjpref.cc vdkbuilder/vdkb_rbgroup.cc vdkbuilder/vdkb_scrolled.cc vdkbuilder/vdkb_slider.cc vdkbuilder/vdkb_spinbutton.cc vdkbuilder/vdkb_table.cc vdkbuilder/vdkb_tabledlg_gui.cc vdkbuilder/vdkb_text.cc vdkbuilder/vdkb_textlabel.cc vdkbuilder/vdkb_textwidget.cc vdkbuilder/vdkb_toolbar.cc vdkbuilder/vdkb_tooldialog_gui.cc vdkbuilder/vdkb_widpopmenu.cc vdkbuilder/vdkb_widclip.cc vdkbuilder/vdkb_xcheckbutton.cc vdkbuilder/vdkb_xcustomlist.cc vdkbuilder/vdkb_xentry.cc vdkbuilder/vdkb_xmemo.cc vdkbuilder/vdkb_xtDlg.cc vdkbuilder/vdkb_edhelp.cc vdkbuilder/vdkb_edhint.cc # vdkbuilder/vdkb_ccpane.cc vdkbuilder2-2.4.0/po/vdkbuilder2.pot0000644000000000000000000014505610022117134012742 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2004-03-05 16:35+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: vdkbuilder/vdkb.cc:337 #, c-format msgid "" "VDKBuilder has installed:\n" "vdkide.defaults\n" "vdkbrc\n" "plugins.db\n" "tokens.db\n" "into your home: %s/.vdkb2/res" msgstr "" #: vdkbuilder/vdkb.cc:344 #, c-format msgid "" "* WARNING * VDKBuilder couldn't install vdkbuilder resources into your home: " "%s" msgstr "" #: vdkbuilder/vdkb.cc:360 #, c-format msgid "" "Local resource file:%s/.vdkb2/%s not found\n" "revert to default one" msgstr "" #: vdkbuilder/vdkb.cc:403 #, c-format msgid "" "Lock file:%s\n" "detected another instance\n" "sorry i can't run VDKBuilder twice,\n" "either kill running instance or remove lock file" msgstr "" #: vdkbuilder/vdkb.cc:454 #, c-format msgid "" "\n" "Could not change to dir:%s\n" "reverting to home" msgstr "" #: vdkbuilder/vdkb.cc:473 #, c-format msgid "" "\n" "User file:%s\n" "not found, using default" msgstr "" #. deactivated warning #: vdkbuilder/vdkb.cc:485 msgid "" "\n" "Error during loading plugins.db" msgstr "" #: vdkbuilder/vdkb.cc:495 msgid "" "\n" "Error during opening plugins" msgstr "" #: vdkbuilder/vdkb.cc:524 msgid "" "\n" "Error during closing plugins" msgstr "" #: vdkbuilder/vdkb.cc:622 msgid "" "User file for completions not found\n" "reverting to default one" msgstr "" #: vdkbuilder/vdkb.cc:714 msgid "" "Completion list not loaded\n" "completion won't be available" msgstr "" #: vdkbuilder/vdkb.cc:726 msgid "" "Hints tree not loaded\n" "editor hints won't be available" msgstr "" #: vdkbuilder/vdkb.cc:771 #, c-format msgid "VDKBuilder maker terminated %s" msgstr "" #: vdkbuilder/vdkb.cc:772 msgid "with errors or messages" msgstr "" #: vdkbuilder/vdkb.cc:773 msgid "successfully" msgstr "" #: vdkbuilder/vdkb.cc:782 msgid "Compilation successfull" msgstr "" #: vdkbuilder/vdkb.cc:1281 msgid "Quit VDKBuilder" msgstr "" #: vdkbuilder/vdkb.cc:1643 msgid "" "Completion list has been changed\n" " Save it ?" msgstr "" #: vdkbuilder/vdkb_about.cc:135 msgid "that's all folk !" msgstr "" #: vdkbuilder/vdkb_acsupport.cc:80 #, c-format msgid "" "Autoconf/Automake support will\n" "\t* generate (or overwrite):\n" "\t\t - acconfig.h\n" "\n" "\t\t - configure.in\n" "\t\t - Makefile.am\n" "\t* copy all required files into %s\n" "\t* invoke ./autogen.sh\n" "\n" "Do you want apply Automake/Autoconf support ?" msgstr "" #: vdkbuilder/vdkb_acsupport.cc:436 vdkbuilder/vdkb_main_sig.cc:460 #: vdkbuilder/vdkb_main_sig.cc:608 vdkbuilder/vdkb_main_sig.cc:658 msgid "A compilation process is already running" msgstr "" #: vdkbuilder/vdkb_cbrowse.cc:98 msgid "VDKBuilder color browser" msgstr "" #: vdkbuilder/vdkb_cbrowse.cc:115 vdkbuilder/vdkb_compodb.cc:438 msgid "_Accept" msgstr "" #. cancel = new VDKCustomButton(this,(const char**)stop_xpm,_("_Cancel"),16,(GtkPositionType) 1); #: vdkbuilder/vdkb_cbrowse.cc:117 vdkbuilder/vdkb_clipdlg.cc:86 #: vdkbuilder/vdkb_compodb.cc:442 vdkbuilder/vdkb_Env.cc:1189 #: vdkbuilder/vdkb_PWizard.cc:249 vdkbuilder/vdkb_orderdlg.cc:88 msgid "_Cancel" msgstr "" #: vdkbuilder/vdkb_cbrowse.cc:126 msgid "Pick a color" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:74 msgid "VDKCustomButton Dialog" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:76 msgid "VDKCustomButton options" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:88 msgid "pixmapped" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:92 msgid "Label position" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:101 msgid "untoggled" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:103 msgid "toggled" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:109 msgid "normal" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:111 msgid "Combo button" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:115 msgid "Accept" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:119 msgid "Defaults" msgstr "" #: vdkbuilder/vdkb_clipdlg.cc:64 msgid "Widgets clipboard" msgstr "" #: vdkbuilder/vdkb_clipdlg.cc:67 msgid "Widget stack" msgstr "" #: vdkbuilder/vdkb_clipdlg.cc:81 msgid "_Paste" msgstr "" #: vdkbuilder/vdkb_clipdlg.cc:83 msgid "Select a widget, new widget will be pasted in selected container" msgstr "" #: vdkbuilder/vdkb_clistdlg.cc:35 msgid "VDKCustomList Dialog" msgstr "" #: vdkbuilder/vdkb_clistdlg_gui.cc:39 vdkbuilder/vdkb_tabledlg_gui.cc:47 msgid "Enter columns number" msgstr "" #: vdkbuilder/vdkb_clistdlg_gui.cc:42 msgid "(defaults to 1)" msgstr "" #: vdkbuilder/vdkb_clistdlg_gui.cc:50 vdkbuilder/vdkb_grep.cc:137 #: vdkbuilder/vdkb_nls.cc:210 vdkbuilder/vdkb_nls.cc:419 #: vdkbuilder/vdkb_nls.cc:448 vdkbuilder/vdkb_tabledlg_gui.cc:55 #: vdkbuilder/vdkb_tooldialog_gui.cc:81 msgid "Ok" msgstr "" #. 11 #: vdkbuilder/vdkb_clistdlg_gui.cc:53 vdkbuilder/vdkb_grep.cc:140 #: vdkbuilder/vdkb_nls.cc:211 vdkbuilder/vdkb_nls.cc:392 #: vdkbuilder/vdkb_nls.cc:420 vdkbuilder/vdkb_nls.cc:450 #: vdkbuilder/vdkb_tabledlg_gui.cc:57 vdkbuilder/vdkb_tooldialog_gui.cc:83 msgid "Cancel" msgstr "" #: vdkbuilder/vdkb_compodb.cc:89 msgid "Compo" msgstr "" #: vdkbuilder/vdkb_compodb.cc:90 msgid "Library name" msgstr "" #: vdkbuilder/vdkb_compodb.cc:91 msgid "Library path" msgstr "" #: vdkbuilder/vdkb_compodb.cc:92 msgid " Id " msgstr "" #: vdkbuilder/vdkb_compodb.cc:93 msgid "Valid" msgstr "" #: vdkbuilder/vdkb_compodb.cc:94 msgid "Component name" msgstr "" #: vdkbuilder/vdkb_compodb.cc:95 msgid "Error" msgstr "" #: vdkbuilder/vdkb_compodb.cc:133 msgid "VDKBuilder component database" msgstr "" #: vdkbuilder/vdkb_compodb.cc:149 vdkbuilder/vdkb_frmlist.cc:141 #: vdkbuilder/vdkb_xtDlg.cc:158 vdkbuilder/vdkb_edhelp.cc:128 msgid "Close" msgstr "" #: vdkbuilder/vdkb_compodb.cc:152 msgid "Delete" msgstr "" #: vdkbuilder/vdkb_compodb.cc:154 msgid "Add" msgstr "" #. modifyButton = new VDKCustomButton(this,_("Modify")); #. hbox2->Add(modifyButton,0,1,1,3); #. disabled for now #. modifyButton->Enabled = false; #: vdkbuilder/vdkb_compodb.cc:160 vdkbuilder/vdkb_nls.cc:78 #: vdkbuilder/vdkb_nls.cc:250 msgid "Save" msgstr "" #: vdkbuilder/vdkb_compodb.cc:220 vdkbuilder/vdkb_compodb.cc:332 msgid "invalid " msgstr "" #: vdkbuilder/vdkb_compodb.cc:262 msgid "" "Component database changed\n" "save it ?" msgstr "" #: vdkbuilder/vdkb_compodb.cc:368 msgid "Could not save component database" msgstr "" #: vdkbuilder/vdkb_compodb.cc:407 msgid "Component database dialog" msgstr "" #: vdkbuilder/vdkb_compodb.cc:417 msgid "Enter library path:" msgstr "" #: vdkbuilder/vdkb_compodb.cc:426 msgid "Enter library name:" msgstr "" #: vdkbuilder/vdkb_dlgs.cc:92 msgid "Horizontal size" msgstr "" #: vdkbuilder/vdkb_dlgs.cc:94 msgid "Vertical size" msgstr "" #: vdkbuilder/vdkb_dlgs.cc:96 msgid "_Reset to min size" msgstr "" #: vdkbuilder/vdkb_editor.cc:310 msgid "saving message log" msgstr "" #: vdkbuilder/vdkb_editor.cc:336 msgid "Message list" msgstr "" #: vdkbuilder/vdkb_editor.cc:389 msgid "docks/undocks messages list" msgstr "" #: vdkbuilder/vdkb_editor.cc:391 msgid "Save messages into a log file" msgstr "" #: vdkbuilder/vdkb_editor.cc:393 msgid "" "Jumps to error into editor\n" "can be done also double clicking\n" "on selected line" msgstr "" #: vdkbuilder/vdkb_editor.cc:667 msgid "no error to go" msgstr "" #. #. main form setup #. #: vdkbuilder/vdkb_Env.cc:84 msgid "Key words" msgstr "" #: vdkbuilder/vdkb_Env.cc:84 msgid "GTK+/VDK words" msgstr "" #: vdkbuilder/vdkb_Env.cc:84 msgid "Preprocessor" msgstr "" #: vdkbuilder/vdkb_Env.cc:85 msgid "Constants" msgstr "" #: vdkbuilder/vdkb_Env.cc:85 msgid "Comments" msgstr "" #: vdkbuilder/vdkb_Env.cc:405 msgid "Options changed, save ?" msgstr "" #: vdkbuilder/vdkb_Env.cc:619 #, c-format msgid "font:\"%s\" not available or mispelled" msgstr "" #: vdkbuilder/vdkb_Env.cc:774 #, c-format msgid "" "%s\n" "does not exists\n" "create %s/.vdkb/res/ and\n" "copy %s there\n" "(operation aborted)" msgstr "" #: vdkbuilder/vdkb_Env.cc:981 msgid "VDKBuilder environment options" msgstr "" #: vdkbuilder/vdkb_Env.cc:990 msgid "General IDE" msgstr "" #: vdkbuilder/vdkb_Env.cc:993 msgid "" "Default working\n" "directory" msgstr "" #: vdkbuilder/vdkb_Env.cc:997 msgid "Enter here default start up directory" msgstr "" #: vdkbuilder/vdkb_Env.cc:1001 msgid "Hide VDKbuilder on run" msgstr "" #: vdkbuilder/vdkb_Env.cc:1002 msgid "Hides VDKBuilder when running application" msgstr "" #: vdkbuilder/vdkb_Env.cc:1005 msgid "WI resizable" msgstr "" #: vdkbuilder/vdkb_Env.cc:1006 msgid "Makes Widget Inspector resizable" msgstr "" #: vdkbuilder/vdkb_Env.cc:1011 msgid "WI layout V" msgstr "" #: vdkbuilder/vdkb_Env.cc:1012 msgid "WI shows a vertical layout" msgstr "" #: vdkbuilder/vdkb_Env.cc:1013 msgid "WI layout H" msgstr "" #: vdkbuilder/vdkb_Env.cc:1014 msgid "WI shows an horizontal layout" msgstr "" #: vdkbuilder/vdkb_Env.cc:1017 msgid "Auto save modified files" msgstr "" #: vdkbuilder/vdkb_Env.cc:1018 msgid "Autosave modified files without asking user" msgstr "" #: vdkbuilder/vdkb_Env.cc:1020 msgid "Timed saving" msgstr "" #: vdkbuilder/vdkb_Env.cc:1025 msgid "Timed (in minutes) saving of source files (0 means no timed saving)" msgstr "" #: vdkbuilder/vdkb_Env.cc:1027 msgid "Makes source backup files" msgstr "" #: vdkbuilder/vdkb_Env.cc:1028 msgid "Makes a sources back-up file" msgstr "" #: vdkbuilder/vdkb_Env.cc:1032 msgid "VDK reference path" msgstr "" #: vdkbuilder/vdkb_Env.cc:1036 msgid "" "Put here where_VDK_reference_is\n" "most likely:/usr/src/vdk-2.x.y/doc/doxy/html" msgstr "" #: vdkbuilder/vdkb_Env.cc:1042 msgid "VDK ref browser" msgstr "" #: vdkbuilder/vdkb_Env.cc:1046 msgid "Put here your path to preferred html browser" msgstr "" #: vdkbuilder/vdkb_Env.cc:1051 msgid "VDKMaker - Application modal" msgstr "" #: vdkbuilder/vdkb_Env.cc:1052 msgid "" "Application runs modal, if unchecked allows\n" "code/design modifications during application run" msgstr "" #: vdkbuilder/vdkb_Env.cc:1056 msgid "Supports Emacs" msgstr "" #: vdkbuilder/vdkb_Env.cc:1057 msgid "" "Supports Emacs as external editor\n" "all sources opened in builder editor\n" "will be opened in emacs as well" msgstr "" #: vdkbuilder/vdkb_Env.cc:1060 msgid "Saves last work session" msgstr "" #: vdkbuilder/vdkb_Env.cc:1063 msgid "Use vdkb theme" msgstr "" #: vdkbuilder/vdkb_Env.cc:1064 msgid "" "Allows user to override default and\n" "use a nice \"Air Force Blue\" theme" msgstr "" #: vdkbuilder/vdkb_Env.cc:1067 msgid "Enables class browser" msgstr "" #: vdkbuilder/vdkb_Env.cc:1069 msgid "" "Enabling class browser can slown down VDKBuilder\n" "during loading of very big projects" msgstr "" #: vdkbuilder/vdkb_Env.cc:1074 msgid "Sources editor" msgstr "" #: vdkbuilder/vdkb_Env.cc:1077 msgid "Default source files extension" msgstr "" #: vdkbuilder/vdkb_Env.cc:1080 msgid "Default header files extension" msgstr "" #: vdkbuilder/vdkb_Env.cc:1083 msgid "Default object files extension" msgstr "" #: vdkbuilder/vdkb_Env.cc:1096 msgid "Fixed to be 'o'" msgstr "" #: vdkbuilder/vdkb_Env.cc:1101 msgid "Enter here font name or use the Font... button" msgstr "" #: vdkbuilder/vdkb_Env.cc:1110 msgid "_Background" msgstr "" #: vdkbuilder/vdkb_Env.cc:1111 msgid "Changes background color" msgstr "" #: vdkbuilder/vdkb_Env.cc:1120 vdkbuilder/vdkb_Env.cc:1164 msgid "Changes foreground color" msgstr "" #: vdkbuilder/vdkb_Env.cc:1128 msgid "Minimum width" msgstr "" #: vdkbuilder/vdkb_Env.cc:1135 msgid "Minimum height" msgstr "" #: vdkbuilder/vdkb_Env.cc:1142 msgid "code auto indent" msgstr "" #: vdkbuilder/vdkb_Env.cc:1145 msgid "shows lines number" msgstr "" #: vdkbuilder/vdkb_Env.cc:1152 msgid "Editor tabs" msgstr "" #: vdkbuilder/vdkb_Env.cc:1156 msgid "Syntax colors" msgstr "" #: vdkbuilder/vdkb_Env.cc:1160 msgid "Changes default font" msgstr "" #: vdkbuilder/vdkb_Env.cc:1163 msgid "_Color..." msgstr "" #: vdkbuilder/vdkb_Env.cc:1170 msgid "Code example" msgstr "" #: vdkbuilder/vdkb_Env.cc:1177 msgid "tokens" msgstr "" #: vdkbuilder/vdkb_Env.cc:1187 msgid "_Close and save" msgstr "" #: vdkbuilder/vdkb_evbox.cc:100 msgid "Embedded boxes shouldn't be deleted" msgstr "" #: vdkbuilder/vdkb_evbox.cc:791 msgid "" "Dockable and EventBox properties are\n" "mutually exclusive,\n" "EventBox won't be changed" msgstr "" #: vdkbuilder/vdkb_evbox.cc:816 msgid "" "Dockable and EventBox properties are\n" "mutually exclusive\n" "Dockable won't be changed" msgstr "" #: vdkbuilder/vdkb_evbox.cc:845 msgid "Make it a VDKEventBox" msgstr "" #: vdkbuilder/vdkb_evbox.cc:852 msgid "Make it a VDKDockerBox" msgstr "" #. #. checks if is a bin container and #. already contains a widget #. #: vdkbuilder/vdkb_evcontain.cc:93 #, c-format msgid "" "<%s> is a binary container,\n" "binary containers can contain only one widget.\n" "Remove the actual one before adding something else" msgstr "" #. 30 #: vdkbuilder/vdkb_evcontain.cc:320 vdkbuilder/vdkb_nls.cc:503 msgid "Set border width" msgstr "" #: vdkbuilder/vdkb_form.cc:704 msgid "Sorry, unsupported widget" msgstr "" #: vdkbuilder/vdkb_form.cc:708 msgid "Sorry, unauthorized or unimplemented operation" msgstr "" #: vdkbuilder/vdkb_form.cc:713 msgid "Sorry, nested layouts disabled" msgstr "" #: vdkbuilder/vdkb_form.cc:717 msgid "Sorry, unknown editing error" msgstr "" #: vdkbuilder/vdkb_form.cc:782 #, c-format msgid "Setting %s size" msgstr "" #: vdkbuilder/vdkb_form.cc:1430 vdkbuilder/vdkb_menuitem.cc:809 #: vdkbuilder/vdkb_pixmap.cc:368 msgid "Enter \"nihil\" to reset assigned pixmap" msgstr "" #: vdkbuilder/vdkb_form.cc:1735 vdkbuilder/vdkb_form.cc:1823 #: vdkbuilder/vdkb_form.cc:2117 #, c-format msgid "Min.size:%d,%d" msgstr "" #: vdkbuilder/vdkb_form.cc:1882 msgid "Copying containers isn't allowed" msgstr "" #: vdkbuilder/vdkb_frmlist.cc:123 msgid "VDKBuilder" msgstr "" #: vdkbuilder/vdkb_frmlist.cc:139 msgid "Edit" msgstr "" #: vdkbuilder/vdkb_frmlist.cc:163 msgid "Project forms list" msgstr "" #: vdkbuilder/vdkb_grep.cc:91 msgid "VDKBuilder grep" msgstr "" #: vdkbuilder/vdkb_grep.cc:105 msgid "Text to grep" msgstr "" #: vdkbuilder/vdkb_grep.cc:114 msgid "Files to grep" msgstr "" #: vdkbuilder/vdkb_grep.cc:125 msgid "Browse.." msgstr "" #: vdkbuilder/vdkb_grep.cc:130 msgid "Clear files" msgstr "" #: vdkbuilder/vdkb_grep.cc:173 msgid "Select files to grep" msgstr "" #: vdkbuilder/vdkb_maker.cc:214 #, c-format msgid "DONE with result %d, at %s\n" msgstr "" #: vdkbuilder/vdkb_maker.cc:311 msgid "" "A compilation process is running;\n" "kill it before close" msgstr "" #: vdkbuilder/vdkb_main_sig.cc:324 msgid "Forking for browser unsuccessfull" msgstr "" #: vdkbuilder/vdkb_main_sig.cc:331 #, c-format msgid "Started browser (pid %d)" msgstr "" #: vdkbuilder/vdkb_main_sig.cc:364 #, c-format msgid "Mozilla (pid %d) exited" msgstr "" #: vdkbuilder/vdkb_main_sig.cc:367 #, c-format msgid ", with exit status %d" msgstr "" #: vdkbuilder/vdkb_main_sig.cc:371 #, c-format msgid ", by signal %d" msgstr "" #: vdkbuilder/vdkb_main_sig.cc:681 msgid "Emacs server failed" msgstr "" #: vdkbuilder/vdkb_main_sig.cc:691 msgid "Emacs server already running" msgstr "" #. FIX ME: user warning on false returned #: vdkbuilder/vdkb_main_sig.cc:1053 #, c-format msgid "" "%s done.\n" "May be you want add it to project." msgstr "" #: vdkbuilder/vdkb_main_sig.cc:1083 #, c-format msgid "" "project: %s\n" "already exists, overwrite it ?" msgstr "" #: vdkbuilder/vdkb_menu.cc:302 vdkbuilder/vdkb_menubar.cc:238 msgid "Append a menu item" msgstr "" #: vdkbuilder/vdkb_menu.cc:303 vdkbuilder/vdkb_menubar.cc:239 msgid "Prepend a menu item" msgstr "" #: vdkbuilder/vdkb_menu.cc:304 vdkbuilder/vdkb_menubar.cc:240 msgid "Insert a menu item" msgstr "" #: vdkbuilder/vdkb_menu.cc:309 msgid "Remove menu" msgstr "" #: vdkbuilder/vdkb_menubar.cc:246 msgid "Remove menubar" msgstr "" #: vdkbuilder/vdkb_menuitem.cc:323 msgid "Double click to lock/unlock menu" msgstr "" #: vdkbuilder/vdkb_menuitem.cc:386 msgid "Add a menu" msgstr "" #: vdkbuilder/vdkb_menuitem.cc:390 msgid "Set properties" msgstr "" #: vdkbuilder/vdkb_menuitem.cc:391 msgid "Remove menu item" msgstr "" #: vdkbuilder/vdkb_nls.cc:57 msgid "Buttons" msgstr "" #: vdkbuilder/vdkb_nls.cc:57 msgid "Containers" msgstr "" #: vdkbuilder/vdkb_nls.cc:57 msgid "Dialogs" msgstr "" #: vdkbuilder/vdkb_nls.cc:58 msgid "Misc" msgstr "" #. 16 #: vdkbuilder/vdkb_nls.cc:58 vdkbuilder/vdkb_nls.cc:160 #: vdkbuilder/vdkb_nls.cc:489 msgid "Text" msgstr "" #: vdkbuilder/vdkb_nls.cc:58 msgid "Plugins" msgstr "" #: vdkbuilder/vdkb_nls.cc:58 msgid "Gnome widgets" msgstr "" #: vdkbuilder/vdkb_nls.cc:59 msgid "Xdb widgets" msgstr "" #. 9 #: vdkbuilder/vdkb_nls.cc:67 vdkbuilder/vdkb_nls.cc:77 msgid "File" msgstr "" #. 0 #: vdkbuilder/vdkb_nls.cc:68 msgid "New.." msgstr "" #. 1 #: vdkbuilder/vdkb_nls.cc:69 msgid "_Project" msgstr "" #. 2 #: vdkbuilder/vdkb_nls.cc:70 msgid "_Unit" msgstr "" #. 3 #: vdkbuilder/vdkb_nls.cc:71 msgid "Form" msgstr "" #. 4 #: vdkbuilder/vdkb_nls.cc:72 msgid "Default" msgstr "" #. 5 #: vdkbuilder/vdkb_nls.cc:73 vdkbuilder/vdkb_nls.cc:142 msgid "Scrolled" msgstr "" #. 6 #: vdkbuilder/vdkb_nls.cc:74 msgid "Paned" msgstr "" #. 7 #: vdkbuilder/vdkb_nls.cc:75 msgid "_Open.." msgstr "" #. 8 #: vdkbuilder/vdkb_nls.cc:76 vdkbuilder/vdkb_nls.cc:86 msgid "Project" msgstr "" #. 11 #: vdkbuilder/vdkb_nls.cc:79 msgid "Save All" msgstr "" #. 12 #: vdkbuilder/vdkb_nls.cc:80 msgid "_Quit VDKBuilder" msgstr "" #. 13 #: vdkbuilder/vdkb_nls.cc:81 msgid "_Edit" msgstr "" #. 14 #: vdkbuilder/vdkb_nls.cc:82 msgid "_Search" msgstr "" #. 15 #: vdkbuilder/vdkb_nls.cc:83 msgid "_View" msgstr "" #. 16 #: vdkbuilder/vdkb_nls.cc:84 msgid "View Units" msgstr "" #. 17 #: vdkbuilder/vdkb_nls.cc:85 msgid "View Forms" msgstr "" #. 19 #: vdkbuilder/vdkb_nls.cc:87 msgid "Add to project" msgstr "" #. 20 #: vdkbuilder/vdkb_nls.cc:88 msgid "Remove from project" msgstr "" #. 21 #: vdkbuilder/vdkb_nls.cc:89 msgid "Components" msgstr "" #. 22 #: vdkbuilder/vdkb_nls.cc:90 msgid "_Tools" msgstr "" #. 23 #: vdkbuilder/vdkb_nls.cc:91 msgid "_Help" msgstr "" #. 24 #: vdkbuilder/vdkb_nls.cc:92 msgid "Tutorial" msgstr "" #. 25 #: vdkbuilder/vdkb_nls.cc:93 msgid "About VDK Builder" msgstr "" #. 26 #: vdkbuilder/vdkb_nls.cc:94 msgid "_Make" msgstr "" #. 27 #: vdkbuilder/vdkb_nls.cc:95 msgid "Op_tions" msgstr "" #. 28 #: vdkbuilder/vdkb_nls.cc:96 vdkbuilder/vdkb_nls.cc:109 msgid "Make clean" msgstr "" #. 29 #: vdkbuilder/vdkb_nls.cc:97 msgid "Search" msgstr "" #. 30 #: vdkbuilder/vdkb_nls.cc:98 msgid "Repeat Search" msgstr "" #. 31 #: vdkbuilder/vdkb_nls.cc:99 vdkbuilder/vdkb_nls.cc:431 msgid "Replace" msgstr "" #. 32 #: vdkbuilder/vdkb_nls.cc:100 msgid "Undo" msgstr "" #. 33 #: vdkbuilder/vdkb_nls.cc:101 msgid "Redo" msgstr "" #. 34 #: vdkbuilder/vdkb_nls.cc:102 msgid "Syntax Hilight (F6)" msgstr "" #. 35 #: vdkbuilder/vdkb_nls.cc:103 msgid "Run debugger" msgstr "" #. 36 #: vdkbuilder/vdkb_nls.cc:104 msgid "Set Builder environment" msgstr "" #. 37 #: vdkbuilder/vdkb_nls.cc:105 msgid "Grep" msgstr "" #. 38 #: vdkbuilder/vdkb_nls.cc:106 msgid "Autoconf/Automake" msgstr "" #. 39 #: vdkbuilder/vdkb_nls.cc:107 msgid "Autogen" msgstr "" #. 40 #: vdkbuilder/vdkb_nls.cc:108 msgid "Make" msgstr "" #. 42 #: vdkbuilder/vdkb_nls.cc:110 msgid "Make dist" msgstr "" #. 43 #: vdkbuilder/vdkb_nls.cc:111 msgid "Make distclean" msgstr "" #. 44 #: vdkbuilder/vdkb_nls.cc:112 msgid "VDK Reference Manual" msgstr "" #. 45 #: vdkbuilder/vdkb_nls.cc:113 msgid "XDatabase tools" msgstr "" #. 46 #: vdkbuilder/vdkb_nls.cc:114 msgid "XDB Support" msgstr "" #. 47 #: vdkbuilder/vdkb_nls.cc:115 msgid "Editor short cuts (F1)" msgstr "" #. 48 #: vdkbuilder/vdkb_nls.cc:116 msgid "Reopen" msgstr "" #. 49 #: vdkbuilder/vdkb_nls.cc:117 msgid "Hints editor" msgstr "" #: vdkbuilder/vdkb_nls.cc:125 msgid "New Project" msgstr "" #: vdkbuilder/vdkb_nls.cc:125 msgid "New Unit" msgstr "" #: vdkbuilder/vdkb_nls.cc:125 msgid "New Form" msgstr "" #: vdkbuilder/vdkb_nls.cc:125 msgid "Open project" msgstr "" #: vdkbuilder/vdkb_nls.cc:126 msgid "Open File" msgstr "" #: vdkbuilder/vdkb_nls.cc:126 msgid "Save project" msgstr "" #: vdkbuilder/vdkb_nls.cc:126 msgid "Save File" msgstr "" #: vdkbuilder/vdkb_nls.cc:131 msgid "Toggle unit/form" msgstr "" #: vdkbuilder/vdkb_nls.cc:131 msgid "Run" msgstr "" #: vdkbuilder/vdkb_nls.cc:131 msgid "Cancel selection" msgstr "" #: vdkbuilder/vdkb_nls.cc:132 msgid "Call emacs as external editor" msgstr "" #: vdkbuilder/vdkb_nls.cc:139 msgid "Vert box" msgstr "" #: vdkbuilder/vdkb_nls.cc:139 msgid "Hor box" msgstr "" #: vdkbuilder/vdkb_nls.cc:139 msgid "Frame" msgstr "" #: vdkbuilder/vdkb_nls.cc:140 msgid "Table" msgstr "" #: vdkbuilder/vdkb_nls.cc:140 msgid "Vert paned" msgstr "" #: vdkbuilder/vdkb_nls.cc:140 msgid "Hor paned" msgstr "" #: vdkbuilder/vdkb_nls.cc:141 msgid "Notebook" msgstr "" #: vdkbuilder/vdkb_nls.cc:141 msgid "Handlebox" msgstr "" #: vdkbuilder/vdkb_nls.cc:141 msgid "Toolbar" msgstr "" #: vdkbuilder/vdkb_nls.cc:142 msgid "Menu bar" msgstr "" #: vdkbuilder/vdkb_nls.cc:142 msgid "Vert Radio Button Group" msgstr "" #: vdkbuilder/vdkb_nls.cc:143 msgid "Hor Radio Button Group" msgstr "" #: vdkbuilder/vdkb_nls.cc:143 msgid "Fixed" msgstr "" #: vdkbuilder/vdkb_nls.cc:151 msgid "VDKCustom Button" msgstr "" #: vdkbuilder/vdkb_nls.cc:151 msgid "Spin button" msgstr "" #: vdkbuilder/vdkb_nls.cc:152 msgid "Check button" msgstr "" #: vdkbuilder/vdkb_nls.cc:152 msgid "Radio button" msgstr "" #: vdkbuilder/vdkb_nls.cc:160 msgid "Label" msgstr "" #: vdkbuilder/vdkb_nls.cc:160 msgid "Entry" msgstr "" #: vdkbuilder/vdkb_nls.cc:168 msgid "Canvas" msgstr "" #: vdkbuilder/vdkb_nls.cc:168 msgid "Pixmap" msgstr "" #: vdkbuilder/vdkb_nls.cc:168 msgid "Image" msgstr "" #. 33 #: vdkbuilder/vdkb_nls.cc:168 vdkbuilder/vdkb_nls.cc:506 msgid "Progress bar" msgstr "" #: vdkbuilder/vdkb_nls.cc:169 msgid "Slider" msgstr "" #: vdkbuilder/vdkb_nls.cc:169 msgid "Status bar" msgstr "" #: vdkbuilder/vdkb_nls.cc:169 msgid "Timer" msgstr "" #: vdkbuilder/vdkb_nls.cc:170 msgid "Custom list" msgstr "" #: vdkbuilder/vdkb_nls.cc:170 msgid "Combo box" msgstr "" #: vdkbuilder/vdkb_nls.cc:170 msgid "Custom tree" msgstr "" #: vdkbuilder/vdkb_nls.cc:171 msgid "Hor separator" msgstr "" #: vdkbuilder/vdkb_nls.cc:171 msgid "Vert separator" msgstr "" #: vdkbuilder/vdkb_nls.cc:171 msgid "Grid" msgstr "" #: vdkbuilder/vdkb_nls.cc:172 msgid "Place holder" msgstr "" #: vdkbuilder/vdkb_nls.cc:172 msgid "Tree view" msgstr "" #: vdkbuilder/vdkb_nls.cc:180 msgid "Gnome application bar" msgstr "" #: vdkbuilder/vdkb_nls.cc:180 msgid "Gnome date Edit" msgstr "" #: vdkbuilder/vdkb_nls.cc:181 msgid "Gnome entry" msgstr "" #: vdkbuilder/vdkb_nls.cc:190 msgid "xdb entry" msgstr "" #: vdkbuilder/vdkb_nls.cc:190 msgid "xdb list" msgstr "" #: vdkbuilder/vdkb_nls.cc:190 msgid "xdb check button" msgstr "" #: vdkbuilder/vdkb_nls.cc:191 msgid "xdb memo" msgstr "" #: vdkbuilder/vdkb_nls.cc:199 msgid "Project manager" msgstr "" #: vdkbuilder/vdkb_nls.cc:199 msgid "New project" msgstr "" #: vdkbuilder/vdkb_nls.cc:199 msgid "Add a unit" msgstr "" #: vdkbuilder/vdkb_nls.cc:200 msgid "Remove a unit" msgstr "" #: vdkbuilder/vdkb_nls.cc:200 msgid "Edit unit" msgstr "" #: vdkbuilder/vdkb_nls.cc:200 msgid "Form attributes" msgstr "" #: vdkbuilder/vdkb_nls.cc:201 msgid "Add Member" msgstr "" #: vdkbuilder/vdkb_nls.cc:201 msgid "Declared" msgstr "" #: vdkbuilder/vdkb_nls.cc:201 msgid "Defined" msgstr "" #. 6 7 8 9 for class viewer #: vdkbuilder/vdkb_nls.cc:202 msgid "Update" msgstr "" #: vdkbuilder/vdkb_nls.cc:210 msgid "Quit VDKBuilder ?" msgstr "" #: vdkbuilder/vdkb_nls.cc:210 vdkbuilder/vdkb_nls.cc:454 msgid "No" msgstr "" #: vdkbuilder/vdkb_nls.cc:211 msgid "defaults file missing, aborting.." msgstr "" #: vdkbuilder/vdkb_nls.cc:212 msgid "modified, has to be saved ?" msgstr "" #: vdkbuilder/vdkb_nls.cc:212 msgid "Unknown unit type" msgstr "" #: vdkbuilder/vdkb_nls.cc:213 msgid "unit can't be added" msgstr "" #: vdkbuilder/vdkb_nls.cc:213 msgid "can't be closed" msgstr "" #: vdkbuilder/vdkb_nls.cc:214 msgid "bad reading or unknown project file" msgstr "" #: vdkbuilder/vdkb_nls.cc:215 msgid "incorrect project version" msgstr "" #: vdkbuilder/vdkb_nls.cc:216 msgid "main unit can't be removed" msgstr "" #: vdkbuilder/vdkb_nls.cc:217 msgid "unit already in project" msgstr "" #: vdkbuilder/vdkb_nls.cc:225 msgid "Status: never saved" msgstr "" #: vdkbuilder/vdkb_nls.cc:226 msgid "Status: unsaved" msgstr "" #: vdkbuilder/vdkb_nls.cc:227 msgid "Status: saved" msgstr "" #: vdkbuilder/vdkb_nls.cc:235 msgid "Open a project" msgstr "" #: vdkbuilder/vdkb_nls.cc:236 msgid "Open a file" msgstr "" #: vdkbuilder/vdkb_nls.cc:237 msgid "Add a unit to project" msgstr "" #: vdkbuilder/vdkb_nls.cc:238 msgid "Save project as.." msgstr "" #: vdkbuilder/vdkb_nls.cc:239 msgid "Save file as.." msgstr "" #: vdkbuilder/vdkb_nls.cc:247 msgid "VDKBuilder editor" msgstr "" #: vdkbuilder/vdkb_nls.cc:247 msgid "Modified:" msgstr "" #: vdkbuilder/vdkb_nls.cc:247 msgid "Line:" msgstr "" #. 0 1 2 #: vdkbuilder/vdkb_nls.cc:248 msgid "Toggle unit header/source" msgstr "" #: vdkbuilder/vdkb_nls.cc:248 msgid "Close this page" msgstr "" #: vdkbuilder/vdkb_nls.cc:248 msgid "Save as.." msgstr "" #. 3 4 5 #: vdkbuilder/vdkb_nls.cc:249 msgid "No more undo's" msgstr "" #: vdkbuilder/vdkb_nls.cc:249 msgid "Fontifyng" msgstr "" #: vdkbuilder/vdkb_nls.cc:249 msgid "done" msgstr "" #: vdkbuilder/vdkb_nls.cc:250 msgid "Shows/hides line numbers" msgstr "" #: vdkbuilder/vdkb_nls.cc:250 msgid "Shows/hides messages list" msgstr "" #: vdkbuilder/vdkb_nls.cc:312 msgid "Connects form to selected event" msgstr "" #. 0 #: vdkbuilder/vdkb_nls.cc:313 msgid "Disconnects form to selected event" msgstr "" #. 1 #: vdkbuilder/vdkb_nls.cc:314 #, c-format msgid "Drops a <%s> into %s" msgstr "" #. 2 #: vdkbuilder/vdkb_nls.cc:315 msgid "Duplicated connection" msgstr "" #. 3 #: vdkbuilder/vdkb_nls.cc:316 msgid "Connection not found" msgstr "" #. 4 #: vdkbuilder/vdkb_nls.cc:317 msgid "Duplicated response function" msgstr "" #. 5 #: vdkbuilder/vdkb_nls.cc:318 msgid "Duplicated name" msgstr "" #. 6 #: vdkbuilder/vdkb_nls.cc:319 msgid "Widget name can't be cancelled" msgstr "" #. 7 #: vdkbuilder/vdkb_nls.cc:320 msgid "WI: no object selected" msgstr "" #. 8 #: vdkbuilder/vdkb_nls.cc:321 msgid "Properties" msgstr "" #. 9 #: vdkbuilder/vdkb_nls.cc:322 msgid "Delete signal response" msgstr "" #. 10 #: vdkbuilder/vdkb_nls.cc:323 msgid "Common properties" msgstr "" #. 11 #: vdkbuilder/vdkb_nls.cc:324 msgid "Set name" msgstr "" #. 12 #: vdkbuilder/vdkb_nls.cc:325 msgid "Widget names must follow C++ naming rules" msgstr "" #. 13 #: vdkbuilder/vdkb_nls.cc:326 msgid "Widget state" msgstr "" #. 14 #: vdkbuilder/vdkb_nls.cc:327 msgid "Set color" msgstr "" #. 15 #: vdkbuilder/vdkb_nls.cc:328 msgid "Set font" msgstr "" #. 16 #: vdkbuilder/vdkb_nls.cc:329 msgid "Justification" msgstr "" #. 17 #: vdkbuilder/vdkb_nls.cc:330 msgid "Expand" msgstr "" #. 18 #: vdkbuilder/vdkb_nls.cc:331 msgid "Fill" msgstr "" #. 19 #: vdkbuilder/vdkb_nls.cc:332 msgid "Padding:" msgstr "" #. 20 #: vdkbuilder/vdkb_nls.cc:333 msgid "Repack" msgstr "" #. 21 #: vdkbuilder/vdkb_nls.cc:334 msgid "Box Preview" msgstr "" #. 22 #: vdkbuilder/vdkb_nls.cc:335 msgid "Side" msgstr "" #. 23 #: vdkbuilder/vdkb_nls.cc:336 msgid "Anchor" msgstr "" #. 24 #: vdkbuilder/vdkb_nls.cc:337 msgid "Fill X" msgstr "" #. 25 #: vdkbuilder/vdkb_nls.cc:338 msgid "Fill Y" msgstr "" #. 26 #: vdkbuilder/vdkb_nls.cc:339 msgid "Reconfigure" msgstr "" #. 27 #: vdkbuilder/vdkb_nls.cc:340 msgid "Set tooltip" msgstr "" #. 28 #: vdkbuilder/vdkb_nls.cc:341 msgid "Set tag" msgstr "" #. 29 #: vdkbuilder/vdkb_nls.cc:342 msgid "WI: disabled" msgstr "" #. 30 #: vdkbuilder/vdkb_nls.cc:343 msgid "Signals" msgstr "" #. 31 #: vdkbuilder/vdkb_nls.cc:344 msgid "Form events" msgstr "" #. 32 #: vdkbuilder/vdkb_nls.cc:345 msgid "Class response method" msgstr "" #. 33 #: vdkbuilder/vdkb_nls.cc:346 msgid "Reuse this" msgstr "" #. 34 #: vdkbuilder/vdkb_nls.cc:347 msgid "Restore default" msgstr "" #. 35 #: vdkbuilder/vdkb_nls.cc:348 msgid "Public" msgstr "" #: vdkbuilder/vdkb_nls.cc:357 vdkbuilder/vdkb_widpopmenu.cc:303 msgid "Cut" msgstr "" #. 0 #: vdkbuilder/vdkb_nls.cc:358 vdkbuilder/vdkb_widpopmenu.cc:302 msgid "Copy" msgstr "" #. 1 #: vdkbuilder/vdkb_nls.cc:359 vdkbuilder/vdkb_widpopmenu.cc:304 #: vdkbuilder/vdkb_widpopmenu.cc:400 msgid "Paste" msgstr "" #. 2 #: vdkbuilder/vdkb_nls.cc:360 msgid "Paste others" msgstr "" #. 3 #: vdkbuilder/vdkb_nls.cc:361 msgid "Drop widget" msgstr "" #: vdkbuilder/vdkb_nls.cc:369 msgid "Begin" msgstr "" #: vdkbuilder/vdkb_nls.cc:370 msgid "Runs child process" msgstr "" #: vdkbuilder/vdkb_nls.cc:371 msgid "Kill or Close" msgstr "" #: vdkbuilder/vdkb_nls.cc:372 msgid "Kills child process or close form if no child is running" msgstr "" #: vdkbuilder/vdkb_nls.cc:380 msgid "Project options" msgstr "" #. 0 #: vdkbuilder/vdkb_nls.cc:381 msgid "C compiler" msgstr "" #. 1 #: vdkbuilder/vdkb_nls.cc:382 msgid "C++ compiler" msgstr "" #. 2 #: vdkbuilder/vdkb_nls.cc:383 msgid "Linker" msgstr "" #. 3 #: vdkbuilder/vdkb_nls.cc:384 msgid "Compilation flags" msgstr "" #. 4 #: vdkbuilder/vdkb_nls.cc:385 msgid "Defines" msgstr "" #. 5 #: vdkbuilder/vdkb_nls.cc:386 msgid "Include paths" msgstr "" #. 6 #: vdkbuilder/vdkb_nls.cc:387 msgid "Shared libs" msgstr "" #. 7 #: vdkbuilder/vdkb_nls.cc:388 msgid "Debugger" msgstr "" #. 8 #: vdkbuilder/vdkb_nls.cc:389 msgid "Program args" msgstr "" #. 9 #: vdkbuilder/vdkb_nls.cc:390 msgid "Package version" msgstr "" #. 10 #: vdkbuilder/vdkb_nls.cc:391 msgid "Close and save" msgstr "" #. 12 #: vdkbuilder/vdkb_nls.cc:393 msgid "Package name" msgstr "" #. 13 #: vdkbuilder/vdkb_nls.cc:394 msgid "NLS Support" msgstr "" #: vdkbuilder/vdkb_nls.cc:402 msgid "Find Text" msgstr "" #: vdkbuilder/vdkb_nls.cc:403 msgid "Find" msgstr "" #: vdkbuilder/vdkb_nls.cc:404 msgid "Text to find" msgstr "" #: vdkbuilder/vdkb_nls.cc:405 msgid "Previous search" msgstr "" #: vdkbuilder/vdkb_nls.cc:406 vdkbuilder/vdkb_nls.cc:434 msgid "Options" msgstr "" #: vdkbuilder/vdkb_nls.cc:407 vdkbuilder/vdkb_nls.cc:435 msgid "Case sensitive" msgstr "" #: vdkbuilder/vdkb_nls.cc:408 vdkbuilder/vdkb_nls.cc:436 msgid "Whole words only" msgstr "" #: vdkbuilder/vdkb_nls.cc:409 vdkbuilder/vdkb_nls.cc:437 msgid "Regular expressions" msgstr "" #: vdkbuilder/vdkb_nls.cc:410 vdkbuilder/vdkb_nls.cc:439 msgid "Directions" msgstr "" #: vdkbuilder/vdkb_nls.cc:411 vdkbuilder/vdkb_nls.cc:440 msgid "Forward" msgstr "" #: vdkbuilder/vdkb_nls.cc:412 vdkbuilder/vdkb_nls.cc:441 msgid "Backward" msgstr "" #: vdkbuilder/vdkb_nls.cc:413 vdkbuilder/vdkb_nls.cc:442 msgid "Scope" msgstr "" #: vdkbuilder/vdkb_nls.cc:414 vdkbuilder/vdkb_nls.cc:443 msgid "Global" msgstr "" #: vdkbuilder/vdkb_nls.cc:415 vdkbuilder/vdkb_nls.cc:444 msgid "Selected text" msgstr "" #: vdkbuilder/vdkb_nls.cc:416 vdkbuilder/vdkb_nls.cc:445 msgid "Origin" msgstr "" #: vdkbuilder/vdkb_nls.cc:417 vdkbuilder/vdkb_nls.cc:446 msgid "From cursor" msgstr "" #: vdkbuilder/vdkb_nls.cc:418 vdkbuilder/vdkb_nls.cc:447 msgid "Entire scope" msgstr "" #: vdkbuilder/vdkb_nls.cc:421 msgid "Reached end of buffer" msgstr "" #: vdkbuilder/vdkb_nls.cc:422 msgid "continue from beginning ?" msgstr "" #: vdkbuilder/vdkb_nls.cc:430 msgid "Replace Text" msgstr "" #: vdkbuilder/vdkb_nls.cc:432 msgid "Text to find:" msgstr "" #: vdkbuilder/vdkb_nls.cc:433 msgid "Text to replace:" msgstr "" #: vdkbuilder/vdkb_nls.cc:438 msgid "Prompt on replace" msgstr "" #: vdkbuilder/vdkb_nls.cc:449 msgid "Replace All" msgstr "" #: vdkbuilder/vdkb_nls.cc:451 msgid "Replace occurrence of:" msgstr "" #: vdkbuilder/vdkb_nls.cc:452 msgid "with:" msgstr "" #: vdkbuilder/vdkb_nls.cc:453 msgid "Yes" msgstr "" #: vdkbuilder/vdkb_nls.cc:472 msgid "Set Caption" msgstr "" #. 0 #: vdkbuilder/vdkb_nls.cc:473 msgid "Caption wrap" msgstr "" #. 1 #: vdkbuilder/vdkb_nls.cc:474 msgid "Editable" msgstr "" #. 2 #: vdkbuilder/vdkb_nls.cc:475 msgid "Sorted" msgstr "" #. 3 #: vdkbuilder/vdkb_nls.cc:476 vdkbuilder/vdkb_nls.cc:488 msgid "Hidden" msgstr "" #. 4 #: vdkbuilder/vdkb_nls.cc:477 msgid "CaseSensitive" msgstr "" #. 5 #: vdkbuilder/vdkb_nls.cc:478 msgid "Set Relief" msgstr "" #. 6 #: vdkbuilder/vdkb_nls.cc:479 msgid "Set glyph" msgstr "" #. 7 #: vdkbuilder/vdkb_nls.cc:480 msgid ".xpm -> project dir" msgstr "" #. 8 #: vdkbuilder/vdkb_nls.cc:481 msgid "Copy .xpm to project dir (recommended)" msgstr "" #. 9 #: vdkbuilder/vdkb_nls.cc:482 msgid "Set sel mode" msgstr "" #. 10 #: vdkbuilder/vdkb_nls.cc:483 msgid "Column title: " msgstr "" #. 11 #: vdkbuilder/vdkb_nls.cc:484 msgid "AutoResize" msgstr "" #. 12 #: vdkbuilder/vdkb_nls.cc:485 msgid "Set border shadow" msgstr "" #. 13 #: vdkbuilder/vdkb_nls.cc:486 msgid "ShowTime" msgstr "" #. 14 #: vdkbuilder/vdkb_nls.cc:487 msgid "Format H 24" msgstr "" #. 17 #: vdkbuilder/vdkb_nls.cc:490 msgid "Max chars" msgstr "" #. 18 #: vdkbuilder/vdkb_nls.cc:491 msgid "Set min size" msgstr "" #. 19 #: vdkbuilder/vdkb_nls.cc:492 msgid "Select parent container" msgstr "" #. 20 #: vdkbuilder/vdkb_nls.cc:493 msgid "Remove box" msgstr "" #. 21 #: vdkbuilder/vdkb_nls.cc:494 msgid "Remove fixed" msgstr "" #. 22 #: vdkbuilder/vdkb_nls.cc:495 msgid "Set grid options" msgstr "" #. 23 #: vdkbuilder/vdkb_nls.cc:496 msgid "Have grid" msgstr "" #. 24 #: vdkbuilder/vdkb_nls.cc:497 msgid "V spacing: " msgstr "" #. 25 #: vdkbuilder/vdkb_nls.cc:498 msgid "H spacing: " msgstr "" #. 26 #: vdkbuilder/vdkb_nls.cc:499 msgid "Set form title" msgstr "" #. 27 #: vdkbuilder/vdkb_nls.cc:500 msgid "Set back pixmap" msgstr "" #. 28 #: vdkbuilder/vdkb_nls.cc:501 msgid "Set focus widget" msgstr "" #. 29 #: vdkbuilder/vdkb_nls.cc:502 msgid "Remove frame" msgstr "" #. 31 #: vdkbuilder/vdkb_nls.cc:504 msgid "Label: " msgstr "" #. 32 #: vdkbuilder/vdkb_nls.cc:505 msgid "Set shadow/align" msgstr "" #. 34 #: vdkbuilder/vdkb_nls.cc:507 msgid "History id" msgstr "" #. 35 #: vdkbuilder/vdkb_nls.cc:508 msgid "Max saved" msgstr "" #. 36 #: vdkbuilder/vdkb_nls.cc:509 msgid "Rows visibles" msgstr "" #. 37 #: vdkbuilder/vdkb_nls.cc:510 msgid "Cols visibles" msgstr "" #. 38 #: vdkbuilder/vdkb_nls.cc:511 msgid "Remove handle" msgstr "" #. 39 #: vdkbuilder/vdkb_nls.cc:512 msgid "Set shadow" msgstr "" #. 40 #: vdkbuilder/vdkb_nls.cc:513 msgid "Ckecked" msgstr "" #. 41 #: vdkbuilder/vdkb_nls.cc:514 msgid "Tab label: " msgstr "" #. 42 #: vdkbuilder/vdkb_nls.cc:515 msgid "Scrollable" msgstr "" #. 43 #: vdkbuilder/vdkb_nls.cc:516 msgid "PopUp" msgstr "" #. 44 #: vdkbuilder/vdkb_nls.cc:517 msgid "Minimum value" msgstr "" #. 45 #: vdkbuilder/vdkb_nls.cc:518 msgid "Maximum value" msgstr "" #. 46 #: vdkbuilder/vdkb_nls.cc:519 msgid "Set BlockCount" msgstr "" #. 47 #: vdkbuilder/vdkb_nls.cc:520 msgid "Set bar style" msgstr "" #. 48 #: vdkbuilder/vdkb_nls.cc:521 msgid "Set orientation" msgstr "" #. 49 #: vdkbuilder/vdkb_nls.cc:522 msgid "Activity mode" msgstr "" #. 50 #: vdkbuilder/vdkb_nls.cc:523 msgid "Def constructor" msgstr "" #. 51 #: vdkbuilder/vdkb_nls.cc:524 msgid "Set lower bound" msgstr "" #. 52 #: vdkbuilder/vdkb_nls.cc:525 msgid "Set upper bound" msgstr "" #. 53 #: vdkbuilder/vdkb_nls.cc:526 msgid "Set step" msgstr "" #. 54 #: vdkbuilder/vdkb_nls.cc:527 msgid "Set update policy" msgstr "" #. 55 #: vdkbuilder/vdkb_nls.cc:528 msgid "Set digits" msgstr "" #. 56 #: vdkbuilder/vdkb_nls.cc:529 msgid "Set default value" msgstr "" #. 57 #: vdkbuilder/vdkb_nls.cc:530 msgid "Set icon by data" msgstr "" #. 58 #: vdkbuilder/vdkb_nls.cc:531 msgid "" "Check this if you want set icon by data\n" "(icon must be non NULL)" msgstr "" #. 59 #: vdkbuilder/vdkb_nls.cc:532 msgid "Set display type" msgstr "" #. 60 #: vdkbuilder/vdkb_nls.cc:533 msgid "Set initial position" msgstr "" #. 61 #: vdkbuilder/vdkb_nls.cc:534 msgid "Freeze form size" msgstr "" #. 62 #: vdkbuilder/vdkb_nls.cc:535 msgid "Set minimum size, form can't be shrinked below" msgstr "" #: vdkbuilder/vdkb_notebook.cc:248 msgid "Add a new page" msgstr "" #: vdkbuilder/vdkb_notebook.cc:249 msgid "Remove current page" msgstr "" #: vdkbuilder/vdkb_notebook.cc:251 msgid "Remove notebook" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:92 msgid "VDK Application" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:93 msgid "" "\n" "A VDK typical application\n" "with at least a Main Form,\n" "runs with most window managers" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:94 msgid "Console Application" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:95 msgid "" "\n" "A text based application that\n" "runs from a terminal" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:96 msgid "Gnome Application" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:97 msgid "" "\n" "A VDK application that is\n" "Gnome aware, requires Gnome\n" "libs installed" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:125 msgid "VDKBuilder project wizard" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:128 msgid "Step 1 - Project type" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:152 msgid "VDK application" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:154 msgid "Console application" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:156 msgid "Gnome compliant application" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:170 msgid "Step2 - Project paths" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:177 msgid "" "Project root\n" "directory" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:180 msgid "" "Project name\n" "(no extension)" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:183 msgid "Absolute path" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:199 msgid "_Browse.." msgstr "" #: vdkbuilder/vdkb_PWizard.cc:209 msgid "Author:" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:212 msgid "E-mail:" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:216 msgid "GPL'd source file headers" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:217 msgid "Add GPL license to source file headers" msgstr "" #. prev = new VDKCustomButton(this,(const char**)leftarrow_xpm,_("_Previous step"),16,(GtkPositionType) 1); #: vdkbuilder/vdkb_PWizard.cc:237 msgid "_Previous step" msgstr "" #. next = new VDKCustomButton(this,(const char**)rightarrow_xpm,_("_Next step"),16,(GtkPositionType) 1); #: vdkbuilder/vdkb_PWizard.cc:241 msgid "_Next step" msgstr "" #. finish = new VDKCustomButton(this,(const char**)finish_xpm,_("_Finish"),16,(GtkPositionType) 1); #: vdkbuilder/vdkb_PWizard.cc:245 msgid "_Finish" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:358 #, c-format msgid "" "Project directory: %s\n" "Main source: %s.cc/.h\n" "Main GUI sources: %s_gui.cc/.h\n" "Main Form description: %s.frm\n" "Project description: %s.prj\n" "Project options: %s.prj.opt\n" "Makefile: vdkbMakefile" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:371 #, c-format msgid "" "Project directory: %s\n" "Main sources: %s.cc/.h\n" "Project description: %s.prj\n" "Project options: %s.prj.opt\n" "Makefile: vdkbMakefile" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:396 msgid "Choosing project directory" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:431 #, c-format msgid "" "%s directory not found\n" "create it ?" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:438 #, c-format msgid "failed to create %s directory" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1167 msgid "Properties and signals" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1192 msgid "Declare as public member" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1196 msgid "Click to change widget name" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1208 msgid "Click to change widget color" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1214 msgid "Click to change widget font" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1220 msgid "Restore default font & colors (backgrounds)" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1226 msgid "Select widget state to set colors" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1239 msgid "visible" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1240 msgid "Uncheck to hide the widget" msgstr "" #. enabled #: vdkbuilder/vdkb_objinspect.cc:1243 msgid "enabled" msgstr "" #. enabled->Enabled = false; #: vdkbuilder/vdkb_objinspect.cc:1245 msgid "Uncheck to disable the widget" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1258 msgid "Select packing mode" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1268 msgid "Select padding size" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1276 msgid "Click to repack the widget" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1280 msgid "Toggle preview mode" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1288 msgid "Click to set the widget tip" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1298 msgid "" "Click to set the widget tag\n" "tag is an integer >= 0" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1616 msgid "Write or jump to response method" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1619 msgid "Jump to event handler" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1620 msgid "Connected" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1929 msgid "Refresh widgets tree" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1937 msgid "docks/undocks properties & signals" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:2130 msgid "Font Selection Dialog" msgstr "" #: vdkbuilder/vdkb_orderdlg.cc:64 msgid "Reordering widgets" msgstr "" #: vdkbuilder/vdkb_orderdlg.cc:67 msgid "Contained widgets" msgstr "" #: vdkbuilder/vdkb_orderdlg.cc:83 msgid "_Insert" msgstr "" #: vdkbuilder/vdkb_orderdlg.cc:85 msgid "Select a widget, new widget will be inserted in that position" msgstr "" #: vdkbuilder/vdkb_paned.cc:150 msgid "Remove paned" msgstr "" #: vdkbuilder/vdkb_prjman.cc:509 msgid "Browse units" msgstr "" #: vdkbuilder/vdkb_prjman.cc:678 #, c-format msgid "Could not open last session %s" msgstr "" #: vdkbuilder/vdkb_prj.cc:217 #, c-format msgid "" "<%s> not found\n" "project dir path <%s> may need to be updated.\n" "Confirm update project dir with:%s" msgstr "" #: vdkbuilder/vdkb_prj.cc:232 #, c-format msgid "" "%s successfully updated\n" "please reload project" msgstr "" #: vdkbuilder/vdkb_prj.cc:235 #, c-format msgid "%s failed to update" msgstr "" #: vdkbuilder/vdkb_prj.cc:246 #, c-format msgid "" "<%s> should be manually updated to\n" "new project dir path <%s>." msgstr "" #: vdkbuilder/vdkb_prj.cc:309 #, c-format msgid "<%s> not found" msgstr "" #: vdkbuilder/vdkb_prjpref.cc:113 #, c-format msgid "" "<%s> does not exists on default paths\n" "please enter a complete pathname for debugger executable" msgstr "" #: vdkbuilder/vdkb_prjpref.cc:213 msgid "If left empty package name will be as project name" msgstr "" #: vdkbuilder/vdkb_prjpref.cc:219 msgid "Check to enable Native Language Support" msgstr "" #: vdkbuilder/vdkb_rbgroup.cc:103 msgid "Remove Radio button group" msgstr "" #: vdkbuilder/vdkb_scrolled.cc:163 msgid "Remove scrolled" msgstr "" #: vdkbuilder/vdkb_spinbutton.cc:355 msgid "Default value" msgstr "" #: vdkbuilder/vdkb_spinbutton.cc:362 msgid "Lower range value" msgstr "" #: vdkbuilder/vdkb_spinbutton.cc:369 msgid "Upper range value" msgstr "" #: vdkbuilder/vdkb_spinbutton.cc:376 msgid "Step increment" msgstr "" #: vdkbuilder/vdkb_spinbutton.cc:383 msgid "Climb rate" msgstr "" #: vdkbuilder/vdkb_spinbutton.cc:390 msgid "Precision" msgstr "" #: vdkbuilder/vdkb_table.cc:191 msgid "Remove table" msgstr "" #: vdkbuilder/vdkb_table.cc:554 msgid "Homogeneous" msgstr "" #: vdkbuilder/vdkb_table.cc:562 msgid "Change spacing" msgstr "" #: vdkbuilder/vdkb_table.cc:566 msgid "Rows & cols spacing:" msgstr "" #. Modified by plm 02/09/2000 #: vdkbuilder/vdkb_tabledlg_gui.cc:34 msgid "Making a table" msgstr "" #: vdkbuilder/vdkb_tabledlg_gui.cc:38 msgid "Enter rows number " msgstr "" #: vdkbuilder/vdkb_text.cc:197 #, c-format msgid "%s: no tip available" msgstr "" #: vdkbuilder/vdkb_text.cc:228 msgid "sorry, redo not yet implemented" msgstr "" #: vdkbuilder/vdkb_text.cc:272 msgid "Changed from disk, reload ?" msgstr "" #: vdkbuilder/vdkb_text.cc:542 #, c-format msgid "Couldn't make %s backup file" msgstr "" #: vdkbuilder/vdkb_textlabel.cc:313 msgid "Set justify" msgstr "" #: vdkbuilder/vdkb_toolbar.cc:284 msgid "Add a toolbar button" msgstr "" #: vdkbuilder/vdkb_toolbar.cc:285 msgid "Remove selected button" msgstr "" #: vdkbuilder/vdkb_toolbar.cc:289 msgid "Remove toolbar" msgstr "" #: vdkbuilder/vdkb_toolbar.cc:958 msgid "Set style" msgstr "" #: vdkbuilder/vdkb_tooldialog_gui.cc:42 msgid "Adding a toolbar button" msgstr "" #: vdkbuilder/vdkb_tooldialog_gui.cc:46 msgid "Pixmap file: " msgstr "" #: vdkbuilder/vdkb_tooldialog_gui.cc:52 msgid "Browse..." msgstr "" #: vdkbuilder/vdkb_tooldialog_gui.cc:59 msgid "Tip: " msgstr "" #: vdkbuilder/vdkb_tooldialog_gui.cc:69 msgid "Text:" msgstr "" #: vdkbuilder/vdkb_widpopmenu.cc:301 vdkbuilder/vdkb_xtDlg.cc:135 msgid "Remove" msgstr "" #: vdkbuilder/vdkb_widpopmenu.cc:305 vdkbuilder/vdkb_widpopmenu.cc:358 msgid "Paste others.." msgstr "" #. not yet implemented #. copywidget = new VDKMenuItem(this,"Copy widget"); #. copywidget->Enabled = false; #: vdkbuilder/vdkb_widpopmenu.cc:355 msgid "Cut widget" msgstr "" #: vdkbuilder/vdkb_widpopmenu.cc:357 msgid "Paste widget" msgstr "" #: vdkbuilder/vdkb_widpopmenu.cc:394 #, c-format msgid "Paste %s::%s" msgstr "" #: vdkbuilder/vdkb_widpopmenu.cc:401 #, c-format msgid "Cut %s::%s" msgstr "" #: vdkbuilder/vdkb_widpopmenu.cc:404 vdkbuilder/vdkb_widpopmenu.cc:407 msgid "none" msgstr "" #: vdkbuilder/vdkb_widclip.cc:196 msgid "" "Uhmmm.., cutting the outermost container you\n" "won't be able to recover it easily. Confirm ?" msgstr "" #: vdkbuilder/vdkb_widclip.cc:278 msgid "Pasting across forms isn't allowed" msgstr "" #. editable->Checked = GetProp(EDITABLE) == True; #. this after (so no signal hang) #. editable->Parent(this); #. SignalConnect(editable,"toggled",&CLASS::OnSetEditable); #: vdkbuilder/vdkb_xcheckbutton.cc:356 vdkbuilder/vdkb_xcustomlist.cc:604 #: vdkbuilder/vdkb_xentry.cc:440 vdkbuilder/vdkb_xmemo.cc:367 msgid "Tables" msgstr "" #: vdkbuilder/vdkb_xcheckbutton.cc:363 vdkbuilder/vdkb_xcustomlist.cc:611 #: vdkbuilder/vdkb_xentry.cc:447 vdkbuilder/vdkb_xmemo.cc:374 msgid "Fields" msgstr "" #: vdkbuilder/vdkb_xcheckbutton.cc:370 vdkbuilder/vdkb_xentry.cc:453 #: vdkbuilder/vdkb_xmemo.cc:380 msgid "Assign to table field" msgstr "" #: vdkbuilder/vdkb_xcheckbutton.cc:374 vdkbuilder/vdkb_xcustomlist.cc:592 #: vdkbuilder/vdkb_xentry.cc:457 vdkbuilder/vdkb_xmemo.cc:384 msgid "Selecting \"nihil\" will reset field assignement" msgstr "" #: vdkbuilder/vdkb_xcheckbutton.cc:484 vdkbuilder/vdkb_xentry.cc:609 #: vdkbuilder/vdkb_xmemo.cc:492 #, c-format msgid "Couldn't assign to field \"%s\" on table %s" msgstr "" #: vdkbuilder/vdkb_xcustomlist.cc:588 msgid "Assign column to table" msgstr "" #: vdkbuilder/vdkb_xmemo.cc:351 msgid "WordWrap" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:94 msgid "VDKXDatabase Dialog" msgstr "" #. tricky way for i18n #: vdkbuilder/vdkb_xtDlg.cc:102 msgid "Tables/Indexes" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:103 msgid "Index Key" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:104 msgid "Field name" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:105 msgid "Type" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:106 msgid "Length" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:107 msgid "Dec" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:129 msgid "Add a table" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:131 msgid "Add a table to xdb" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:138 msgid "Remove table or index" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:142 msgid "Add index" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:145 msgid "Add an index to table" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:149 msgid "Active/inactive" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:152 msgid "" "Setting table \"active\" makes vdkbuilder generate\n" "the code to open the table at run time" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:160 msgid "Close dialog" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:207 msgid "No tables loaded" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:219 vdkbuilder/vdkb_xtDlg.cc:324 msgid "ACTIVE" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:220 vdkbuilder/vdkb_xtDlg.cc:325 msgid "NOT ACTIVE" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:248 #, c-format msgid "%3d tables loaded" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:354 msgid "VDKXTableIndex opening" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:403 #, c-format msgid "Table:%s removed" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:420 #, c-format msgid "Index:%s removed" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:436 msgid "VDKXTable opening" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:57 msgid "COPY, CUT & PASTE" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:58 msgid "," msgstr "" #: vdkbuilder/vdkb_edhelp.cc:58 msgid "copy selection" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:59 msgid "," msgstr "" #: vdkbuilder/vdkb_edhelp.cc:59 msgid "cut selection" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:60 msgid "," msgstr "" #: vdkbuilder/vdkb_edhelp.cc:60 msgid "paste selection" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:61 msgid "MOVEMENTS" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:62 msgid "," msgstr "" #: vdkbuilder/vdkb_edhelp.cc:62 vdkbuilder/vdkb_edhelp.cc:63 msgid "self explanatory" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:63 msgid "," msgstr "" #: vdkbuilder/vdkb_edhelp.cc:64 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:64 msgid "previous word" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:65 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:65 msgid "next word" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:66 msgid "SELECTION" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:67 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:67 msgid "select and move" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:68 msgid "INDENTING" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:69 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:69 msgid "indent" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:70 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:70 msgid "normal tab" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:71 msgid "OTHERS" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:72 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:72 msgid "word completion" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:73 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:73 msgid "hints" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:74 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:74 msgid "parenthesis matching" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:111 msgid "VDKBuilder editor short cuts" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:118 msgid "Keys" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:118 msgid "Actions" msgstr "" #: vdkbuilder/vdkb_edhint.cc:268 msgid "Hint key already here" msgstr "" #: vdkbuilder/vdkb_edhint.cc:301 msgid "VDKBuilder Hints editor" msgstr "" #: vdkbuilder/vdkb_edhint.cc:305 msgid "Keywords" msgstr "" #: vdkbuilder/vdkb_edhint.cc:327 msgid "Enter hint key here before add an hint" msgstr "" #: vdkbuilder/vdkb_edhint.cc:330 msgid "_Add" msgstr "" #: vdkbuilder/vdkb_edhint.cc:336 msgid "_Remove" msgstr "" #: vdkbuilder/vdkb_edhint.cc:342 msgid "_Change" msgstr "" #: vdkbuilder/vdkb_edhint.cc:348 msgid "_Save and quit" msgstr "" #: vdkbuilder/vdkb_edhint.cc:353 msgid "_Quit" msgstr "" vdkbuilder2-2.4.0/po/stamp-cat-id0000644000000000000000000000001210022117134012165 timestamp vdkbuilder2-2.4.0/po/en.po0000644000000000000000000014520110052402422010733 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2004-03-05 16:35+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: ENCODING\n" #: vdkbuilder/vdkb.cc:337 #, c-format msgid "" "VDKBuilder has installed:\n" "vdkide.defaults\n" "vdkbrc\n" "plugins.db\n" "tokens.db\n" "into your home: %s/.vdkb2/res" msgstr "" #: vdkbuilder/vdkb.cc:344 #, c-format msgid "" "* WARNING * VDKBuilder couldn't install vdkbuilder resources into your home: " "%s" msgstr "" #: vdkbuilder/vdkb.cc:360 #, c-format msgid "" "Local resource file:%s/.vdkb2/%s not found\n" "revert to default one" msgstr "" #: vdkbuilder/vdkb.cc:403 #, c-format msgid "" "Lock file:%s\n" "detected another instance\n" "sorry i can't run VDKBuilder twice,\n" "either kill running instance or remove lock file" msgstr "" #: vdkbuilder/vdkb.cc:454 #, c-format msgid "" "\n" "Could not change to dir:%s\n" "reverting to home" msgstr "" #: vdkbuilder/vdkb.cc:473 #, c-format msgid "" "\n" "User file:%s\n" "not found, using default" msgstr "" #. deactivated warning #: vdkbuilder/vdkb.cc:485 msgid "" "\n" "Error during loading plugins.db" msgstr "" #: vdkbuilder/vdkb.cc:495 msgid "" "\n" "Error during opening plugins" msgstr "" #: vdkbuilder/vdkb.cc:524 msgid "" "\n" "Error during closing plugins" msgstr "" #: vdkbuilder/vdkb.cc:622 msgid "" "User file for completions not found\n" "reverting to default one" msgstr "" #: vdkbuilder/vdkb.cc:714 msgid "" "Completion list not loaded\n" "completion won't be available" msgstr "" #: vdkbuilder/vdkb.cc:726 msgid "" "Hints tree not loaded\n" "editor hints won't be available" msgstr "" #: vdkbuilder/vdkb.cc:771 #, c-format msgid "VDKBuilder maker terminated %s" msgstr "" #: vdkbuilder/vdkb.cc:772 msgid "with errors or messages" msgstr "" #: vdkbuilder/vdkb.cc:773 msgid "successfully" msgstr "" #: vdkbuilder/vdkb.cc:782 msgid "Compilation successfull" msgstr "" #: vdkbuilder/vdkb.cc:1281 msgid "Quit VDKBuilder" msgstr "" #: vdkbuilder/vdkb.cc:1643 msgid "" "Completion list has been changed\n" " Save it ?" msgstr "" #: vdkbuilder/vdkb_about.cc:135 msgid "that's all folk !" msgstr "" #: vdkbuilder/vdkb_acsupport.cc:80 #, c-format msgid "" "Autoconf/Automake support will\n" "\t* generate (or overwrite):\n" "\t\t - acconfig.h\n" "\n" "\t\t - configure.in\n" "\t\t - Makefile.am\n" "\t* copy all required files into %s\n" "\t* invoke ./autogen.sh\n" "\n" "Do you want apply Automake/Autoconf support ?" msgstr "" #: vdkbuilder/vdkb_acsupport.cc:436 vdkbuilder/vdkb_main_sig.cc:460 #: vdkbuilder/vdkb_main_sig.cc:608 vdkbuilder/vdkb_main_sig.cc:658 msgid "A compilation process is already running" msgstr "" #: vdkbuilder/vdkb_cbrowse.cc:98 msgid "VDKBuilder color browser" msgstr "" #: vdkbuilder/vdkb_cbrowse.cc:115 vdkbuilder/vdkb_compodb.cc:438 msgid "_Accept" msgstr "" #. cancel = new VDKCustomButton(this,(const char**)stop_xpm,_("_Cancel"),16,(GtkPositionType) 1); #: vdkbuilder/vdkb_cbrowse.cc:117 vdkbuilder/vdkb_clipdlg.cc:86 #: vdkbuilder/vdkb_compodb.cc:442 vdkbuilder/vdkb_Env.cc:1189 #: vdkbuilder/vdkb_PWizard.cc:249 vdkbuilder/vdkb_orderdlg.cc:88 msgid "_Cancel" msgstr "" #: vdkbuilder/vdkb_cbrowse.cc:126 msgid "Pick a color" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:74 msgid "VDKCustomButton Dialog" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:76 msgid "VDKCustomButton options" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:88 msgid "pixmapped" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:92 msgid "Label position" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:101 msgid "untoggled" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:103 msgid "toggled" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:109 msgid "normal" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:111 msgid "Combo button" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:115 msgid "Accept" msgstr "" #: vdkbuilder/vdkb_cbuttdlg.cc:119 msgid "Defaults" msgstr "" #: vdkbuilder/vdkb_clipdlg.cc:64 msgid "Widgets clipboard" msgstr "" #: vdkbuilder/vdkb_clipdlg.cc:67 msgid "Widget stack" msgstr "" #: vdkbuilder/vdkb_clipdlg.cc:81 msgid "_Paste" msgstr "" #: vdkbuilder/vdkb_clipdlg.cc:83 msgid "Select a widget, new widget will be pasted in selected container" msgstr "" #: vdkbuilder/vdkb_clistdlg.cc:35 msgid "VDKCustomList Dialog" msgstr "" #: vdkbuilder/vdkb_clistdlg_gui.cc:39 vdkbuilder/vdkb_tabledlg_gui.cc:47 msgid "Enter columns number" msgstr "" #: vdkbuilder/vdkb_clistdlg_gui.cc:42 msgid "(defaults to 1)" msgstr "" #: vdkbuilder/vdkb_clistdlg_gui.cc:50 vdkbuilder/vdkb_grep.cc:137 #: vdkbuilder/vdkb_nls.cc:210 vdkbuilder/vdkb_nls.cc:419 #: vdkbuilder/vdkb_nls.cc:448 vdkbuilder/vdkb_tabledlg_gui.cc:55 #: vdkbuilder/vdkb_tooldialog_gui.cc:81 msgid "Ok" msgstr "" #. 11 #: vdkbuilder/vdkb_clistdlg_gui.cc:53 vdkbuilder/vdkb_grep.cc:140 #: vdkbuilder/vdkb_nls.cc:211 vdkbuilder/vdkb_nls.cc:392 #: vdkbuilder/vdkb_nls.cc:420 vdkbuilder/vdkb_nls.cc:450 #: vdkbuilder/vdkb_tabledlg_gui.cc:57 vdkbuilder/vdkb_tooldialog_gui.cc:83 msgid "Cancel" msgstr "" # ========================================================== # Part added by plm 02/09/2000 # ========================================================== #: vdkbuilder/vdkb_compodb.cc:89 msgid "Compo" msgstr "" #: vdkbuilder/vdkb_compodb.cc:90 msgid "Library name" msgstr "" #: vdkbuilder/vdkb_compodb.cc:91 msgid "Library path" msgstr "" #: vdkbuilder/vdkb_compodb.cc:92 msgid " Id " msgstr "" #: vdkbuilder/vdkb_compodb.cc:93 msgid "Valid" msgstr "" #: vdkbuilder/vdkb_compodb.cc:94 msgid "Component name" msgstr "" #: vdkbuilder/vdkb_compodb.cc:95 msgid "Error" msgstr "" #: vdkbuilder/vdkb_compodb.cc:133 msgid "VDKBuilder component database" msgstr "" #: vdkbuilder/vdkb_compodb.cc:149 vdkbuilder/vdkb_frmlist.cc:141 #: vdkbuilder/vdkb_xtDlg.cc:158 vdkbuilder/vdkb_edhelp.cc:128 msgid "Close" msgstr "" #: vdkbuilder/vdkb_compodb.cc:152 msgid "Delete" msgstr "" #: vdkbuilder/vdkb_compodb.cc:154 msgid "Add" msgstr "" #. modifyButton = new VDKCustomButton(this,_("Modify")); #. hbox2->Add(modifyButton,0,1,1,3); #. disabled for now #. modifyButton->Enabled = false; #: vdkbuilder/vdkb_compodb.cc:160 vdkbuilder/vdkb_nls.cc:78 #: vdkbuilder/vdkb_nls.cc:250 msgid "Save" msgstr "" #: vdkbuilder/vdkb_compodb.cc:220 vdkbuilder/vdkb_compodb.cc:332 msgid "invalid " msgstr "" #: vdkbuilder/vdkb_compodb.cc:262 msgid "" "Component database changed\n" "save it ?" msgstr "" #: vdkbuilder/vdkb_compodb.cc:368 msgid "Could not save component database" msgstr "" #: vdkbuilder/vdkb_compodb.cc:407 msgid "Component database dialog" msgstr "" #: vdkbuilder/vdkb_compodb.cc:417 msgid "Enter library path:" msgstr "" #: vdkbuilder/vdkb_compodb.cc:426 msgid "Enter library name:" msgstr "" #: vdkbuilder/vdkb_dlgs.cc:92 msgid "Horizontal size" msgstr "" #: vdkbuilder/vdkb_dlgs.cc:94 msgid "Vertical size" msgstr "" #: vdkbuilder/vdkb_dlgs.cc:96 msgid "_Reset to min size" msgstr "" #: vdkbuilder/vdkb_editor.cc:310 msgid "saving message log" msgstr "" #: vdkbuilder/vdkb_editor.cc:336 msgid "Message list" msgstr "" #: vdkbuilder/vdkb_editor.cc:389 msgid "docks/undocks messages list" msgstr "" #: vdkbuilder/vdkb_editor.cc:391 msgid "Save messages into a log file" msgstr "" #: vdkbuilder/vdkb_editor.cc:393 msgid "" "Jumps to error into editor\n" "can be done also double clicking\n" "on selected line" msgstr "" #: vdkbuilder/vdkb_editor.cc:667 msgid "no error to go" msgstr "" #. #. main form setup #. #: vdkbuilder/vdkb_Env.cc:84 msgid "Key words" msgstr "" #: vdkbuilder/vdkb_Env.cc:84 msgid "GTK+/VDK words" msgstr "" #: vdkbuilder/vdkb_Env.cc:84 msgid "Preprocessor" msgstr "" #: vdkbuilder/vdkb_Env.cc:85 msgid "Constants" msgstr "" #: vdkbuilder/vdkb_Env.cc:85 msgid "Comments" msgstr "" #: vdkbuilder/vdkb_Env.cc:405 msgid "Options changed, save ?" msgstr "" #: vdkbuilder/vdkb_Env.cc:619 #, c-format msgid "font:\"%s\" not available or mispelled" msgstr "" #: vdkbuilder/vdkb_Env.cc:774 #, c-format msgid "" "%s\n" "does not exists\n" "create %s/.vdkb/res/ and\n" "copy %s there\n" "(operation aborted)" msgstr "" #: vdkbuilder/vdkb_Env.cc:981 msgid "VDKBuilder environment options" msgstr "" #: vdkbuilder/vdkb_Env.cc:990 msgid "General IDE" msgstr "" #: vdkbuilder/vdkb_Env.cc:993 msgid "" "Default working\n" "directory" msgstr "" #: vdkbuilder/vdkb_Env.cc:997 msgid "Enter here default start up directory" msgstr "" #: vdkbuilder/vdkb_Env.cc:1001 msgid "Hide VDKbuilder on run" msgstr "" #: vdkbuilder/vdkb_Env.cc:1002 msgid "Hides VDKBuilder when running application" msgstr "" #: vdkbuilder/vdkb_Env.cc:1005 msgid "WI resizable" msgstr "" #: vdkbuilder/vdkb_Env.cc:1006 msgid "Makes Widget Inspector resizable" msgstr "" #: vdkbuilder/vdkb_Env.cc:1011 msgid "WI layout V" msgstr "" #: vdkbuilder/vdkb_Env.cc:1012 msgid "WI shows a vertical layout" msgstr "" #: vdkbuilder/vdkb_Env.cc:1013 msgid "WI layout H" msgstr "" #: vdkbuilder/vdkb_Env.cc:1014 msgid "WI shows an horizontal layout" msgstr "" #: vdkbuilder/vdkb_Env.cc:1017 msgid "Auto save modified files" msgstr "" #: vdkbuilder/vdkb_Env.cc:1018 msgid "Autosave modified files without asking user" msgstr "" #: vdkbuilder/vdkb_Env.cc:1020 msgid "Timed saving" msgstr "" #: vdkbuilder/vdkb_Env.cc:1025 msgid "Timed (in minutes) saving of source files (0 means no timed saving)" msgstr "" #: vdkbuilder/vdkb_Env.cc:1027 msgid "Makes source backup files" msgstr "" #: vdkbuilder/vdkb_Env.cc:1028 msgid "Makes a sources back-up file" msgstr "" #: vdkbuilder/vdkb_Env.cc:1032 msgid "VDK reference path" msgstr "" #: vdkbuilder/vdkb_Env.cc:1036 msgid "" "Put here where_VDK_reference_is\n" "most likely:/usr/src/vdk-2.x.y/doc/doxy/html" msgstr "" #: vdkbuilder/vdkb_Env.cc:1042 msgid "VDK ref browser" msgstr "" #: vdkbuilder/vdkb_Env.cc:1046 msgid "Put here your path to preferred html browser" msgstr "" #: vdkbuilder/vdkb_Env.cc:1051 msgid "VDKMaker - Application modal" msgstr "" #: vdkbuilder/vdkb_Env.cc:1052 msgid "" "Application runs modal, if unchecked allows\n" "code/design modifications during application run" msgstr "" #: vdkbuilder/vdkb_Env.cc:1056 msgid "Supports Emacs" msgstr "" #: vdkbuilder/vdkb_Env.cc:1057 msgid "" "Supports Emacs as external editor\n" "all sources opened in builder editor\n" "will be opened in emacs as well" msgstr "" #: vdkbuilder/vdkb_Env.cc:1060 msgid "Saves last work session" msgstr "" #: vdkbuilder/vdkb_Env.cc:1063 msgid "Use vdkb theme" msgstr "" #: vdkbuilder/vdkb_Env.cc:1064 msgid "" "Allows user to override default and\n" "use a nice \"Air Force Blue\" theme" msgstr "" #: vdkbuilder/vdkb_Env.cc:1067 msgid "Enables class browser" msgstr "" #: vdkbuilder/vdkb_Env.cc:1069 msgid "" "Enabling class browser can slown down VDKBuilder\n" "during loading of very big projects" msgstr "" #: vdkbuilder/vdkb_Env.cc:1074 msgid "Sources editor" msgstr "" #: vdkbuilder/vdkb_Env.cc:1077 msgid "Default source files extension" msgstr "" #: vdkbuilder/vdkb_Env.cc:1080 msgid "Default header files extension" msgstr "" #: vdkbuilder/vdkb_Env.cc:1083 msgid "Default object files extension" msgstr "" #: vdkbuilder/vdkb_Env.cc:1096 msgid "Fixed to be 'o'" msgstr "" #: vdkbuilder/vdkb_Env.cc:1101 msgid "Enter here font name or use the Font... button" msgstr "" #: vdkbuilder/vdkb_Env.cc:1110 msgid "_Background" msgstr "" #: vdkbuilder/vdkb_Env.cc:1111 msgid "Changes background color" msgstr "" #: vdkbuilder/vdkb_Env.cc:1120 vdkbuilder/vdkb_Env.cc:1164 msgid "Changes foreground color" msgstr "" #: vdkbuilder/vdkb_Env.cc:1128 msgid "Minimum width" msgstr "" #: vdkbuilder/vdkb_Env.cc:1135 msgid "Minimum height" msgstr "" #: vdkbuilder/vdkb_Env.cc:1142 msgid "code auto indent" msgstr "" #: vdkbuilder/vdkb_Env.cc:1145 msgid "shows lines number" msgstr "" #: vdkbuilder/vdkb_Env.cc:1152 msgid "Editor tabs" msgstr "" #: vdkbuilder/vdkb_Env.cc:1156 msgid "Syntax colors" msgstr "" #: vdkbuilder/vdkb_Env.cc:1160 msgid "Changes default font" msgstr "" #: vdkbuilder/vdkb_Env.cc:1163 msgid "_Color..." msgstr "" #: vdkbuilder/vdkb_Env.cc:1170 msgid "Code example" msgstr "" #: vdkbuilder/vdkb_Env.cc:1177 msgid "tokens" msgstr "" #: vdkbuilder/vdkb_Env.cc:1187 msgid "_Close and save" msgstr "" #: vdkbuilder/vdkb_evbox.cc:100 msgid "Embedded boxes shouldn't be deleted" msgstr "" #: vdkbuilder/vdkb_evbox.cc:791 msgid "" "Dockable and EventBox properties are\n" "mutually exclusive,\n" "EventBox won't be changed" msgstr "" #: vdkbuilder/vdkb_evbox.cc:816 msgid "" "Dockable and EventBox properties are\n" "mutually exclusive\n" "Dockable won't be changed" msgstr "" #: vdkbuilder/vdkb_evbox.cc:845 msgid "Make it a VDKEventBox" msgstr "" #: vdkbuilder/vdkb_evbox.cc:852 msgid "Make it a VDKDockerBox" msgstr "" #. #. checks if is a bin container and #. already contains a widget #. #: vdkbuilder/vdkb_evcontain.cc:93 #, c-format msgid "" "<%s> is a binary container,\n" "binary containers can contain only one widget.\n" "Remove the actual one before adding something else" msgstr "" #. 30 #: vdkbuilder/vdkb_evcontain.cc:320 vdkbuilder/vdkb_nls.cc:503 msgid "Set border width" msgstr "" #: vdkbuilder/vdkb_form.cc:704 msgid "Sorry, unsupported widget" msgstr "" #: vdkbuilder/vdkb_form.cc:708 msgid "Sorry, unauthorized or unimplemented operation" msgstr "" #: vdkbuilder/vdkb_form.cc:713 msgid "Sorry, nested layouts disabled" msgstr "" #: vdkbuilder/vdkb_form.cc:717 msgid "Sorry, unknown editing error" msgstr "" #: vdkbuilder/vdkb_form.cc:782 #, c-format msgid "Setting %s size" msgstr "" #: vdkbuilder/vdkb_form.cc:1430 vdkbuilder/vdkb_menuitem.cc:809 #: vdkbuilder/vdkb_pixmap.cc:368 msgid "Enter \"nihil\" to reset assigned pixmap" msgstr "" #: vdkbuilder/vdkb_form.cc:1735 vdkbuilder/vdkb_form.cc:1823 #: vdkbuilder/vdkb_form.cc:2117 #, c-format msgid "Min.size:%d,%d" msgstr "" #: vdkbuilder/vdkb_form.cc:1882 msgid "Copying containers isn't allowed" msgstr "" #: vdkbuilder/vdkb_frmlist.cc:123 msgid "VDKBuilder" msgstr "" #: vdkbuilder/vdkb_frmlist.cc:139 msgid "Edit" msgstr "" #: vdkbuilder/vdkb_frmlist.cc:163 msgid "Project forms list" msgstr "" #: vdkbuilder/vdkb_grep.cc:91 msgid "VDKBuilder grep" msgstr "" #: vdkbuilder/vdkb_grep.cc:105 msgid "Text to grep" msgstr "" #: vdkbuilder/vdkb_grep.cc:114 msgid "Files to grep" msgstr "" #: vdkbuilder/vdkb_grep.cc:125 msgid "Browse.." msgstr "" #: vdkbuilder/vdkb_grep.cc:130 msgid "Clear files" msgstr "" #: vdkbuilder/vdkb_grep.cc:173 msgid "Select files to grep" msgstr "" #: vdkbuilder/vdkb_maker.cc:214 #, c-format msgid "DONE with result %d, at %s\n" msgstr "" #: vdkbuilder/vdkb_maker.cc:311 msgid "" "A compilation process is running;\n" "kill it before close" msgstr "" #: vdkbuilder/vdkb_main_sig.cc:324 msgid "Forking for browser unsuccessfull" msgstr "" #: vdkbuilder/vdkb_main_sig.cc:331 #, c-format msgid "Started browser (pid %d)" msgstr "" #: vdkbuilder/vdkb_main_sig.cc:364 #, c-format msgid "Mozilla (pid %d) exited" msgstr "" #: vdkbuilder/vdkb_main_sig.cc:367 #, c-format msgid ", with exit status %d" msgstr "" #: vdkbuilder/vdkb_main_sig.cc:371 #, c-format msgid ", by signal %d" msgstr "" #: vdkbuilder/vdkb_main_sig.cc:681 msgid "Emacs server failed" msgstr "" #: vdkbuilder/vdkb_main_sig.cc:691 msgid "Emacs server already running" msgstr "" #. FIX ME: user warning on false returned #: vdkbuilder/vdkb_main_sig.cc:1053 #, c-format msgid "" "%s done.\n" "May be you want add it to project." msgstr "" #: vdkbuilder/vdkb_main_sig.cc:1083 #, c-format msgid "" "project: %s\n" "already exists, overwrite it ?" msgstr "" #: vdkbuilder/vdkb_menu.cc:302 vdkbuilder/vdkb_menubar.cc:238 msgid "Append a menu item" msgstr "" #: vdkbuilder/vdkb_menu.cc:303 vdkbuilder/vdkb_menubar.cc:239 msgid "Prepend a menu item" msgstr "" #: vdkbuilder/vdkb_menu.cc:304 vdkbuilder/vdkb_menubar.cc:240 msgid "Insert a menu item" msgstr "" #: vdkbuilder/vdkb_menu.cc:309 msgid "Remove menu" msgstr "" #: vdkbuilder/vdkb_menubar.cc:246 msgid "Remove menubar" msgstr "" #: vdkbuilder/vdkb_menuitem.cc:323 msgid "Double click to lock/unlock menu" msgstr "" #: vdkbuilder/vdkb_menuitem.cc:386 msgid "Add a menu" msgstr "" #: vdkbuilder/vdkb_menuitem.cc:390 msgid "Set properties" msgstr "" #: vdkbuilder/vdkb_menuitem.cc:391 msgid "Remove menu item" msgstr "" #: vdkbuilder/vdkb_nls.cc:57 msgid "Buttons" msgstr "" #: vdkbuilder/vdkb_nls.cc:57 msgid "Containers" msgstr "" #: vdkbuilder/vdkb_nls.cc:57 msgid "Dialogs" msgstr "" #: vdkbuilder/vdkb_nls.cc:58 msgid "Misc" msgstr "" #. 16 #: vdkbuilder/vdkb_nls.cc:58 vdkbuilder/vdkb_nls.cc:160 #: vdkbuilder/vdkb_nls.cc:489 msgid "Text" msgstr "" #: vdkbuilder/vdkb_nls.cc:58 msgid "Plugins" msgstr "" #: vdkbuilder/vdkb_nls.cc:58 msgid "Gnome widgets" msgstr "" #: vdkbuilder/vdkb_nls.cc:59 msgid "Xdb widgets" msgstr "" #. 9 #: vdkbuilder/vdkb_nls.cc:67 vdkbuilder/vdkb_nls.cc:77 msgid "File" msgstr "" #. 0 #: vdkbuilder/vdkb_nls.cc:68 msgid "New.." msgstr "" #. 1 #: vdkbuilder/vdkb_nls.cc:69 msgid "_Project" msgstr "" #. 2 #: vdkbuilder/vdkb_nls.cc:70 msgid "_Unit" msgstr "" #. 3 #: vdkbuilder/vdkb_nls.cc:71 msgid "Form" msgstr "" #. 4 #: vdkbuilder/vdkb_nls.cc:72 msgid "Default" msgstr "" #. 5 #: vdkbuilder/vdkb_nls.cc:73 vdkbuilder/vdkb_nls.cc:142 msgid "Scrolled" msgstr "" #. 6 #: vdkbuilder/vdkb_nls.cc:74 msgid "Paned" msgstr "" #. 7 #: vdkbuilder/vdkb_nls.cc:75 msgid "_Open.." msgstr "" #. 8 #: vdkbuilder/vdkb_nls.cc:76 vdkbuilder/vdkb_nls.cc:86 msgid "Project" msgstr "" #. 11 #: vdkbuilder/vdkb_nls.cc:79 msgid "Save All" msgstr "" #. 12 #: vdkbuilder/vdkb_nls.cc:80 msgid "_Quit VDKBuilder" msgstr "" #. 13 #: vdkbuilder/vdkb_nls.cc:81 msgid "_Edit" msgstr "" #. 14 #: vdkbuilder/vdkb_nls.cc:82 msgid "_Search" msgstr "" #. 15 #: vdkbuilder/vdkb_nls.cc:83 msgid "_View" msgstr "" #. 16 #: vdkbuilder/vdkb_nls.cc:84 msgid "View Units" msgstr "" #. 17 #: vdkbuilder/vdkb_nls.cc:85 msgid "View Forms" msgstr "" #. 19 #: vdkbuilder/vdkb_nls.cc:87 msgid "Add to project" msgstr "" #. 20 #: vdkbuilder/vdkb_nls.cc:88 msgid "Remove from project" msgstr "" #. 21 #: vdkbuilder/vdkb_nls.cc:89 msgid "Components" msgstr "" #. 22 #: vdkbuilder/vdkb_nls.cc:90 msgid "_Tools" msgstr "" #. 23 #: vdkbuilder/vdkb_nls.cc:91 msgid "_Help" msgstr "" #. 24 #: vdkbuilder/vdkb_nls.cc:92 msgid "Tutorial" msgstr "" #. 25 #: vdkbuilder/vdkb_nls.cc:93 msgid "About VDK Builder" msgstr "" #. 26 #: vdkbuilder/vdkb_nls.cc:94 msgid "_Make" msgstr "" #. 27 #: vdkbuilder/vdkb_nls.cc:95 msgid "Op_tions" msgstr "" #. 28 #: vdkbuilder/vdkb_nls.cc:96 vdkbuilder/vdkb_nls.cc:109 msgid "Make clean" msgstr "" #. 29 #: vdkbuilder/vdkb_nls.cc:97 msgid "Search" msgstr "" #. 30 #: vdkbuilder/vdkb_nls.cc:98 msgid "Repeat Search" msgstr "" #. 31 #: vdkbuilder/vdkb_nls.cc:99 vdkbuilder/vdkb_nls.cc:431 msgid "Replace" msgstr "" #. 32 #: vdkbuilder/vdkb_nls.cc:100 msgid "Undo" msgstr "" #. 33 #: vdkbuilder/vdkb_nls.cc:101 msgid "Redo" msgstr "" #. 34 #: vdkbuilder/vdkb_nls.cc:102 msgid "Syntax Hilight (F6)" msgstr "" #. 35 #: vdkbuilder/vdkb_nls.cc:103 msgid "Run debugger" msgstr "" #. 36 #: vdkbuilder/vdkb_nls.cc:104 msgid "Set Builder environment" msgstr "" #. 37 #: vdkbuilder/vdkb_nls.cc:105 msgid "Grep" msgstr "" #. 38 #: vdkbuilder/vdkb_nls.cc:106 msgid "Autoconf/Automake" msgstr "" #. 39 #: vdkbuilder/vdkb_nls.cc:107 msgid "Autogen" msgstr "" #. 40 #: vdkbuilder/vdkb_nls.cc:108 msgid "Make" msgstr "" #. 42 #: vdkbuilder/vdkb_nls.cc:110 msgid "Make dist" msgstr "" #. 43 #: vdkbuilder/vdkb_nls.cc:111 msgid "Make distclean" msgstr "" #. 44 #: vdkbuilder/vdkb_nls.cc:112 msgid "VDK Reference Manual" msgstr "" #. 45 #: vdkbuilder/vdkb_nls.cc:113 msgid "XDatabase tools" msgstr "" #. 46 #: vdkbuilder/vdkb_nls.cc:114 msgid "XDB Support" msgstr "" #. 47 #: vdkbuilder/vdkb_nls.cc:115 msgid "Editor short cuts (F1)" msgstr "" #. 48 #: vdkbuilder/vdkb_nls.cc:116 msgid "Reopen" msgstr "" #. 49 #: vdkbuilder/vdkb_nls.cc:117 msgid "Hints editor" msgstr "" #: vdkbuilder/vdkb_nls.cc:125 msgid "New Project" msgstr "" #: vdkbuilder/vdkb_nls.cc:125 msgid "New Unit" msgstr "" #: vdkbuilder/vdkb_nls.cc:125 msgid "New Form" msgstr "" #: vdkbuilder/vdkb_nls.cc:125 msgid "Open project" msgstr "" #: vdkbuilder/vdkb_nls.cc:126 msgid "Open File" msgstr "" #: vdkbuilder/vdkb_nls.cc:126 msgid "Save project" msgstr "" #: vdkbuilder/vdkb_nls.cc:126 msgid "Save File" msgstr "" #: vdkbuilder/vdkb_nls.cc:131 msgid "Toggle unit/form" msgstr "" #: vdkbuilder/vdkb_nls.cc:131 msgid "Run" msgstr "" #: vdkbuilder/vdkb_nls.cc:131 msgid "Cancel selection" msgstr "" #: vdkbuilder/vdkb_nls.cc:132 msgid "Call emacs as external editor" msgstr "" #: vdkbuilder/vdkb_nls.cc:139 msgid "Vert box" msgstr "" #: vdkbuilder/vdkb_nls.cc:139 msgid "Hor box" msgstr "" #: vdkbuilder/vdkb_nls.cc:139 msgid "Frame" msgstr "" #: vdkbuilder/vdkb_nls.cc:140 msgid "Table" msgstr "" #: vdkbuilder/vdkb_nls.cc:140 msgid "Vert paned" msgstr "" #: vdkbuilder/vdkb_nls.cc:140 msgid "Hor paned" msgstr "" #: vdkbuilder/vdkb_nls.cc:141 msgid "Notebook" msgstr "" #: vdkbuilder/vdkb_nls.cc:141 msgid "Handlebox" msgstr "" #: vdkbuilder/vdkb_nls.cc:141 msgid "Toolbar" msgstr "" #: vdkbuilder/vdkb_nls.cc:142 msgid "Menu bar" msgstr "" #: vdkbuilder/vdkb_nls.cc:142 msgid "Vert Radio Button Group" msgstr "" #: vdkbuilder/vdkb_nls.cc:143 msgid "Hor Radio Button Group" msgstr "" #: vdkbuilder/vdkb_nls.cc:143 msgid "Fixed" msgstr "" #: vdkbuilder/vdkb_nls.cc:151 msgid "VDKCustom Button" msgstr "" #: vdkbuilder/vdkb_nls.cc:151 msgid "Spin button" msgstr "" #: vdkbuilder/vdkb_nls.cc:152 msgid "Check button" msgstr "" #: vdkbuilder/vdkb_nls.cc:152 msgid "Radio button" msgstr "" #: vdkbuilder/vdkb_nls.cc:160 msgid "Label" msgstr "" #: vdkbuilder/vdkb_nls.cc:160 msgid "Entry" msgstr "" #: vdkbuilder/vdkb_nls.cc:168 msgid "Canvas" msgstr "" #: vdkbuilder/vdkb_nls.cc:168 msgid "Pixmap" msgstr "" #: vdkbuilder/vdkb_nls.cc:168 msgid "Image" msgstr "" #. 33 #: vdkbuilder/vdkb_nls.cc:168 vdkbuilder/vdkb_nls.cc:506 msgid "Progress bar" msgstr "" #: vdkbuilder/vdkb_nls.cc:169 msgid "Slider" msgstr "" #: vdkbuilder/vdkb_nls.cc:169 msgid "Status bar" msgstr "" #: vdkbuilder/vdkb_nls.cc:169 msgid "Timer" msgstr "" #: vdkbuilder/vdkb_nls.cc:170 msgid "Custom list" msgstr "" #: vdkbuilder/vdkb_nls.cc:170 msgid "Combo box" msgstr "" #: vdkbuilder/vdkb_nls.cc:170 msgid "Custom tree" msgstr "" #: vdkbuilder/vdkb_nls.cc:171 msgid "Hor separator" msgstr "" #: vdkbuilder/vdkb_nls.cc:171 msgid "Vert separator" msgstr "" #: vdkbuilder/vdkb_nls.cc:171 msgid "Grid" msgstr "" #: vdkbuilder/vdkb_nls.cc:172 msgid "Place holder" msgstr "" #: vdkbuilder/vdkb_nls.cc:172 msgid "Tree view" msgstr "" #: vdkbuilder/vdkb_nls.cc:180 msgid "Gnome application bar" msgstr "" #: vdkbuilder/vdkb_nls.cc:180 msgid "Gnome date Edit" msgstr "" #: vdkbuilder/vdkb_nls.cc:181 msgid "Gnome entry" msgstr "" #: vdkbuilder/vdkb_nls.cc:190 msgid "xdb entry" msgstr "" #: vdkbuilder/vdkb_nls.cc:190 msgid "xdb list" msgstr "" #: vdkbuilder/vdkb_nls.cc:190 msgid "xdb check button" msgstr "" #: vdkbuilder/vdkb_nls.cc:191 msgid "xdb memo" msgstr "" #: vdkbuilder/vdkb_nls.cc:199 msgid "Project manager" msgstr "" #: vdkbuilder/vdkb_nls.cc:199 msgid "New project" msgstr "" #: vdkbuilder/vdkb_nls.cc:199 msgid "Add a unit" msgstr "" #: vdkbuilder/vdkb_nls.cc:200 msgid "Remove a unit" msgstr "" #: vdkbuilder/vdkb_nls.cc:200 msgid "Edit unit" msgstr "" #: vdkbuilder/vdkb_nls.cc:200 msgid "Form attributes" msgstr "" #: vdkbuilder/vdkb_nls.cc:201 msgid "Add Member" msgstr "" #: vdkbuilder/vdkb_nls.cc:201 msgid "Declared" msgstr "" #: vdkbuilder/vdkb_nls.cc:201 msgid "Defined" msgstr "" #. 6 7 8 9 for class viewer #: vdkbuilder/vdkb_nls.cc:202 msgid "Update" msgstr "" #: vdkbuilder/vdkb_nls.cc:210 msgid "Quit VDKBuilder ?" msgstr "" #: vdkbuilder/vdkb_nls.cc:210 vdkbuilder/vdkb_nls.cc:454 msgid "No" msgstr "" #: vdkbuilder/vdkb_nls.cc:211 msgid "defaults file missing, aborting.." msgstr "" #: vdkbuilder/vdkb_nls.cc:212 msgid "modified, has to be saved ?" msgstr "" #: vdkbuilder/vdkb_nls.cc:212 msgid "Unknown unit type" msgstr "" #: vdkbuilder/vdkb_nls.cc:213 msgid "unit can't be added" msgstr "" #: vdkbuilder/vdkb_nls.cc:213 msgid "can't be closed" msgstr "" #: vdkbuilder/vdkb_nls.cc:214 msgid "bad reading or unknown project file" msgstr "" #: vdkbuilder/vdkb_nls.cc:215 msgid "incorrect project version" msgstr "" #: vdkbuilder/vdkb_nls.cc:216 msgid "main unit can't be removed" msgstr "" #: vdkbuilder/vdkb_nls.cc:217 msgid "unit already in project" msgstr "" #: vdkbuilder/vdkb_nls.cc:225 msgid "Status: never saved" msgstr "" #: vdkbuilder/vdkb_nls.cc:226 msgid "Status: unsaved" msgstr "" #: vdkbuilder/vdkb_nls.cc:227 msgid "Status: saved" msgstr "" #: vdkbuilder/vdkb_nls.cc:235 msgid "Open a project" msgstr "" #: vdkbuilder/vdkb_nls.cc:236 msgid "Open a file" msgstr "" #: vdkbuilder/vdkb_nls.cc:237 msgid "Add a unit to project" msgstr "" #: vdkbuilder/vdkb_nls.cc:238 msgid "Save project as.." msgstr "" #: vdkbuilder/vdkb_nls.cc:239 msgid "Save file as.." msgstr "" #: vdkbuilder/vdkb_nls.cc:247 msgid "VDKBuilder editor" msgstr "" #: vdkbuilder/vdkb_nls.cc:247 msgid "Modified:" msgstr "" #: vdkbuilder/vdkb_nls.cc:247 msgid "Line:" msgstr "" #. 0 1 2 #: vdkbuilder/vdkb_nls.cc:248 msgid "Toggle unit header/source" msgstr "" #: vdkbuilder/vdkb_nls.cc:248 msgid "Close this page" msgstr "" #: vdkbuilder/vdkb_nls.cc:248 msgid "Save as.." msgstr "" #. 3 4 5 #: vdkbuilder/vdkb_nls.cc:249 msgid "No more undo's" msgstr "" #: vdkbuilder/vdkb_nls.cc:249 msgid "Fontifyng" msgstr "" #: vdkbuilder/vdkb_nls.cc:249 msgid "done" msgstr "" #: vdkbuilder/vdkb_nls.cc:250 msgid "Shows/hides line numbers" msgstr "" #: vdkbuilder/vdkb_nls.cc:250 msgid "Shows/hides messages list" msgstr "" #: vdkbuilder/vdkb_nls.cc:312 msgid "Connects form to selected event" msgstr "" #. 0 #: vdkbuilder/vdkb_nls.cc:313 msgid "Disconnects form to selected event" msgstr "" #. 1 #: vdkbuilder/vdkb_nls.cc:314 #, c-format msgid "Drops a <%s> into %s" msgstr "" #. 2 #: vdkbuilder/vdkb_nls.cc:315 msgid "Duplicated connection" msgstr "" #. 3 #: vdkbuilder/vdkb_nls.cc:316 msgid "Connection not found" msgstr "" #. 4 #: vdkbuilder/vdkb_nls.cc:317 msgid "Duplicated response function" msgstr "" #. 5 #: vdkbuilder/vdkb_nls.cc:318 msgid "Duplicated name" msgstr "" #. 6 #: vdkbuilder/vdkb_nls.cc:319 msgid "Widget name can't be cancelled" msgstr "" #. 7 #: vdkbuilder/vdkb_nls.cc:320 msgid "WI: no object selected" msgstr "" #. 8 #: vdkbuilder/vdkb_nls.cc:321 msgid "Properties" msgstr "" #. 9 #: vdkbuilder/vdkb_nls.cc:322 msgid "Delete signal response" msgstr "" #. 10 #: vdkbuilder/vdkb_nls.cc:323 msgid "Common properties" msgstr "" #. 11 #: vdkbuilder/vdkb_nls.cc:324 msgid "Set name" msgstr "" #. 12 #: vdkbuilder/vdkb_nls.cc:325 msgid "Widget names must follow C++ naming rules" msgstr "" #. 13 #: vdkbuilder/vdkb_nls.cc:326 msgid "Widget state" msgstr "" #. 14 #: vdkbuilder/vdkb_nls.cc:327 msgid "Set color" msgstr "" #. 15 #: vdkbuilder/vdkb_nls.cc:328 msgid "Set font" msgstr "" #. 16 #: vdkbuilder/vdkb_nls.cc:329 msgid "Justification" msgstr "" #. 17 #: vdkbuilder/vdkb_nls.cc:330 msgid "Expand" msgstr "" #. 18 #: vdkbuilder/vdkb_nls.cc:331 msgid "Fill" msgstr "" #. 19 #: vdkbuilder/vdkb_nls.cc:332 msgid "Padding:" msgstr "" #. 20 #: vdkbuilder/vdkb_nls.cc:333 msgid "Repack" msgstr "" #. 21 #: vdkbuilder/vdkb_nls.cc:334 msgid "Box Preview" msgstr "" #. 22 #: vdkbuilder/vdkb_nls.cc:335 msgid "Side" msgstr "" #. 23 #: vdkbuilder/vdkb_nls.cc:336 msgid "Anchor" msgstr "" #. 24 #: vdkbuilder/vdkb_nls.cc:337 msgid "Fill X" msgstr "" #. 25 #: vdkbuilder/vdkb_nls.cc:338 msgid "Fill Y" msgstr "" #. 26 #: vdkbuilder/vdkb_nls.cc:339 msgid "Reconfigure" msgstr "" #. 27 #: vdkbuilder/vdkb_nls.cc:340 msgid "Set tooltip" msgstr "" #. 28 #: vdkbuilder/vdkb_nls.cc:341 msgid "Set tag" msgstr "" #. 29 #: vdkbuilder/vdkb_nls.cc:342 msgid "WI: disabled" msgstr "" #. 30 #: vdkbuilder/vdkb_nls.cc:343 msgid "Signals" msgstr "" #. 31 #: vdkbuilder/vdkb_nls.cc:344 msgid "Form events" msgstr "" #. 32 #: vdkbuilder/vdkb_nls.cc:345 msgid "Class response method" msgstr "" #. 33 #: vdkbuilder/vdkb_nls.cc:346 msgid "Reuse this" msgstr "" #. 34 #: vdkbuilder/vdkb_nls.cc:347 msgid "Restore default" msgstr "" #. 35 #: vdkbuilder/vdkb_nls.cc:348 msgid "Public" msgstr "" #: vdkbuilder/vdkb_nls.cc:357 vdkbuilder/vdkb_widpopmenu.cc:303 msgid "Cut" msgstr "" #. 0 #: vdkbuilder/vdkb_nls.cc:358 vdkbuilder/vdkb_widpopmenu.cc:302 msgid "Copy" msgstr "" #. 1 #: vdkbuilder/vdkb_nls.cc:359 vdkbuilder/vdkb_widpopmenu.cc:304 #: vdkbuilder/vdkb_widpopmenu.cc:400 msgid "Paste" msgstr "" #. 2 #: vdkbuilder/vdkb_nls.cc:360 msgid "Paste others" msgstr "" #. 3 #: vdkbuilder/vdkb_nls.cc:361 msgid "Drop widget" msgstr "" #: vdkbuilder/vdkb_nls.cc:369 msgid "Begin" msgstr "" #: vdkbuilder/vdkb_nls.cc:370 msgid "Runs child process" msgstr "" #: vdkbuilder/vdkb_nls.cc:371 msgid "Kill or Close" msgstr "" #: vdkbuilder/vdkb_nls.cc:372 msgid "Kills child process or close form if no child is running" msgstr "" #: vdkbuilder/vdkb_nls.cc:380 msgid "Project options" msgstr "" #. 0 #: vdkbuilder/vdkb_nls.cc:381 msgid "C compiler" msgstr "" #. 1 #: vdkbuilder/vdkb_nls.cc:382 msgid "C++ compiler" msgstr "" #. 2 #: vdkbuilder/vdkb_nls.cc:383 msgid "Linker" msgstr "" #. 3 #: vdkbuilder/vdkb_nls.cc:384 msgid "Compilation flags" msgstr "" #. 4 #: vdkbuilder/vdkb_nls.cc:385 msgid "Defines" msgstr "" #. 5 #: vdkbuilder/vdkb_nls.cc:386 msgid "Include paths" msgstr "" #. 6 #: vdkbuilder/vdkb_nls.cc:387 msgid "Shared libs" msgstr "" #. 7 #: vdkbuilder/vdkb_nls.cc:388 msgid "Debugger" msgstr "" #. 8 #: vdkbuilder/vdkb_nls.cc:389 msgid "Program args" msgstr "" #. 9 #: vdkbuilder/vdkb_nls.cc:390 msgid "Package version" msgstr "" #. 10 #: vdkbuilder/vdkb_nls.cc:391 msgid "Close and save" msgstr "" #. 12 #: vdkbuilder/vdkb_nls.cc:393 msgid "Package name" msgstr "" #. 13 #: vdkbuilder/vdkb_nls.cc:394 msgid "NLS Support" msgstr "" #: vdkbuilder/vdkb_nls.cc:402 msgid "Find Text" msgstr "" #: vdkbuilder/vdkb_nls.cc:403 msgid "Find" msgstr "" #: vdkbuilder/vdkb_nls.cc:404 msgid "Text to find" msgstr "" #: vdkbuilder/vdkb_nls.cc:405 msgid "Previous search" msgstr "" #: vdkbuilder/vdkb_nls.cc:406 vdkbuilder/vdkb_nls.cc:434 msgid "Options" msgstr "" #: vdkbuilder/vdkb_nls.cc:407 vdkbuilder/vdkb_nls.cc:435 msgid "Case sensitive" msgstr "" #: vdkbuilder/vdkb_nls.cc:408 vdkbuilder/vdkb_nls.cc:436 msgid "Whole words only" msgstr "" #: vdkbuilder/vdkb_nls.cc:409 vdkbuilder/vdkb_nls.cc:437 msgid "Regular expressions" msgstr "" #: vdkbuilder/vdkb_nls.cc:410 vdkbuilder/vdkb_nls.cc:439 msgid "Directions" msgstr "" #: vdkbuilder/vdkb_nls.cc:411 vdkbuilder/vdkb_nls.cc:440 msgid "Forward" msgstr "" #: vdkbuilder/vdkb_nls.cc:412 vdkbuilder/vdkb_nls.cc:441 msgid "Backward" msgstr "" #: vdkbuilder/vdkb_nls.cc:413 vdkbuilder/vdkb_nls.cc:442 msgid "Scope" msgstr "" #: vdkbuilder/vdkb_nls.cc:414 vdkbuilder/vdkb_nls.cc:443 msgid "Global" msgstr "" #: vdkbuilder/vdkb_nls.cc:415 vdkbuilder/vdkb_nls.cc:444 msgid "Selected text" msgstr "" #: vdkbuilder/vdkb_nls.cc:416 vdkbuilder/vdkb_nls.cc:445 msgid "Origin" msgstr "" #: vdkbuilder/vdkb_nls.cc:417 vdkbuilder/vdkb_nls.cc:446 msgid "From cursor" msgstr "" #: vdkbuilder/vdkb_nls.cc:418 vdkbuilder/vdkb_nls.cc:447 msgid "Entire scope" msgstr "" #: vdkbuilder/vdkb_nls.cc:421 msgid "Reached end of buffer" msgstr "" #: vdkbuilder/vdkb_nls.cc:422 msgid "continue from beginning ?" msgstr "" #: vdkbuilder/vdkb_nls.cc:430 msgid "Replace Text" msgstr "" #: vdkbuilder/vdkb_nls.cc:432 msgid "Text to find:" msgstr "" #: vdkbuilder/vdkb_nls.cc:433 msgid "Text to replace:" msgstr "" #: vdkbuilder/vdkb_nls.cc:438 msgid "Prompt on replace" msgstr "" #: vdkbuilder/vdkb_nls.cc:449 msgid "Replace All" msgstr "" #: vdkbuilder/vdkb_nls.cc:451 msgid "Replace occurrence of:" msgstr "" #: vdkbuilder/vdkb_nls.cc:452 msgid "with:" msgstr "" #: vdkbuilder/vdkb_nls.cc:453 msgid "Yes" msgstr "" #: vdkbuilder/vdkb_nls.cc:472 msgid "Set Caption" msgstr "" #. 0 #: vdkbuilder/vdkb_nls.cc:473 msgid "Caption wrap" msgstr "" #. 1 #: vdkbuilder/vdkb_nls.cc:474 msgid "Editable" msgstr "" #. 2 #: vdkbuilder/vdkb_nls.cc:475 msgid "Sorted" msgstr "" #. 3 #: vdkbuilder/vdkb_nls.cc:476 vdkbuilder/vdkb_nls.cc:488 msgid "Hidden" msgstr "" #. 4 #: vdkbuilder/vdkb_nls.cc:477 msgid "CaseSensitive" msgstr "" #. 5 #: vdkbuilder/vdkb_nls.cc:478 msgid "Set Relief" msgstr "" #. 6 #: vdkbuilder/vdkb_nls.cc:479 msgid "Set glyph" msgstr "" #. 7 #: vdkbuilder/vdkb_nls.cc:480 msgid ".xpm -> project dir" msgstr "" #. 8 #: vdkbuilder/vdkb_nls.cc:481 msgid "Copy .xpm to project dir (recommended)" msgstr "" #. 9 #: vdkbuilder/vdkb_nls.cc:482 msgid "Set sel mode" msgstr "" #. 10 #: vdkbuilder/vdkb_nls.cc:483 msgid "Column title: " msgstr "" #. 11 #: vdkbuilder/vdkb_nls.cc:484 msgid "AutoResize" msgstr "" #. 12 #: vdkbuilder/vdkb_nls.cc:485 msgid "Set border shadow" msgstr "" #. 13 #: vdkbuilder/vdkb_nls.cc:486 msgid "ShowTime" msgstr "" #. 14 #: vdkbuilder/vdkb_nls.cc:487 msgid "Format H 24" msgstr "" #. 17 #: vdkbuilder/vdkb_nls.cc:490 msgid "Max chars" msgstr "" #. 18 #: vdkbuilder/vdkb_nls.cc:491 msgid "Set min size" msgstr "" #. 19 #: vdkbuilder/vdkb_nls.cc:492 msgid "Select parent container" msgstr "" #. 20 #: vdkbuilder/vdkb_nls.cc:493 msgid "Remove box" msgstr "" #. 21 #: vdkbuilder/vdkb_nls.cc:494 msgid "Remove fixed" msgstr "" #. 22 #: vdkbuilder/vdkb_nls.cc:495 msgid "Set grid options" msgstr "" #. 23 #: vdkbuilder/vdkb_nls.cc:496 msgid "Have grid" msgstr "" #. 24 #: vdkbuilder/vdkb_nls.cc:497 msgid "V spacing: " msgstr "" #. 25 #: vdkbuilder/vdkb_nls.cc:498 msgid "H spacing: " msgstr "" #. 26 #: vdkbuilder/vdkb_nls.cc:499 msgid "Set form title" msgstr "" #. 27 #: vdkbuilder/vdkb_nls.cc:500 msgid "Set back pixmap" msgstr "" #. 28 #: vdkbuilder/vdkb_nls.cc:501 msgid "Set focus widget" msgstr "" #. 29 #: vdkbuilder/vdkb_nls.cc:502 msgid "Remove frame" msgstr "" #. 31 #: vdkbuilder/vdkb_nls.cc:504 msgid "Label: " msgstr "" #. 32 #: vdkbuilder/vdkb_nls.cc:505 msgid "Set shadow/align" msgstr "" #. 34 #: vdkbuilder/vdkb_nls.cc:507 msgid "History id" msgstr "" #. 35 #: vdkbuilder/vdkb_nls.cc:508 msgid "Max saved" msgstr "" #. 36 #: vdkbuilder/vdkb_nls.cc:509 msgid "Rows visibles" msgstr "" #. 37 #: vdkbuilder/vdkb_nls.cc:510 msgid "Cols visibles" msgstr "" #. 38 #: vdkbuilder/vdkb_nls.cc:511 msgid "Remove handle" msgstr "" #. 39 #: vdkbuilder/vdkb_nls.cc:512 msgid "Set shadow" msgstr "" #. 40 #: vdkbuilder/vdkb_nls.cc:513 msgid "Ckecked" msgstr "" #. 41 #: vdkbuilder/vdkb_nls.cc:514 msgid "Tab label: " msgstr "" #. 42 #: vdkbuilder/vdkb_nls.cc:515 msgid "Scrollable" msgstr "" #. 43 #: vdkbuilder/vdkb_nls.cc:516 msgid "PopUp" msgstr "" #. 44 #: vdkbuilder/vdkb_nls.cc:517 msgid "Minimum value" msgstr "" #. 45 #: vdkbuilder/vdkb_nls.cc:518 msgid "Maximum value" msgstr "" #. 46 #: vdkbuilder/vdkb_nls.cc:519 msgid "Set BlockCount" msgstr "" #. 47 #: vdkbuilder/vdkb_nls.cc:520 msgid "Set bar style" msgstr "" #. 48 #: vdkbuilder/vdkb_nls.cc:521 msgid "Set orientation" msgstr "" #. 49 #: vdkbuilder/vdkb_nls.cc:522 msgid "Activity mode" msgstr "" #. 50 #: vdkbuilder/vdkb_nls.cc:523 msgid "Def constructor" msgstr "" #. 51 #: vdkbuilder/vdkb_nls.cc:524 msgid "Set lower bound" msgstr "" #. 52 #: vdkbuilder/vdkb_nls.cc:525 msgid "Set upper bound" msgstr "" #. 53 #: vdkbuilder/vdkb_nls.cc:526 msgid "Set step" msgstr "" #. 54 #: vdkbuilder/vdkb_nls.cc:527 msgid "Set update policy" msgstr "" #. 55 #: vdkbuilder/vdkb_nls.cc:528 msgid "Set digits" msgstr "" #. 56 #: vdkbuilder/vdkb_nls.cc:529 msgid "Set default value" msgstr "" #. 57 #: vdkbuilder/vdkb_nls.cc:530 msgid "Set icon by data" msgstr "" #. 58 #: vdkbuilder/vdkb_nls.cc:531 msgid "" "Check this if you want set icon by data\n" "(icon must be non NULL)" msgstr "" #. 59 #: vdkbuilder/vdkb_nls.cc:532 msgid "Set display type" msgstr "" #. 60 #: vdkbuilder/vdkb_nls.cc:533 msgid "Set initial position" msgstr "" #. 61 #: vdkbuilder/vdkb_nls.cc:534 msgid "Freeze form size" msgstr "" #. 62 #: vdkbuilder/vdkb_nls.cc:535 msgid "Set minimum size, form can't be shrinked below" msgstr "" #: vdkbuilder/vdkb_notebook.cc:248 msgid "Add a new page" msgstr "" #: vdkbuilder/vdkb_notebook.cc:249 msgid "Remove current page" msgstr "" #: vdkbuilder/vdkb_notebook.cc:251 msgid "Remove notebook" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:92 msgid "VDK Application" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:93 msgid "" "\n" "A VDK typical application\n" "with at least a Main Form,\n" "runs with most window managers" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:94 msgid "Console Application" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:95 msgid "" "\n" "A text based application that\n" "runs from a terminal" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:96 msgid "Gnome Application" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:97 msgid "" "\n" "A VDK application that is\n" "Gnome aware, requires Gnome\n" "libs installed" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:125 msgid "VDKBuilder project wizard" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:128 msgid "Step 1 - Project type" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:152 msgid "VDK application" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:154 msgid "Console application" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:156 msgid "Gnome compliant application" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:170 msgid "Step2 - Project paths" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:177 msgid "" "Project root\n" "directory" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:180 msgid "" "Project name\n" "(no extension)" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:183 msgid "Absolute path" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:199 msgid "_Browse.." msgstr "" #: vdkbuilder/vdkb_PWizard.cc:209 msgid "Author:" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:212 msgid "E-mail:" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:216 msgid "GPL'd source file headers" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:217 msgid "Add GPL license to source file headers" msgstr "" #. prev = new VDKCustomButton(this,(const char**)leftarrow_xpm,_("_Previous step"),16,(GtkPositionType) 1); #: vdkbuilder/vdkb_PWizard.cc:237 msgid "_Previous step" msgstr "" #. next = new VDKCustomButton(this,(const char**)rightarrow_xpm,_("_Next step"),16,(GtkPositionType) 1); #: vdkbuilder/vdkb_PWizard.cc:241 msgid "_Next step" msgstr "" #. finish = new VDKCustomButton(this,(const char**)finish_xpm,_("_Finish"),16,(GtkPositionType) 1); #: vdkbuilder/vdkb_PWizard.cc:245 msgid "_Finish" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:358 #, c-format msgid "" "Project directory: %s\n" "Main source: %s.cc/.h\n" "Main GUI sources: %s_gui.cc/.h\n" "Main Form description: %s.frm\n" "Project description: %s.prj\n" "Project options: %s.prj.opt\n" "Makefile: vdkbMakefile" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:371 #, c-format msgid "" "Project directory: %s\n" "Main sources: %s.cc/.h\n" "Project description: %s.prj\n" "Project options: %s.prj.opt\n" "Makefile: vdkbMakefile" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:396 msgid "Choosing project directory" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:431 #, c-format msgid "" "%s directory not found\n" "create it ?" msgstr "" #: vdkbuilder/vdkb_PWizard.cc:438 #, c-format msgid "failed to create %s directory" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1167 msgid "Properties and signals" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1192 msgid "Declare as public member" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1196 msgid "Click to change widget name" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1208 msgid "Click to change widget color" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1214 msgid "Click to change widget font" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1220 msgid "Restore default font & colors (backgrounds)" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1226 msgid "Select widget state to set colors" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1239 msgid "visible" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1240 msgid "Uncheck to hide the widget" msgstr "" #. enabled #: vdkbuilder/vdkb_objinspect.cc:1243 msgid "enabled" msgstr "" #. enabled->Enabled = false; #: vdkbuilder/vdkb_objinspect.cc:1245 msgid "Uncheck to disable the widget" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1258 msgid "Select packing mode" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1268 msgid "Select padding size" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1276 msgid "Click to repack the widget" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1280 msgid "Toggle preview mode" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1288 msgid "Click to set the widget tip" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1298 msgid "" "Click to set the widget tag\n" "tag is an integer >= 0" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1616 msgid "Write or jump to response method" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1619 msgid "Jump to event handler" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1620 msgid "Connected" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1929 msgid "Refresh widgets tree" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:1937 msgid "docks/undocks properties & signals" msgstr "" #: vdkbuilder/vdkb_objinspect.cc:2130 msgid "Font Selection Dialog" msgstr "" #: vdkbuilder/vdkb_orderdlg.cc:64 msgid "Reordering widgets" msgstr "" #: vdkbuilder/vdkb_orderdlg.cc:67 msgid "Contained widgets" msgstr "" #: vdkbuilder/vdkb_orderdlg.cc:83 msgid "_Insert" msgstr "" #: vdkbuilder/vdkb_orderdlg.cc:85 msgid "Select a widget, new widget will be inserted in that position" msgstr "" #: vdkbuilder/vdkb_paned.cc:150 msgid "Remove paned" msgstr "" #: vdkbuilder/vdkb_prjman.cc:509 msgid "Browse units" msgstr "" #: vdkbuilder/vdkb_prjman.cc:678 #, c-format msgid "Could not open last session %s" msgstr "" #: vdkbuilder/vdkb_prj.cc:217 #, c-format msgid "" "<%s> not found\n" "project dir path <%s> may need to be updated.\n" "Confirm update project dir with:%s" msgstr "" #: vdkbuilder/vdkb_prj.cc:232 #, c-format msgid "" "%s successfully updated\n" "please reload project" msgstr "" #: vdkbuilder/vdkb_prj.cc:235 #, c-format msgid "%s failed to update" msgstr "" #: vdkbuilder/vdkb_prj.cc:246 #, c-format msgid "" "<%s> should be manually updated to\n" "new project dir path <%s>." msgstr "" #: vdkbuilder/vdkb_prj.cc:309 #, c-format msgid "<%s> not found" msgstr "" #: vdkbuilder/vdkb_prjpref.cc:113 #, c-format msgid "" "<%s> does not exists on default paths\n" "please enter a complete pathname for debugger executable" msgstr "" #: vdkbuilder/vdkb_prjpref.cc:213 msgid "If left empty package name will be as project name" msgstr "" #: vdkbuilder/vdkb_prjpref.cc:219 msgid "Check to enable Native Language Support" msgstr "" #: vdkbuilder/vdkb_rbgroup.cc:103 msgid "Remove Radio button group" msgstr "" #: vdkbuilder/vdkb_scrolled.cc:163 msgid "Remove scrolled" msgstr "" #: vdkbuilder/vdkb_spinbutton.cc:355 msgid "Default value" msgstr "" #: vdkbuilder/vdkb_spinbutton.cc:362 msgid "Lower range value" msgstr "" #: vdkbuilder/vdkb_spinbutton.cc:369 msgid "Upper range value" msgstr "" #: vdkbuilder/vdkb_spinbutton.cc:376 msgid "Step increment" msgstr "" #: vdkbuilder/vdkb_spinbutton.cc:383 msgid "Climb rate" msgstr "" #: vdkbuilder/vdkb_spinbutton.cc:390 msgid "Precision" msgstr "" #: vdkbuilder/vdkb_table.cc:191 msgid "Remove table" msgstr "" #: vdkbuilder/vdkb_table.cc:554 msgid "Homogeneous" msgstr "" #: vdkbuilder/vdkb_table.cc:562 msgid "Change spacing" msgstr "" #: vdkbuilder/vdkb_table.cc:566 msgid "Rows & cols spacing:" msgstr "" #. Modified by plm 02/09/2000 #: vdkbuilder/vdkb_tabledlg_gui.cc:34 msgid "Making a table" msgstr "" #: vdkbuilder/vdkb_tabledlg_gui.cc:38 msgid "Enter rows number " msgstr "" #: vdkbuilder/vdkb_text.cc:197 #, c-format msgid "%s: no tip available" msgstr "" #: vdkbuilder/vdkb_text.cc:228 msgid "sorry, redo not yet implemented" msgstr "" #: vdkbuilder/vdkb_text.cc:272 msgid "Changed from disk, reload ?" msgstr "" #: vdkbuilder/vdkb_text.cc:542 #, c-format msgid "Couldn't make %s backup file" msgstr "" #: vdkbuilder/vdkb_textlabel.cc:313 msgid "Set justify" msgstr "" #: vdkbuilder/vdkb_toolbar.cc:284 msgid "Add a toolbar button" msgstr "" #: vdkbuilder/vdkb_toolbar.cc:285 msgid "Remove selected button" msgstr "" #: vdkbuilder/vdkb_toolbar.cc:289 msgid "Remove toolbar" msgstr "" #: vdkbuilder/vdkb_toolbar.cc:958 msgid "Set style" msgstr "" #: vdkbuilder/vdkb_tooldialog_gui.cc:42 msgid "Adding a toolbar button" msgstr "" #: vdkbuilder/vdkb_tooldialog_gui.cc:46 msgid "Pixmap file: " msgstr "" #: vdkbuilder/vdkb_tooldialog_gui.cc:52 msgid "Browse..." msgstr "" #: vdkbuilder/vdkb_tooldialog_gui.cc:59 msgid "Tip: " msgstr "" #: vdkbuilder/vdkb_tooldialog_gui.cc:69 msgid "Text:" msgstr "" #: vdkbuilder/vdkb_widpopmenu.cc:301 vdkbuilder/vdkb_xtDlg.cc:135 msgid "Remove" msgstr "" #: vdkbuilder/vdkb_widpopmenu.cc:305 vdkbuilder/vdkb_widpopmenu.cc:358 msgid "Paste others.." msgstr "" #. not yet implemented #. copywidget = new VDKMenuItem(this,"Copy widget"); #. copywidget->Enabled = false; #: vdkbuilder/vdkb_widpopmenu.cc:355 msgid "Cut widget" msgstr "" #: vdkbuilder/vdkb_widpopmenu.cc:357 msgid "Paste widget" msgstr "" #: vdkbuilder/vdkb_widpopmenu.cc:394 #, c-format msgid "Paste %s::%s" msgstr "" #: vdkbuilder/vdkb_widpopmenu.cc:401 #, c-format msgid "Cut %s::%s" msgstr "" #: vdkbuilder/vdkb_widpopmenu.cc:404 vdkbuilder/vdkb_widpopmenu.cc:407 msgid "none" msgstr "" #: vdkbuilder/vdkb_widclip.cc:196 msgid "" "Uhmmm.., cutting the outermost container you\n" "won't be able to recover it easily. Confirm ?" msgstr "" #: vdkbuilder/vdkb_widclip.cc:278 msgid "Pasting across forms isn't allowed" msgstr "" #. editable->Checked = GetProp(EDITABLE) == True; #. this after (so no signal hang) #. editable->Parent(this); #. SignalConnect(editable,"toggled",&CLASS::OnSetEditable); #: vdkbuilder/vdkb_xcheckbutton.cc:356 vdkbuilder/vdkb_xcustomlist.cc:604 #: vdkbuilder/vdkb_xentry.cc:440 vdkbuilder/vdkb_xmemo.cc:367 msgid "Tables" msgstr "" #: vdkbuilder/vdkb_xcheckbutton.cc:363 vdkbuilder/vdkb_xcustomlist.cc:611 #: vdkbuilder/vdkb_xentry.cc:447 vdkbuilder/vdkb_xmemo.cc:374 msgid "Fields" msgstr "" #: vdkbuilder/vdkb_xcheckbutton.cc:370 vdkbuilder/vdkb_xentry.cc:453 #: vdkbuilder/vdkb_xmemo.cc:380 msgid "Assign to table field" msgstr "" #: vdkbuilder/vdkb_xcheckbutton.cc:374 vdkbuilder/vdkb_xcustomlist.cc:592 #: vdkbuilder/vdkb_xentry.cc:457 vdkbuilder/vdkb_xmemo.cc:384 msgid "Selecting \"nihil\" will reset field assignement" msgstr "" #: vdkbuilder/vdkb_xcheckbutton.cc:484 vdkbuilder/vdkb_xentry.cc:609 #: vdkbuilder/vdkb_xmemo.cc:492 #, c-format msgid "Couldn't assign to field \"%s\" on table %s" msgstr "" #: vdkbuilder/vdkb_xcustomlist.cc:588 msgid "Assign column to table" msgstr "" #: vdkbuilder/vdkb_xmemo.cc:351 msgid "WordWrap" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:94 msgid "VDKXDatabase Dialog" msgstr "" #. tricky way for i18n #: vdkbuilder/vdkb_xtDlg.cc:102 msgid "Tables/Indexes" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:103 msgid "Index Key" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:104 msgid "Field name" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:105 msgid "Type" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:106 msgid "Length" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:107 msgid "Dec" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:129 msgid "Add a table" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:131 msgid "Add a table to xdb" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:138 msgid "Remove table or index" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:142 msgid "Add index" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:145 msgid "Add an index to table" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:149 msgid "Active/inactive" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:152 msgid "" "Setting table \"active\" makes vdkbuilder generate\n" "the code to open the table at run time" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:160 msgid "Close dialog" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:207 msgid "No tables loaded" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:219 vdkbuilder/vdkb_xtDlg.cc:324 msgid "ACTIVE" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:220 vdkbuilder/vdkb_xtDlg.cc:325 msgid "NOT ACTIVE" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:248 #, c-format msgid "%3d tables loaded" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:354 msgid "VDKXTableIndex opening" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:403 #, c-format msgid "Table:%s removed" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:420 #, c-format msgid "Index:%s removed" msgstr "" #: vdkbuilder/vdkb_xtDlg.cc:436 msgid "VDKXTable opening" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:57 msgid "COPY, CUT & PASTE" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:58 msgid "," msgstr "" #: vdkbuilder/vdkb_edhelp.cc:58 msgid "copy selection" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:59 msgid "," msgstr "" #: vdkbuilder/vdkb_edhelp.cc:59 msgid "cut selection" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:60 msgid "," msgstr "" #: vdkbuilder/vdkb_edhelp.cc:60 msgid "paste selection" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:61 msgid "MOVEMENTS" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:62 msgid "," msgstr "" #: vdkbuilder/vdkb_edhelp.cc:62 vdkbuilder/vdkb_edhelp.cc:63 msgid "self explanatory" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:63 msgid "," msgstr "" #: vdkbuilder/vdkb_edhelp.cc:64 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:64 msgid "previous word" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:65 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:65 msgid "next word" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:66 msgid "SELECTION" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:67 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:67 msgid "select and move" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:68 msgid "INDENTING" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:69 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:69 msgid "indent" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:70 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:70 msgid "normal tab" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:71 msgid "OTHERS" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:72 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:72 msgid "word completion" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:73 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:73 msgid "hints" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:74 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:74 msgid "parenthesis matching" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:111 msgid "VDKBuilder editor short cuts" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:118 msgid "Keys" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:118 msgid "Actions" msgstr "" #: vdkbuilder/vdkb_edhint.cc:268 msgid "Hint key already here" msgstr "" #: vdkbuilder/vdkb_edhint.cc:301 msgid "VDKBuilder Hints editor" msgstr "" #: vdkbuilder/vdkb_edhint.cc:305 msgid "Keywords" msgstr "" #: vdkbuilder/vdkb_edhint.cc:327 msgid "Enter hint key here before add an hint" msgstr "" #: vdkbuilder/vdkb_edhint.cc:330 msgid "_Add" msgstr "" #: vdkbuilder/vdkb_edhint.cc:336 msgid "_Remove" msgstr "" #: vdkbuilder/vdkb_edhint.cc:342 msgid "_Change" msgstr "" #: vdkbuilder/vdkb_edhint.cc:348 msgid "_Save and quit" msgstr "" #: vdkbuilder/vdkb_edhint.cc:353 msgid "_Quit" msgstr "" vdkbuilder2-2.4.0/po/it.po0000644000000000000000000023007210052402422010746 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2004-03-05 16:35+0100\n" "PO-Revision-Date: \n" "Last-Translator: Mario Motta \n" "Language-Team: VDK Team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: ENCODING\n" #: vdkbuilder/vdkb.cc:337 #, c-format msgid "" "VDKBuilder has installed:\n" "vdkide.defaults\n" "vdkbrc\n" "plugins.db\n" "tokens.db\n" "into your home: %s/.vdkb2/res" msgstr "" "VDKBuilder ha installato:\n" "vdkide.defaults\n" "vdkbrc\n" "plugins.db\n" "tokens.db\n" "nella tua home: %s/.vdkb2/res" #: vdkbuilder/vdkb.cc:344 #, c-format msgid "" "* WARNING * VDKBuilder couldn't install vdkbuilder resources into your home: " "%s" msgstr "" "* ATTENZIONE * VDKBuilder non ha potuto installare le risorse nella tua home" #: vdkbuilder/vdkb.cc:360 #, c-format msgid "" "Local resource file:%s/.vdkb2/%s not found\n" "revert to default one" msgstr "" "File locale delle risorse:%s/.vdkb/%s non trovato\n" "utilizzo quello di default" #: vdkbuilder/vdkb.cc:403 #, c-format msgid "" "Lock file:%s\n" "detected another instance\n" "sorry i can't run VDKBuilder twice,\n" "either kill running instance or remove lock file" msgstr "" "Rilevato file di blocco:%s\n" "Rilevata un'altra istanza\n" "spiacente ma non posso esguire due volte il VDKBuilder,\n" "termina il processo corrente o rimuovi il file di blocco" #: vdkbuilder/vdkb.cc:454 #, c-format msgid "" "\n" "Could not change to dir:%s\n" "reverting to home" msgstr "" "\n" "Non ho potuto aprire la directory:%s\n" "utilizzo la tua home" #: vdkbuilder/vdkb.cc:473 #, c-format msgid "" "\n" "User file:%s\n" "not found, using default" msgstr "" "\n" "File utente:%s\n" "non trovato, uso quello di default" #. deactivated warning #: vdkbuilder/vdkb.cc:485 msgid "" "\n" "Error during loading plugins.db" msgstr "" "\n" "Errore durante il caricamento di plugins.db" #: vdkbuilder/vdkb.cc:495 msgid "" "\n" "Error during opening plugins" msgstr "" "\n" "Errore in apertura plugins" #: vdkbuilder/vdkb.cc:524 msgid "" "\n" "Error during closing plugins" msgstr "" "\n" "Errore in chiusura plugins" #: vdkbuilder/vdkb.cc:622 msgid "" "User file for completions not found\n" "reverting to default one" msgstr "" "File locale per il completamento delle parole non trovato\n" "utilizzo quello di default" #: vdkbuilder/vdkb.cc:714 msgid "" "Completion list not loaded\n" "completion won't be available" msgstr "" "Lista per il completamento delle parole non caricata\n" "il completamento non potra' essere disponibile" #: vdkbuilder/vdkb.cc:726 msgid "" "Hints tree not loaded\n" "editor hints won't be available" msgstr "" "File dei suggerimenti non caricato,\n" "i suggerimenti non saranno disponibili" #: vdkbuilder/vdkb.cc:771 #, c-format msgid "VDKBuilder maker terminated %s" msgstr "VDKBuilder ha finito %s" #: vdkbuilder/vdkb.cc:772 msgid "with errors or messages" msgstr "con errori e/o messaggi" #: vdkbuilder/vdkb.cc:773 msgid "successfully" msgstr "con successo" #: vdkbuilder/vdkb.cc:782 msgid "Compilation successfull" msgstr "La compilazione ha avuto successo" #: vdkbuilder/vdkb.cc:1281 msgid "Quit VDKBuilder" msgstr "Termina VDKBuilder" #: vdkbuilder/vdkb.cc:1643 msgid "" "Completion list has been changed\n" " Save it ?" msgstr "" "La lista per il completamento delle parole e' cambiata\n" "devo salvarla ?" #: vdkbuilder/vdkb_about.cc:135 msgid "that's all folk !" msgstr "Questo e' tutto gente !" #: vdkbuilder/vdkb_acsupport.cc:80 #, c-format msgid "" "Autoconf/Automake support will\n" "\t* generate (or overwrite):\n" "\t\t - acconfig.h\n" "\n" "\t\t - configure.in\n" "\t\t - Makefile.am\n" "\t* copy all required files into %s\n" "\t* invoke ./autogen.sh\n" "\n" "Do you want apply Automake/Autoconf support ?" msgstr "" "Il supporto Autoconf/Automake\n" " * generera' (o sovrascrivera'):\n" " - acconfig.h\n" " - configure.in\n" " - Makefile.am\n" " * copiera' tutti i file richiesti nella %s\n" " * e chiamera' ./autogen.sh\n" "\n" "Vuoi applicare il supporto Autoconf/Automake ?" #: vdkbuilder/vdkb_acsupport.cc:436 vdkbuilder/vdkb_main_sig.cc:460 #: vdkbuilder/vdkb_main_sig.cc:608 vdkbuilder/vdkb_main_sig.cc:658 msgid "A compilation process is already running" msgstr "Un processo di compilazione e' gia' in atto" #: vdkbuilder/vdkb_cbrowse.cc:98 msgid "VDKBuilder color browser" msgstr "Database dei colori" #: vdkbuilder/vdkb_cbrowse.cc:115 vdkbuilder/vdkb_compodb.cc:438 msgid "_Accept" msgstr "_accetta" #. cancel = new VDKCustomButton(this,(const char**)stop_xpm,_("_Cancel"),16,(GtkPositionType) 1); #: vdkbuilder/vdkb_cbrowse.cc:117 vdkbuilder/vdkb_clipdlg.cc:86 #: vdkbuilder/vdkb_compodb.cc:442 vdkbuilder/vdkb_Env.cc:1189 #: vdkbuilder/vdkb_PWizard.cc:249 vdkbuilder/vdkb_orderdlg.cc:88 msgid "_Cancel" msgstr "_Annulla" #: vdkbuilder/vdkb_cbrowse.cc:126 msgid "Pick a color" msgstr "Clicca su un colore" #: vdkbuilder/vdkb_cbuttdlg.cc:74 msgid "VDKCustomButton Dialog" msgstr "Dialogo VDKCustomButton" #: vdkbuilder/vdkb_cbuttdlg.cc:76 msgid "VDKCustomButton options" msgstr "Opzioni VDKCustomButton" #: vdkbuilder/vdkb_cbuttdlg.cc:88 msgid "pixmapped" msgstr "con pixmap" #: vdkbuilder/vdkb_cbuttdlg.cc:92 msgid "Label position" msgstr "Posiz. etichetta" #: vdkbuilder/vdkb_cbuttdlg.cc:101 msgid "untoggled" msgstr "non toggled" #: vdkbuilder/vdkb_cbuttdlg.cc:103 msgid "toggled" msgstr "toggled" #: vdkbuilder/vdkb_cbuttdlg.cc:109 msgid "normal" msgstr "normale" #: vdkbuilder/vdkb_cbuttdlg.cc:111 msgid "Combo button" msgstr "Bottone combinato" #: vdkbuilder/vdkb_cbuttdlg.cc:115 msgid "Accept" msgstr "Accetta" #: vdkbuilder/vdkb_cbuttdlg.cc:119 msgid "Defaults" msgstr "Defaults" #: vdkbuilder/vdkb_clipdlg.cc:64 msgid "Widgets clipboard" msgstr "Clipboard degli widgets" #: vdkbuilder/vdkb_clipdlg.cc:67 msgid "Widget stack" msgstr "Stack degli widgets" #: vdkbuilder/vdkb_clipdlg.cc:81 msgid "_Paste" msgstr "_Incolla" #: vdkbuilder/vdkb_clipdlg.cc:83 msgid "Select a widget, new widget will be pasted in selected container" msgstr "" "Seleziona un widget, il nuovo widget sara' incollato nel contenitore " "selezionato" #: vdkbuilder/vdkb_clistdlg.cc:35 msgid "VDKCustomList Dialog" msgstr "Dialogo VDKCustomList" #: vdkbuilder/vdkb_clistdlg_gui.cc:39 vdkbuilder/vdkb_tabledlg_gui.cc:47 msgid "Enter columns number" msgstr "Inserire numero colonne" #: vdkbuilder/vdkb_clistdlg_gui.cc:42 msgid "(defaults to 1)" msgstr "(1 di default)" #: vdkbuilder/vdkb_clistdlg_gui.cc:50 vdkbuilder/vdkb_grep.cc:137 #: vdkbuilder/vdkb_nls.cc:210 vdkbuilder/vdkb_nls.cc:419 #: vdkbuilder/vdkb_nls.cc:448 vdkbuilder/vdkb_tabledlg_gui.cc:55 #: vdkbuilder/vdkb_tooldialog_gui.cc:81 msgid "Ok" msgstr "Ok" #. 11 #: vdkbuilder/vdkb_clistdlg_gui.cc:53 vdkbuilder/vdkb_grep.cc:140 #: vdkbuilder/vdkb_nls.cc:211 vdkbuilder/vdkb_nls.cc:392 #: vdkbuilder/vdkb_nls.cc:420 vdkbuilder/vdkb_nls.cc:450 #: vdkbuilder/vdkb_tabledlg_gui.cc:57 vdkbuilder/vdkb_tooldialog_gui.cc:83 msgid "Cancel" msgstr "Annulla" #: vdkbuilder/vdkb_compodb.cc:89 msgid "Compo" msgstr "Componenti" #: vdkbuilder/vdkb_compodb.cc:90 msgid "Library name" msgstr "Nome libreria" #: vdkbuilder/vdkb_compodb.cc:91 msgid "Library path" msgstr "Path della libreria" #: vdkbuilder/vdkb_compodb.cc:92 msgid " Id " msgstr " Id " #: vdkbuilder/vdkb_compodb.cc:93 msgid "Valid" msgstr "Valido" #: vdkbuilder/vdkb_compodb.cc:94 msgid "Component name" msgstr "Nome componente" #: vdkbuilder/vdkb_compodb.cc:95 msgid "Error" msgstr "Errore" #: vdkbuilder/vdkb_compodb.cc:133 msgid "VDKBuilder component database" msgstr "Database componenti di VDKBuilder" #: vdkbuilder/vdkb_compodb.cc:149 vdkbuilder/vdkb_frmlist.cc:141 #: vdkbuilder/vdkb_xtDlg.cc:158 vdkbuilder/vdkb_edhelp.cc:128 msgid "Close" msgstr "Chiude" #: vdkbuilder/vdkb_compodb.cc:152 msgid "Delete" msgstr "Cancella" #: vdkbuilder/vdkb_compodb.cc:154 msgid "Add" msgstr "Aggiunge" #. modifyButton = new VDKCustomButton(this,_("Modify")); #. hbox2->Add(modifyButton,0,1,1,3); #. disabled for now #. modifyButton->Enabled = false; #: vdkbuilder/vdkb_compodb.cc:160 vdkbuilder/vdkb_nls.cc:78 #: vdkbuilder/vdkb_nls.cc:250 msgid "Save" msgstr "Salva" #: vdkbuilder/vdkb_compodb.cc:220 vdkbuilder/vdkb_compodb.cc:332 msgid "invalid " msgstr "Non valido" #: vdkbuilder/vdkb_compodb.cc:262 msgid "" "Component database changed\n" "save it ?" msgstr "" "Il database dei componenti e' cambiato,\n" "devo salvarlo ?" #: vdkbuilder/vdkb_compodb.cc:368 msgid "Could not save component database" msgstr "Non posso salvare il database dei componenti" #: vdkbuilder/vdkb_compodb.cc:407 msgid "Component database dialog" msgstr "Dialogo database dei componenti" #: vdkbuilder/vdkb_compodb.cc:417 msgid "Enter library path:" msgstr "Ins. path della libreria:" #: vdkbuilder/vdkb_compodb.cc:426 msgid "Enter library name:" msgstr "Ins. nome libreria" #: vdkbuilder/vdkb_dlgs.cc:92 msgid "Horizontal size" msgstr "Dimens. orrizontale" #: vdkbuilder/vdkb_dlgs.cc:94 msgid "Vertical size" msgstr "Dimens. verticale" #: vdkbuilder/vdkb_dlgs.cc:96 msgid "_Reset to min size" msgstr "Dimens.orr." #: vdkbuilder/vdkb_editor.cc:310 msgid "saving message log" msgstr "Salvataggio dei messaggi" #: vdkbuilder/vdkb_editor.cc:336 msgid "Message list" msgstr "Lista dei messaggi" #: vdkbuilder/vdkb_editor.cc:389 msgid "docks/undocks messages list" msgstr "Attacca/stacca lista messaggi" #: vdkbuilder/vdkb_editor.cc:391 msgid "Save messages into a log file" msgstr "Salva i messaggi in un file" #: vdkbuilder/vdkb_editor.cc:393 msgid "" "Jumps to error into editor\n" "can be done also double clicking\n" "on selected line" msgstr "" "Salta all'errore nell'editor\n" "puo' essere fatto anche con il doppio click\n" "sulla riga selezionata" #: vdkbuilder/vdkb_editor.cc:667 msgid "no error to go" msgstr "Errore non trovato" #. #. main form setup #. #: vdkbuilder/vdkb_Env.cc:84 msgid "Key words" msgstr "Parole chiave" #: vdkbuilder/vdkb_Env.cc:84 msgid "GTK+/VDK words" msgstr "Parole GTK+/VDK" #: vdkbuilder/vdkb_Env.cc:84 msgid "Preprocessor" msgstr "Preprocessore" #: vdkbuilder/vdkb_Env.cc:85 msgid "Constants" msgstr "Costanti" #: vdkbuilder/vdkb_Env.cc:85 msgid "Comments" msgstr "Commenti" #: vdkbuilder/vdkb_Env.cc:405 msgid "Options changed, save ?" msgstr "" "le opzioni sono cambiate,\n" "devo salvarle ?" #: vdkbuilder/vdkb_Env.cc:619 #, c-format msgid "font:\"%s\" not available or mispelled" msgstr "Font non disponibile o sbagliata" #: vdkbuilder/vdkb_Env.cc:774 #, c-format msgid "" "%s\n" "does not exists\n" "create %s/.vdkb/res/ and\n" "copy %s there\n" "(operation aborted)" msgstr "" "%s\n" "non esiste\n" "creare %s/.vdkbres/ e\n" "copiarvi %s <\n" "(operazione interrotta)" #: vdkbuilder/vdkb_Env.cc:981 msgid "VDKBuilder environment options" msgstr "Opzioni ambiente VDKBuilder" #: vdkbuilder/vdkb_Env.cc:990 msgid "General IDE" msgstr "Generale" #: vdkbuilder/vdkb_Env.cc:993 msgid "" "Default working\n" "directory" msgstr "" "Directory di lavoro\n" "di default" #: vdkbuilder/vdkb_Env.cc:997 msgid "Enter here default start up directory" msgstr "Directory di default" #: vdkbuilder/vdkb_Env.cc:1001 msgid "Hide VDKbuilder on run" msgstr "Nasconde VDKBuilder all'avvio dell'applicazione" #: vdkbuilder/vdkb_Env.cc:1002 msgid "Hides VDKBuilder when running application" msgstr "Nasconde VDKBuilder all'avvio dell'applicazione" #: vdkbuilder/vdkb_Env.cc:1005 msgid "WI resizable" msgstr "WI ridimens." #: vdkbuilder/vdkb_Env.cc:1006 msgid "Makes Widget Inspector resizable" msgstr "Rende l'Widget Inspector ridimensionabile" #: vdkbuilder/vdkb_Env.cc:1011 msgid "WI layout V" msgstr "WI vert." #: vdkbuilder/vdkb_Env.cc:1012 msgid "WI shows a vertical layout" msgstr "WI ha una disposizione verticale" #: vdkbuilder/vdkb_Env.cc:1013 msgid "WI layout H" msgstr "WI orriz." #: vdkbuilder/vdkb_Env.cc:1014 msgid "WI shows an horizontal layout" msgstr "WI mostra una disposizione orizzontale" #: vdkbuilder/vdkb_Env.cc:1017 msgid "Auto save modified files" msgstr "Salva automaticamente i file modificati" #: vdkbuilder/vdkb_Env.cc:1018 msgid "Autosave modified files without asking user" msgstr "I file modificati vengono auto salvati senza preavviso" #: vdkbuilder/vdkb_Env.cc:1020 msgid "Timed saving" msgstr "Salva a tempo" #: vdkbuilder/vdkb_Env.cc:1025 msgid "Timed (in minutes) saving of source files (0 means no timed saving)" msgstr "Salvataggio a tempo (in minuti) dei file sorgenti(0 disabilita)" #: vdkbuilder/vdkb_Env.cc:1027 msgid "Makes source backup files" msgstr "File di salvataggio" #: vdkbuilder/vdkb_Env.cc:1028 msgid "Makes a sources back-up file" msgstr "File di salvataggio" #: vdkbuilder/vdkb_Env.cc:1032 msgid "VDK reference path" msgstr "Manuale di riferimento VDK" #: vdkbuilder/vdkb_Env.cc:1036 msgid "" "Put here where_VDK_reference_is\n" "most likely:/usr/src/vdk-2.x.y/doc/doxy/html" msgstr "" "Inserisci qui dove e' installato il manuale della VDK\n" "(probabilmente in /usr/src/vdk-2.x.y/doc/doxy/html)" #: vdkbuilder/vdkb_Env.cc:1042 msgid "VDK ref browser" msgstr "Browser del manuale" #: vdkbuilder/vdkb_Env.cc:1046 msgid "Put here your path to preferred html browser" msgstr "Inserisci qui la posizione del tuo browser preferito" #: vdkbuilder/vdkb_Env.cc:1051 msgid "VDKMaker - Application modal" msgstr "Applicazione modale" #: vdkbuilder/vdkb_Env.cc:1052 msgid "" "Application runs modal, if unchecked allows\n" "code/design modifications during application run" msgstr "" "L'applicazione viene eseguita come modale,\n" "smarcare per permettere le modifiche del codice\n" "e dell'interfaccia durante l'esecuzione dell'applicazione" #: vdkbuilder/vdkb_Env.cc:1056 msgid "Supports Emacs" msgstr "Supporta emacs" #: vdkbuilder/vdkb_Env.cc:1057 msgid "" "Supports Emacs as external editor\n" "all sources opened in builder editor\n" "will be opened in emacs as well" msgstr "" "Supporta Emacs come editore esterno,\n" "tutti i file sorgenti aperti con l'editore\n" "del VDKBuilder vengono aperti anche in Emacs" #: vdkbuilder/vdkb_Env.cc:1060 msgid "Saves last work session" msgstr "Salva/riprist. sessione" #: vdkbuilder/vdkb_Env.cc:1063 msgid "Use vdkb theme" msgstr "Usa tema vdkb" #: vdkbuilder/vdkb_Env.cc:1064 msgid "" "Allows user to override default and\n" "use a nice \"Air Force Blue\" theme" msgstr "" "Permette di non usare ile tema predefinito,\n" "usa un bel tema \"Air Force Blue\"" #: vdkbuilder/vdkb_Env.cc:1067 msgid "Enables class browser" msgstr "Abilita vista classi" #: vdkbuilder/vdkb_Env.cc:1069 msgid "" "Enabling class browser can slown down VDKBuilder\n" "during loading of very big projects" msgstr "" "Abilitando la vista delle classi si avra' un notevole\n" "rallentamento del VDKBuilder durante il caricamento di grandi progetti" #: vdkbuilder/vdkb_Env.cc:1074 msgid "Sources editor" msgstr "Editore dei sorgenti" #: vdkbuilder/vdkb_Env.cc:1077 msgid "Default source files extension" msgstr "Estensione dei file sorgenti" #: vdkbuilder/vdkb_Env.cc:1080 msgid "Default header files extension" msgstr "Estensione files header" #: vdkbuilder/vdkb_Env.cc:1083 msgid "Default object files extension" msgstr "Esstensione files oggetto" #: vdkbuilder/vdkb_Env.cc:1096 msgid "Fixed to be 'o'" msgstr "Fissato a \"o\"" #: vdkbuilder/vdkb_Env.cc:1101 msgid "Enter here font name or use the Font... button" msgstr "Inserisci il nome della font od usa il bottone Font" #: vdkbuilder/vdkb_Env.cc:1110 msgid "_Background" msgstr "_Sfondo" #: vdkbuilder/vdkb_Env.cc:1111 msgid "Changes background color" msgstr "Cambia colore di sofndo" #: vdkbuilder/vdkb_Env.cc:1120 vdkbuilder/vdkb_Env.cc:1164 msgid "Changes foreground color" msgstr "Cambia colore primo piano" #: vdkbuilder/vdkb_Env.cc:1128 msgid "Minimum width" msgstr "Minima larghezza" #: vdkbuilder/vdkb_Env.cc:1135 msgid "Minimum height" msgstr "Minima altezza" #: vdkbuilder/vdkb_Env.cc:1142 msgid "code auto indent" msgstr "Indent automatica del codice" #: vdkbuilder/vdkb_Env.cc:1145 msgid "shows lines number" msgstr "Mostra numeri di riga" #: vdkbuilder/vdkb_Env.cc:1152 msgid "Editor tabs" msgstr "Tabulatori" #: vdkbuilder/vdkb_Env.cc:1156 msgid "Syntax colors" msgstr "Sintassi colorata" #: vdkbuilder/vdkb_Env.cc:1160 msgid "Changes default font" msgstr "Cambia font della sintassi" #: vdkbuilder/vdkb_Env.cc:1163 msgid "_Color..." msgstr "_Colori..." #: vdkbuilder/vdkb_Env.cc:1170 msgid "Code example" msgstr "Codice di esempio" #: vdkbuilder/vdkb_Env.cc:1177 msgid "tokens" msgstr "Tipi sintatt." #: vdkbuilder/vdkb_Env.cc:1187 msgid "_Close and save" msgstr "_Chiudi e salva" #: vdkbuilder/vdkb_evbox.cc:100 msgid "Embedded boxes shouldn't be deleted" msgstr "Le box inglobate con dovrebbero essere cancellate" #: vdkbuilder/vdkb_evbox.cc:791 msgid "" "Dockable and EventBox properties are\n" "mutually exclusive,\n" "EventBox won't be changed" msgstr "" "Dockable ed EventBox sono proprieta' mutuamente\n" "esclusive, EventBox non sara' cambiata" #: vdkbuilder/vdkb_evbox.cc:816 msgid "" "Dockable and EventBox properties are\n" "mutually exclusive\n" "Dockable won't be changed" msgstr "" "Dockable ed EventBox sono proprieta' mutuamente\n" "esclusive, Dockable non sara' cambiata" #: vdkbuilder/vdkb_evbox.cc:845 msgid "Make it a VDKEventBox" msgstr "Diventa una VDKBox" #: vdkbuilder/vdkb_evbox.cc:852 msgid "Make it a VDKDockerBox" msgstr "Diventa una VDKDockerBox" #. #. checks if is a bin container and #. already contains a widget #. #: vdkbuilder/vdkb_evcontain.cc:93 #, c-format msgid "" "<%s> is a binary container,\n" "binary containers can contain only one widget.\n" "Remove the actual one before adding something else" msgstr "" "<%s> e' un contenitore binario,\n" "i contenitori binari possono contenere un solo widget.\n" "Rimuovere l'attuale widget prima di inserirne un'altro" #. 30 #: vdkbuilder/vdkb_evcontain.cc:320 vdkbuilder/vdkb_nls.cc:503 msgid "Set border width" msgstr "Spessore bordo" #: vdkbuilder/vdkb_form.cc:704 msgid "Sorry, unsupported widget" msgstr "Spiacente, widget non supportato" #: vdkbuilder/vdkb_form.cc:708 msgid "Sorry, unauthorized or unimplemented operation" msgstr "Spiacente, operazione non supportata o non autorizzata" #: vdkbuilder/vdkb_form.cc:713 msgid "Sorry, nested layouts disabled" msgstr "Spiacente, i layout inglobati sono disabilitati" #: vdkbuilder/vdkb_form.cc:717 msgid "Sorry, unknown editing error" msgstr "Spiacente, errore di editing sconosciuto" #: vdkbuilder/vdkb_form.cc:782 #, c-format msgid "Setting %s size" msgstr "Modifica dimens. %s" #: vdkbuilder/vdkb_form.cc:1430 vdkbuilder/vdkb_menuitem.cc:809 #: vdkbuilder/vdkb_pixmap.cc:368 msgid "Enter \"nihil\" to reset assigned pixmap" msgstr "Inserire \"nihil\" per annullare la pixmap assegnata" #: vdkbuilder/vdkb_form.cc:1735 vdkbuilder/vdkb_form.cc:1823 #: vdkbuilder/vdkb_form.cc:2117 #, c-format msgid "Min.size:%d,%d" msgstr "Dim.minime:%d,%d" #: vdkbuilder/vdkb_form.cc:1882 msgid "Copying containers isn't allowed" msgstr "La copia di contenitori non e' permessa" #: vdkbuilder/vdkb_frmlist.cc:123 msgid "VDKBuilder" msgstr "VDKBuilder" #: vdkbuilder/vdkb_frmlist.cc:139 msgid "Edit" msgstr "Modifica" #: vdkbuilder/vdkb_frmlist.cc:163 msgid "Project forms list" msgstr "Lista forms del progetto" #: vdkbuilder/vdkb_grep.cc:91 msgid "VDKBuilder grep" msgstr "Grep VDKBuilder" #: vdkbuilder/vdkb_grep.cc:105 msgid "Text to grep" msgstr "Grep testo :" #: vdkbuilder/vdkb_grep.cc:114 msgid "Files to grep" msgstr "Grep files" #: vdkbuilder/vdkb_grep.cc:125 msgid "Browse.." msgstr "Cerca.." #: vdkbuilder/vdkb_grep.cc:130 msgid "Clear files" msgstr "Azzera files" #: vdkbuilder/vdkb_grep.cc:173 msgid "Select files to grep" msgstr "Seleziona files per grep" #: vdkbuilder/vdkb_maker.cc:214 #, c-format msgid "DONE with result %d, at %s\n" msgstr "FATTO con risultato: %d, a: %s\n" #: vdkbuilder/vdkb_maker.cc:311 msgid "" "A compilation process is running;\n" "kill it before close" msgstr "" "Un processo di compilazione e' gia' in atto;\n" "finirlo prima di chiudere" #: vdkbuilder/vdkb_main_sig.cc:324 msgid "Forking for browser unsuccessfull" msgstr "Fork del browser fallito" #: vdkbuilder/vdkb_main_sig.cc:331 #, c-format msgid "Started browser (pid %d)" msgstr "Lanciato il browser (pid %d)" #: vdkbuilder/vdkb_main_sig.cc:364 #, c-format msgid "Mozilla (pid %d) exited" msgstr "Mozilla (pid %d\") terminato" #: vdkbuilder/vdkb_main_sig.cc:367 #, c-format msgid ", with exit status %d" msgstr ", con stato di uscita %d" #: vdkbuilder/vdkb_main_sig.cc:371 #, c-format msgid ", by signal %d" msgstr ", dal segnale %d" #: vdkbuilder/vdkb_main_sig.cc:681 msgid "Emacs server failed" msgstr "Il server Emacs ha fallito" #: vdkbuilder/vdkb_main_sig.cc:691 msgid "Emacs server already running" msgstr "Il server Emacs e' gia' in esecuzione" #. FIX ME: user warning on false returned #: vdkbuilder/vdkb_main_sig.cc:1053 #, c-format msgid "" "%s done.\n" "May be you want add it to project." msgstr "" "%s fatto,\n" "puoi aggiungerlo al progetto" #: vdkbuilder/vdkb_main_sig.cc:1083 #, c-format msgid "" "project: %s\n" "already exists, overwrite it ?" msgstr "" "Il progetto:%s\n" "gia' esiste, devo sovrascriverlo ?" #: vdkbuilder/vdkb_menu.cc:302 vdkbuilder/vdkb_menubar.cc:238 msgid "Append a menu item" msgstr "Appende un item di menu" #: vdkbuilder/vdkb_menu.cc:303 vdkbuilder/vdkb_menubar.cc:239 msgid "Prepend a menu item" msgstr "Push un item di menu" #: vdkbuilder/vdkb_menu.cc:304 vdkbuilder/vdkb_menubar.cc:240 msgid "Insert a menu item" msgstr "Inserisce un item di menu" #: vdkbuilder/vdkb_menu.cc:309 msgid "Remove menu" msgstr "Elimina menu" #: vdkbuilder/vdkb_menubar.cc:246 msgid "Remove menubar" msgstr "Elimina barra menu" #: vdkbuilder/vdkb_menuitem.cc:323 msgid "Double click to lock/unlock menu" msgstr "Doppio click per bloccare(sbloccare)" #: vdkbuilder/vdkb_menuitem.cc:386 msgid "Add a menu" msgstr "Aggiunge un menu" #: vdkbuilder/vdkb_menuitem.cc:390 msgid "Set properties" msgstr "Proprieta'" #: vdkbuilder/vdkb_menuitem.cc:391 msgid "Remove menu item" msgstr "Elimina item selezionato" #: vdkbuilder/vdkb_nls.cc:57 msgid "Buttons" msgstr "Bottoni" #: vdkbuilder/vdkb_nls.cc:57 msgid "Containers" msgstr "Contenitori" #: vdkbuilder/vdkb_nls.cc:57 msgid "Dialogs" msgstr "Forms di dialogo" #: vdkbuilder/vdkb_nls.cc:58 msgid "Misc" msgstr "Miscellanea" #. 16 #: vdkbuilder/vdkb_nls.cc:58 vdkbuilder/vdkb_nls.cc:160 #: vdkbuilder/vdkb_nls.cc:489 msgid "Text" msgstr "Testo" #: vdkbuilder/vdkb_nls.cc:58 msgid "Plugins" msgstr "Moduli plugin" #: vdkbuilder/vdkb_nls.cc:58 msgid "Gnome widgets" msgstr "Widgets Gnome" #: vdkbuilder/vdkb_nls.cc:59 msgid "Xdb widgets" msgstr "Widgets per xdb" #. 9 #: vdkbuilder/vdkb_nls.cc:67 vdkbuilder/vdkb_nls.cc:77 msgid "File" msgstr "File" #. 0 #: vdkbuilder/vdkb_nls.cc:68 msgid "New.." msgstr "Nuovo" #. 1 #: vdkbuilder/vdkb_nls.cc:69 msgid "_Project" msgstr "_Progetto" #. 2 #: vdkbuilder/vdkb_nls.cc:70 msgid "_Unit" msgstr "_Modulo" #. 3 #: vdkbuilder/vdkb_nls.cc:71 msgid "Form" msgstr "Form" #. 4 #: vdkbuilder/vdkb_nls.cc:72 msgid "Default" msgstr "Default" #. 5 #: vdkbuilder/vdkb_nls.cc:73 vdkbuilder/vdkb_nls.cc:142 msgid "Scrolled" msgstr "Contenitore scorrevole" #. 6 #: vdkbuilder/vdkb_nls.cc:74 msgid "Paned" msgstr "Contenitore a pannelli" #. 7 #: vdkbuilder/vdkb_nls.cc:75 msgid "_Open.." msgstr "_Apri" #. 8 #: vdkbuilder/vdkb_nls.cc:76 vdkbuilder/vdkb_nls.cc:86 msgid "Project" msgstr "Progetto" #. 11 #: vdkbuilder/vdkb_nls.cc:79 msgid "Save All" msgstr "Salva tutto" #. 12 #: vdkbuilder/vdkb_nls.cc:80 msgid "_Quit VDKBuilder" msgstr "_Termina VDKBuilder" #. 13 #: vdkbuilder/vdkb_nls.cc:81 msgid "_Edit" msgstr "M_odifica" #. 14 #: vdkbuilder/vdkb_nls.cc:82 msgid "_Search" msgstr "_Cerca" #. 15 #: vdkbuilder/vdkb_nls.cc:83 msgid "_View" msgstr "_Vista" #. 16 #: vdkbuilder/vdkb_nls.cc:84 msgid "View Units" msgstr "Vista moduli" #. 17 #: vdkbuilder/vdkb_nls.cc:85 msgid "View Forms" msgstr "Vista forms" #. 19 #: vdkbuilder/vdkb_nls.cc:87 msgid "Add to project" msgstr "Aggiungi al progetto" #. 20 #: vdkbuilder/vdkb_nls.cc:88 msgid "Remove from project" msgstr "Rimuovi dal progetto" #. 21 #: vdkbuilder/vdkb_nls.cc:89 msgid "Components" msgstr "Componenti" #. 22 #: vdkbuilder/vdkb_nls.cc:90 msgid "_Tools" msgstr "Utilita'" #. 23 #: vdkbuilder/vdkb_nls.cc:91 msgid "_Help" msgstr "A_iuto" #. 24 #: vdkbuilder/vdkb_nls.cc:92 msgid "Tutorial" msgstr "Tutorial" #. 25 #: vdkbuilder/vdkb_nls.cc:93 msgid "About VDK Builder" msgstr "Info VDKBuilder" #. 26 #: vdkbuilder/vdkb_nls.cc:94 msgid "_Make" msgstr "_Make" #. 27 #: vdkbuilder/vdkb_nls.cc:95 msgid "Op_tions" msgstr "Op_zioni" #. 28 #: vdkbuilder/vdkb_nls.cc:96 vdkbuilder/vdkb_nls.cc:109 msgid "Make clean" msgstr "Make clean" #. 29 #: vdkbuilder/vdkb_nls.cc:97 msgid "Search" msgstr "Cerca" #. 30 #: vdkbuilder/vdkb_nls.cc:98 msgid "Repeat Search" msgstr "Ripeti cerca" #. 31 #: vdkbuilder/vdkb_nls.cc:99 vdkbuilder/vdkb_nls.cc:431 msgid "Replace" msgstr "Sostituisci" #. 32 #: vdkbuilder/vdkb_nls.cc:100 msgid "Undo" msgstr "Disfa" #. 33 #: vdkbuilder/vdkb_nls.cc:101 msgid "Redo" msgstr "Rifai" #. 34 #: vdkbuilder/vdkb_nls.cc:102 msgid "Syntax Hilight (F6)" msgstr "Sintassi colorata (F6)" #. 35 #: vdkbuilder/vdkb_nls.cc:103 msgid "Run debugger" msgstr "Esegui debugger" #. 36 #: vdkbuilder/vdkb_nls.cc:104 msgid "Set Builder environment" msgstr "Opzioni VDKBuilder" #. 37 #: vdkbuilder/vdkb_nls.cc:105 msgid "Grep" msgstr "Grep" #. 38 #: vdkbuilder/vdkb_nls.cc:106 msgid "Autoconf/Automake" msgstr "Autoconf/Automake" #. 39 #: vdkbuilder/vdkb_nls.cc:107 msgid "Autogen" msgstr "Autogen" #. 40 #: vdkbuilder/vdkb_nls.cc:108 msgid "Make" msgstr "Make" #. 42 #: vdkbuilder/vdkb_nls.cc:110 msgid "Make dist" msgstr "Make dist" #. 43 #: vdkbuilder/vdkb_nls.cc:111 msgid "Make distclean" msgstr "Make distclean" #. 44 #: vdkbuilder/vdkb_nls.cc:112 msgid "VDK Reference Manual" msgstr "Manuale di rif. VDK" #. 45 #: vdkbuilder/vdkb_nls.cc:113 msgid "XDatabase tools" msgstr "Strumenti xdb" #. 46 #: vdkbuilder/vdkb_nls.cc:114 msgid "XDB Support" msgstr "Supporto XDB" #. 47 #: vdkbuilder/vdkb_nls.cc:115 msgid "Editor short cuts (F1)" msgstr "Short cut dell'editore (F1)" #. 48 #: vdkbuilder/vdkb_nls.cc:116 msgid "Reopen" msgstr "Riapri" #. 49 #: vdkbuilder/vdkb_nls.cc:117 msgid "Hints editor" msgstr "Editore dei suggerimenti" #: vdkbuilder/vdkb_nls.cc:125 msgid "New Project" msgstr "Nuovo Progetto" #: vdkbuilder/vdkb_nls.cc:125 msgid "New Unit" msgstr "Nuovo modulo" #: vdkbuilder/vdkb_nls.cc:125 msgid "New Form" msgstr "Nuova form" #: vdkbuilder/vdkb_nls.cc:125 msgid "Open project" msgstr "Apri Progetto" #: vdkbuilder/vdkb_nls.cc:126 msgid "Open File" msgstr "Apri file" #: vdkbuilder/vdkb_nls.cc:126 msgid "Save project" msgstr "Salva progetto" #: vdkbuilder/vdkb_nls.cc:126 msgid "Save File" msgstr "Salva File" #: vdkbuilder/vdkb_nls.cc:131 msgid "Toggle unit/form" msgstr "Cambia Modulo-Form" #: vdkbuilder/vdkb_nls.cc:131 msgid "Run" msgstr "Esegui" #: vdkbuilder/vdkb_nls.cc:131 msgid "Cancel selection" msgstr "Annulla selezione" #: vdkbuilder/vdkb_nls.cc:132 msgid "Call emacs as external editor" msgstr "Chiama Emacs come editore esterno" #: vdkbuilder/vdkb_nls.cc:139 msgid "Vert box" msgstr "Box verticale" #: vdkbuilder/vdkb_nls.cc:139 msgid "Hor box" msgstr "Box orizzontale" #: vdkbuilder/vdkb_nls.cc:139 msgid "Frame" msgstr "Riquadro" #: vdkbuilder/vdkb_nls.cc:140 msgid "Table" msgstr "Tabella" #: vdkbuilder/vdkb_nls.cc:140 msgid "Vert paned" msgstr "Pannello verticale" #: vdkbuilder/vdkb_nls.cc:140 msgid "Hor paned" msgstr "Pannello orizzontale" #: vdkbuilder/vdkb_nls.cc:141 msgid "Notebook" msgstr "Agenda" #: vdkbuilder/vdkb_nls.cc:141 msgid "Handlebox" msgstr "Box movibile" #: vdkbuilder/vdkb_nls.cc:141 msgid "Toolbar" msgstr "Barra con bottoni" #: vdkbuilder/vdkb_nls.cc:142 msgid "Menu bar" msgstr "Barra dei menu" #: vdkbuilder/vdkb_nls.cc:142 msgid "Vert Radio Button Group" msgstr "Gruppo bottoni radio verticale" #: vdkbuilder/vdkb_nls.cc:143 msgid "Hor Radio Button Group" msgstr "Gruppo bottoni radio orrizzontale" #: vdkbuilder/vdkb_nls.cc:143 msgid "Fixed" msgstr "Contenitore a geometria fissa" #: vdkbuilder/vdkb_nls.cc:151 msgid "VDKCustom Button" msgstr "Bottone personalizzabile" #: vdkbuilder/vdkb_nls.cc:151 msgid "Spin button" msgstr "Bottone spin" #: vdkbuilder/vdkb_nls.cc:152 msgid "Check button" msgstr "Bottone marcato" #: vdkbuilder/vdkb_nls.cc:152 msgid "Radio button" msgstr "Bottone radio" #: vdkbuilder/vdkb_nls.cc:160 msgid "Label" msgstr "Etichetta" #: vdkbuilder/vdkb_nls.cc:160 msgid "Entry" msgstr "Campo di input" #: vdkbuilder/vdkb_nls.cc:168 msgid "Canvas" msgstr "Disegno" #: vdkbuilder/vdkb_nls.cc:168 msgid "Pixmap" msgstr "Pixmap" #: vdkbuilder/vdkb_nls.cc:168 msgid "Image" msgstr "Immagine" #. 33 #: vdkbuilder/vdkb_nls.cc:168 vdkbuilder/vdkb_nls.cc:506 msgid "Progress bar" msgstr "Barra progressiva" #: vdkbuilder/vdkb_nls.cc:169 msgid "Slider" msgstr "Barra scorrevole" #: vdkbuilder/vdkb_nls.cc:169 msgid "Status bar" msgstr "Barra di stato" #: vdkbuilder/vdkb_nls.cc:169 msgid "Timer" msgstr "Temporizzatore" #: vdkbuilder/vdkb_nls.cc:170 msgid "Custom list" msgstr "Lista" #: vdkbuilder/vdkb_nls.cc:170 msgid "Combo box" msgstr "Lista combinata" #: vdkbuilder/vdkb_nls.cc:170 msgid "Custom tree" msgstr "Lista ad albero" #: vdkbuilder/vdkb_nls.cc:171 msgid "Hor separator" msgstr "Separatore orizzontale" #: vdkbuilder/vdkb_nls.cc:171 msgid "Vert separator" msgstr "Separatore verticale" #: vdkbuilder/vdkb_nls.cc:171 msgid "Grid" msgstr "Griglia" #: vdkbuilder/vdkb_nls.cc:172 msgid "Place holder" msgstr "Segnaposto" #: vdkbuilder/vdkb_nls.cc:172 msgid "Tree view" msgstr "Vista ad albero" #: vdkbuilder/vdkb_nls.cc:180 msgid "Gnome application bar" msgstr "Barra per Gnome" #: vdkbuilder/vdkb_nls.cc:180 msgid "Gnome date Edit" msgstr "Campo data gnome" #: vdkbuilder/vdkb_nls.cc:181 msgid "Gnome entry" msgstr "Campo di input gnome" #: vdkbuilder/vdkb_nls.cc:190 msgid "xdb entry" msgstr "Campo di input xdb" #: vdkbuilder/vdkb_nls.cc:190 msgid "xdb list" msgstr "Lista per xdb" #: vdkbuilder/vdkb_nls.cc:190 msgid "xdb check button" msgstr "Bottone marcato per xdb" #: vdkbuilder/vdkb_nls.cc:191 msgid "xdb memo" msgstr "Campo memo" #: vdkbuilder/vdkb_nls.cc:199 msgid "Project manager" msgstr "Gestore Progetti" #: vdkbuilder/vdkb_nls.cc:199 msgid "New project" msgstr "Nuovo Progetto" #: vdkbuilder/vdkb_nls.cc:199 msgid "Add a unit" msgstr "Aggiunge un modulo" #: vdkbuilder/vdkb_nls.cc:200 msgid "Remove a unit" msgstr "Elimina un modulo" #: vdkbuilder/vdkb_nls.cc:200 msgid "Edit unit" msgstr "Modifica il modulo" #: vdkbuilder/vdkb_nls.cc:200 msgid "Form attributes" msgstr "Attributi della form" #: vdkbuilder/vdkb_nls.cc:201 msgid "Add Member" msgstr "Agg. un membro" #: vdkbuilder/vdkb_nls.cc:201 msgid "Declared" msgstr "Dichiarato" #: vdkbuilder/vdkb_nls.cc:201 msgid "Defined" msgstr "Definito" #. 6 7 8 9 for class viewer #: vdkbuilder/vdkb_nls.cc:202 msgid "Update" msgstr "Aggiorna" #: vdkbuilder/vdkb_nls.cc:210 msgid "Quit VDKBuilder ?" msgstr "Termina VDKBuilder ?" #: vdkbuilder/vdkb_nls.cc:210 vdkbuilder/vdkb_nls.cc:454 msgid "No" msgstr "No" #: vdkbuilder/vdkb_nls.cc:211 msgid "defaults file missing, aborting.." msgstr "File di default mancante, programma abortito" #: vdkbuilder/vdkb_nls.cc:212 msgid "modified, has to be saved ?" msgstr "e' stato modificato, devo salvarlo ?" #: vdkbuilder/vdkb_nls.cc:212 msgid "Unknown unit type" msgstr "Modulo sconosciuto" #: vdkbuilder/vdkb_nls.cc:213 msgid "unit can't be added" msgstr "Il modulo non puo' essere aggiunto" #: vdkbuilder/vdkb_nls.cc:213 msgid "can't be closed" msgstr "Non puo' essere chiuso" #: vdkbuilder/vdkb_nls.cc:214 msgid "bad reading or unknown project file" msgstr "Errore in lettura o file di progetto sconosciuto" #: vdkbuilder/vdkb_nls.cc:215 msgid "incorrect project version" msgstr "La versione del progetto non e' corretta" #: vdkbuilder/vdkb_nls.cc:216 msgid "main unit can't be removed" msgstr "Il modulo principale non puo' essere rimosso" #: vdkbuilder/vdkb_nls.cc:217 msgid "unit already in project" msgstr "Il modulo e' gia' presente nel progetto" #: vdkbuilder/vdkb_nls.cc:225 msgid "Status: never saved" msgstr "Stato: mai salvato" #: vdkbuilder/vdkb_nls.cc:226 msgid "Status: unsaved" msgstr "Stato: non salvato" #: vdkbuilder/vdkb_nls.cc:227 msgid "Status: saved" msgstr "Stato: salvato" #: vdkbuilder/vdkb_nls.cc:235 msgid "Open a project" msgstr "Apri un progetto" #: vdkbuilder/vdkb_nls.cc:236 msgid "Open a file" msgstr "Apri un file" #: vdkbuilder/vdkb_nls.cc:237 msgid "Add a unit to project" msgstr "Aggiungi un modulo al progetto" #: vdkbuilder/vdkb_nls.cc:238 msgid "Save project as.." msgstr "Salva progetto con nome.." #: vdkbuilder/vdkb_nls.cc:239 msgid "Save file as.." msgstr "Salva il file come..." #: vdkbuilder/vdkb_nls.cc:247 msgid "VDKBuilder editor" msgstr "Editore di VDKBuilder" #: vdkbuilder/vdkb_nls.cc:247 msgid "Modified:" msgstr "Modificato:" #: vdkbuilder/vdkb_nls.cc:247 msgid "Line:" msgstr "Riga:" #. 0 1 2 #: vdkbuilder/vdkb_nls.cc:248 msgid "Toggle unit header/source" msgstr "Cambia header/source" #: vdkbuilder/vdkb_nls.cc:248 msgid "Close this page" msgstr "Chiudi questa pagina" #: vdkbuilder/vdkb_nls.cc:248 msgid "Save as.." msgstr "Salva come..." #. 3 4 5 #: vdkbuilder/vdkb_nls.cc:249 msgid "No more undo's" msgstr "Nulla da disfare" #: vdkbuilder/vdkb_nls.cc:249 msgid "Fontifyng" msgstr "Sintassi colorata in corso..." #: vdkbuilder/vdkb_nls.cc:249 msgid "done" msgstr "fatto" #: vdkbuilder/vdkb_nls.cc:250 msgid "Shows/hides line numbers" msgstr "Mostra/nasconde numeri di riga" #: vdkbuilder/vdkb_nls.cc:250 msgid "Shows/hides messages list" msgstr "Mostra/nasconde lista messaggi" #: vdkbuilder/vdkb_nls.cc:312 msgid "Connects form to selected event" msgstr "Connetti la form all'evento selezionato" #. 0 #: vdkbuilder/vdkb_nls.cc:313 msgid "Disconnects form to selected event" msgstr "Disconnetti la form dall'evento selezionato" #. 1 #: vdkbuilder/vdkb_nls.cc:314 #, c-format msgid "Drops a <%s> into %s" msgstr "Inserisci un <%s> in %s" #. 2 #: vdkbuilder/vdkb_nls.cc:315 msgid "Duplicated connection" msgstr "Connessione doppia" #. 3 #: vdkbuilder/vdkb_nls.cc:316 msgid "Connection not found" msgstr "Connessione non trovata" #. 4 #: vdkbuilder/vdkb_nls.cc:317 msgid "Duplicated response function" msgstr "Metodo di risposta duplicato" #. 5 #: vdkbuilder/vdkb_nls.cc:318 msgid "Duplicated name" msgstr "Nome duplicato" #. 6 #: vdkbuilder/vdkb_nls.cc:319 msgid "Widget name can't be cancelled" msgstr "Il nome dell'widget non si puo' cancellare" #. 7 #: vdkbuilder/vdkb_nls.cc:320 msgid "WI: no object selected" msgstr "WI: nessun widget selezionato" #. 8 #: vdkbuilder/vdkb_nls.cc:321 msgid "Properties" msgstr "Proprieta'" #. 9 #: vdkbuilder/vdkb_nls.cc:322 msgid "Delete signal response" msgstr "Cancella risposta al segnale" #. 10 #: vdkbuilder/vdkb_nls.cc:323 msgid "Common properties" msgstr "Proprieta' comuni" #. 11 #: vdkbuilder/vdkb_nls.cc:324 msgid "Set name" msgstr "Nome widget" #. 12 #: vdkbuilder/vdkb_nls.cc:325 msgid "Widget names must follow C++ naming rules" msgstr "I nome degli widget devono seguire le regole del C++" #. 13 #: vdkbuilder/vdkb_nls.cc:326 msgid "Widget state" msgstr "Stato dell'widget" #. 14 #: vdkbuilder/vdkb_nls.cc:327 msgid "Set color" msgstr "Colore" #. 15 #: vdkbuilder/vdkb_nls.cc:328 msgid "Set font" msgstr "Cambia Carattere" #. 16 #: vdkbuilder/vdkb_nls.cc:329 msgid "Justification" msgstr "Allineamento" #. 17 #: vdkbuilder/vdkb_nls.cc:330 msgid "Expand" msgstr "Espande" #. 18 #: vdkbuilder/vdkb_nls.cc:331 msgid "Fill" msgstr "Riempe" #. 19 #: vdkbuilder/vdkb_nls.cc:332 msgid "Padding:" msgstr "Cornice" #. 20 #: vdkbuilder/vdkb_nls.cc:333 msgid "Repack" msgstr "Reimposta" #. 21 #: vdkbuilder/vdkb_nls.cc:334 msgid "Box Preview" msgstr "Anteprima box" #. 22 #: vdkbuilder/vdkb_nls.cc:335 msgid "Side" msgstr "Lato" #. 23 #: vdkbuilder/vdkb_nls.cc:336 msgid "Anchor" msgstr "Ancoraggio" #. 24 #: vdkbuilder/vdkb_nls.cc:337 msgid "Fill X" msgstr "Riempe X" #. 25 #: vdkbuilder/vdkb_nls.cc:338 msgid "Fill Y" msgstr "Riempe Y" #. 26 #: vdkbuilder/vdkb_nls.cc:339 msgid "Reconfigure" msgstr "Riconfigura" #. 27 #: vdkbuilder/vdkb_nls.cc:340 msgid "Set tooltip" msgstr "Suggerimento widget" #. 28 #: vdkbuilder/vdkb_nls.cc:341 msgid "Set tag" msgstr "Etichetta" #. 29 #: vdkbuilder/vdkb_nls.cc:342 msgid "WI: disabled" msgstr "WI: disabilitato" #. 30 #: vdkbuilder/vdkb_nls.cc:343 msgid "Signals" msgstr "Segnali" #. 31 #: vdkbuilder/vdkb_nls.cc:344 msgid "Form events" msgstr "Eventi form" #. 32 #: vdkbuilder/vdkb_nls.cc:345 msgid "Class response method" msgstr "Metodo di risposta ai segnali" #. 33 #: vdkbuilder/vdkb_nls.cc:346 msgid "Reuse this" msgstr "Riusa questo" #. 34 #: vdkbuilder/vdkb_nls.cc:347 msgid "Restore default" msgstr "Riprist. default" #. 35 #: vdkbuilder/vdkb_nls.cc:348 msgid "Public" msgstr "Public" #: vdkbuilder/vdkb_nls.cc:357 vdkbuilder/vdkb_widpopmenu.cc:303 msgid "Cut" msgstr "Taglia" #. 0 #: vdkbuilder/vdkb_nls.cc:358 vdkbuilder/vdkb_widpopmenu.cc:302 msgid "Copy" msgstr "Copia" #. 1 #: vdkbuilder/vdkb_nls.cc:359 vdkbuilder/vdkb_widpopmenu.cc:304 #: vdkbuilder/vdkb_widpopmenu.cc:400 msgid "Paste" msgstr "Incolla" #. 2 #: vdkbuilder/vdkb_nls.cc:360 msgid "Paste others" msgstr "Copia..." #. 3 #: vdkbuilder/vdkb_nls.cc:361 msgid "Drop widget" msgstr "Inser. widget" #: vdkbuilder/vdkb_nls.cc:369 msgid "Begin" msgstr "Inizia" #: vdkbuilder/vdkb_nls.cc:370 msgid "Runs child process" msgstr "Esegue il processo figlio" #: vdkbuilder/vdkb_nls.cc:371 msgid "Kill or Close" msgstr "Termina/Chiude" #: vdkbuilder/vdkb_nls.cc:372 msgid "Kills child process or close form if no child is running" msgstr "" "Termina il processo figlio o chiude la form se non vi sono processi in atto" #: vdkbuilder/vdkb_nls.cc:380 msgid "Project options" msgstr "Opzioni del progetto" #. 0 #: vdkbuilder/vdkb_nls.cc:381 msgid "C compiler" msgstr "Compilatore C" #. 1 #: vdkbuilder/vdkb_nls.cc:382 msgid "C++ compiler" msgstr "Compilatore C++" #. 2 #: vdkbuilder/vdkb_nls.cc:383 msgid "Linker" msgstr "Linker:" #. 3 #: vdkbuilder/vdkb_nls.cc:384 msgid "Compilation flags" msgstr "Opzioni di compilazione" #. 4 #: vdkbuilder/vdkb_nls.cc:385 msgid "Defines" msgstr "Costanti simboliche" #. 5 #: vdkbuilder/vdkb_nls.cc:386 msgid "Include paths" msgstr "Directories di include" #. 6 #: vdkbuilder/vdkb_nls.cc:387 msgid "Shared libs" msgstr "Librerie shared" #. 7 #: vdkbuilder/vdkb_nls.cc:388 msgid "Debugger" msgstr "Debugger" #. 8 #: vdkbuilder/vdkb_nls.cc:389 msgid "Program args" msgstr "Argomenti del programma" #. 9 #: vdkbuilder/vdkb_nls.cc:390 msgid "Package version" msgstr "Versione del package" #. 10 #: vdkbuilder/vdkb_nls.cc:391 msgid "Close and save" msgstr "Chiudi e salva" #. 12 #: vdkbuilder/vdkb_nls.cc:393 msgid "Package name" msgstr "Nome del package" #. 13 #: vdkbuilder/vdkb_nls.cc:394 msgid "NLS Support" msgstr "Supporto NLS" #: vdkbuilder/vdkb_nls.cc:402 msgid "Find Text" msgstr "Trova testo" #: vdkbuilder/vdkb_nls.cc:403 msgid "Find" msgstr "Trova" #: vdkbuilder/vdkb_nls.cc:404 msgid "Text to find" msgstr "Testo da trovare" #: vdkbuilder/vdkb_nls.cc:405 msgid "Previous search" msgstr "Ricerca preced." #: vdkbuilder/vdkb_nls.cc:406 vdkbuilder/vdkb_nls.cc:434 msgid "Options" msgstr "Opzioni" #: vdkbuilder/vdkb_nls.cc:407 vdkbuilder/vdkb_nls.cc:435 msgid "Case sensitive" msgstr "Maiusc./Minusc." #: vdkbuilder/vdkb_nls.cc:408 vdkbuilder/vdkb_nls.cc:436 msgid "Whole words only" msgstr "Solo parole intere" #: vdkbuilder/vdkb_nls.cc:409 vdkbuilder/vdkb_nls.cc:437 msgid "Regular expressions" msgstr "Espr. regolari" #: vdkbuilder/vdkb_nls.cc:410 vdkbuilder/vdkb_nls.cc:439 msgid "Directions" msgstr "Direzioni" #: vdkbuilder/vdkb_nls.cc:411 vdkbuilder/vdkb_nls.cc:440 msgid "Forward" msgstr "Avanti" #: vdkbuilder/vdkb_nls.cc:412 vdkbuilder/vdkb_nls.cc:441 msgid "Backward" msgstr "Indietro" #: vdkbuilder/vdkb_nls.cc:413 vdkbuilder/vdkb_nls.cc:442 msgid "Scope" msgstr "Contesto" #: vdkbuilder/vdkb_nls.cc:414 vdkbuilder/vdkb_nls.cc:443 msgid "Global" msgstr "Globale" #: vdkbuilder/vdkb_nls.cc:415 vdkbuilder/vdkb_nls.cc:444 msgid "Selected text" msgstr "Testo selezionato" #: vdkbuilder/vdkb_nls.cc:416 vdkbuilder/vdkb_nls.cc:445 msgid "Origin" msgstr "Origine" #: vdkbuilder/vdkb_nls.cc:417 vdkbuilder/vdkb_nls.cc:446 msgid "From cursor" msgstr "Dal cursore" #: vdkbuilder/vdkb_nls.cc:418 vdkbuilder/vdkb_nls.cc:447 msgid "Entire scope" msgstr "Intero contesto" #: vdkbuilder/vdkb_nls.cc:421 msgid "Reached end of buffer" msgstr "Raggiunta fine buffer" #: vdkbuilder/vdkb_nls.cc:422 msgid "continue from beginning ?" msgstr "Continuo dall'inizio ?" #: vdkbuilder/vdkb_nls.cc:430 msgid "Replace Text" msgstr "Sostit.testo" #: vdkbuilder/vdkb_nls.cc:432 msgid "Text to find:" msgstr "Testo da trovare:" #: vdkbuilder/vdkb_nls.cc:433 msgid "Text to replace:" msgstr "Testo da sost.:" #: vdkbuilder/vdkb_nls.cc:438 msgid "Prompt on replace" msgstr "Avverti prima di sot." #: vdkbuilder/vdkb_nls.cc:449 msgid "Replace All" msgstr "Sost. tutto" #: vdkbuilder/vdkb_nls.cc:451 msgid "Replace occurrence of:" msgstr "Sostitusci:" #: vdkbuilder/vdkb_nls.cc:452 msgid "with:" msgstr "con:" #: vdkbuilder/vdkb_nls.cc:453 msgid "Yes" msgstr "Si" #: vdkbuilder/vdkb_nls.cc:472 msgid "Set Caption" msgstr "Titolo" #. 0 #: vdkbuilder/vdkb_nls.cc:473 msgid "Caption wrap" msgstr "Wrap titolo" #. 1 #: vdkbuilder/vdkb_nls.cc:474 msgid "Editable" msgstr "Modificabile" #. 2 #: vdkbuilder/vdkb_nls.cc:475 msgid "Sorted" msgstr "Ordinato" #. 3 #: vdkbuilder/vdkb_nls.cc:476 vdkbuilder/vdkb_nls.cc:488 msgid "Hidden" msgstr "Nascosto" #. 4 #: vdkbuilder/vdkb_nls.cc:477 msgid "CaseSensitive" msgstr "Maiusc./Minusc." #. 5 #: vdkbuilder/vdkb_nls.cc:478 msgid "Set Relief" msgstr "Rilievo" #. 6 #: vdkbuilder/vdkb_nls.cc:479 msgid "Set glyph" msgstr "Icona" #. 7 #: vdkbuilder/vdkb_nls.cc:480 msgid ".xpm -> project dir" msgstr ".xpm -> dir di progetto" #. 8 #: vdkbuilder/vdkb_nls.cc:481 msgid "Copy .xpm to project dir (recommended)" msgstr "Copia .xpm nella dir. di progetto (consigliato)" #. 9 #: vdkbuilder/vdkb_nls.cc:482 msgid "Set sel mode" msgstr "Modo di selez." #. 10 #: vdkbuilder/vdkb_nls.cc:483 msgid "Column title: " msgstr "Titolo colonna:" #. 11 #: vdkbuilder/vdkb_nls.cc:484 msgid "AutoResize" msgstr "Auto dimens." #. 12 #: vdkbuilder/vdkb_nls.cc:485 msgid "Set border shadow" msgstr "Ombregg. bordo" #. 13 #: vdkbuilder/vdkb_nls.cc:486 msgid "ShowTime" msgstr "Mostra orario" #. 14 #: vdkbuilder/vdkb_nls.cc:487 msgid "Format H 24" msgstr "Formato h 24" #. 17 #: vdkbuilder/vdkb_nls.cc:490 msgid "Max chars" msgstr "Car. max." #. 18 #: vdkbuilder/vdkb_nls.cc:491 msgid "Set min size" msgstr "Dimens.min." #. 19 #: vdkbuilder/vdkb_nls.cc:492 msgid "Select parent container" msgstr "Seleziona contenitore padre" #. 20 #: vdkbuilder/vdkb_nls.cc:493 msgid "Remove box" msgstr "Elimina box" #. 21 #: vdkbuilder/vdkb_nls.cc:494 msgid "Remove fixed" msgstr "Elimina fixex" #. 22 #: vdkbuilder/vdkb_nls.cc:495 msgid "Set grid options" msgstr "Opzioni griglia" #. 23 #: vdkbuilder/vdkb_nls.cc:496 msgid "Have grid" msgstr "Griglia" #. 24 #: vdkbuilder/vdkb_nls.cc:497 msgid "V spacing: " msgstr "Spaziatura V" #. 25 #: vdkbuilder/vdkb_nls.cc:498 msgid "H spacing: " msgstr "SpaziaturaH" #. 26 #: vdkbuilder/vdkb_nls.cc:499 msgid "Set form title" msgstr "Titolo della Form" #. 27 #: vdkbuilder/vdkb_nls.cc:500 msgid "Set back pixmap" msgstr "Pixmap di sfondo" #. 28 #: vdkbuilder/vdkb_nls.cc:501 msgid "Set focus widget" msgstr "Widget attivo" #. 29 #: vdkbuilder/vdkb_nls.cc:502 msgid "Remove frame" msgstr "Elimina frame" #. 31 #: vdkbuilder/vdkb_nls.cc:504 msgid "Label: " msgstr "Etichetta:" #. 32 #: vdkbuilder/vdkb_nls.cc:505 msgid "Set shadow/align" msgstr "Ombra/allineam." #. 34 #: vdkbuilder/vdkb_nls.cc:507 msgid "History id" msgstr "Id storico" #. 35 #: vdkbuilder/vdkb_nls.cc:508 msgid "Max saved" msgstr "Salva max." #. 36 #: vdkbuilder/vdkb_nls.cc:509 msgid "Rows visibles" msgstr "Righe visibili" #. 37 #: vdkbuilder/vdkb_nls.cc:510 msgid "Cols visibles" msgstr "Col. visibili" #. 38 #: vdkbuilder/vdkb_nls.cc:511 msgid "Remove handle" msgstr "Elimina handle" #. 39 #: vdkbuilder/vdkb_nls.cc:512 msgid "Set shadow" msgstr "Modifica ombregg." #. 40 #: vdkbuilder/vdkb_nls.cc:513 msgid "Ckecked" msgstr "Marcato" #. 41 #: vdkbuilder/vdkb_nls.cc:514 msgid "Tab label: " msgstr "Etichetta tab:" #. 42 #: vdkbuilder/vdkb_nls.cc:515 msgid "Scrollable" msgstr "Scorrevole" #. 43 #: vdkbuilder/vdkb_nls.cc:516 msgid "PopUp" msgstr "Pop up" #. 44 #: vdkbuilder/vdkb_nls.cc:517 msgid "Minimum value" msgstr "Valore minimo" #. 45 #: vdkbuilder/vdkb_nls.cc:518 msgid "Maximum value" msgstr "Valore massimo" #. 46 #: vdkbuilder/vdkb_nls.cc:519 msgid "Set BlockCount" msgstr "Numero blocchi" #. 47 #: vdkbuilder/vdkb_nls.cc:520 msgid "Set bar style" msgstr "Stile della barra" #. 48 #: vdkbuilder/vdkb_nls.cc:521 msgid "Set orientation" msgstr "Orientamento" #. 49 #: vdkbuilder/vdkb_nls.cc:522 msgid "Activity mode" msgstr "Modo activity" #. 50 #: vdkbuilder/vdkb_nls.cc:523 msgid "Def constructor" msgstr "Def. costruttore" #. 51 #: vdkbuilder/vdkb_nls.cc:524 msgid "Set lower bound" msgstr "Limite inferiore" #. 52 #: vdkbuilder/vdkb_nls.cc:525 msgid "Set upper bound" msgstr "Limite super." #. 53 #: vdkbuilder/vdkb_nls.cc:526 msgid "Set step" msgstr "Incremento" #. 54 #: vdkbuilder/vdkb_nls.cc:527 msgid "Set update policy" msgstr "Modo di aggiorn." #. 55 #: vdkbuilder/vdkb_nls.cc:528 msgid "Set digits" msgstr "Decimali" #. 56 #: vdkbuilder/vdkb_nls.cc:529 msgid "Set default value" msgstr "Valore di default" #. 57 #: vdkbuilder/vdkb_nls.cc:530 msgid "Set icon by data" msgstr "Icona con dati" #. 58 #: vdkbuilder/vdkb_nls.cc:531 msgid "" "Check this if you want set icon by data\n" "(icon must be non NULL)" msgstr "" "Seleziona se vuoi settare l'icona con i dati\n" "piuttosto che il file (il campo icona non puo' essere NULLO)" #. 59 #: vdkbuilder/vdkb_nls.cc:532 msgid "Set display type" msgstr "Tipo di display" #. 60 #: vdkbuilder/vdkb_nls.cc:533 msgid "Set initial position" msgstr "Posizione iniziale" #. 61 #: vdkbuilder/vdkb_nls.cc:534 msgid "Freeze form size" msgstr "Blocca dim. form" #. 62 #: vdkbuilder/vdkb_nls.cc:535 msgid "Set minimum size, form can't be shrinked below" msgstr "" "Impost le dimens.minime,la form non puo' essere ulteriormente rimpicciolita" #: vdkbuilder/vdkb_notebook.cc:248 msgid "Add a new page" msgstr "Agg. nuova pagina" #: vdkbuilder/vdkb_notebook.cc:249 msgid "Remove current page" msgstr "Elimina pag. corrente" #: vdkbuilder/vdkb_notebook.cc:251 msgid "Remove notebook" msgstr "Elimina agenda" #: vdkbuilder/vdkb_PWizard.cc:92 msgid "VDK Application" msgstr "Applicazione VDK" #: vdkbuilder/vdkb_PWizard.cc:93 msgid "" "\n" "A VDK typical application\n" "with at least a Main Form,\n" "runs with most window managers" msgstr "" "\n" "Una tipica applicazione VDK\n" "con almeno una Form principale,\n" "gira sulla maggior parte\n" "degli windows manager" #: vdkbuilder/vdkb_PWizard.cc:94 msgid "Console Application" msgstr "Applicazione per console" #: vdkbuilder/vdkb_PWizard.cc:95 msgid "" "\n" "A text based application that\n" "runs from a terminal" msgstr "" "\n" "Un'applicazione testuale\n" "lanciata da un terminale" #: vdkbuilder/vdkb_PWizard.cc:96 msgid "Gnome Application" msgstr "Applicazione per Gnome" #: vdkbuilder/vdkb_PWizard.cc:97 msgid "" "\n" "A VDK application that is\n" "Gnome aware, requires Gnome\n" "libs installed" msgstr "" "\n" "Un'applicazione dedicata per Gnome,\n" "richiede le gnome lib installate" #: vdkbuilder/vdkb_PWizard.cc:125 msgid "VDKBuilder project wizard" msgstr "Wizard per progetti VDKBuilder" #: vdkbuilder/vdkb_PWizard.cc:128 msgid "Step 1 - Project type" msgstr "Passo 1- Tipo di progetto" #: vdkbuilder/vdkb_PWizard.cc:152 msgid "VDK application" msgstr "Applicazione VDK" #: vdkbuilder/vdkb_PWizard.cc:154 msgid "Console application" msgstr "Applicazione per console" #: vdkbuilder/vdkb_PWizard.cc:156 msgid "Gnome compliant application" msgstr "Applicazione per gnome" #: vdkbuilder/vdkb_PWizard.cc:170 msgid "Step2 - Project paths" msgstr "Passo 2 - Cartelle del progetto" #: vdkbuilder/vdkb_PWizard.cc:177 msgid "" "Project root\n" "directory" msgstr "" "Directory radice \n" "del progetto" #: vdkbuilder/vdkb_PWizard.cc:180 msgid "" "Project name\n" "(no extension)" msgstr "" "Nome progetto\n" "(senza estensione)" #: vdkbuilder/vdkb_PWizard.cc:183 msgid "Absolute path" msgstr "Cartella" #: vdkbuilder/vdkb_PWizard.cc:199 msgid "_Browse.." msgstr "_Cerca.." #: vdkbuilder/vdkb_PWizard.cc:209 msgid "Author:" msgstr "Ancoraggio" #: vdkbuilder/vdkb_PWizard.cc:212 msgid "E-mail:" msgstr "E-mail:" #: vdkbuilder/vdkb_PWizard.cc:216 msgid "GPL'd source file headers" msgstr "Licenza GPL" #: vdkbuilder/vdkb_PWizard.cc:217 msgid "Add GPL license to source file headers" msgstr "Aggiunge la licenza GPL ai file sorgenti" #. prev = new VDKCustomButton(this,(const char**)leftarrow_xpm,_("_Previous step"),16,(GtkPositionType) 1); #: vdkbuilder/vdkb_PWizard.cc:237 msgid "_Previous step" msgstr "Passo p_reced." #. next = new VDKCustomButton(this,(const char**)rightarrow_xpm,_("_Next step"),16,(GtkPositionType) 1); #: vdkbuilder/vdkb_PWizard.cc:241 msgid "_Next step" msgstr "_Passo succes." #. finish = new VDKCustomButton(this,(const char**)finish_xpm,_("_Finish"),16,(GtkPositionType) 1); #: vdkbuilder/vdkb_PWizard.cc:245 msgid "_Finish" msgstr "_Finisce" #: vdkbuilder/vdkb_PWizard.cc:358 #, c-format msgid "" "Project directory: %s\n" "Main source: %s.cc/.h\n" "Main GUI sources: %s_gui.cc/.h\n" "Main Form description: %s.frm\n" "Project description: %s.prj\n" "Project options: %s.prj.opt\n" "Makefile: vdkbMakefile" msgstr "" "** Files di progetto **\n" "Cartella di progetto: %s\n" "Sorgente principale: %s.cc/.h\n" "Sorgente interfaccia: %s_gui.cc/.h\n" "Descrizione Form: %s.frm\n" "Descrizione progetto: %s.prj\n" "Opzioni progetto: %s.prj.opt\n" "Makefile: vdkbMakefile" #: vdkbuilder/vdkb_PWizard.cc:371 #, c-format msgid "" "Project directory: %s\n" "Main sources: %s.cc/.h\n" "Project description: %s.prj\n" "Project options: %s.prj.opt\n" "Makefile: vdkbMakefile" msgstr "" "** Files di Progetto **\n" "Directory di progetto: %s\n" "Sorgente main: %s.cc/.h\n" "Descrizione progetto: %s.prj\n" "Opzioni progetto: %s.prj.opt\n" "Makefile: vdkbMakefile" #: vdkbuilder/vdkb_PWizard.cc:396 msgid "Choosing project directory" msgstr "Scelta della cartella del progetto" #: vdkbuilder/vdkb_PWizard.cc:431 #, c-format msgid "" "%s directory not found\n" "create it ?" msgstr "" "directory %s non trovata\n" "devo crearla ?" #: vdkbuilder/vdkb_PWizard.cc:438 #, c-format msgid "failed to create %s directory" msgstr "fallita creazione della directory:%s" #: vdkbuilder/vdkb_objinspect.cc:1167 msgid "Properties and signals" msgstr "Proprieta' e segnali" #: vdkbuilder/vdkb_objinspect.cc:1192 msgid "Declare as public member" msgstr "Dichiara come membro public" #: vdkbuilder/vdkb_objinspect.cc:1196 msgid "Click to change widget name" msgstr "Click per cambiare il nome all'widget" #: vdkbuilder/vdkb_objinspect.cc:1208 msgid "Click to change widget color" msgstr "Click per cambiare il colore dell'widget" #: vdkbuilder/vdkb_objinspect.cc:1214 msgid "Click to change widget font" msgstr "Click per cambiare la font dell'widget" #: vdkbuilder/vdkb_objinspect.cc:1220 msgid "Restore default font & colors (backgrounds)" msgstr "Ripristina colori e la font di default (sfondo)" #: vdkbuilder/vdkb_objinspect.cc:1226 msgid "Select widget state to set colors" msgstr "Seleziona lo stato dell'widget per selezionare i colori" #: vdkbuilder/vdkb_objinspect.cc:1239 msgid "visible" msgstr "visibile" #: vdkbuilder/vdkb_objinspect.cc:1240 msgid "Uncheck to hide the widget" msgstr "Smarcare per renedere l'widget invisibile" #. enabled #: vdkbuilder/vdkb_objinspect.cc:1243 msgid "enabled" msgstr "Abilitato" #. enabled->Enabled = false; #: vdkbuilder/vdkb_objinspect.cc:1245 msgid "Uncheck to disable the widget" msgstr "Smarcare per disabilitare l'widget" #: vdkbuilder/vdkb_objinspect.cc:1258 msgid "Select packing mode" msgstr "Seleziona il modo di inserimento" #: vdkbuilder/vdkb_objinspect.cc:1268 msgid "Select padding size" msgstr "Seleziona le dimensioni della cornice" #: vdkbuilder/vdkb_objinspect.cc:1276 msgid "Click to repack the widget" msgstr "Click per reimpostare" #: vdkbuilder/vdkb_objinspect.cc:1280 msgid "Toggle preview mode" msgstr "Cambia anteprima" #: vdkbuilder/vdkb_objinspect.cc:1288 msgid "Click to set the widget tip" msgstr "Click per modificare il suggerimento" #: vdkbuilder/vdkb_objinspect.cc:1298 msgid "" "Click to set the widget tag\n" "tag is an integer >= 0" msgstr "" "Click per impostare l'etichetta dell'widget,\n" "(un intero >= 0)" #: vdkbuilder/vdkb_objinspect.cc:1616 msgid "Write or jump to response method" msgstr "Scrive o salta al metodo di risposta" #: vdkbuilder/vdkb_objinspect.cc:1619 msgid "Jump to event handler" msgstr "Salta al metodo di risposta evento" #: vdkbuilder/vdkb_objinspect.cc:1620 msgid "Connected" msgstr "Connesso" #: vdkbuilder/vdkb_objinspect.cc:1929 msgid "Refresh widgets tree" msgstr "Ricarica albero degli widgets" #: vdkbuilder/vdkb_objinspect.cc:1937 msgid "docks/undocks properties & signals" msgstr "Attacca/stacca proprieta' e segnali" #: vdkbuilder/vdkb_objinspect.cc:2130 msgid "Font Selection Dialog" msgstr "Dialogo di selezione caratteri" #: vdkbuilder/vdkb_orderdlg.cc:64 msgid "Reordering widgets" msgstr "Riordina widgets" #: vdkbuilder/vdkb_orderdlg.cc:67 msgid "Contained widgets" msgstr "Widget contenuti" #: vdkbuilder/vdkb_orderdlg.cc:83 msgid "_Insert" msgstr "_Inserisce" #: vdkbuilder/vdkb_orderdlg.cc:85 msgid "Select a widget, new widget will be inserted in that position" msgstr "" "Seleziona un widget, il nuovo widget sara' inserito in quella posizione" #: vdkbuilder/vdkb_paned.cc:150 msgid "Remove paned" msgstr "Elimina pannello" #: vdkbuilder/vdkb_prjman.cc:509 msgid "Browse units" msgstr "Moduli" #: vdkbuilder/vdkb_prjman.cc:678 #, c-format msgid "Could not open last session %s" msgstr "Non posso salvare il database dei componenti" #: vdkbuilder/vdkb_prj.cc:217 #, c-format msgid "" "<%s> not found\n" "project dir path <%s> may need to be updated.\n" "Confirm update project dir with:%s" msgstr "" "<%s> non trovato\n" "la directory di progetto dovrebbe essere aggiornata.\n" "Conferma aggiornamento della directory con:%s" #: vdkbuilder/vdkb_prj.cc:232 #, c-format msgid "" "%s successfully updated\n" "please reload project" msgstr "" "%s aggiornato con successo.\n" "Riaprire il progetto" #: vdkbuilder/vdkb_prj.cc:235 #, c-format msgid "%s failed to update" msgstr "Fallito aggiornamento %s" #: vdkbuilder/vdkb_prj.cc:246 #, c-format msgid "" "<%s> should be manually updated to\n" "new project dir path <%s>." msgstr "" "<%s> dovrebbe essere aggiornata manualmente\n" "alla nuova directory <%s>" #: vdkbuilder/vdkb_prj.cc:309 #, c-format msgid "<%s> not found" msgstr "<%s> non trovato" #: vdkbuilder/vdkb_prjpref.cc:113 #, c-format msgid "" "<%s> does not exists on default paths\n" "please enter a complete pathname for debugger executable" msgstr "" "<%s> non esiste nei path di default\n" "inserire un path completo per l'eseguibile del debugger" #: vdkbuilder/vdkb_prjpref.cc:213 msgid "If left empty package name will be as project name" msgstr "Se lasciato vuoto il nome del package sara' come quello del progetto" #: vdkbuilder/vdkb_prjpref.cc:219 msgid "Check to enable Native Language Support" msgstr "Marcare per abilitare il supporto NLS" #: vdkbuilder/vdkb_rbgroup.cc:103 msgid "Remove Radio button group" msgstr "Rimuove gruppo bottoni radio" #: vdkbuilder/vdkb_scrolled.cc:163 msgid "Remove scrolled" msgstr "Elimina scrorrevole" #: vdkbuilder/vdkb_spinbutton.cc:355 msgid "Default value" msgstr "Valore di default" #: vdkbuilder/vdkb_spinbutton.cc:362 msgid "Lower range value" msgstr "Valore inferiore" #: vdkbuilder/vdkb_spinbutton.cc:369 msgid "Upper range value" msgstr "Valore superiore" #: vdkbuilder/vdkb_spinbutton.cc:376 msgid "Step increment" msgstr "Incremento" #: vdkbuilder/vdkb_spinbutton.cc:383 msgid "Climb rate" msgstr "Rateo di sal." #: vdkbuilder/vdkb_spinbutton.cc:390 msgid "Precision" msgstr "Precisione" #: vdkbuilder/vdkb_table.cc:191 msgid "Remove table" msgstr "Elimina tabella" #: vdkbuilder/vdkb_table.cc:554 msgid "Homogeneous" msgstr "Omogeneo" #: vdkbuilder/vdkb_table.cc:562 msgid "Change spacing" msgstr "Cambia spaz." #: vdkbuilder/vdkb_table.cc:566 msgid "Rows & cols spacing:" msgstr "Spazio fra righe e col.:" #. Modified by plm 02/09/2000 #: vdkbuilder/vdkb_tabledlg_gui.cc:34 msgid "Making a table" msgstr "Costruire una tabella" #: vdkbuilder/vdkb_tabledlg_gui.cc:38 msgid "Enter rows number " msgstr "Inserire numero righe" #: vdkbuilder/vdkb_text.cc:197 #, c-format msgid "%s: no tip available" msgstr "%s: nessun suggerimento disponibile" #: vdkbuilder/vdkb_text.cc:228 msgid "sorry, redo not yet implemented" msgstr "Spiacente, redo non ancora disponibile" #: vdkbuilder/vdkb_text.cc:272 msgid "Changed from disk, reload ?" msgstr "File cambiato su disco, rileggerlo ?" #: vdkbuilder/vdkb_text.cc:542 #, c-format msgid "Couldn't make %s backup file" msgstr "Non ho potuto scrivere il file di backup: %s" #: vdkbuilder/vdkb_textlabel.cc:313 msgid "Set justify" msgstr "Giustifica" #: vdkbuilder/vdkb_toolbar.cc:284 msgid "Add a toolbar button" msgstr "Aggiunge un bottone" #: vdkbuilder/vdkb_toolbar.cc:285 msgid "Remove selected button" msgstr "Rimuove bottone selez." #: vdkbuilder/vdkb_toolbar.cc:289 msgid "Remove toolbar" msgstr "Elimina barra" #: vdkbuilder/vdkb_toolbar.cc:958 msgid "Set style" msgstr "Stile" #: vdkbuilder/vdkb_tooldialog_gui.cc:42 msgid "Adding a toolbar button" msgstr "Aggiunge un bottone alla toolbar" #: vdkbuilder/vdkb_tooldialog_gui.cc:46 msgid "Pixmap file: " msgstr "File pixmap:" #: vdkbuilder/vdkb_tooldialog_gui.cc:52 msgid "Browse..." msgstr "Cerca.." #: vdkbuilder/vdkb_tooldialog_gui.cc:59 msgid "Tip: " msgstr "Suggerimento:" #: vdkbuilder/vdkb_tooldialog_gui.cc:69 msgid "Text:" msgstr "Testo:" #: vdkbuilder/vdkb_widpopmenu.cc:301 vdkbuilder/vdkb_xtDlg.cc:135 msgid "Remove" msgstr "Rimuove" #: vdkbuilder/vdkb_widpopmenu.cc:305 vdkbuilder/vdkb_widpopmenu.cc:358 msgid "Paste others.." msgstr "Incolla altri..." #. not yet implemented #. copywidget = new VDKMenuItem(this,"Copy widget"); #. copywidget->Enabled = false; #: vdkbuilder/vdkb_widpopmenu.cc:355 msgid "Cut widget" msgstr "Taglia widget" #: vdkbuilder/vdkb_widpopmenu.cc:357 msgid "Paste widget" msgstr "Incolla widget" #: vdkbuilder/vdkb_widpopmenu.cc:394 #, c-format msgid "Paste %s::%s" msgstr "Incolla %s::%s" #: vdkbuilder/vdkb_widpopmenu.cc:401 #, c-format msgid "Cut %s::%s" msgstr "Taglia %s::%s" #: vdkbuilder/vdkb_widpopmenu.cc:404 vdkbuilder/vdkb_widpopmenu.cc:407 msgid "none" msgstr "nessuno" #: vdkbuilder/vdkb_widclip.cc:196 msgid "" "Uhmmm.., cutting the outermost container you\n" "won't be able to recover it easily. Confirm ?" msgstr "" "Uhmm..,tagliare il contenitore piu' esterno ti\n" "rendera' difficile recuperarlo. Confermi ?" #: vdkbuilder/vdkb_widclip.cc:278 msgid "Pasting across forms isn't allowed" msgstr "La copia fra forms diverse non e' permessa" #. editable->Checked = GetProp(EDITABLE) == True; #. this after (so no signal hang) #. editable->Parent(this); #. SignalConnect(editable,"toggled",&CLASS::OnSetEditable); #: vdkbuilder/vdkb_xcheckbutton.cc:356 vdkbuilder/vdkb_xcustomlist.cc:604 #: vdkbuilder/vdkb_xentry.cc:440 vdkbuilder/vdkb_xmemo.cc:367 msgid "Tables" msgstr "Tabelle" #: vdkbuilder/vdkb_xcheckbutton.cc:363 vdkbuilder/vdkb_xcustomlist.cc:611 #: vdkbuilder/vdkb_xentry.cc:447 vdkbuilder/vdkb_xmemo.cc:374 msgid "Fields" msgstr "Campi" #: vdkbuilder/vdkb_xcheckbutton.cc:370 vdkbuilder/vdkb_xentry.cc:453 #: vdkbuilder/vdkb_xmemo.cc:380 msgid "Assign to table field" msgstr "Assegna ad un campo" #: vdkbuilder/vdkb_xcheckbutton.cc:374 vdkbuilder/vdkb_xcustomlist.cc:592 #: vdkbuilder/vdkb_xentry.cc:457 vdkbuilder/vdkb_xmemo.cc:384 msgid "Selecting \"nihil\" will reset field assignement" msgstr "Selezionando \"nihil\" si azzera l'assegnamento" #: vdkbuilder/vdkb_xcheckbutton.cc:484 vdkbuilder/vdkb_xentry.cc:609 #: vdkbuilder/vdkb_xmemo.cc:492 #, c-format msgid "Couldn't assign to field \"%s\" on table %s" msgstr "Non ho potuto assegnare al campo \"%s\" nella tabella" #: vdkbuilder/vdkb_xcustomlist.cc:588 msgid "Assign column to table" msgstr "Assegna colonna alla tabella" #: vdkbuilder/vdkb_xmemo.cc:351 msgid "WordWrap" msgstr "Parole a capo" #: vdkbuilder/vdkb_xtDlg.cc:94 msgid "VDKXDatabase Dialog" msgstr "Opzioni VDKXDatabase" #. tricky way for i18n #: vdkbuilder/vdkb_xtDlg.cc:102 msgid "Tables/Indexes" msgstr "Tabelle/Indici" #: vdkbuilder/vdkb_xtDlg.cc:103 msgid "Index Key" msgstr "Chiave indice" #: vdkbuilder/vdkb_xtDlg.cc:104 msgid "Field name" msgstr "Nome campo" #: vdkbuilder/vdkb_xtDlg.cc:105 msgid "Type" msgstr "Tipo" #: vdkbuilder/vdkb_xtDlg.cc:106 msgid "Length" msgstr "Lunghezza" #: vdkbuilder/vdkb_xtDlg.cc:107 msgid "Dec" msgstr "Decimali" #: vdkbuilder/vdkb_xtDlg.cc:129 msgid "Add a table" msgstr "Aggiunge" #: vdkbuilder/vdkb_xtDlg.cc:131 msgid "Add a table to xdb" msgstr "Aggiunge indice" #: vdkbuilder/vdkb_xtDlg.cc:138 msgid "Remove table or index" msgstr "Elimina tabella o indice" #: vdkbuilder/vdkb_xtDlg.cc:142 msgid "Add index" msgstr "Agg. indice" #: vdkbuilder/vdkb_xtDlg.cc:145 msgid "Add an index to table" msgstr "Aggiunge un indice" #: vdkbuilder/vdkb_xtDlg.cc:149 msgid "Active/inactive" msgstr "Attivo/non attivo" #: vdkbuilder/vdkb_xtDlg.cc:152 msgid "" "Setting table \"active\" makes vdkbuilder generate\n" "the code to open the table at run time" msgstr "" "Con la tabella \\\"attiva\\\" vdkbuilder generera'\n" "il codice per aprire il file al run-time" #: vdkbuilder/vdkb_xtDlg.cc:160 msgid "Close dialog" msgstr "Chiude" #: vdkbuilder/vdkb_xtDlg.cc:207 msgid "No tables loaded" msgstr "Nessuna tabella caricata" #: vdkbuilder/vdkb_xtDlg.cc:219 vdkbuilder/vdkb_xtDlg.cc:324 msgid "ACTIVE" msgstr "ATTIVA" #: vdkbuilder/vdkb_xtDlg.cc:220 vdkbuilder/vdkb_xtDlg.cc:325 msgid "NOT ACTIVE" msgstr "NON ATTIVA" #: vdkbuilder/vdkb_xtDlg.cc:248 #, c-format msgid "%3d tables loaded" msgstr "%3d tabelle caricate" #: vdkbuilder/vdkb_xtDlg.cc:354 msgid "VDKXTableIndex opening" msgstr "Apertura VDKXTableIndex" #: vdkbuilder/vdkb_xtDlg.cc:403 #, c-format msgid "Table:%s removed" msgstr "Tabella %s rimossa" #: vdkbuilder/vdkb_xtDlg.cc:420 #, c-format msgid "Index:%s removed" msgstr "Indice %s rimossa" #: vdkbuilder/vdkb_xtDlg.cc:436 msgid "VDKXTable opening" msgstr "Apertura VDKXTable" #: vdkbuilder/vdkb_edhelp.cc:57 msgid "COPY, CUT & PASTE" msgstr "COPIA, TAGLIA ED INCOLLA" #: vdkbuilder/vdkb_edhelp.cc:58 msgid "," msgstr "," #: vdkbuilder/vdkb_edhelp.cc:58 msgid "copy selection" msgstr "copia selezione" #: vdkbuilder/vdkb_edhelp.cc:59 msgid "," msgstr "," #: vdkbuilder/vdkb_edhelp.cc:59 msgid "cut selection" msgstr "taglia selezione" #: vdkbuilder/vdkb_edhelp.cc:60 msgid "," msgstr "," #: vdkbuilder/vdkb_edhelp.cc:60 msgid "paste selection" msgstr "incolla selezione" #: vdkbuilder/vdkb_edhelp.cc:61 msgid "MOVEMENTS" msgstr "MOVIMENTI" #: vdkbuilder/vdkb_edhelp.cc:62 msgid "," msgstr "," #: vdkbuilder/vdkb_edhelp.cc:62 vdkbuilder/vdkb_edhelp.cc:63 msgid "self explanatory" msgstr "si spiega da solo" #: vdkbuilder/vdkb_edhelp.cc:63 msgid "," msgstr "," #: vdkbuilder/vdkb_edhelp.cc:64 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:64 msgid "previous word" msgstr "parola preced." #: vdkbuilder/vdkb_edhelp.cc:65 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:65 msgid "next word" msgstr "prossima parola" #: vdkbuilder/vdkb_edhelp.cc:66 msgid "SELECTION" msgstr "SELEZIONE" #: vdkbuilder/vdkb_edhelp.cc:67 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:67 msgid "select and move" msgstr "Seleziona e muove" #: vdkbuilder/vdkb_edhelp.cc:68 msgid "INDENTING" msgstr "INDENTAZIONE" #: vdkbuilder/vdkb_edhelp.cc:69 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:69 msgid "indent" msgstr "Indent del codice" #: vdkbuilder/vdkb_edhelp.cc:70 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:70 msgid "normal tab" msgstr "tab normale" #: vdkbuilder/vdkb_edhelp.cc:71 msgid "OTHERS" msgstr "ALTRI" #: vdkbuilder/vdkb_edhelp.cc:72 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:72 msgid "word completion" msgstr "completamento parole" #: vdkbuilder/vdkb_edhelp.cc:73 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:73 msgid "hints" msgstr "suggerimenti" #: vdkbuilder/vdkb_edhelp.cc:74 msgid "" msgstr "" #: vdkbuilder/vdkb_edhelp.cc:74 msgid "parenthesis matching" msgstr "chiusura parentesi" #: vdkbuilder/vdkb_edhelp.cc:111 msgid "VDKBuilder editor short cuts" msgstr "Short cuts dell'editore" #: vdkbuilder/vdkb_edhelp.cc:118 msgid "Keys" msgstr "Tasti" #: vdkbuilder/vdkb_edhelp.cc:118 msgid "Actions" msgstr "Azioni" #: vdkbuilder/vdkb_edhint.cc:268 msgid "Hint key already here" msgstr "Il suggerimento gia' esiste" #: vdkbuilder/vdkb_edhint.cc:301 msgid "VDKBuilder Hints editor" msgstr "Editore dei suggerimenti" #: vdkbuilder/vdkb_edhint.cc:305 msgid "Keywords" msgstr "Parole chiave" #: vdkbuilder/vdkb_edhint.cc:327 msgid "Enter hint key here before add an hint" msgstr "Inserire la chiave del suggerimento prima di aggiungerne uno" #: vdkbuilder/vdkb_edhint.cc:330 msgid "_Add" msgstr "_Aggiunge" #: vdkbuilder/vdkb_edhint.cc:336 msgid "_Remove" msgstr "_Rimuove" #: vdkbuilder/vdkb_edhint.cc:342 msgid "_Change" msgstr "_Cambia" #: vdkbuilder/vdkb_edhint.cc:348 msgid "_Save and quit" msgstr "_Salva e finisci" #: vdkbuilder/vdkb_edhint.cc:353 msgid "_Quit" msgstr "_Finisci" #~ msgid "Browse classes" #~ msgstr "Classi" #~ msgid "Jump to sources" #~ msgstr "Salta ai sorgenti" #~ msgid "Where declared" #~ msgstr "Dove dichiarato" #~ msgid "Where defined" #~ msgstr "Dove definito" #~ msgid "Widget Inspector can be resized" #~ msgstr "L'Widget inspector puo' essere modificato" #~ msgid "VDKMaker is modal when starts application" #~ msgstr "Il VDK Maker e' modale quando l'applicazione parte" #~ msgid "Supports Emacs server-client" #~ msgstr "Supporta Emacs come editore esterno" #~ msgid "Set widget tag" #~ msgstr "Etichetta" #~ msgid "Columns spacing:" #~ msgstr "Spazio fra col." #~ msgid "New P" #~ msgstr "Nuovo P." #~ msgid "" #~ "No user home found,\n" #~ "sorry i can't run VDKBuilder" #~ msgstr "" #~ "User home non trovata\n" #~ "spiacente ma non posso eseguire VDKBuilder" #~ msgid "Modify" #~ msgstr "Modifica" #~ msgid "yes" #~ msgstr "si" #~ msgid "*no*" #~ msgstr "*no*" #~ msgid "Add Function" #~ msgstr "Agg. funzione" #~ msgid "It isn't implemented yet!" #~ msgstr "Non ancora implementato" #~ msgid "Definition" #~ msgstr "Definizione" #~ msgid "Units" #~ msgstr "Moduli" #~ msgid "Classes" #~ msgstr "Chiude" #, fuzzy #~ msgid "Decl." #~ msgstr "Decimali" #~ msgid "Loading logo pixmap.." #~ msgstr "Caricamento pixmap del logo in corso.." #~ msgid "VDKBuilder: Initializing..." #~ msgstr "Inizializzazione VDKBuilder..." #~ msgid "Packer" #~ msgstr "Packer" #~ msgid "Remove packer" #~ msgstr "Elimina packer" #~ msgid "Set spacing" #~ msgstr "Spaziatura" #~ msgid "Makes a back-up file od edited sources" #~ msgstr "Crea una copia dei file" #~ msgid "Label button" #~ msgstr "Bottone con etichetta" #~ msgid "Pixmapped button" #~ msgstr "Bottone con figura" #~ msgid "A plain VDK application" #~ msgstr "Applicazione VDK normale" #~ msgid "A non-gui console application" #~ msgstr "Applicazione non gui per console" #~ msgid "VDK-Gnome application" #~ msgstr "Applicazione VDK-Gnome" #~ msgid "Const chars" #~ msgstr "costanti char" #~ msgid "Const strings" #~ msgstr "costanti stringa" #~ msgid "Save modified environment ?" #~ msgstr "Devo salvare le modifiche alle opzioni VDKBuilder ?" #~ msgid "Customizing VDKBuilder environment" #~ msgstr "Opzioni VDKBuilder" #~ msgid "General settings" #~ msgstr "Opzioni generali" #~ msgid "Set C++ source" #~ msgstr "Sorgenti C++" #~ msgid "Set C++ header" #~ msgstr "Headers C++" #~ msgid "Hides on run" #~ msgstr "Nascosto" #~ msgid "Start up dir" #~ msgstr "Dir di lavoro" #~ msgid "Done" #~ msgstr "Fatto" #~ msgid "Check to make WI resizeable" #~ msgstr "Marcare per rendere il WI ridimensionabile" #~ msgid "Editor settings" #~ msgstr "Opzioni editore" #~ msgid "Click to set default font" #~ msgstr "Click per modificare la font di default" #~ msgid "default" #~ msgstr "default" #~ msgid "Set fore" #~ msgstr "Primo piano" #~ msgid "Click to set default foreground color" #~ msgstr "Click per cambiare il colore di primo piano" #~ msgid "Click to set default background color" #~ msgstr "Click per cambiare il colore di sofondo" #~ msgid "Min V size" #~ msgstr "Alt. min." #~ msgid "Click to set minimum vert. size" #~ msgstr "Click per modificare l'altezza minima" #~ msgid "Min H size" #~ msgstr "Largh. min." #~ msgid "Click to set minimum hor. size" #~ msgstr "Click per modificare la larghezza minima" #~ msgid "Changed files" #~ msgstr "File modificati" #~ msgid "Autosave" #~ msgstr "Auto salva" #~ msgid "Saves modified text files each minutes (0 = disabled)" #~ msgstr "Salva i file modificati ogni minuti (0 = non abilitato)" #~ msgid "Enabled" #~ msgstr "Abilitato" #~ msgid "If checked makes a backup file" #~ msgstr "Se marcato crea un di backup" #~ msgid "Click to set token font" #~ msgstr "Click per cambiare la font del tipo sintattico" #~ msgid "Miscellanous" #~ msgstr "Miscellanea" #~ msgid "Set tab spaces" #~ msgstr "Spazi di tab" #~ msgid "Click to set tab spaces" #~ msgstr "Click per modificare gli spazi di tab" #~ msgid "Save last session and restore it on next run" #~ msgstr "Salva la sessione e la ripristina al prossimo riavvio" #~ msgid "Code indent" #~ msgstr "Indent del codice" #~ msgid "Toggle indenting using tab" #~ msgstr "Attiva/Disattiva indent (usa tab)" #~ msgid "Toggle auto indenting (using Enter key)" #~ msgstr "Attiva/Disattiva indent automatico (usa Enter)" #~ msgid "Shows line numbers on code editor" #~ msgstr "Mostra/nasconde numeri di riga nell'editore del codice" #~ msgid "App runs modal" #~ msgstr "Applicazione modale" #~ msgid "Runs application with a modal VDKBuilderMaker" #~ msgstr "Esegue l'applicazione con il VDKBuilderMaker modale" #~ msgid "Enable ext ascii" #~ msgstr "Abilita ascii esteso" #~ msgid "Enables editor direct support for chars with ascii code > 127" #~ msgstr "" #~ "Abilita l'editore testi per il supporto diretto dei codici ascii estesi" #~ msgid "%2d more words:\n" #~ msgstr "ci sono altre %2d parole\n" #~ msgid "" #~ "\"%s\" isn't in word completion list.\n" #~ "Hit ctrl-a to add it" #~ msgstr "" #~ "\"%s\" non nella lista di completamento delle parole\n" #~ "Premi per aggiungerlo" #~ msgid "Nothing to add to completion list" #~ msgstr "Nulla da aggiungere alla lista di completamento" #~ msgid "Word: \"%s\" added to completion list" #~ msgstr "La parola \"%s\" stata aggiunta alla lista di completamento" #~ msgid "%s already on completion list" #~ msgstr "%s e' gia' nella lista di completamento" #~ msgid "Match at line:%d\n" #~ msgstr "Chiusura parentesi alla riga:%d\n" #~ msgid "Humm.., probably a mismatch" #~ msgstr "Humm, probabilmente parentesi errata" #~ msgid "Leave this field emtpy and press enter to remove glyph" #~ msgstr "Lascia il campo vuoto e premi Enter per rimuovere la figura" #~ msgid "Hello" #~ msgstr "Salve" #~ msgid "Image manipulated with GIMP" #~ msgstr "Immagine manipolata con Gimp" #~ msgid "Default style" #~ msgstr "Stile di default" #~ msgid "Open tables" #~ msgstr "Apre tabelle" #~ msgid "Create a VDKXTable" #~ msgstr "Crea una VDKXTable" #~ msgid "Edit a VDKXTable structure" #~ msgstr "Modifica struttura" #~ msgid "" #~ "\n" #~ "// do not remove this mark: %s\n" #~ "// end of file:%s_gui.%s" #~ msgstr "" #~ "\n" #~ "// non rimuovere questa marca: %s\n" #~ "// fine file: %s_gui.%s" #~ msgid "" #~ "\n" #~ "// do not remove this mark: %s\n" #~ "// end of file:%s.%s" #~ msgstr "" #~ "\n" #~ "// non rimuovere questa marca: %s\n" #~ "// fine file:%s.%s" #~ msgid "" #~ "/*\n" #~ "%s gui header\n" #~ "*/" #~ msgstr "" #~ "/*\n" #~ "%s gui header\n" #~ "*/" #~ msgid "" #~ "\n" #~ "/*\n" #~ "declaring signal and events\n" #~ "dynamics tables\n" #~ "*/" #~ msgstr "" #~ "\n" #~ "/*\n" #~ "Dichiarazione segnali ed eventi\n" #~ "(tabelle dinamiche)\n" #~ "*/" #~ msgid "" #~ "\n" #~ "/*\n" #~ "defining signal and events\n" #~ "dynamics tables\n" #~ "*/" #~ msgstr "" #~ "\n" #~ "/*\n" #~ "definizione segnali ed eventi\n" #~ "(tabelle dinamiche)\n" #~ "*/" #~ msgid "" #~ "\n" #~ "/*\n" #~ "defining signal static table\n" #~ "*/" #~ msgstr "" #~ "\n" #~ "/*\n" #~ "definizione segnali (tabelle statiche)\n" #~ "*/" #~ msgid "" #~ "\n" #~ "/*\n" #~ "main form setup\n" #~ "*/" #~ msgstr "" #~ "\n" #~ "/*\n" #~ "inizializza form principale\n" #~ "*/" #~ msgid "" #~ "\n" #~ "/* default useless form */" #~ msgstr "" #~ "\n" #~ "/* inutile form di default */" #~ msgid "signal response method" #~ msgstr "metodo di risposta ai segnali" #~ msgid "asks user before closing" #~ msgstr "chiede conferma prima di chiudere" #~ msgid "form event response method" #~ msgstr "metodo di risposta agli eventi della form" #~ msgid "" #~ "/*\n" #~ "%s Console Application" #~ msgstr "" #~ "/*\n" #~ "Applicazione per console" #~ msgid "" #~ "\n" #~ "Main unit header file: %s.%s" #~ msgstr "" #~ "\n" #~ "file header modulo principale: %s.%s" #~ msgid "" #~ "/*\n" #~ "%s %s Application" #~ msgstr "" #~ "/*\n" #~ "Applicazione %s %s " #~ msgid "Plain VDK" #~ msgstr "VDK normale" #~ msgid "VDK Gnome compliant" #~ msgstr "Applicazione VDK-Gnome" #~ msgid "" #~ "\n" #~ "// gui object declarations" #~ msgstr "" #~ "\n" #~ "// dichiarazione oggetti gui" #~ msgid "" #~ "\n" #~ "// vdkbuilder reserved gui construction" #~ msgstr "" #~ "\n" #~ "// parte riservata al vdkbuilder per la costruzione gui" #~ msgid "" #~ "\n" #~ "/*\n" #~ " gui setup include" #~ msgstr "" #~ "\n" #~ "/*\n" #~ "include inizializzazione gui" #~ msgid "" #~ "\n" #~ " do not patch below here\n" #~ "*/" #~ msgstr "" #~ "\n" #~ "non scrivere qui sotto\n" #~ "*/" #~ msgid "" #~ "\n" #~ "/*\n" #~ "form GUI setup\n" #~ "*/" #~ msgstr "" #~ "\n" #~ "/*\n" #~ "inizializzazione gui della form\n" #~ "*/" #~ msgid "" #~ "\n" #~ "implementation file:%s.%s" #~ msgstr "" #~ "\n" #~ "file di implementazione:%s.%s" #~ msgid "" #~ "\n" #~ "/*\n" #~ "form constructor\n" #~ "*/" #~ msgstr "" #~ "\n" #~ "/*\n" #~ "costruttore della form\n" #~ "*/" #~ msgid "" #~ "\n" #~ "/*\n" #~ "form destructor\n" #~ "*/" #~ msgstr "" #~ "\n" #~ "/*\n" #~ "distruttore della form\n" #~ "*/" #~ msgid "" #~ "\n" #~ "/*\n" #~ "form setup\n" #~ "*/" #~ msgstr "" #~ "\n" #~ "/*\n" #~ "inizializzazione della form\n" #~ "*/" #~ msgid "" #~ "\n" #~ "// put your code below here" #~ msgstr "" #~ "\n" #~ "// inserisci il tuo codice qui sotto" #~ msgid "" #~ "\n" #~ "header file: %s.%s" #~ msgstr "" #~ "\n" #~ "file header modulo principale: %s.%s" #~ msgid "" #~ "\n" #~ "Main unit implementation file:%s.%s" #~ msgstr "" #~ "\n" #~ "file di implementazione modulo principale:%s.%s" #~ msgid "" #~ "\n" #~ "/*\n" #~ "main program\n" #~ "*/" #~ msgstr "" #~ "\n" #~ "/*\n" #~ "programma principale\n" #~ "*/" #~ msgid "" #~ "\n" #~ "/*\n" #~ "main form constructor\n" #~ "*/" #~ msgstr "" #~ "\n" #~ "/*\n" #~ "costruttore della form principale\n" #~ "*/" #~ msgid "" #~ "\n" #~ "/*\n" #~ "application constructor\n" #~ "*/" #~ msgstr "" #~ "\n" #~ "/*\n" #~ "costruttore dell'applicazione\n" #~ "*/" #~ msgid "" #~ "\n" #~ "/*\n" #~ "application destructor\n" #~ "*/" #~ msgstr "" #~ "\n" #~ "/*\n" #~ "distruttore dell'applicazione\n" #~ "*/" #~ msgid "" #~ "/*\n" #~ "%s ConsoleApplication" #~ msgstr "" #~ "/*\n" #~ "Applicazione per console" #~ msgid "Click to set token color" #~ msgstr "Click per cambiare il colore del tipo sintattico" #~ msgid " Dismiss " #~ msgstr " Congedo " #~ msgid "Backup" #~ msgstr "abilitato" #~ msgid "Syntax tokens type" #~ msgstr "Tipi sintattici" #~ msgid "Toggle Syntax-(F6)" #~ msgstr "Sintassi colorata-(F6)" #~ msgid "Inspector: no object" #~ msgstr "Ispettore: nessun widget" #~ msgid "project_name" #~ msgstr "nome_progetto" #~ msgid "VDK" #~ msgstr "VDK" #~ msgid "shared" #~ msgstr "condivisa" #~ msgid "static lib" #~ msgstr "libreria statica" #~ msgid "static" #~ msgstr "statica" #~ msgid "or" #~ msgstr "oppure" #~ msgid "browse a pathname/name" #~ msgstr "cerca un sentiero/nome" #~ msgid "Gnome-VDK" #~ msgstr "Gnome-VDK" vdkbuilder2-2.4.0/po/en.gmo0000644000000000000000000000056510052402422011102 $,8;9Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2004-03-05 16:35+0100 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE MIME-Version: 1.0 Content-Type: text/plain; charset=CHARSET Content-Transfer-Encoding: ENCODING vdkbuilder2-2.4.0/po/it.gmo0000644000000000000000000012265210052402422011116 T_(6E 6TO636-67 $7E7&c777M7"7+8>8-S888O8899^/9}9 :_:={:::::; ;; $;1; C; Q;]; c;(o;6;;; ;;;< <#<&'< N< Y<d< s<<< <<< <<<E=U=\=\o====> >%>7>?+?C?L? R? ^?k? t?~? ? ?????? ?? @@&@B@[@p@ @?@'@@A!A 7ACA`A|AA2AA B BB "B/B ?B LBZB iB sBBBBB+B8B*C0C$KCpC C CCCCC CC DD&D DDeD!D)DD D DE E EE;EDEHEaEjEzEEEE EEFFF!F(F?F GF"RFQuFRF G ;GGG\GrGGGG GGG GGG#H7HTMH&HH%H.I&3IZInII IIII III IIIII IJJJ ,J!6JXJ]J mJ yJJJJ JJJ JJJJK0K @K LKZK_K dK pK zKKK)KK K5K %L 0Lgig|gggg gggggh *h4h<;0r]ixc>)=iaf%I3`!,$$UU.L8 QFtfRjtq+@NPH]`0BxUj-4? /sJM_ZbR-3hG9n{~TSYA6O*Zvm|7{M6'/ [IsABQlpr : .^Hn\==u#z^%,#'>'1D W<%Tq5Na(tIb"".GqVl\)p47K}gso?E1v:[+ACJr;c(DC B~~}DYK|a 5oE:PXyd@R}!$1k ?YSz S^eflT Wmz A VDK application that is Gnome aware, requires Gnome libs installed A VDK typical application with at least a Main Form, runs with most window managers A text based application that runs from a terminal Could not change to dir:%s reverting to home Error during closing plugins Error during loading plugins.db Error during opening plugins User file:%s not found, using default Id %3d tables loaded%s does not exists create %s/.vdkb/res/ and copy %s there (operation aborted)%s directory not found create it ?%s done. May be you want add it to project.%s failed to update%s successfully updated please reload project%s: no tip available(defaults to 1)* WARNING * VDKBuilder couldn't install vdkbuilder resources into your home: %s, by signal %d, with exit status %d.xpm -> project dir<%s> does not exists on default paths please enter a complete pathname for debugger executable<%s> is a binary container, binary containers can contain only one widget. Remove the actual one before adding something else<%s> not found<%s> not found project dir path <%s> may need to be updated. Confirm update project dir with:%s<%s> should be manually updated to new project dir path <%s>.,,,,,A compilation process is already runningA compilation process is running; kill it before closeACTIVEAbout VDK BuilderAbsolute pathAcceptActionsActive/inactiveActivity modeAddAdd GPL license to source file headersAdd MemberAdd a menuAdd a new pageAdd a tableAdd a table to xdbAdd a toolbar buttonAdd a unitAdd a unit to projectAdd an index to tableAdd indexAdd to projectAdding a toolbar buttonAllows user to override default and use a nice "Air Force Blue" themeAnchorAppend a menu itemApplication runs modal, if unchecked allows code/design modifications during application runAssign column to tableAssign to table fieldAuthor:Auto save modified filesAutoResizeAutoconf/AutomakeAutoconf/Automake support will * generate (or overwrite): - acconfig.h - configure.in - Makefile.am * copy all required files into %s * invoke ./autogen.sh Do you want apply Automake/Autoconf support ?AutogenAutosave modified files without asking userBackwardBeginBox PreviewBrowse unitsBrowse..Browse...ButtonsC compilerC++ compilerCOPY, CUT & PASTECall emacs as external editorCancelCancel selectionCanvasCaption wrapCase sensitiveCaseSensitiveChange spacingChanged from disk, reload ?Changes background colorChanges default fontChanges foreground colorCheck buttonCheck this if you want set icon by data (icon must be non NULL)Check to enable Native Language SupportChoosing project directoryCkeckedClass response methodClear filesClick to change widget colorClick to change widget fontClick to change widget nameClick to repack the widgetClick to set the widget tag tag is an integer >= 0Click to set the widget tipClimb rateCloseClose and saveClose dialogClose this pageCode exampleCols visiblesColumn title: Combo boxCombo buttonCommentsCommon propertiesCompilation flagsCompilation successfullCompletion list has been changed Save it ?Completion list not loaded completion won't be availableCompoComponent database dialogComponent database changed save it ?Component nameComponentsConnectedConnection not foundConnects form to selected eventConsole ApplicationConsole applicationConstantsContained widgetsContainersCopyCopy .xpm to project dir (recommended)Copying containers isn't allowedCould not open last session %sCould not save component databaseCouldn't assign to field "%s" on table %sCouldn't make %s backup fileCustom listCustom treeCutCut %s::%sCut widgetDONE with result %d, at %s DebuggerDecDeclare as public memberDeclaredDef constructorDefaultDefault header files extensionDefault object files extensionDefault source files extensionDefault valueDefault working directoryDefaultsDefinedDefinesDeleteDelete signal responseDialogsDirectionsDisconnects form to selected eventDockable and EventBox properties are mutually exclusive Dockable won't be changedDockable and EventBox properties are mutually exclusive, EventBox won't be changedDouble click to lock/unlock menuDrop widgetDrops a <%s> into %sDuplicated connectionDuplicated nameDuplicated response functionE-mail:EditEdit unitEditableEditor short cuts (F1)Editor tabsEmacs server already runningEmacs server failedEmbedded boxes shouldn't be deletedEnables class browserEnabling class browser can slown down VDKBuilder during loading of very big projectsEnter "nihil" to reset assigned pixmapEnter columns numberEnter here default start up directoryEnter here font name or use the Font... buttonEnter hint key here before add an hintEnter library name:Enter library path:Enter rows number Entire scopeEntryErrorExpandField nameFieldsFileFiles to grepFillFill XFill YFindFind TextFixedFixed to be 'o'Font Selection DialogFontifyngForking for browser unsuccessfullFormForm attributesForm eventsFormat H 24ForwardFrameFreeze form sizeFrom cursorGPL'd source file headersGTK+/VDK wordsGeneral IDEGlobalGnome ApplicationGnome application barGnome compliant applicationGnome date EditGnome entryGnome widgetsGrepGridH spacing: HandleboxHave gridHiddenHide VDKbuilder on runHides VDKBuilder when running applicationHint key already hereHints editorHints tree not loaded editor hints won't be availableHistory idHomogeneousHor Radio Button GroupHor boxHor panedHor separatorHorizontal sizeINDENTINGIf left empty package name will be as project nameImageInclude pathsIndex KeyIndex:%s removedInsert a menu itemJump to event handlerJumps to error into editor can be done also double clicking on selected lineJustificationKey wordsKeysKeywordsKill or CloseKills child process or close form if no child is runningLabelLabel positionLabel: LengthLibrary nameLibrary pathLine:LinkerLocal resource file:%s/.vdkb2/%s not found revert to default oneLock file:%s detected another instance sorry i can't run VDKBuilder twice, either kill running instance or remove lock fileLower range valueMOVEMENTSMakeMake cleanMake distMake distcleanMake it a VDKDockerBoxMake it a VDKEventBoxMakes Widget Inspector resizableMakes a sources back-up fileMakes source backup filesMaking a tableMax charsMax savedMaximum valueMenu barMessage listMin.size:%d,%dMinimum heightMinimum valueMinimum widthMiscModified:Mozilla (pid %d) exitedNLS SupportNOT ACTIVENew FormNew ProjectNew UnitNew projectNew..NoNo more undo'sNo tables loadedNotebookOTHERSOkOp_tionsOpen FileOpen a fileOpen a projectOpen projectOptionsOptions changed, save ?OriginPackage namePackage versionPadding:PanedPastePaste %s::%sPaste othersPaste others..Paste widgetPasting across forms isn't allowedPick a colorPixmapPixmap file: Place holderPluginsPopUpPrecisionPrepend a menu itemPreprocessorPrevious searchProgram argsProgress barProjectProject directory: %s Main source: %s.cc/.h Main GUI sources: %s_gui.cc/.h Main Form description: %s.frm Project description: %s.prj Project options: %s.prj.opt Makefile: vdkbMakefileProject directory: %s Main sources: %s.cc/.h Project description: %s.prj Project options: %s.prj.opt Makefile: vdkbMakefileProject forms listProject managerProject name (no extension)Project optionsProject root directoryPrompt on replacePropertiesProperties and signalsPublicPut here where_VDK_reference_is most likely:/usr/src/vdk-2.x.y/doc/doxy/htmlPut here your path to preferred html browserQuit VDKBuilderQuit VDKBuilder ?Radio buttonReached end of bufferReconfigureRedoRefresh widgets treeRegular expressionsRemoveRemove Radio button groupRemove a unitRemove boxRemove current pageRemove fixedRemove frameRemove from projectRemove handleRemove menuRemove menu itemRemove menubarRemove notebookRemove panedRemove scrolledRemove selected buttonRemove tableRemove table or indexRemove toolbarReopenReordering widgetsRepackRepeat SearchReplaceReplace AllReplace TextReplace occurrence of:Restore defaultRestore default font & colors (backgrounds)Reuse thisRows & cols spacing:Rows visiblesRunRun debuggerRuns child processSELECTIONSaveSave AllSave FileSave as..Save file as..Save messages into a log fileSave projectSave project as..Saves last work sessionScopeScrollableScrolledSearchSelect a widget, new widget will be inserted in that positionSelect a widget, new widget will be pasted in selected containerSelect files to grepSelect packing modeSelect padding sizeSelect parent containerSelect widget state to set colorsSelected textSelecting "nihil" will reset field assignementSet BlockCountSet Builder environmentSet CaptionSet ReliefSet back pixmapSet bar styleSet border shadowSet border widthSet colorSet default valueSet digitsSet display typeSet focus widgetSet fontSet form titleSet glyphSet grid optionsSet icon by dataSet initial positionSet justifySet lower boundSet min sizeSet minimum size, form can't be shrinked belowSet nameSet orientationSet propertiesSet sel modeSet shadowSet shadow/alignSet stepSet styleSet tagSet tooltipSet update policySet upper boundSetting %s sizeSetting table "active" makes vdkbuilder generate the code to open the table at run timeShared libsShowTimeShows/hides line numbersShows/hides messages listSideSignalsSliderSorry, nested layouts disabledSorry, unauthorized or unimplemented operationSorry, unknown editing errorSorry, unsupported widgetSortedSources editorSpin buttonStarted browser (pid %d)Status barStatus: never savedStatus: savedStatus: unsavedStep 1 - Project typeStep incrementStep2 - Project pathsSupports EmacsSupports Emacs as external editor all sources opened in builder editor will be opened in emacs as wellSyntax Hilight (F6)Syntax colorsTab label: TableTable:%s removedTablesTables/IndexesTextText to findText to find:Text to grepText to replace:Text:Timed (in minutes) saving of source files (0 means no timed saving)Timed savingTimerTip: Toggle preview modeToggle unit header/sourceToggle unit/formToolbarTree viewTutorialTypeUhmmm.., cutting the outermost container you won't be able to recover it easily. Confirm ?Uncheck to disable the widgetUncheck to hide the widgetUndoUnknown unit typeUpdateUpper range valueUse vdkb themeUser file for completions not found reverting to default oneV spacing: VDK ApplicationVDK Reference ManualVDK applicationVDK ref browserVDK reference pathVDKBuilderVDKBuilder Hints editorVDKBuilder color browserVDKBuilder component databaseVDKBuilder editorVDKBuilder editor short cutsVDKBuilder environment optionsVDKBuilder grepVDKBuilder has installed: vdkide.defaults vdkbrc plugins.db tokens.db into your home: %s/.vdkb2/resVDKBuilder maker terminated %sVDKBuilder project wizardVDKCustom ButtonVDKCustomButton DialogVDKCustomButton optionsVDKCustomList DialogVDKMaker - Application modalVDKXDatabase DialogVDKXTable openingVDKXTableIndex openingValidVert Radio Button GroupVert boxVert panedVert separatorVertical sizeView FormsView UnitsWI layout HWI layout VWI resizableWI shows a vertical layoutWI shows an horizontal layoutWI: disabledWI: no object selectedWhole words onlyWidget name can't be cancelledWidget names must follow C++ naming rulesWidget stackWidget stateWidgets clipboardWordWrapWrite or jump to response methodXDB SupportXDatabase toolsXdb widgetsYes_Accept_Add_Background_Browse.._Cancel_Change_Close and save_Color..._Edit_Finish_Help_Insert_Make_Next step_Open.._Paste_Previous step_Project_Quit_Quit VDKBuilder_Remove_Reset to min size_Save and quit_Search_Tools_Unit_Viewbad reading or unknown project filecan't be closedcode auto indentcontinue from beginning ?copy selectioncut selectiondefaults file missing, aborting..docks/undocks messages listdocks/undocks properties & signalsdoneenabledfailed to create %s directoryfont:"%s" not available or mispelledhintsincorrect project versionindentinvalid main unit can't be removedmodified, has to be saved ?next wordno error to gononenormalnormal tabparenthesis matchingpaste selectionpixmappedprevious wordproject: %s already exists, overwrite it ?saving message logselect and moveself explanatoryshows lines numbersorry, redo not yet implementedsuccessfullythat's all folk !toggledtokensunit already in projectunit can't be addeduntoggledvisiblewith errors or messageswith:word completionxdb check buttonxdb entryxdb listxdb memoProject-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2004-03-05 16:35+0100 PO-Revision-Date: Last-Translator: Mario Motta Language-Team: VDK Team MIME-Version: 1.0 Content-Type: text/plain; charset=CHARSET Content-Transfer-Encoding: ENCODING Un'applicazione dedicata per Gnome, richiede le gnome lib installate Una tipica applicazione VDK con almeno una Form principale, gira sulla maggior parte degli windows manager Un'applicazione testuale lanciata da un terminale Non ho potuto aprire la directory:%s utilizzo la tua home Errore in chiusura plugins Errore durante il caricamento di plugins.db Errore in apertura plugins File utente:%s non trovato, uso quello di default Id %3d tabelle caricate%s non esiste creare %s/.vdkbres/ e copiarvi %s < (operazione interrotta)directory %s non trovata devo crearla ?%s fatto, puoi aggiungerlo al progettoFallito aggiornamento %s%s aggiornato con successo. Riaprire il progetto%s: nessun suggerimento disponibile(1 di default)* ATTENZIONE * VDKBuilder non ha potuto installare le risorse nella tua home, dal segnale %d, con stato di uscita %d.xpm -> dir di progetto<%s> non esiste nei path di default inserire un path completo per l'eseguibile del debugger<%s> e' un contenitore binario, i contenitori binari possono contenere un solo widget. Rimuovere l'attuale widget prima di inserirne un'altro<%s> non trovato<%s> non trovato la directory di progetto dovrebbe essere aggiornata. Conferma aggiornamento della directory con:%s<%s> dovrebbe essere aggiornata manualmente alla nuova directory <%s>,,,,,Un processo di compilazione e' gia' in attoUn processo di compilazione e' gia' in atto; finirlo prima di chiudereATTIVAInfo VDKBuilderCartellaAccettaAzioniAttivo/non attivoModo activityAggiungeAggiunge la licenza GPL ai file sorgentiAgg. un membroAggiunge un menuAgg. nuova paginaAggiungeAggiunge indiceAggiunge un bottoneAggiunge un moduloAggiungi un modulo al progettoAggiunge un indiceAgg. indiceAggiungi al progettoAggiunge un bottone alla toolbarPermette di non usare ile tema predefinito, usa un bel tema "Air Force Blue"AncoraggioAppende un item di menuL'applicazione viene eseguita come modale, smarcare per permettere le modifiche del codice e dell'interfaccia durante l'esecuzione dell'applicazioneAssegna colonna alla tabellaAssegna ad un campoAncoraggioSalva automaticamente i file modificatiAuto dimens.Autoconf/AutomakeIl supporto Autoconf/Automake * generera' (o sovrascrivera'): - acconfig.h - configure.in - Makefile.am * copiera' tutti i file richiesti nella %s * e chiamera' ./autogen.sh Vuoi applicare il supporto Autoconf/Automake ?AutogenI file modificati vengono auto salvati senza preavvisoIndietroIniziaAnteprima boxModuliCerca..Cerca..BottoniCompilatore CCompilatore C++COPIA, TAGLIA ED INCOLLAChiama Emacs come editore esternoAnnullaAnnulla selezioneDisegnoWrap titoloMaiusc./Minusc.Maiusc./Minusc.Cambia spaz.File cambiato su disco, rileggerlo ?Cambia colore di sofndoCambia font della sintassiCambia colore primo pianoBottone marcatoSeleziona se vuoi settare l'icona con i dati piuttosto che il file (il campo icona non puo' essere NULLO)Marcare per abilitare il supporto NLSScelta della cartella del progettoMarcatoMetodo di risposta ai segnaliAzzera filesClick per cambiare il colore dell'widgetClick per cambiare la font dell'widgetClick per cambiare il nome all'widgetClick per reimpostareClick per impostare l'etichetta dell'widget, (un intero >= 0)Click per modificare il suggerimentoRateo di sal.ChiudeChiudi e salvaChiudeChiudi questa paginaCodice di esempioCol. visibiliTitolo colonna:Lista combinataBottone combinatoCommentiProprieta' comuniOpzioni di compilazioneLa compilazione ha avuto successoLa lista per il completamento delle parole e' cambiata devo salvarla ?Lista per il completamento delle parole non caricata il completamento non potra' essere disponibileComponentiDialogo database dei componentiIl database dei componenti e' cambiato, devo salvarlo ?Nome componenteComponentiConnessoConnessione non trovataConnetti la form all'evento selezionatoApplicazione per consoleApplicazione per consoleCostantiWidget contenutiContenitoriCopiaCopia .xpm nella dir. di progetto (consigliato)La copia di contenitori non e' permessaNon posso salvare il database dei componentiNon posso salvare il database dei componentiNon ho potuto assegnare al campo "%s" nella tabellaNon ho potuto scrivere il file di backup: %sListaLista ad alberoTagliaTaglia %s::%sTaglia widgetFATTO con risultato: %d, a: %s DebuggerDecimaliDichiara come membro publicDichiaratoDef. costruttoreDefaultEstensione files headerEsstensione files oggettoEstensione dei file sorgentiValore di defaultDirectory di lavoro di defaultDefaultsDefinitoCostanti simbolicheCancellaCancella risposta al segnaleForms di dialogoDirezioniDisconnetti la form dall'evento selezionatoDockable ed EventBox sono proprieta' mutuamente esclusive, Dockable non sara' cambiataDockable ed EventBox sono proprieta' mutuamente esclusive, EventBox non sara' cambiataDoppio click per bloccare(sbloccare)Inser. widgetInserisci un <%s> in %sConnessione doppiaNome duplicatoMetodo di risposta duplicatoE-mail:ModificaModifica il moduloModificabileShort cut dell'editore (F1)TabulatoriIl server Emacs e' gia' in esecuzioneIl server Emacs ha fallitoLe box inglobate con dovrebbero essere cancellateAbilita vista classiAbilitando la vista delle classi si avra' un notevole rallentamento del VDKBuilder durante il caricamento di grandi progettiInserire "nihil" per annullare la pixmap assegnataInserire numero colonneDirectory di defaultInserisci il nome della font od usa il bottone FontInserire la chiave del suggerimento prima di aggiungerne unoIns. nome libreriaIns. path della libreria:Inserire numero righeIntero contestoCampo di inputErroreEspandeNome campoCampiFileGrep filesRiempeRiempe XRiempe YTrovaTrova testoContenitore a geometria fissaFissato a "o"Dialogo di selezione caratteriSintassi colorata in corso...Fork del browser fallitoFormAttributi della formEventi formFormato h 24AvantiRiquadroBlocca dim. formDal cursoreLicenza GPLParole GTK+/VDKGeneraleGlobaleApplicazione per GnomeBarra per GnomeApplicazione per gnomeCampo data gnomeCampo di input gnomeWidgets GnomeGrepGrigliaSpaziaturaHBox movibileGrigliaNascostoNasconde VDKBuilder all'avvio dell'applicazioneNasconde VDKBuilder all'avvio dell'applicazioneIl suggerimento gia' esisteEditore dei suggerimentiFile dei suggerimenti non caricato, i suggerimenti non saranno disponibiliId storicoOmogeneoGruppo bottoni radio orrizzontaleBox orizzontalePannello orizzontaleSeparatore orizzontaleDimens. orrizontaleINDENTAZIONESe lasciato vuoto il nome del package sara' come quello del progettoImmagineDirectories di includeChiave indiceIndice %s rimossaInserisce un item di menuSalta al metodo di risposta eventoSalta all'errore nell'editor puo' essere fatto anche con il doppio click sulla riga selezionataAllineamentoParole chiaveTastiParole chiaveTermina/ChiudeTermina il processo figlio o chiude la form se non vi sono processi in attoEtichettaPosiz. etichettaEtichetta:LunghezzaNome libreriaPath della libreriaRiga:Linker:File locale delle risorse:%s/.vdkb/%s non trovato utilizzo quello di defaultRilevato file di blocco:%s Rilevata un'altra istanza spiacente ma non posso esguire due volte il VDKBuilder, termina il processo corrente o rimuovi il file di bloccoValore inferioreMOVIMENTIMakeMake cleanMake distMake distcleanDiventa una VDKDockerBoxDiventa una VDKBoxRende l'Widget Inspector ridimensionabileFile di salvataggioFile di salvataggioCostruire una tabellaCar. max.Salva max.Valore massimoBarra dei menuLista dei messaggiDim.minime:%d,%dMinima altezzaValore minimoMinima larghezzaMiscellaneaModificato:Mozilla (pid %d") terminatoSupporto NLSNON ATTIVANuova formNuovo ProgettoNuovo moduloNuovo ProgettoNuovoNoNulla da disfareNessuna tabella caricataAgendaALTRIOkOp_zioniApri fileApri un fileApri un progettoApri ProgettoOpzionile opzioni sono cambiate, devo salvarle ?OrigineNome del packageVersione del packageCorniceContenitore a pannelliIncollaIncolla %s::%sCopia...Incolla altri...Incolla widgetLa copia fra forms diverse non e' permessaClicca su un colorePixmapFile pixmap:SegnapostoModuli pluginPop upPrecisionePush un item di menuPreprocessoreRicerca preced.Argomenti del programmaBarra progressivaProgetto** Files di progetto ** Cartella di progetto: %s Sorgente principale: %s.cc/.h Sorgente interfaccia: %s_gui.cc/.h Descrizione Form: %s.frm Descrizione progetto: %s.prj Opzioni progetto: %s.prj.opt Makefile: vdkbMakefile** Files di Progetto ** Directory di progetto: %s Sorgente main: %s.cc/.h Descrizione progetto: %s.prj Opzioni progetto: %s.prj.opt Makefile: vdkbMakefileLista forms del progettoGestore ProgettiNome progetto (senza estensione)Opzioni del progettoDirectory radice del progettoAvverti prima di sot.Proprieta'Proprieta' e segnaliPublicInserisci qui dove e' installato il manuale della VDK (probabilmente in /usr/src/vdk-2.x.y/doc/doxy/html)Inserisci qui la posizione del tuo browser preferitoTermina VDKBuilderTermina VDKBuilder ?Bottone radioRaggiunta fine bufferRiconfiguraRifaiRicarica albero degli widgetsEspr. regolariRimuoveRimuove gruppo bottoni radioElimina un moduloElimina boxElimina pag. correnteElimina fixexElimina frameRimuovi dal progettoElimina handleElimina menuElimina item selezionatoElimina barra menuElimina agendaElimina pannelloElimina scrorrevoleRimuove bottone selez.Elimina tabellaElimina tabella o indiceElimina barraRiapriRiordina widgetsReimpostaRipeti cercaSostituisciSost. tuttoSostit.testoSostitusci:Riprist. defaultRipristina colori e la font di default (sfondo)Riusa questoSpazio fra righe e col.:Righe visibiliEseguiEsegui debuggerEsegue il processo figlioSELEZIONESalvaSalva tuttoSalva FileSalva come...Salva il file come...Salva i messaggi in un fileSalva progettoSalva progetto con nome..Salva/riprist. sessioneContestoScorrevoleContenitore scorrevoleCercaSeleziona un widget, il nuovo widget sara' inserito in quella posizioneSeleziona un widget, il nuovo widget sara' incollato nel contenitore selezionatoSeleziona files per grepSeleziona il modo di inserimentoSeleziona le dimensioni della corniceSeleziona contenitore padreSeleziona lo stato dell'widget per selezionare i coloriTesto selezionatoSelezionando "nihil" si azzera l'assegnamentoNumero blocchiOpzioni VDKBuilderTitoloRilievoPixmap di sfondoStile della barraOmbregg. bordoSpessore bordoColoreValore di defaultDecimaliTipo di displayWidget attivoCambia CarattereTitolo della FormIconaOpzioni grigliaIcona con datiPosizione inizialeGiustificaLimite inferioreDimens.min.Impost le dimens.minime,la form non puo' essere ulteriormente rimpicciolitaNome widgetOrientamentoProprieta'Modo di selez.Modifica ombregg.Ombra/allineam.IncrementoStileEtichettaSuggerimento widgetModo di aggiorn.Limite super.Modifica dimens. %sCon la tabella \"attiva\" vdkbuilder generera' il codice per aprire il file al run-timeLibrerie sharedMostra orarioMostra/nasconde numeri di rigaMostra/nasconde lista messaggiLatoSegnaliBarra scorrevoleSpiacente, i layout inglobati sono disabilitatiSpiacente, operazione non supportata o non autorizzataSpiacente, errore di editing sconosciutoSpiacente, widget non supportatoOrdinatoEditore dei sorgentiBottone spinLanciato il browser (pid %d)Barra di statoStato: mai salvatoStato: salvatoStato: non salvatoPasso 1- Tipo di progettoIncrementoPasso 2 - Cartelle del progettoSupporta emacsSupporta Emacs come editore esterno, tutti i file sorgenti aperti con l'editore del VDKBuilder vengono aperti anche in EmacsSintassi colorata (F6)Sintassi colorataEtichetta tab:TabellaTabella %s rimossaTabelleTabelle/IndiciTestoTesto da trovareTesto da trovare:Grep testo :Testo da sost.:Testo:Salvataggio a tempo (in minuti) dei file sorgenti(0 disabilita)Salva a tempoTemporizzatoreSuggerimento:Cambia anteprimaCambia header/sourceCambia Modulo-FormBarra con bottoniVista ad alberoTutorialTipoUhmm..,tagliare il contenitore piu' esterno ti rendera' difficile recuperarlo. Confermi ?Smarcare per disabilitare l'widgetSmarcare per renedere l'widget invisibileDisfaModulo sconosciutoAggiornaValore superioreUsa tema vdkbFile locale per il completamento delle parole non trovato utilizzo quello di defaultSpaziatura VApplicazione VDKManuale di rif. VDKApplicazione VDKBrowser del manualeManuale di riferimento VDKVDKBuilderEditore dei suggerimentiDatabase dei coloriDatabase componenti di VDKBuilderEditore di VDKBuilderShort cuts dell'editoreOpzioni ambiente VDKBuilderGrep VDKBuilderVDKBuilder ha installato: vdkide.defaults vdkbrc plugins.db tokens.db nella tua home: %s/.vdkb2/resVDKBuilder ha finito %sWizard per progetti VDKBuilderBottone personalizzabileDialogo VDKCustomButtonOpzioni VDKCustomButtonDialogo VDKCustomListApplicazione modaleOpzioni VDKXDatabaseApertura VDKXTableApertura VDKXTableIndexValidoGruppo bottoni radio verticaleBox verticalePannello verticaleSeparatore verticaleDimens. verticaleVista formsVista moduliWI orriz.WI vert.WI ridimens.WI ha una disposizione verticaleWI mostra una disposizione orizzontaleWI: disabilitatoWI: nessun widget selezionatoSolo parole intereIl nome dell'widget non si puo' cancellareI nome degli widget devono seguire le regole del C++Stack degli widgetsStato dell'widgetClipboard degli widgetsParole a capoScrive o salta al metodo di rispostaSupporto XDBStrumenti xdbWidgets per xdbSi_accetta_Aggiunge_Sfondo_Cerca.._Annulla_Cambia_Chiudi e salva_Colori...M_odifica_FinisceA_iuto_Inserisce_Make_Passo succes._Apri_IncollaPasso p_reced._Progetto_Finisci_Termina VDKBuilder_RimuoveDimens.orr._Salva e finisci_CercaUtilita'_Modulo_VistaErrore in lettura o file di progetto sconosciutoNon puo' essere chiusoIndent automatica del codiceContinuo dall'inizio ?copia selezionetaglia selezioneFile di default mancante, programma abortitoAttacca/stacca lista messaggiAttacca/stacca proprieta' e segnalifattoAbilitatofallita creazione della directory:%sFont non disponibile o sbagliatasuggerimentiLa versione del progetto non e' correttaIndent del codiceNon validoIl modulo principale non puo' essere rimossoe' stato modificato, devo salvarlo ?prossima parolaErrore non trovatonessunonormaletab normalechiusura parentesiincolla selezionecon pixmapparola preced.Il progetto:%s gia' esiste, devo sovrascriverlo ?Salvataggio dei messaggiSeleziona e muovesi spiega da soloMostra numeri di rigaSpiacente, redo non ancora disponibilecon successoQuesto e' tutto gente !toggledTipi sintatt.Il modulo e' gia' presente nel progettoIl modulo non puo' essere aggiuntonon toggledvisibilecon errori e/o messaggicon:completamento paroleBottone marcato per xdbCampo di input xdbLista per xdbCampo memovdkbuilder2-2.4.0/po/cat-id-tbl.c0000666000000000000000000000000007400664763012071 vdkbuilder2-2.4.0/README0000644000000000000000000000064207535250427010254 General Information =================== This VDKBuilder version 2.0, a general purpose ide for constructing gui applications using VDK. VDKBuilder is distributed under GPL. =================================== The official web site is: http://vdkbuilder.sourceforge.net Installation ============ See the file 'INSTALL' How to report bugs ================== To report a bug, send mail to: mmotta@guest.net vdkbuilder2-2.4.0/Makefile.in0000644000000000000000000004514710052401332011427 # Makefile.in generated by automake 1.7.8 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GENCAT = @GENCAT@ GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLBISON = @INTLBISON@ INTLLIBS = @INTLLIBS@ INTLOBJS = @INTLOBJS@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PLUGINS_LIBDIR = @PLUGINS_LIBDIR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_NLS = @USE_NLS@ VDK_CFLAGS = @VDK_CFLAGS@ VDK_CONFIG = @VDK_CONFIG@ VDK_LIBS = @VDK_LIBS@ VDK_VERSION_MAJOR = @VDK_VERSION_MAJOR@ VDK_VERSION_MICRO = @VDK_VERSION_MICRO@ VDK_VERSION_MINOR = @VDK_VERSION_MINOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ vdkxdbpath = @vdkxdbpath@ SUBDIRS = include plugins vdkbuilder data example po intl doc EXTRA_DIST = \ autogen.sh\ TODO\ BUGS subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = vdkbuilder.spec intl/Makefile DIST_SOURCES = RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ ps-recursive install-info-recursive uninstall-info-recursive \ all-recursive install-data-recursive install-exec-recursive \ installdirs-recursive install-recursive uninstall-recursive \ check-recursive installcheck-recursive DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure \ ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL Makefile.am NEWS \ TODO acconfig.h aclocal.m4 config.guess config.h.in config.sub \ configure configure.in depcomp install-sh ltconfig ltmain.sh \ missing mkinstalldirs vdkbuilder.spec.in DIST_SUBDIRS = $(SUBDIRS) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) $(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/acconfig.h cd $(top_srcdir) && $(AUTOHEADER) touch $(srcdir)/config.h.in distclean-hdr: -rm -f config.h stamp-h1 vdkbuilder.spec: $(top_builddir)/config.status vdkbuilder.spec.in cd $(top_builddir) && $(SHELL) ./config.status $@ intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ETAGS = etags ETAGSFLAGS = CTAGS = ctags CTAGSFLAGS = tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if (etags --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ else \ include_option=--include; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -f $$subdir/TAGS && \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$tags$$unique" \ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = . distdir = $(PACKAGE)-$(VERSION) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print distdir: $(DISTFILES) $(am__remove_distdir) mkdir $(distdir) $(mkinstalldirs) $(distdir)/. $(distdir)/data/res $(distdir)/intl $(distdir)/po @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" \ distdir=../$(distdir)/$$subdir \ distdir) \ || exit 1; \ fi; \ done -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist dist-all: distdir $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist $(am__remove_distdir) GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ --with-included-gettext \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ && rm -f $(distdir).tar.gz \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @echo "$(distdir).tar.gz is ready for distribution" | \ sed 'h;s/./=/g;p;x;p;x' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: info: info-recursive info-am: install-data-am: install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ clean-generic clean-libtool clean-recursive ctags \ ctags-recursive dist dist-all dist-gzip distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-recursive distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am dvi-recursive info info-am \ info-recursive install install-am install-data install-data-am \ install-data-recursive install-exec install-exec-am \ install-exec-recursive install-info install-info-am \ install-info-recursive install-man install-recursive \ install-strip installcheck installcheck-am installdirs \ installdirs-am installdirs-recursive maintainer-clean \ maintainer-clean-generic maintainer-clean-recursive mostlyclean \ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ tags-recursive uninstall uninstall-am uninstall-info-am \ uninstall-info-recursive uninstall-recursive .PHONY: files release snapshot files: @files=`ls $(DISTFILES) 2> /dev/null` ; for p in $$files; do \ echo $$p; \ done @for subdir in $(SUBDIRS); do \ files=`cd $$subdir; $(MAKE) files | grep -v "make\[[1-9]\]"`; \ for file in $$files; do \ echo $$subdir/$$files; \ done; \ done release: rm -rf .deps */.deps $(MAKE) distcheck snapshot: $(MAKE) dist distdir=$(PACKAGE)`date +"%Y%m%d"` # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vdkbuilder2-2.4.0/configure0000755000000000000000000300633610052401334011273 #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.57. # # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi tagnames=`echo "$tagnames,CXX" | sed 's/^,//'` tagnames=`echo "$tagnames,F77" | sed 's/^,//'` # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="vdkbuilder/vdkb.cc" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #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 INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE ALLOCA GLIBC21 LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB VDK_CONFIG VDK_VERSION_MAJOR VDK_VERSION_MINOR VDK_VERSION_MICRO VDK_CFLAGS VDK_LIBS vdkxdbpath PLUGINS_LIBDIR LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP ac_env_CXX_set=${CXX+set} ac_env_CXX_value=$CXX ac_cv_env_CXX_set=${CXX+set} ac_cv_env_CXX_value=$CXX ac_env_CXXFLAGS_set=${CXXFLAGS+set} ac_env_CXXFLAGS_value=$CXXFLAGS ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} ac_cv_env_CXXFLAGS_value=$CXXFLAGS ac_env_CXXCPP_set=${CXXCPP+set} ac_env_CXXCPP_value=$CXXCPP ac_cv_env_CXXCPP_set=${CXXCPP+set} ac_cv_env_CXXCPP_value=$CXXCPP ac_env_F77_set=${F77+set} ac_env_F77_value=$F77 ac_cv_env_F77_set=${F77+set} ac_cv_env_F77_value=$F77 ac_env_FFLAGS_set=${FFLAGS+set} ac_env_FFLAGS_value=$FFLAGS ac_cv_env_FFLAGS_set=${FFLAGS+set} ac_cv_env_FFLAGS_value=$FFLAGS # # Report the --help message. # if test "$ac_init_help" = "long"; then # 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 this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-dependency-tracking Speeds up one-time builds --enable-dependency-tracking Do not reject slow dependency extractors --disable-libtool-lock avoid locking (might break parallel builds) --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths --disable-vdktest Do not try to compile and run a test VDK program --enable-devel=yes/no Compile VDKBuilder with all info for debug default=no --enable-opt=OPTIMIZATION/no Compile with -Ox optimization default=2 --enable-vdkxdb=yes/no Enable vdkxdb support default=no Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-pic try to use only PIC/non-PIC objects [default=use both] --with-tags[=TAGS] include additional configurations [automatic] --with-gnu-ld assume the C compiler uses GNU ld default=no --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-included-gettext use the GNU gettext library included here --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-vdk-prefix=PFX Prefix where VDK is installed (optional) --with-vdk-exec-prefix=PFX Exec prefix where VDK is installed (optional) Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.57. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------- ## ## Output files. ## ## ------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core core.* *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu PACKAGE=vdkbuilder2 VERSION=2.4.0 REQUIRED_VDK=2.4.0 am__api_version="1.7" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 test "$program_prefix" != NONE && program_transform_name="s,^,$program_prefix,;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s,\$,$program_suffix,;$program_transform_name" # Double any \ or $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; 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_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else 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_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=$PACKAGE VERSION=$VERSION cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} AMTAR=${AMTAR-"${am_missing_run}tar"} install_sh=${install_sh-"$am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; 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_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else 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_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; 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_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else 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_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi; echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE ac_config_headers="$ac_config_headers config.h" # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi; # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi; # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6 rm -f confinc confmf # Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval="$enable_dependency_tracking" fi; if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; 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_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else 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_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; 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_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else 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_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; 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_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else 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_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; 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_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else 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_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; 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_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no 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 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; 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_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else 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_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; 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_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else 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_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:$LINENO: checking for C compiler default output" >&5 echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ ''\ '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c : > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 if test "${lt_cv_path_SED+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && break cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done SED=$lt_cv_path_SED fi echo "$as_me:$LINENO: result: $SED" >&5 echo "${ECHO_T}$SED" >&6 echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/${ac_tool_prefix}nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac esac fi done IFS="$lt_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 echo "${ECHO_T}$lt_cv_path_NM" >&6 NM="$lt_cv_path_NM" echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6 fi echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi4*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin* | mingw* | pw32*) # win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='win32_libid' ;; darwin* | rhapsody*) # this will be overwritten by pass_all, but leave it in just in case lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' lt_cv_file_magic_cmd='/usr/bin/file -L' case "$host_os" in rhapsody* | darwin1.[012]) lt_cv_file_magic_test_file=`/System/Library/Frameworks/System.framework/System` ;; *) # Darwin 1.3 on lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' ;; esac lt_cv_deplibs_check_method=pass_all ;; freebsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case "$host_cpu" in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; irix5* | irix6* | nonstopux*) case $host_os in irix5* | nonstopux*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" ;; esac lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux*) case $host_cpu in alpha* | hppa* | i*86 | ia64* | m68* | mips | mipsel | powerpc* | sparc* | s390* | sh* | x86_64*) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx) lt_cv_deplibs_check_method=unknown ;; openbsd*) lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' else lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' fi ;; osf3* | osf4* | osf5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' lt_cv_file_magic_test_file=/shlib/libc.so lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_test_file=/lib/libc.so ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac fi echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line 3573 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case "`/usr/bin/file conftest.o`" in *32-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; esac need_locks="$enable_libtool_lock" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ( cat <<\_ASBOX ## ------------------------------------ ## ## Report this to bug-autoconf@gnu.org. ## ## ------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ( cat <<\_ASBOX ## ------------------------------------ ## ## Report this to bug-autoconf@gnu.org. ## ## ------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; 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_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else 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_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; 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_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else 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_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CXX" && break done test -n "$ac_ct_CXX" || ac_ct_CXX="g++" CXX=$ac_ct_CXX fi # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi for ac_declaration in \ ''\ '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c : > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi echo "$as_me:$LINENO: result: $CXXCPP" >&5 echo "${ECHO_T}$CXXCPP" >&6 ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g77 f77 xlf frt pgf77 fl32 af77 fort77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 lf95 g95 do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; 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_prog_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else 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_prog_F77="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then echo "$as_me:$LINENO: result: $F77" >&5 echo "${ECHO_T}$F77" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in g77 f77 xlf frt pgf77 fl32 af77 fort77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 lf95 g95 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; 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_prog_ac_ct_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else 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_prog_ac_ct_F77="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 echo "${ECHO_T}$ac_ct_F77" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_F77" && break done F77=$ac_ct_F77 fi # Provide some information about the compiler. echo "$as_me:5070:" \ "checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } # If we don't use `.F' as extension, the preprocessor is not run on the # input file. ac_save_ext=$ac_ext ac_ext=F echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 if test "${ac_cv_f77_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 ac_ext=$ac_save_ext G77=`test $ac_compiler_gnu = yes && echo yes` ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_f77_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else FFLAGS=-g cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_f77_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_f77_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "$G77" = yes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "$G77" = yes; then FFLAGS="-O2" else FFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 if test "${lt_cv_sys_max_cmd_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else i=0 testring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$testring" 2>/dev/null` \ = "XX$testring") >/dev/null 2>&1 && new_result=`expr "X$testring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` testring=$testring$testring done testring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 else echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 fi # Check for command to grab the raw symbol name followed by C symbol from nm. echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris* | sysv5*) symcode='[BDRT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then echo "$as_me:$LINENO: result: failed" >&5 echo "${ECHO_T}failed" >&6 else echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6 fi echo "$as_me:$LINENO: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6 if test "${lt_cv_objdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 echo "${ECHO_T}$lt_cv_objdir" >&6 objdir=$lt_cv_objdir case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; 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_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else 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_prog_AR="${ac_tool_prefix}ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then echo "$as_me:$LINENO: result: $AR" >&5 echo "${ECHO_T}$AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; 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_prog_ac_ct_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else 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_prog_ac_ct_AR="ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 echo "${ECHO_T}$ac_ct_AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi AR=$ac_ct_AR else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; 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_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else 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_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; 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_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else 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_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; 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_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else 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_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; 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_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else 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_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo "$as_me:$LINENO: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else MAGIC_CMD=: fi fi fi ;; esac enable_dlopen=yes enable_win32_dll=no # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Check whether --with-pic or --without-pic was given. if test "${with_pic+set}" = set; then withval="$with_pic" pic_mode="$withval" else pic_mode=default fi; test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}\n' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # # Check for any special shared library compilation flags. # lt_prog_cc_shlib= if test "$GCC" = no; then case $host_os in sco3.2v5*) lt_prog_cc_shlib='-belf' ;; esac fi if test -n "$lt_prog_cc_shlib"; then { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : else { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} lt_cv_prog_cc_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 if test "${lt_prog_compiler_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_prog_compiler_static" printf "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 else lt_prog_compiler_static_works=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" fi echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 if test x"$lt_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:6075: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:6079: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; linux*) case $CC in icc|ecc) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; ccc) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic='-Kpic' lt_prog_compiler_static='-dn' ;; solaris*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 echo "${ECHO_T}$lt_prog_compiler_pic" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:6307: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:6311: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 if test x"$lt_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:6374: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:6378: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag= enable_shared_with_static_runtimes=no archive_cmds= archive_expsym_cmds= old_archive_From_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported link_all_deplibs=unknown hardcode_automatic=no module_cmds= module_expsym_cmds= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; linux*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds="$tmp_archive_cmds" fi else ld_shlibs=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_libdir_separator=':' link_all_deplibs=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec=' ' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi4*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then archive_cmds_need_lc=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag='-flat_namespace -undefined suppress' ;; esac # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. Also zsh mangles # `"' quotes if we put them in here... so don't! lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='-all_load $convenience' link_all_deplibs=yes fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=no hardcode_shlibpath_var=no ;; ia64*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=no hardcode_shlibpath_var=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; *) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld='-rpath $libdir' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag=' -z text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6 test "$ld_shlibs" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 echo "${ECHO_T}$archive_cmds_need_lc" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var " || \ test "X$hardcode_automatic"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6 if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' # Find out which ABI we are using (multilib Linux x86_64 hack). libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line 7739 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 ;; esac fi rm -rf conftest* ;; *) ;; esac sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}" sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Report which librarie types wil actually be built echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; darwin* | rhapsody*) if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then archive_cmds_need_lc=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag='-flat_namespace -undefined suppress' ;; esac # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. Also zsh mangles # `"' quotes if we put them in here... so don't! output_verbose_link_cmd='echo' archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' module_cmds='$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='-all_load $convenience' link_all_deplibs=yes fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler \ CC \ LD \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_prog_compiler_no_builtin_flag \ export_dynamic_flag_spec \ thread_safe_flag_spec \ whole_archive_flag_spec \ enable_shared_with_static_runtimes \ old_archive_cmds \ old_archive_from_new_cmds \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ archive_cmds \ archive_expsym_cmds \ postinstall_cmds \ postuninstall_cmds \ old_archive_from_expsyms_cmds \ allow_undefined_flag \ no_undefined_flag \ export_symbols_cmds \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ hardcode_automatic \ module_cmds \ module_expsym_cmds \ lt_cv_prog_compiler_c_o \ exclude_expsyms \ include_expsyms; do case $var in old_archive_cmds | \ old_archive_from_new_cmds | \ archive_cmds | \ archive_expsym_cmds | \ module_cmds | \ module_expsym_cmds | \ old_archive_from_expsyms_cmds | \ export_symbols_cmds | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" { echo "$as_me:$LINENO: creating $ofile" >&5 echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler # Is the compiler the GNU C compiler? with_gcc=$GCC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext='$shrext' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" # Check whether --with-tags or --without-tags was given. if test "${with_tags+set}" = set; then withval="$with_tags" tagnames="$withval" fi; if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 echo "$as_me: error: invalid tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} { (exit 1); exit 1; }; } fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && test "X$CXX" != "Xno"; then ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_automatic_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= # Source file extension for C++ test sources. ac_ext=cc # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *) { return(0); }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes if test "$GXX" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_CXX=yes else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_CXX=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX=' ' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then archive_cmds_need_lc_CXX=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_CXX='-undefined suppress' ;; *) # Darwin 1.3 on test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag_CXX='-flat_namespace -undefined suppress' ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_CXX='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_CXX='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='-all_load $convenience' link_all_deplibs_CXX=yes fi ;; dgux*) case $cc_basename in ec++) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd12*) # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC) archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | egrep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_CXX='+b $libdir' hardcode_libdir_separator_CXX=: ;; ia64*) hardcode_libdir_flag_spec_CXX='-L$libdir' ;; *) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case "$host_cpu" in hppa*64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; *) hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC) case "$host_cpu" in hppa*64*|ia64*) archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case "$host_cpu" in ia64*|hppa*64*) archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; irix5* | irix6*) case $cc_basename in CC) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: ;; linux*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc) # Intel C++ with_gnu_ld=yes archive_cmds_need_lc_CXX=no archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; cxx) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; osf3*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ $rm $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sco*) archive_cmds_need_lc_CXX=no case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.0-5 | solaris2.0-5.*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system # linker. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac link_all_deplibs_CXX=yes # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' fi ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) archive_cmds_need_lc_CXX=no ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6 test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" for p in `eval $output_verbose_link_cmd`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" \ || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $rm -f confest.$objext case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux*) case $cc_basename in KCC) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; icpc) # Intel C++ lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; cxx) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; sco*) case $cc_basename in CC) lt_prog_compiler_pic_CXX='-fPIC' ;; *) ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; unixware*) ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:10665: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:10669: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_CXX=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:10732: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:10736: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix4* | aix5*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6 test "$ld_shlibs_CXX" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var CXX" || \ test "X$hardcode_automatic_CXX"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 echo "${ECHO_T}$hardcode_action_CXX" >&6 if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' # Find out which ABI we are using (multilib Linux x86_64 hack). libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line 11303 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 ;; esac fi rm -rf conftest* ;; *) ;; esac sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}" sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_CXX \ CC_CXX \ LD_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ export_dynamic_flag_spec_CXX \ thread_safe_flag_spec_CXX \ whole_archive_flag_spec_CXX \ enable_shared_with_static_runtimes_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ postinstall_cmds_CXX \ postuninstall_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ export_symbols_cmds_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ hardcode_automatic_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ lt_cv_prog_compiler_c_o_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX; do case $var in old_archive_cmds_CXX | \ old_archive_from_new_cmds_CXX | \ archive_cmds_CXX | \ archive_expsym_cmds_CXX | \ module_cmds_CXX | \ module_expsym_cmds_CXX | \ old_archive_from_expsyms_cmds_CXX | \ export_symbols_cmds_CXX | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU C compiler? with_gcc=$GCC_CXX # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_CXX # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext='$shrext' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_CXX old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_CXX # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_CXX # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_CXX # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_CXX # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_CXX" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu archive_cmds_need_lc_F77=no allow_undefined_flag_F77= always_export_symbols_F77=no archive_expsym_cmds_F77= export_dynamic_flag_spec_F77= hardcode_direct_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= link_all_deplibs_F77=unknown old_archive_cmds_F77=$old_archive_cmds no_undefined_flag_F77= whole_archive_flag_spec_F77= enable_shared_with_static_runtimes_F77=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o objext_F77=$objext # Code to be used in simple compile tests lt_simple_compile_test_code=" subroutine t\n return\n end\n" # Code to be used in simple link tests lt_simple_link_test_code=" program t\n end\n" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC compiler_F77=$CC cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4*) test "$enable_shared" = yes && enable_static=no ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 test "$ld_shlibs_F77" = no && can_build_shared=no GCC_F77="$G77" LD_F77="$LD" lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_static_F77='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_F77=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_F77='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' else lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_F77='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_F77='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_F77='-non_shared' ;; newsos6) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; linux*) case $CC in icc|ecc) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; ccc) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_F77='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic_F77='-Kpic' lt_prog_compiler_static_F77='-dn' ;; solaris*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sunos4*) lt_prog_compiler_wl_F77='-Qoption ld ' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_F77='-Kconform_pic' lt_prog_compiler_static_F77='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_F77=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_F77" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:12919: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:12923: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_F77=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 if test x"$lt_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in "" | " "*) ;; *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; esac else lt_prog_compiler_pic_F77= lt_prog_compiler_can_build_shared_F77=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= ;; *) lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:12986: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:12990: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag_F77= enable_shared_with_static_runtimes_F77=no archive_cmds_F77= archive_expsym_cmds_F77= old_archive_From_new_cmds_F77= old_archive_from_expsyms_cmds_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= thread_safe_flag_spec_F77= hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_direct_F77=no hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=unsupported link_all_deplibs_F77=unknown hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= always_export_symbols_F77=no export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_F77= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_F77=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_F77=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_F77=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_F77=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_F77=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_F77='-L$libdir' allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; linux*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds_F77="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds_F77="$tmp_archive_cmds" fi else ld_shlibs_F77=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac if test "$ld_shlibs_F77" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_F77='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_F77= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_F77='' hardcode_direct_F77=yes hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_F77=yes else # We have old collect2 hardcode_direct_F77=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_F77=yes hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_F77=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' ${wl}-bernotok' allow_undefined_flag_F77=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_F77=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_F77=' ' archive_cmds_need_lc_F77=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # see comment about different semantics on the GNU ld section ld_shlibs_F77=no ;; bsdi4*) export_dynamic_flag_spec_F77=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_F77=yes ;; darwin* | rhapsody*) if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then archive_cmds_need_lc_F77=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_F77='-undefined suppress' ;; *) # Darwin 1.3 on test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag_F77='-flat_namespace -undefined suppress' ;; esac # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. Also zsh mangles # `"' quotes if we put them in here... so don't! lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_F77='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_F77='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported whole_archive_flag_spec_F77='-all_load $convenience' link_all_deplibs_F77=yes fi ;; dgux*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; freebsd1*) ld_shlibs_F77=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes export_dynamic_flag_spec_F77='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_F77='+b $libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; ia64*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=no hardcode_shlibpath_var_F77=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; *) hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: link_all_deplibs_F77=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; newsos6) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_shlibpath_var_F77=no ;; openbsd*) hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-R$libdir' ;; *) archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' fi hardcode_libdir_separator_F77=: ;; sco3.2v5*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag_F77=' -z text' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_F77=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; sysv4) case $host_vendor in sni) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_F77='$CC -r -o $output$reload_objs' hardcode_direct_F77=no ;; motorola) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv4.3*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_F77=yes fi ;; sysv4.2uw2*) archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag_F77='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv5*) no_undefined_flag_F77=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec_F77= hardcode_shlibpath_var_F77=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; *) ld_shlibs_F77=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 echo "${ECHO_T}$ld_shlibs_F77" >&6 test "$ld_shlibs_F77" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_F77" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_F77=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_F77 in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_F77=no else archive_cmds_need_lc_F77=yes fi allow_undefined_flag_F77=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var F77" || \ test "X$hardcode_automatic_F77"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_F77" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && test "$hardcode_minus_L_F77" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_F77=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_F77=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_F77=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 echo "${ECHO_T}$hardcode_action_F77" >&6 if test "$hardcode_action_F77" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' # Find out which ABI we are using (multilib Linux x86_64 hack). libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line 14329 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 ;; esac fi rm -rf conftest* ;; *) ;; esac sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}" sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_F77 \ CC_F77 \ LD_F77 \ lt_prog_compiler_wl_F77 \ lt_prog_compiler_pic_F77 \ lt_prog_compiler_static_F77 \ lt_prog_compiler_no_builtin_flag_F77 \ export_dynamic_flag_spec_F77 \ thread_safe_flag_spec_F77 \ whole_archive_flag_spec_F77 \ enable_shared_with_static_runtimes_F77 \ old_archive_cmds_F77 \ old_archive_from_new_cmds_F77 \ predep_objects_F77 \ postdep_objects_F77 \ predeps_F77 \ postdeps_F77 \ compiler_lib_search_path_F77 \ archive_cmds_F77 \ archive_expsym_cmds_F77 \ postinstall_cmds_F77 \ postuninstall_cmds_F77 \ old_archive_from_expsyms_cmds_F77 \ allow_undefined_flag_F77 \ no_undefined_flag_F77 \ export_symbols_cmds_F77 \ hardcode_libdir_flag_spec_F77 \ hardcode_libdir_flag_spec_ld_F77 \ hardcode_libdir_separator_F77 \ hardcode_automatic_F77 \ module_cmds_F77 \ module_expsym_cmds_F77 \ lt_cv_prog_compiler_c_o_F77 \ exclude_expsyms_F77 \ include_expsyms_F77; do case $var in old_archive_cmds_F77 | \ old_archive_from_new_cmds_F77 | \ archive_cmds_F77 | \ archive_expsym_cmds_F77 | \ module_cmds_F77 | \ module_expsym_cmds_F77 | \ old_archive_from_expsyms_cmds_F77 | \ export_symbols_cmds_F77 | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_F77 # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_F77 # Is the compiler the GNU C compiler? with_gcc=$GCC_F77 # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_F77 # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_F77 # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext='$shrext' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_F77 pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_F77 # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_F77 old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_F77 archive_expsym_cmds=$lt_archive_expsym_cmds_F77 postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_F77 module_expsym_cmds=$lt_module_expsym_cmds_F77 # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_F77 # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_F77 # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_F77 # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_F77 # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_F77 # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_F77 # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_F77 # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_F77 # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_F77 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_F77 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_F77 # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_F77 # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_F77" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_F77 # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_F77 # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_F77 # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_F77 # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o objext_GCJ=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}\n" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC compiler_GCJ=$CC # GCJ did not exist at the time GCC didn't implicitly link libc in. archive_cmds_need_lc_GCJ=no lt_prog_compiler_no_builtin_flag_GCJ= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:14975: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:14979: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl_GCJ= lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_static_GCJ='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_GCJ='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_GCJ=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_GCJ=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_GCJ='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' else lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_GCJ='-non_shared' ;; newsos6) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; linux*) case $CC in icc|ecc) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-static' ;; ccc) lt_prog_compiler_wl_GCJ='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_GCJ='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic_GCJ='-Kpic' lt_prog_compiler_static_GCJ='-dn' ;; solaris*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sunos4*) lt_prog_compiler_wl_GCJ='-Qoption ld ' lt_prog_compiler_pic_GCJ='-PIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_GCJ='-Kconform_pic' lt_prog_compiler_static_GCJ='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic_GCJ='-pic' lt_prog_compiler_static_GCJ='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_GCJ=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_GCJ" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:15207: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:15211: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_GCJ=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in "" | " "*) ;; *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; esac else lt_prog_compiler_pic_GCJ= lt_prog_compiler_can_build_shared_GCJ=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_GCJ= ;; *) lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:15274: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:15278: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_GCJ=yes fi fi chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag_GCJ= enable_shared_with_static_runtimes_GCJ=no archive_cmds_GCJ= archive_expsym_cmds_GCJ= old_archive_From_new_cmds_GCJ= old_archive_from_expsyms_cmds_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= thread_safe_flag_spec_GCJ= hardcode_libdir_flag_spec_GCJ= hardcode_libdir_flag_spec_ld_GCJ= hardcode_libdir_separator_GCJ= hardcode_direct_GCJ=no hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=unsupported link_all_deplibs_GCJ=unknown hardcode_automatic_GCJ=no module_cmds_GCJ= module_expsym_cmds_GCJ= always_export_symbols_GCJ=no export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_GCJ= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_GCJ=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_GCJ=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_GCJ=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_GCJ=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_GCJ=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_GCJ='-L$libdir' allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=no enable_shared_with_static_runtimes_GCJ=yes export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_GCJ=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; sunos4*) archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; linux*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds_GCJ="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds_GCJ="$tmp_archive_cmds" fi else ld_shlibs_GCJ=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac if test "$ld_shlibs_GCJ" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_GCJ= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=yes archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_GCJ=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_GCJ=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_GCJ='' hardcode_direct_GCJ=yes hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_GCJ=yes else # We have old collect2 hardcode_direct_GCJ=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_GCJ=yes hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_libdir_separator_GCJ= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_GCJ=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_GCJ='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_GCJ="-z nodefs" archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_GCJ=' ${wl}-bernotok' allow_undefined_flag_GCJ=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_GCJ=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_GCJ=' ' archive_cmds_need_lc_GCJ=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # see comment about different semantics on the GNU ld section ld_shlibs_GCJ=no ;; bsdi4*) export_dynamic_flag_spec_GCJ=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_GCJ=' ' allow_undefined_flag_GCJ=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_GCJ='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_GCJ=yes ;; darwin* | rhapsody*) if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then archive_cmds_need_lc_GCJ=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_GCJ='-undefined suppress' ;; *) # Darwin 1.3 on test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' ;; esac # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. Also zsh mangles # `"' quotes if we put them in here... so don't! lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_GCJ='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct_GCJ=no hardcode_automatic_GCJ=yes hardcode_shlibpath_var_GCJ=unsupported whole_archive_flag_spec_GCJ='-all_load $convenience' link_all_deplibs_GCJ=yes fi ;; dgux*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; freebsd1*) ld_shlibs_GCJ=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no ;; ia64*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; *) hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: link_all_deplibs_GCJ=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; newsos6) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_shlibpath_var_GCJ=no ;; openbsd*) hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' ;; *) archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes allow_undefined_flag_GCJ=unsupported archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_GCJ='-rpath $libdir' fi hardcode_libdir_separator_GCJ=: ;; sco3.2v5*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag_GCJ=' -z text' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_shlibpath_var_GCJ=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_GCJ=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; sysv4) case $host_vendor in sni) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_GCJ='$CC -r -o $output$reload_objs' hardcode_direct_GCJ=no ;; motorola) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv4.3*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_GCJ=yes fi ;; sysv4.2uw2*) archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag_GCJ='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv5*) no_undefined_flag_GCJ=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec_GCJ= hardcode_shlibpath_var_GCJ=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; *) ld_shlibs_GCJ=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 echo "${ECHO_T}$ld_shlibs_GCJ" >&6 test "$ld_shlibs_GCJ" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_GCJ" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_GCJ=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_GCJ in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_GCJ compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ allow_undefined_flag_GCJ= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_GCJ=no else archive_cmds_need_lc_GCJ=yes fi allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var GCJ" || \ test "X$hardcode_automatic_GCJ"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_GCJ" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && test "$hardcode_minus_L_GCJ" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_GCJ=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_GCJ=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_GCJ=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 echo "${ECHO_T}$hardcode_action_GCJ" >&6 if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' # Find out which ABI we are using (multilib Linux x86_64 hack). libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line 16639 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 ;; esac fi rm -rf conftest* ;; *) ;; esac sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}" sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_GCJ \ CC_GCJ \ LD_GCJ \ lt_prog_compiler_wl_GCJ \ lt_prog_compiler_pic_GCJ \ lt_prog_compiler_static_GCJ \ lt_prog_compiler_no_builtin_flag_GCJ \ export_dynamic_flag_spec_GCJ \ thread_safe_flag_spec_GCJ \ whole_archive_flag_spec_GCJ \ enable_shared_with_static_runtimes_GCJ \ old_archive_cmds_GCJ \ old_archive_from_new_cmds_GCJ \ predep_objects_GCJ \ postdep_objects_GCJ \ predeps_GCJ \ postdeps_GCJ \ compiler_lib_search_path_GCJ \ archive_cmds_GCJ \ archive_expsym_cmds_GCJ \ postinstall_cmds_GCJ \ postuninstall_cmds_GCJ \ old_archive_from_expsyms_cmds_GCJ \ allow_undefined_flag_GCJ \ no_undefined_flag_GCJ \ export_symbols_cmds_GCJ \ hardcode_libdir_flag_spec_GCJ \ hardcode_libdir_flag_spec_ld_GCJ \ hardcode_libdir_separator_GCJ \ hardcode_automatic_GCJ \ module_cmds_GCJ \ module_expsym_cmds_GCJ \ lt_cv_prog_compiler_c_o_GCJ \ exclude_expsyms_GCJ \ include_expsyms_GCJ; do case $var in old_archive_cmds_GCJ | \ old_archive_from_new_cmds_GCJ | \ archive_cmds_GCJ | \ archive_expsym_cmds_GCJ | \ module_cmds_GCJ | \ module_expsym_cmds_GCJ | \ old_archive_from_expsyms_cmds_GCJ | \ export_symbols_cmds_GCJ | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_GCJ # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_GCJ # Is the compiler the GNU C compiler? with_gcc=$GCC_GCJ # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_GCJ # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_GCJ # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext='$shrext' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_GCJ pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_GCJ # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_GCJ old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_GCJ archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_GCJ module_expsym_cmds=$lt_module_expsym_cmds_GCJ # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_GCJ # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_GCJ # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_GCJ # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_GCJ # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_GCJ # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_GCJ # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_GCJ # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_GCJ # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_GCJ # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_GCJ" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_GCJ # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_GCJ # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_GCJ # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_GCJ # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; RC) # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o objext_RC=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC compiler_RC=$CC lt_cv_prog_compiler_c_o_RC=yes # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_RC \ CC_RC \ LD_RC \ lt_prog_compiler_wl_RC \ lt_prog_compiler_pic_RC \ lt_prog_compiler_static_RC \ lt_prog_compiler_no_builtin_flag_RC \ export_dynamic_flag_spec_RC \ thread_safe_flag_spec_RC \ whole_archive_flag_spec_RC \ enable_shared_with_static_runtimes_RC \ old_archive_cmds_RC \ old_archive_from_new_cmds_RC \ predep_objects_RC \ postdep_objects_RC \ predeps_RC \ postdeps_RC \ compiler_lib_search_path_RC \ archive_cmds_RC \ archive_expsym_cmds_RC \ postinstall_cmds_RC \ postuninstall_cmds_RC \ old_archive_from_expsyms_cmds_RC \ allow_undefined_flag_RC \ no_undefined_flag_RC \ export_symbols_cmds_RC \ hardcode_libdir_flag_spec_RC \ hardcode_libdir_flag_spec_ld_RC \ hardcode_libdir_separator_RC \ hardcode_automatic_RC \ module_cmds_RC \ module_expsym_cmds_RC \ lt_cv_prog_compiler_c_o_RC \ exclude_expsyms_RC \ include_expsyms_RC; do case $var in old_archive_cmds_RC | \ old_archive_from_new_cmds_RC | \ archive_cmds_RC | \ archive_expsym_cmds_RC | \ module_cmds_RC | \ module_expsym_cmds_RC | \ old_archive_from_expsyms_cmds_RC | \ export_symbols_cmds_RC | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_RC # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_RC # Is the compiler the GNU C compiler? with_gcc=$GCC_RC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_RC # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_RC # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext='$shrext' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_RC pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_RC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_RC old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_RC archive_expsym_cmds=$lt_archive_expsym_cmds_RC postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_RC module_expsym_cmds=$lt_module_expsym_cmds_RC # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_RC # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_RC # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_RC # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_RC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_RC # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_RC # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_RC # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_RC # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_RC # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_RC # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_RC # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_RC # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_RC # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_RC" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_RC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_RC # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_RC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_RC # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ;; *) { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 echo "$as_me: error: Unsupported tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 echo "$as_me: error: unable to update list of available tagged configurations." >&2;} { (exit 1); exit 1; }; } fi fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion ALL_LINGUAS="en it" MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi echo "$as_me:$LINENO: checking whether NLS is requested" >&5 echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" USE_NLS=$enableval else USE_NLS=yes fi; echo "$as_me:$LINENO: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; 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_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then echo "$as_me:$LINENO: result: $MSGFMT" >&5 echo "${ECHO_T}$MSGFMT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; 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_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # 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_GMSGFMT="$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 test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then echo "$as_me:$LINENO: result: $GMSGFMT" >&5 echo "${ECHO_T}$GMSGFMT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; 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_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then echo "$as_me:$LINENO: result: $XGETTEXT" >&5 echo "${ECHO_T}$XGETTEXT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f messages.po # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; 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_MSGMERGE+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then echo "$as_me:$LINENO: result: $MSGMERGE" >&5 echo "${ECHO_T}$MSGMERGE" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$GMSGFMT" != ":"; then if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 GMSGFMT=":" fi fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 XGETTEXT=":" fi rm -f messages.po fi ac_config_commands="$ac_config_commands default-1" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; 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_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else 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_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; 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_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else 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_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 if test "${ac_cv_lib_cposix_strerror+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcposix $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char strerror (); int main () { strerror (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_cposix_strerror=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_cposix_strerror=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 if test $ac_cv_lib_cposix_strerror = yes; then LIBS="$LIBS -lcposix" fi echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset x; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++ccp; p = (char**) ccp; ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF #define const _ACEOF fi echo "$as_me:$LINENO: checking for inline" >&5 echo $ECHO_N "checking for inline... $ECHO_C" >&6 if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_inline=$ac_kw; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done fi echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 echo "${ECHO_T}$ac_cv_c_inline" >&6 case $ac_cv_c_inline in inline | yes) ;; no) cat >>confdefs.h <<\_ACEOF #define inline _ACEOF ;; *) cat >>confdefs.h <<_ACEOF #define inline $ac_cv_c_inline _ACEOF ;; esac echo "$as_me:$LINENO: checking for off_t" >&5 echo $ECHO_N "checking for off_t... $ECHO_C" >&6 if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { if ((off_t *) 0) return 0; if (sizeof (off_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_off_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_off_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 echo "${ECHO_T}$ac_cv_type_off_t" >&6 if test $ac_cv_type_off_t = yes; then : else cat >>confdefs.h <<_ACEOF #define off_t long _ACEOF fi echo "$as_me:$LINENO: checking for size_t" >&5 echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { if ((size_t *) 0) return 0; if (sizeof (size_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_size_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned _ACEOF fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo "$as_me:$LINENO: checking for working alloca.h" >&5 echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { char *p = (char *) alloca (2 * sizeof (int)); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_working_alloca_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_working_alloca_h=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ALLOCA_H 1 _ACEOF fi echo "$as_me:$LINENO: checking for alloca" >&5 echo $ECHO_N "checking for alloca... $ECHO_C" >&6 if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __GNUC__ # define alloca __builtin_alloca #else # ifdef _MSC_VER # include # define alloca _alloca # else # if HAVE_ALLOCA_H # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ char *alloca (); # endif # endif # endif # endif #endif int main () { char *p = (char *) alloca (1); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_alloca_works=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_alloca_works=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 if test $ac_cv_func_alloca_works = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ALLOCA 1 _ACEOF else # The SVR3 libPW and SVR4 libucb both contain incompatible functions # that cause trouble. Some versions do not even contain alloca or # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. ALLOCA=alloca.$ac_objext cat >>confdefs.h <<\_ACEOF #define C_ALLOCA 1 _ACEOF echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if defined(CRAY) && ! defined(CRAY2) webecray #else wenotbecray #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "webecray" >/dev/null 2>&1; then ac_cv_os_cray=yes else ac_cv_os_cray=no fi rm -f conftest* fi echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 echo "${ECHO_T}$ac_cv_os_cray" >&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define CRAY_STACKSEG_END $ac_func _ACEOF break fi done fi echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_c_stack_direction=0 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int find_stack_direction () { static char *addr = 0; auto char dummy; if (addr == 0) { addr = &dummy; return find_stack_direction (); } else return (&dummy > addr) ? 1 : -1; } int main () { exit (find_stack_direction () < 0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_stack_direction=1 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction _ACEOF fi for ac_header in stdlib.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ( cat <<\_ASBOX ## ------------------------------------ ## ## Report this to bug-autoconf@gnu.org. ## ## ------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ( cat <<\_ASBOX ## ------------------------------------ ## ## Report this to bug-autoconf@gnu.org. ## ## ------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in getpagesize do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done echo "$as_me:$LINENO: checking for working mmap" >&5 echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_mmap_fixed_mapped=no else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default /* malloc might have been renamed as rpl_malloc. */ #undef malloc /* Thanks to Mike Haertel and Jim Avera for this test. Here is a matrix of mmap possibilities: mmap private not fixed mmap private fixed at somewhere currently unmapped mmap private fixed at somewhere already mapped mmap shared not fixed mmap shared fixed at somewhere currently unmapped mmap shared fixed at somewhere already mapped For private mappings, we should verify that changes cannot be read() back from the file, nor mmap's back from the file at a different address. (There have been systems where private was not correctly implemented like the infamous i386 svr4.0, and systems where the VM page cache was not coherent with the file system buffer cache like early versions of FreeBSD and possibly contemporary NetBSD.) For shared mappings, we should conversely verify that changes get propagated back to all the places they're supposed to be. Grep wants private fixed already mapped. The main things grep needs to know about mmap are: * does it exist and is it safe to write into the mmap'd area * how to use it (BSD variants) */ #include #include #if !STDC_HEADERS && !HAVE_STDLIB_H char *malloc (); #endif /* This mess was copied from the GNU getpagesize.h. */ #if !HAVE_GETPAGESIZE /* Assume that all systems that can run configure have sys/param.h. */ # if !HAVE_SYS_PARAM_H # define HAVE_SYS_PARAM_H 1 # endif # ifdef _SC_PAGESIZE # define getpagesize() sysconf(_SC_PAGESIZE) # else /* no _SC_PAGESIZE */ # if HAVE_SYS_PARAM_H # include # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE # else /* no EXEC_PAGESIZE */ # ifdef NBPG # define getpagesize() NBPG * CLSIZE # ifndef CLSIZE # define CLSIZE 1 # endif /* no CLSIZE */ # else /* no NBPG */ # ifdef NBPC # define getpagesize() NBPC # else /* no NBPC */ # ifdef PAGESIZE # define getpagesize() PAGESIZE # endif /* PAGESIZE */ # endif /* no NBPC */ # endif /* no NBPG */ # endif /* no EXEC_PAGESIZE */ # else /* no HAVE_SYS_PARAM_H */ # define getpagesize() 8192 /* punt totally */ # endif /* no HAVE_SYS_PARAM_H */ # endif /* no _SC_PAGESIZE */ #endif /* no HAVE_GETPAGESIZE */ int main () { char *data, *data2, *data3; int i, pagesize; int fd; pagesize = getpagesize (); /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) exit (1); for (i = 0; i < pagesize; ++i) *(data + i) = rand (); umask (0); fd = creat ("conftest.mmap", 0600); if (fd < 0) exit (1); if (write (fd, data, pagesize) != pagesize) exit (1); close (fd); /* Next, try to mmap the file at a fixed address which already has something else allocated at it. If we can, also make sure that we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) exit (1); data2 = (char *) malloc (2 * pagesize); if (!data2) exit (1); data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, fd, 0L)) exit (1); for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data2 + i)) exit (1); /* Finally, make sure that changes to the mapped area do not percolate back to the file as seen by read(). (This is a bug on some variants of i386 svr4.0.) */ for (i = 0; i < pagesize; ++i) *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) exit (1); if (read (fd, data3, pagesize) != pagesize) exit (1); for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data3 + i)) exit (1); close (fd); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_mmap_fixed_mapped=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_mmap_fixed_mapped=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 if test $ac_cv_func_mmap_fixed_mapped = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_MMAP 1 _ACEOF fi rm -f conftest.mmap echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 if test "${ac_cv_gnu_library_2_1+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) Lucky GNU user #endif #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Lucky GNU user" >/dev/null 2>&1; then ac_cv_gnu_library_2_1=yes else ac_cv_gnu_library_2_1=no fi rm -f conftest* fi echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 GLIBC21="$ac_cv_gnu_library_2_1" echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then # Guess based on the CPU. case "$host_cpu" in alpha* | i3456786 | m68k | s390*) gt_cv_int_divbyzero_sigfpe="guessing yes";; *) gt_cv_int_divbyzero_sigfpe="guessing no";; esac else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include static void #ifdef __cplusplus sigfpe_handler (int sig) #else sigfpe_handler (sig) int sig; #endif { /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ exit (sig != SIGFPE); } int x = 1; int y = 0; int z; int nan; int main () { signal (SIGFPE, sigfpe_handler); /* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ #if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) signal (SIGTRAP, sigfpe_handler); #endif /* Linux/SPARC yields signal SIGILL. */ #if defined (__sparc__) && defined (__linux__) signal (SIGILL, sigfpe_handler); #endif z = x / y; nan = y / y; exit (1); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_int_divbyzero_sigfpe=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) gt_cv_int_divbyzero_sigfpe=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 case "$gt_cv_int_divbyzero_sigfpe" in *yes) value=1;; *) value=0;; esac cat >>confdefs.h <<_ACEOF #define INTDIV0_RAISES_SIGFPE $value _ACEOF echo "$as_me:$LINENO: checking for inttypes.h" >&5 echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 if test "${jm_ac_cv_header_inttypes_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { uintmax_t i = (uintmax_t) -1; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then jm_ac_cv_header_inttypes_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 jm_ac_cv_header_inttypes_h=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5 echo "${ECHO_T}$jm_ac_cv_header_inttypes_h" >&6 if test $jm_ac_cv_header_inttypes_h = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_INTTYPES_H_WITH_UINTMAX 1 _ACEOF fi echo "$as_me:$LINENO: checking for stdint.h" >&5 echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 if test "${jm_ac_cv_header_stdint_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { uintmax_t i = (uintmax_t) -1; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then jm_ac_cv_header_stdint_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 jm_ac_cv_header_stdint_h=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5 echo "${ECHO_T}$jm_ac_cv_header_stdint_h" >&6 if test $jm_ac_cv_header_stdint_h = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_STDINT_H_WITH_UINTMAX 1 _ACEOF fi echo "$as_me:$LINENO: checking for unsigned long long" >&5 echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 if test "${ac_cv_type_unsigned_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ unsigned long long ull = 1; int i = 63; int main () { unsigned long long ullmax = (unsigned long long) -1; return ull << i | ull >> i | ullmax / ull | ullmax % ull; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_unsigned_long_long=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_unsigned_long_long=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6 if test $ac_cv_type_unsigned_long_long = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_UNSIGNED_LONG_LONG 1 _ACEOF fi if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then test $ac_cv_type_unsigned_long_long = yes \ && ac_type='unsigned long long' \ || ac_type='unsigned long' cat >>confdefs.h <<_ACEOF #define uintmax_t $ac_type _ACEOF else cat >>confdefs.h <<\_ACEOF #define HAVE_UINTMAX_T 1 _ACEOF fi echo "$as_me:$LINENO: checking for inttypes.h" >&5 echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 if test "${gt_cv_header_inttypes_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_header_inttypes_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_header_inttypes_h=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 if test $gt_cv_header_inttypes_h = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_INTTYPES_H 1 _ACEOF fi if test $gt_cv_header_inttypes_h = yes; then echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 if test "${gt_cv_inttypes_pri_broken+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #ifdef PRId32 char *p = PRId32; #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_inttypes_pri_broken=no else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_inttypes_pri_broken=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 fi if test "$gt_cv_inttypes_pri_broken" = yes; then cat >>confdefs.h <<_ACEOF #define PRI_MACROS_BROKEN 1 _ACEOF fi if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by GCC" >&5 echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${acl_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$acl_cv_path_LD" if test -n "$LD"; then echo "$as_me:$LINENO: result: $LD" >&5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${acl_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then acl_cv_prog_gnu_ld=yes else acl_cv_prog_gnu_ld=no fi fi echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 with_gnu_ld=$acl_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for shared library run path origin" >&5 echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 if test "${acl_cv_rpath+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 echo "${ECHO_T}$acl_cv_rpath" >&6 wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath or --disable-rpath was given. if test "${enable_rpath+set}" = set; then enableval="$enable_rpath" : else enable_rpath=yes fi; use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then withval="$with_libiconv_prefix" if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi; LIBICONV= LTLIBICONV= INCICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ( cat <<\_ASBOX ## ------------------------------------ ## ## Report this to bug-autoconf@gnu.org. ## ## ------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ( cat <<\_ASBOX ## ------------------------------------ ## ## Report this to bug-autoconf@gnu.org. ## ## ------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ __fsetlocking do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done echo "$as_me:$LINENO: checking for iconv" >&5 echo $ECHO_N "checking for iconv... $ECHO_C" >&6 if test "${am_cv_func_iconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_func_iconv=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_lib_iconv=yes am_cv_func_iconv=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 echo "${ECHO_T}$am_cv_func_iconv" >&6 if test "$am_cv_func_iconv" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ICONV 1 _ACEOF fi if test "$am_cv_lib_iconv" = yes; then echo "$as_me:$LINENO: checking how to link with libiconv" >&5 echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $LIBICONV" >&5 echo "${ECHO_T}$LIBICONV" >&6 else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi if test "$am_cv_func_iconv" = yes; then echo "$as_me:$LINENO: checking for iconv declaration" >&5 echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 if test "${am_cv_proto_iconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_proto_iconv_arg1="" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 am_cv_proto_iconv_arg1="const" fi rm -f conftest.$ac_objext conftest.$ac_ext am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" fi am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` echo "$as_me:$LINENO: result: ${ac_t:- }$am_cv_proto_iconv" >&5 echo "${ECHO_T}${ac_t:- }$am_cv_proto_iconv" >&6 cat >>confdefs.h <<_ACEOF #define ICONV_CONST $am_cv_proto_iconv_arg1 _ACEOF fi echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 if test "${am_cv_langinfo_codeset+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { char* cs = nl_langinfo(CODESET); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_langinfo_codeset=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 am_cv_langinfo_codeset=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 if test $am_cv_langinfo_codeset = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LANGINFO_CODESET 1 _ACEOF fi if test $ac_cv_header_locale_h = yes; then echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 if test "${am_cv_val_LC_MESSAGES+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { return LC_MESSAGES ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_val_LC_MESSAGES=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 am_cv_val_LC_MESSAGES=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 if test $am_cv_val_LC_MESSAGES = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LC_MESSAGES 1 _ACEOF fi fi for ac_prog in bison do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; 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_prog_INTLBISON+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$INTLBISON"; then ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test. else 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_prog_INTLBISON="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi INTLBISON=$ac_cv_prog_INTLBISON if test -n "$INTLBISON"; then echo "$as_me:$LINENO: result: $INTLBISON" >&5 echo "${ECHO_T}$INTLBISON" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$INTLBISON" && break done if test -z "$INTLBISON"; then ac_verc_fail=yes else echo "$as_me:$LINENO: checking version of bison" >&5 echo $ECHO_N "checking version of bison... $ECHO_C" >&6 ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac echo "$as_me:$LINENO: result: $ac_prog_version" >&5 echo "${ECHO_T}$ac_prog_version" >&6 fi if test $ac_verc_fail = yes; then INTLBISON=: fi echo "$as_me:$LINENO: checking whether NLS is requested" >&5 echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" USE_NLS=$enableval else USE_NLS=yes fi; echo "$as_me:$LINENO: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6 BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no LIBINTL= LTLIBINTL= POSUB= if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" nls_cv_force_use_gnu_gettext=$withval else nls_cv_force_use_gnu_gettext=no fi; echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext1_libc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_func_gnugettext1_libc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_gnugettext1_libc=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 if test "$gt_cv_func_gnugettext1_libc" != "yes"; then use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix or --without-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then withval="$with_libintl_prefix" if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi; LIBINTL= LTLIBINTL= INCINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_func_gnugettext1_libintl=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_gnugettext1_libintl=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext1_libintl=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 fi if test "$gt_cv_func_gnugettext1_libc" = "yes" \ || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test "$gt_use_preinstalled_gnugettext" != "yes"; then nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV" LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then CATOBJEXT=.gmo fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then cat >>confdefs.h <<\_ACEOF #define ENABLE_NLS 1 _ACEOF else USE_NLS=no fi fi echo "$as_me:$LINENO: checking whether to use NLS" >&5 echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6 if test "$USE_NLS" = "yes"; then echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6 if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi echo "$as_me:$LINENO: result: $gt_source" >&5 echo "${ECHO_T}$gt_source" >&6 fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then echo "$as_me:$LINENO: checking how to link with libintl" >&5 echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $LIBINTL" >&5 echo "${ECHO_T}$LIBINTL" >&6 for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi cat >>confdefs.h <<\_ACEOF #define HAVE_GETTEXT 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi POSUB=po fi if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi nls_cv_header_intl= nls_cv_header_libgt= DATADIRNAME=share INSTOBJEXT=.mo GENCAT=gencat if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi INTL_LIBTOOL_SUFFIX_PREFIX= INTLLIBS="$LIBINTL" ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; 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_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else 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_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; 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_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else 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_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CXX" && break done test -n "$ac_ct_CXX" || ac_ct_CXX="g++" CXX=$ac_ct_CXX fi # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi for ac_declaration in \ ''\ '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c : > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi echo "$as_me:$LINENO: result: $CXXCPP" >&5 echo "${ECHO_T}$CXXCPP" >&6 ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ## # Check whether --with-vdk-prefix or --without-vdk-prefix was given. if test "${with_vdk_prefix+set}" = set; then withval="$with_vdk_prefix" vdk_prefix="$withval" else vdk_prefix="" fi; # Check whether --with-vdk-exec-prefix or --without-vdk-exec-prefix was given. if test "${with_vdk_exec_prefix+set}" = set; then withval="$with_vdk_exec_prefix" vdk_exec_prefix="$withval" else vdk_exec_prefix="" fi; # Check whether --enable-vdktest or --disable-vdktest was given. if test "${enable_vdktest+set}" = set; then enableval="$enable_vdktest" else enable_vdktest=yes fi; if test x$vdk_exec_prefix != x ; then vdk_args="$vdk_args --exec-prefix=$vdk_exec_prefix" if test x${VDK_CONFIG+set} != xset ; then VDK_CONFIG=$vdk_exec_prefix/bin/vdk-config-2 fi fi if test x$vdk_prefix != x ; then vdk_args="$vdk_args --prefix=$vdk_prefix" if test x${VDK_CONFIG+set} != xset ; then VDK_CONFIG=$vdk_prefix/bin/vdk-config-2 fi fi # Extract the first word of "vdk-config-2", so it can be a program name with args. set dummy vdk-config-2; 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_VDK_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $VDK_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_VDK_CONFIG="$VDK_CONFIG" # 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_VDK_CONFIG="$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 test -z "$ac_cv_path_VDK_CONFIG" && ac_cv_path_VDK_CONFIG="no" ;; esac fi VDK_CONFIG=$ac_cv_path_VDK_CONFIG if test -n "$VDK_CONFIG"; then echo "$as_me:$LINENO: result: $VDK_CONFIG" >&5 echo "${ECHO_T}$VDK_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi min_vdk_version=$REQUIRED_VDK echo "$as_me:$LINENO: checking for VDK - version >= $min_vdk_version" >&5 echo $ECHO_N "checking for VDK - version >= $min_vdk_version... $ECHO_C" >&6 no_vdk="" if test "$VDK_CONFIG" = "no" ; then no_vdk=yes else ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu VDK_CFLAGS=`$VDK_CONFIG $vdkconf_args --cflags` VDK_LIBS=`$VDK_CONFIG $vdkconf_args --libs` vdk_major_version=`$VDK_CONFIG $vdk_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` vdk_minor_version=`$VDK_CONFIG $vdk_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` vdk_micro_version=`$VDK_CONFIG $vdk_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_vdktest" = "xyes" ; then ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CXXFLAGS="$CXXFLAGS $VDK_CFLAGS" LIBS="$LIBS $VDK_LIBS" rm -f conf.vdktest if test "$cross_compiling" = yes; then echo $ac_n "cross compiling; assumed OK... $ac_c" else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include // #include #include extern "C" int system(const char *s); int main () { system ("touch conf.vdktest"); if (($vdk_major_version > VDK_VERSION_MAJOR) || (($vdk_major_version == VDK_VERSION_MAJOR) && ($vdk_minor_version > VDK_VERSION_MINOR)) || (($vdk_major_version == VDK_VERSION_MAJOR) && ($vdk_minor_version == VDK_VERSION_MINOR) && ($vdk_micro_version >= VDK_VERSION_MICRO))) { return 0; } else { printf("\n*** 'vdk-config-2 --version' returned %d.%d, but the minimum version\n", $vdk_major_version, $vdk_minor_version); printf("*** of VDK required is %d.%d. If vdk-config is correct, then it is\n", VDK_VERSION_MAJOR, VDK_VERSION_MINOR); printf("*** best to upgrade to the required version.\n"); printf("*** If vdk-config was wrong, set the environment variable VDK_CONFIG\n"); printf("*** to point to the correct copy of vdk-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) no_vdk=yes fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_vdk" = x ; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 : else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 if test "$VDK_CONFIG" = "no" ; then echo "*** The vdk-config-2 script installed by VDK could not be found" echo "*** If VDK was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the VDK_CONFIG environment variable to the" echo "*** full path to vdk-config." else if test -f conf.vdktest ; then : else echo "*** Could not run VDK test program, checking why..." CXXFLAGS="$CXXFLAGS $VDK_CFLAGS" LIBS="$LIBS $VDK_LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding VDK or finding the wrong" echo "*** version of VDK. If it is not finding VDK, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means VDK was incorrectly installed" echo "*** or that you have moved VDK since it was installed. In the latter case, you" echo "*** may want to edit the vdk-config script: $VDK_CONFIG" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi VDK_CFLAGS="" VDK_LIBS="" { { echo "$as_me:$LINENO: error: Correct VDK version not found: requires $REQUIRED_VDK" >&5 echo "$as_me: error: Correct VDK version not found: requires $REQUIRED_VDK" >&2;} { (exit 1); exit 1; }; } fi VDK_VERSION_MAJOR=2 VDK_VERSION_MINOR=4 VDK_VERSION_MICRO=0 rm -f conf.vdktest # Check whether --enable-devel or --disable-devel was given. if test "${enable_devel+set}" = set; then enableval="$enable_devel" else enable_devel=no fi; # Check whether --enable-opt or --disable-opt was given. if test "${enable_opt+set}" = set; then enableval="$enable_opt" else enable_opt=2 fi; # Check whether --enable-vdkxdb or --disable-vdkxdb was given. if test "${enable_vdkxdb+set}" = set; then enableval="$enable_vdkxdb" else enable_vdkxdb=no fi; cat >>confdefs.h <<\_ACEOF #define HAVE_SYNTAX 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_HINTS 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define SUPPORT_NESTED_SYNTAX_HIGHLIGHT 1 _ACEOF if test "x$enable_devel" = "xyes"; then cflag="-g" cat >>confdefs.h <<\_ACEOF #define VDKBDEBUG 1 _ACEOF else cflag="-s" fi if test "x$enable_opt" != "xno"; then cflag="$cflag -O$enable_opt" fi if test "x$prefix" = "xNONE"; then prefix="/usr/local" fi CFLAGS="$cflag -I../include -Wall" CXXFLAGS="$cflag -I../include -Wall" if test "x$enable_vdkxdb" == "xyes"; then echo "$as_me:$LINENO: checking for libvdkxdb version 2.4.0" >&5 echo $ECHO_N "checking for libvdkxdb version 2.4.0... $ECHO_C" >&6 # Extract the first word of "vdkxdb-config-2", so it can be a program name with args. set dummy vdkxdb-config-2; 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_vdkxdbpath+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $vdkxdbpath in [\\/]* | ?:[\\/]*) ac_cv_path_vdkxdbpath="$vdkxdbpath" # 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_vdkxdbpath="$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 vdkxdbpath=$ac_cv_path_vdkxdbpath if test -n "$vdkxdbpath"; then echo "$as_me:$LINENO: result: $vdkxdbpath" >&5 echo "${ECHO_T}$vdkxdbpath" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "x$vdkxdbpath" != "x"; then VDKXDB_VERSION=`$vdkxdbpath --version 2>/dev/null` VDKXDB_CFLAGS=`$vdkxdbpath --cflags 2>/dev/null` VDKXDB_LDFLAGS=`$vdkxdbpath --libs 2>/dev/null` if test "$VDKXDB_VERSION" = "2.4.0" ; then echo "$as_me:$LINENO: result: vdkxdb is ok" >&5 echo "${ECHO_T}vdkxdb is ok" >&6 LIBS="$LIBS -lvdkxdb2 -lxbase" VDK_CFLAGS="$VDK_CLAGS $VDKXDB_CFLAGS" cat >>confdefs.h <<\_ACEOF #define USE_XDB 1 _ACEOF WITHXDB="yes" else { echo "$as_me:$LINENO: WARNING: Could not find vdkxdb correct version" >&5 echo "$as_me: WARNING: Could not find vdkxdb correct version" >&2;} { echo "$as_me:$LINENO: WARNING: Building without vdkxdb support" >&5 echo "$as_me: WARNING: Building without vdkxdb support" >&2;} WITHXDB="no" fi else WITHXDB="no" fi else WITHXDB="no" fi #if test "$gnome" = yes; then #AC_PATH_PROG(gnomepath, gnome-config) #AC_MSG_CHECKING(for Gnome) #GNOME_CFLAGS=`$gnomepath gnomeui --cflags 2>/dev/null` #GNOME_LDFLAGS=`$gnomepath gnomeui --libs 2>/dev/null` #if test "_$GNOME_CFLAGS" = _ ; then # AC_MSG_RESULT([not found, building without Gnome support.]) WITHGNOME="no" #else # AC_MSG_RESULT(ok) # WITHGNOME="yes" #fi #fi VDKBDATADIR=$prefix/share/vdkb2 cat >>confdefs.h <<_ACEOF #define VDKB_DATADIR "$VDKBDATADIR" _ACEOF cat >>confdefs.h <<_ACEOF #define VDKB_PREFIX "$prefix" _ACEOF if test "x$prefix" = "xNONE"; then VDKB_LOCALE_DIR=$ac_default_prefix/share/locale else VDKB_LOCALE_DIR=$prefix/share/locale fi cat >>confdefs.h <<_ACEOF #define VDKB_LOCALE_DIR "$VDKB_LOCALE_DIR" _ACEOF PLUGINS_LIBDIR="$libdir" PLUGINS_LIBDIR=`( test "x$prefix" = xNONE && prefix="$ac_default_prefix" test "x$exec_prefix" = xNONE && exec_prefix="${prefix}" eval echo \""$PLUGINS_LIBDIR"\" )` ac_config_files="$ac_config_files Makefile vdkbuilder.spec include/Makefile include/vdkb2/Makefile plugins/Makefile vdkbuilder/Makefile vdkbuilder/pixmaps/Makefile data/Makefile data/res/Makefile data/res/plugins.db example/Makefile po/Makefile.in intl/Makefile doc/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by $as_me, which was generated by GNU Autoconf 2.57. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.57, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS section. # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "vdkbuilder.spec" ) CONFIG_FILES="$CONFIG_FILES vdkbuilder.spec" ;; "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "include/vdkb2/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/vdkb2/Makefile" ;; "plugins/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;; "vdkbuilder/Makefile" ) CONFIG_FILES="$CONFIG_FILES vdkbuilder/Makefile" ;; "vdkbuilder/pixmaps/Makefile" ) CONFIG_FILES="$CONFIG_FILES vdkbuilder/pixmaps/Makefile" ;; "data/Makefile" ) CONFIG_FILES="$CONFIG_FILES data/Makefile" ;; "data/res/Makefile" ) CONFIG_FILES="$CONFIG_FILES data/res/Makefile" ;; "data/res/plugins.db" ) CONFIG_FILES="$CONFIG_FILES data/res/plugins.db" ;; "example/Makefile" ) CONFIG_FILES="$CONFIG_FILES example/Makefile" ;; "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;; "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@CYGPATH_W@,$CYGPATH_W,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@ACLOCAL@,$ACLOCAL,;t t s,@AUTOCONF@,$AUTOCONF,;t t s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@AMTAR@,$AMTAR,;t t s,@install_sh@,$install_sh,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t s,@AWK@,$AWK,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@am__leading_dot@,$am__leading_dot,;t t s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t s,@MAINT@,$MAINT,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@DEPDIR@,$DEPDIR,;t t s,@am__include@,$am__include,;t t s,@am__quote@,$am__quote,;t t s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t s,@CCDEPMODE@,$CCDEPMODE,;t t s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t s,@EGREP@,$EGREP,;t t s,@LN_S@,$LN_S,;t t s,@ECHO@,$ECHO,;t t s,@AR@,$AR,;t t s,@ac_ct_AR@,$ac_ct_AR,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@CPP@,$CPP,;t t s,@CXX@,$CXX,;t t s,@CXXFLAGS@,$CXXFLAGS,;t t s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@CXXDEPMODE@,$CXXDEPMODE,;t t s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t s,@CXXCPP@,$CXXCPP,;t t s,@F77@,$F77,;t t s,@FFLAGS@,$FFLAGS,;t t s,@ac_ct_F77@,$ac_ct_F77,;t t s,@LIBTOOL@,$LIBTOOL,;t t s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t s,@USE_NLS@,$USE_NLS,;t t s,@MSGFMT@,$MSGFMT,;t t s,@GMSGFMT@,$GMSGFMT,;t t s,@XGETTEXT@,$XGETTEXT,;t t s,@MSGMERGE@,$MSGMERGE,;t t s,@ALLOCA@,$ALLOCA,;t t s,@GLIBC21@,$GLIBC21,;t t s,@LIBICONV@,$LIBICONV,;t t s,@LTLIBICONV@,$LTLIBICONV,;t t s,@INTLBISON@,$INTLBISON,;t t s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t s,@CATOBJEXT@,$CATOBJEXT,;t t s,@DATADIRNAME@,$DATADIRNAME,;t t s,@INSTOBJEXT@,$INSTOBJEXT,;t t s,@GENCAT@,$GENCAT,;t t s,@INTLOBJS@,$INTLOBJS,;t t s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t s,@INTLLIBS@,$INTLLIBS,;t t s,@LIBINTL@,$LIBINTL,;t t s,@LTLIBINTL@,$LTLIBINTL,;t t s,@POSUB@,$POSUB,;t t s,@VDK_CONFIG@,$VDK_CONFIG,;t t s,@VDK_VERSION_MAJOR@,$VDK_VERSION_MAJOR,;t t s,@VDK_VERSION_MINOR@,$VDK_VERSION_MINOR,;t t s,@VDK_VERSION_MICRO@,$VDK_VERSION_MICRO,;t t s,@VDK_CFLAGS@,$VDK_CFLAGS,;t t s,@VDK_LIBS@,$VDK_LIBS,;t t s,@vdkxdbpath@,$vdkxdbpath,;t t s,@PLUGINS_LIBDIR@,$PLUGINS_LIBDIR,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; *) # Relative if test -f "$f"; then # Build tree echo $f elif test -f "$srcdir/$f"; then # Source tree echo $srcdir/$f else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; *) # Relative if test -f "$f"; then # Build tree echo $f elif test -f "$srcdir/$f"; then # Source tree echo $srcdir/$f else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # grep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $ac_file | $ac_file:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X$ac_file : 'X\(//\)[^/]' \| \ X$ac_file : 'X\(//\)$' \| \ X$ac_file : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X$ac_file | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'`/stamp-h$_am_stamp_count done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`(dirname "$mf") 2>/dev/null || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` else continue fi grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue # Extract the definition of DEP_FILES from the Makefile without # running `make'. DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` test -z "$DEPDIR" && continue # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n -e '/^U = / s///p' < "$mf"` test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" # We invoke sed twice because it is the simplest approach to # changing $(DEPDIR) to its actual value in the expansion. for file in `sed -n -e ' /^DEP_FILES = .*\\\\$/ { s/^DEP_FILES = // :loop s/\\\\$// p n /\\\\$/ b loop p } /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`(dirname "$file") 2>/dev/null || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p $dirpart/$fdir else as_dir=$dirpart/$fdir as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; default-1 ) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= GMOFILES= UPDATEPOFILES= DUMMYPOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi echo "" echo "VDKBuilder configure finished succesfully" echo "VDKBuilder configuration:" echo " - VDKBuilder Version : $VERSION" echo " - Required VDK Version : $REQUIRED_VDK" echo " - Gnome support : $WITHGNOME" echo " - Xdb support : $WITHXDB (version $VDKXDB_VERSION)" echo " - Debug : $enable_devel" echo " - Optimization : $enable_opt" echo " * Host : $host" echo " * Installation Prefix : $prefix" echo " * Required libs : $VDK_LIBS $LIBS" vdkbuilder2-2.4.0/ABOUT-NLS0000644000000000000000000002660307535250427010630 Notes on the Free Translation Project ************************************* Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do *not* need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work at translations should contact the appropriate team. When reporting bugs in the `intl/' directory or bugs which may be related to internationalization, you should tell about the version of `gettext' which is used. The information can be found in the `intl/VERSION' file, in internationalized packages. One advise in advance ===================== If you want to exploit the full power of internationalization, you should configure it using ./configure --with-included-gettext to force usage of internationalizing routines provided within this package, despite the existence of internationalizing capabilities in the operating system where this package is being installed. So far, only the `gettext' implementation in the GNU C library version 2 provides as many features (such as locale alias or message inheritance) as the implementation here. It is also not possible to offer this additional functionality on top of a `catgets' implementation. Future versions of GNU `gettext' will very likely convey even more functionality. So it might be a good idea to change to GNU `gettext' as soon as possible. So you need not provide this option if you are using GNU libc 2 or you have installed a recent copy of the GNU gettext package with the included `libintl'. INSTALL Matters =============== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system provides usable `catgets' (if using this is selected by the installer) or `gettext' functions. If neither is available, the GNU `gettext' own library will be used. This library is wholly contained within this package, usually in the `intl/' subdirectory, so prior installation of the GNU `gettext' package is *not* required. Installers may use special options at configuration time for changing the default behaviour. The commands: ./configure --with-included-gettext ./configure --with-catgets ./configure --disable-nls will respectively bypass any pre-existing `catgets' or `gettext' to use the internationalizing routines provided within this package, enable the use of the `catgets' functions (if found on the locale system), or else, *totally* disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl.a' file and will decide to use this. This might be not what is desirable. You should use the more recent version of the GNU `gettext' library. I.e. if the file `intl/VERSION' shows that the library which comes with this package is more recent, you should use ./configure --with-included-gettext to prevent auto-detection. By default the configuration process will not test for the `catgets' function and therefore they will not be used. The reasons are already given above: the emulation on top of `catgets' cannot provide all the extensions provided by the GNU `gettext' library. If you nevertheless want to use the `catgets' functions use ./configure --with-catgets to enable the test for `catgets' (this causes no harm if `catgets' is not available on your system). If you really select this option we would like to hear about the reasons because we cannot think of any good one ourself. Internationalized packages have usually many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. Using This Package ================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate ISO 639 `LL' two-letter code prior to using the programs in the package. For example, let's suppose that you speak German. At the shell prompt, merely execute `setenv LANG de' (in `csh'), `export LANG; LANG=de' (in `sh') or `export LANG=de' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. An operating system might already offer message localization for many of its programs, while other programs have been installed locally with the full capabilities of GNU `gettext'. Just using `gettext' extended syntax for `LANG' would break proper localization of already available operating system programs. In this case, users should set both `LANGUAGE' and `LANG' variables in their environment, as programs using GNU `gettext' give preference to `LANGUAGE'. For example, some Swedish users would rather read translations in German than English for when Swedish is not available. This is easily accomplished by setting `LANGUAGE' to `sv:de' while leaving `LANG' to `sv'. Translating Teams ================= For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list, courtesy of Linux International. You may reach your translation team at the address `LL@li.org', replacing LL by the two-letter ISO 639 code for your language. Language codes are *not* the same as the country codes given in ISO 3166. The following translation teams exist, as of December 1997: Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en', Esperanto `eo', Finnish `fi', French `fr', German `de', Hungarian `hu', Irish `ga', Italian `it', Indonesian `id', Japanese `ja', Korean `ko', Latin `la', Norwegian `no', Persian `fa', Polish `pl', Portuguese `pt', Russian `ru', Slovenian `sl', Spanish `es', Swedish `sv', and Turkish `tr'. For example, you may reach the Chinese translation team by writing to `zh@li.org'. If you'd like to volunteer to *work* at translating messages, you should become a member of the translating team for your own language. The subscribing address is *not* the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate *actively* in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `translation@iro.umontreal.ca' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skill are praised more than programming skill, here. Available Packages ================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of December 1997. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination. Ready PO files cs da de en es fi fr it ja ko nl no pl pt ru sl sv .----------------------------------------------------. bash | [] [] [] | 3 bison | [] [] [] | 3 clisp | [] [] [] [] | 4 cpio | [] [] [] [] [] [] | 6 diffutils | [] [] [] [] [] | 5 enscript | [] [] [] [] [] [] | 6 fileutils | [] [] [] [] [] [] [] [] [] [] | 10 findutils | [] [] [] [] [] [] [] [] [] | 9 flex | [] [] [] [] | 4 gcal | [] [] [] [] [] | 5 gettext | [] [] [] [] [] [] [] [] [] [] [] | 12 grep | [] [] [] [] [] [] [] [] [] [] | 10 hello | [] [] [] [] [] [] [] [] [] [] [] | 11 id-utils | [] [] [] | 3 indent | [] [] [] [] [] | 5 libc | [] [] [] [] [] [] [] | 7 m4 | [] [] [] [] [] [] | 6 make | [] [] [] [] [] [] | 6 music | [] [] | 2 ptx | [] [] [] [] [] [] [] [] | 8 recode | [] [] [] [] [] [] [] [] [] | 9 sh-utils | [] [] [] [] [] [] [] [] | 8 sharutils | [] [] [] [] [] [] | 6 tar | [] [] [] [] [] [] [] [] [] [] [] | 11 texinfo | [] [] [] | 3 textutils | [] [] [] [] [] [] [] [] [] | 9 wdiff | [] [] [] [] [] [] [] [] | 8 `----------------------------------------------------' 17 languages cs da de en es fi fr it ja ko nl no pl pt ru sl sv 27 packages 6 4 25 1 18 1 26 2 1 12 20 9 19 7 4 7 17 179 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If December 1997 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. vdkbuilder2-2.4.0/AUTHORS0000644000000000000000000000117707535250427010450 ORIGINAL AUTHOR ---------------- Mario Motta In alphabetical order: DEVELOPING TEAM (in alphabetic order) --------------- Ionut Borcoman George Boutwell Mile Lazarovski Tim Lorenz Pierre-Louis Malatray Mario Motta CONTRIBUTORS: -------------- Jonathan Hudson For vdkinput and reaper great job. Mikael Hermansson for a better editor derived from gtkeditable. vdkbuilder2-2.4.0/COPYING0000644000000000000000000004311007535250427010424 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. vdkbuilder2-2.4.0/ChangeLog0000644000000000000000000002314010052401174011125 2004-05-18 Motta Mario * version renamed 2.4.0 * version 2.4.0 released 2004-03-28 Motta Mario NEW * ./plugins/vdkb_comboentry.cc --- ./include/vdkb2/vdkb_comboentry.h Added support for new VDKComboEntry widget using plugins. Users upgrading from previous versions should update their components database using Components=>menu' and adding: - /lib/ - libvdkbcomboentry.so to components database. 2004-03-07 Motta Mario ** Huge changes to follow VDK 2.0.4 All related to api change into VDKApplication::VDKMessageBox() new version 2.0.6 * Compiled under Fedora core 1.a with g++ version 3.3.2 20031022 2003-05-19 Motta Mario ** version 2.0.5 released 2003-05-11 Motta Mario * vdkb.cc - Changed main window to a fixed size pending on screen resolution * Compiled under Mandrake 9.1 with gcc 3.2.2 2003-01-24 Motta Mario * updated source for vdk version 2.0.3 * new version 2.0.5 2003-01-13 Motta Mario ** huge cvs commit to align distribution with cvs 2002-11-06 Motta Mario ** version 2.0.4 released 2002-11-05 Motta Mario FIX * Fixed for compilation on gcc 3.2 --- * tested on Mandrake 9.0 Redhat 8.0 * renamed version to 2.0.4 2002-08-11 Motta Mario ** version 2.0.3 released 2002-06-04 Motta Mario FIX * Fixed some minor bug fixes reported by --- Michael Vogt and Otmar Struwe 2002-06-01 Motta Mario * renamed version to 2.0.3 2002-05-30 Motta Mario *** version 2.0.2 released *** 2002-05-30 Motta Mario NEW * Added an "enable class browser" flag in environment setup. --- User can enable/disable class browser operations. Enabling class browser can slow down VDKBuilder during loading a project with a plenty of files and/or during class browser refresh. 2002-05-02 Motta Mario UPDATE * Updated code to API changes in VDKTreeViewModel ------ 2002-04-18 Motta Mario FIX * vdkb_parser.cc --- Updated nls support for gui files to latest utf8 2002-04-16 Motta Mario FIX * vdkb_templates.cc --- Fixed a bug that prevented to correctly write file dependencies on vdkbMakefile. 2002-04-15 Motta Mario FIX * vdkb_main_sig.cc --- Fixed a bug that prevented docked forms to be iconized togheter their owner. 2002-04-13 Motta Mario NEW * Also WI now can be splitted with a docked form for better view when screen becomes --- crowded. 2002-04-11 Motta Mario NEW * Better interface, made message list on editor dockable to better view compiler messages. --- Added a toolbar to dock/undock and to save a messages log file. 2002-04-10 Motta Mario NEW * Many refinements in WI graphical interface, most of them just cosmetics using --- a lot of icons. * Some minor bug fixes 2002-04-05 Motta Mario NEW * vdkbrc file --- Hacked a nice "Air Force Blue" theme. * Modified builder options to let user choose between default theme and this one. 2002-04-04 Motta Mario * Version updated to 2.0.2 NEW * Cosmetic changes adding nice Ximian icons to toolbars and menus. --- 2002-03-29 Motta Mario *** Version 2.0.1 released *** 2002-03-28 Motta Mario NEW * Added VDKNiceButton and VDKNiceButtonBar classes. --- VDKNiceBUtton behaves like Mozilla button, highlighting when mouse is over. * Many cosmetic changes to builder interface, i hope they will like. 2002-03-20 Motta Mario NEW Updated all vdkxdb related files to be compatible with new /include/vdkxdb2 directory. --- ** WARNING** Some previous xdb projects could be incompatible with new vdkxdb include tree. Substitute all #include with #include 2002-03-19 Motta Mario Version renamed to 2.0.1 for further develop and bug fixes. 2002-03-13 Motta Mario *** VDKBuilder 2.0.0 RELEASED *** 2002-03-08 Motta Mario NEW * Added support for VDKDrawingArea (made a plugin) --- 2002-02-28 Motta Mario * widgets source generation code: NEW - add gtk_widget_set_name() when creating an widget (to be used with rc files) --- 2002-02-27 Motta Mario * vdkb_acsupport.cc Fixed some backward incompat with automake/autoconf 2002-02-19 Motta Mario * Class browser: * vdkb_ccpane.cc/.h vdkb_ccproj.cc/.h - VDKBCCProject::get_file_from_class(const char *cl) - VDKBCCProject::get_file_from_function(const char *cl,const char *func) - VDKBCCProject::get_decl_file_from_function(const char *cl,const char *func) Fixed some constness errors due to a returned local object. Bug caused a misinterpretation of function name as file name, opening weird new files when "declared" or "defined" button were activated. 2002-02-18 Motta Mario NEW * Project wizard (vdkb_PWizard.cc .h) --- Added Author, e-mail and GPL'd header on project options. 2002-02-14 Motta Mario * vdkb_ccpane.cc .h Added a right-click context pop menu to jump on sources. 2002-01-30 Motta Mario BUG * vdkb_design --- Fixed some bugs that made unnecessary gui files rewriting (and consequently compilations). A bug remains however: each time you open a project and you make the first click on a GUI widgets the form is marked as "Changed" even if it shouldn't be. 2002-01-25 Motta Mario * vdkb_compodb.cc - vdkb_frmlist.cc Changed VDKCustomList to VDKTreeView 2002-01-19 Motta Mario * Moved VDKBTreeView into a plugin module: libvdkbtreeview.so Sources into ./plugins. 2002-14-01 Motta Mario NEW * vdkb_Env.cc / vdkb_ide_def.cc --- User now has the possibility to choose his preferred html browser (netscape is the default however) 2001-12-31 Motta Mario (HAPPY NEW YEAR) NEW * Added support for VDKTreeView widget --- Note: Is a limited support, leaving to the user the code to define and load VDKTreeViewModel, add columns to VDKTreeView etc. (Most likely i will add an appendix to vdkbuilder tutorial to better explain how use this widget) 2001-11-14 Motta Mario * vdkb_ccpane.cc - Some minor cosmetic changes to pixmaps - Deleted a font casting, Let vdkbrc decide the font for all IDE 2001-11-13 Mile Lazarovski NEW * vdkb_ccpane.cc/.h --- * vdkb_ccproj.cc/.h * vdkb_cregex.h, vdkb_tree_coll.h Added a class viewer to project manager and pixmaps for it. Updated Makefile.am and Makefile.in for new source files. Modified vdkb_prjman.cc to initialize and show calss viewer. 2001-08-25 Motta Mario NEW * vdkb_form.cc --- Added a "FreezeUsize" property to GUI Designer and a checkbox on WI. Checking to true freezes present size (can't be shrinked below). Affects only at design time. 2001-08-24 Motta Mario NEW * vdkb_form.cc and Widget Inspector --- Added support to customize GtkWindowType at form construction and GtkWindowPosition on initial form showing. 2001-08-08 Motta Mario NEW * Added support for VDKImage --- 2001-05-29 Tim Lorenz * include/vdkb2/vdkb_evlabel.h (class VDKBEvLabel::GetCaption): returns const char* now (class VDKBEvLabel::SetCaption): arg is const char* now (class VDKBEvLabel::Caption): Value type of prop is const char* now (class VDKBEvLabel::VDKBEvLabel): label arg is also const char* now 2001-05-15 Tim Lorenz * plugins/vdkb_dclock.cc (INTERFACE_INCLUDE) and (COMPO_INCLUDE): changed include-dir from vdkb to vdkb2 * vdkbuilder/vdkb_cbrowse.cc: * vdkbuilder/vdkb_PWizard.cc: added #include (needed for F_OK) * plugins/Makefile.am (libvdkbdclock_la_LDFLAGS): removed .libs from LD_FLAGS-Path (handled by libtool itself) 2001-03-26 Motta Mario REMOVED * Removed gtkpacker-vdkpacker widget ------ 2001-03-26 Motta Mario NEW * vdkb_Env.cc/.h --- Environment setting dialog completely rewritten. REMOVED * Removed all deprecated VDKLabelButton and VDKPixmapButton ------ * Removed above widgets support 2001-03-09 Motta Mario NEW * New project wizard completely rewritten (in vdkb_PWizard.cc/.h) --- 2001-03-08 Motta Mario * vdkb_ide_def.cc/.h Added/changed keys for syntax coloring/fonts: C/C++ keywords, VDK/GTK , macros, preprocessor, const (unified), comments. 2001-03-01 Motta Mario NEW * vdkb_editor.cc/.h --- Modified JumpToError() to show a little lamp icon as line mark Modified ClearMessages() to remove icons before compiling again. 2001-02-20 Motta Mario * VDKBbuilder version 2.0.0 developing begins here. We have a working executable but still unstable and plenty of bugs. An hard work is waiting us. * Newest vdkbuilder2 snapshot is based on latest vdk2 cvs snapshot which is in turn based on glib/pango/gtk+ cvs snapshot * instruction to download from gnome cvs: a. first download $ export CVSROOT=':pserver:anonymous@anoncvs.gnome.org:/cvs/gnome' $ cvs login (there is no password, just hit return) $ cvs -z3 checkout glib pango atk gtk+ b. after initial checkout: $ cvs -z3 update glib pango atk gtk+ Recall that to correctly ./autogen both gtk+ and vdk cvs tree you need pkg-config version >= 0.7.0 downloadable at sourceforge.net vdkbuilder2-2.4.0/INSTALL0000644000000000000000000000633407535250427010431 ========================================= VDKBUILDER INSTALLING INSTRUCTIONS ========================================= please report any comment or bug to: mmotta@guest.net ===================== TO MAKE AND INSTALL ===================== copy to your home directory the gzipped file: vdkbuilder-2.0.x.tar.gz and unpack it: $ tar xvzf vdkbuilder-2.0.x.tar.gz To compile builder you need to have installed: - glib/gtk+ libraries version 2.0.x or greater you can find it at: http://www.gtk.org - latest vdk library version, generally same vdkbuilder version. you can find it at: http://vdkbuilder.sourceforge.net #========================================= # some step are necessary: #========================================= # (1) Configuring Go to vdkbuilder main dir and type $ ./configure (you may want type ./configure --help to see available options). # (2) Making VDKBuilder Go to vdkbuilder main dir and type: $ make by default builder will be compiled without -g option, this produces a 2 Mb executable file If you want debug info's into executable reconfigure with --enable-devel=yes option With debugging executable will be more than 10 Mb # (3) Installing Go to vdkbuilder main dir and type: # make install (you may need su privilege) ** IMPORTANT INSTALLATION NOTES ** ================================= - On the first run VDKBuilder will prepare a ~/.vdkb2 directory where some resource files will be copied. Those are local copies at user hand. For instance editing ~/.vdkb2/res/vdkbrc you can customize colors and fonts. (this apply only for new users, upgrading users should already have them) - PLUGINS LIBRARIES By default VDKBuilder and plugins libraries will be installed into /usr/local/bin and /usr/local/lib, resource files into /usr/local/share/vdkb You may edit /etc/ld.so.conf to see if it has a line pointing to /usr/local and run (as root) # /sbin/ldconfig in order to update loader for plugins libraries. For those that wants implement their own plugins for builder recall that they need vdkbuilder .h files in order to compile plugins. (See /plugins/plugins.txt file) - Supporting languages vdkbuilder supports NLS system Actually languages supported are: English (default) Italian German Danish - Supporting VDKXDB library Add to ./configure --enable-vdkxdb=yes option VDKXDB support let's the user to manage data-aware widgets provided by vdxdb and see them working even at design-time. VDKBuilder will generate the code to open xdb data files and index as well. A "Project->xdbsupport" menu item lets the user set which datafiles and indexes are to be used by the project itself. A tool palette with data-aware widgets will be available on builder main form as well. * (4) Now you are ready to use vdkbuilder. Run it with vdkb& #================== # running examples #================== into dir ./vdkbuilder-2.0.x/example there are example projects that can be runned. #============== FOR CVS HACKERS #============== You can stay on bleeding edge using cvs snapshots available at vdkbuilder site Once checked out vdkbuilder tree you have to build autoconf/automake environment (requires autoconf/automake): $ ./autogen.sh or you may want $ ./autogen.sh --help $ make # make install vdkbuilder2-2.4.0/Makefile.am0000644000000000000000000000102207535250427011421 SUBDIRS = include plugins vdkbuilder data example po intl doc EXTRA_DIST = \ autogen.sh\ TODO\ BUGS .PHONY: files release snapshot files: @files=`ls $(DISTFILES) 2> /dev/null` ; for p in $$files; do \ echo $$p; \ done @for subdir in $(SUBDIRS); do \ files=`cd $$subdir; $(MAKE) files | grep -v "make\[[1-9]\]"`; \ for file in $$files; do \ echo $$subdir/$$files; \ done; \ done release: rm -rf .deps */.deps $(MAKE) distcheck snapshot: $(MAKE) dist distdir=$(PACKAGE)`date +"%Y%m%d"` vdkbuilder2-2.4.0/NEWS0000644000000000000000000005013207535250427010072 ================ VDKBuilder 2.0.0 ================ * Porting to Gtk+ 2.0.0 * Redesigned interface * New project wizard * New source editor based on GtkTextView * Class browser * More new widgets support * More plugins * Many minor bug fixes * Finally a VDK/VDKBuilder tutorial ================ VDKBuilder 1.2.5 ================ * Bug fix that makes now builder handling horizontal radio button group correctly. * Added an hints editor, now users can add/remove/change their own editor hints * Implemented a projects-reopen feature based on a lru algorithm. User can reopen last recently used projects (up to 10) * Many minor bug fixes and enhancements. ================ VDKBuilder 1.2.4 ================ * Added translation to french to nls support. --- IDE --- * Enhanced widgets moving/resizing with mouse into VDKFixed container. * If Form has a pixmap as background, this is set using a VDKRawPixmap* as form data member (private) named: _backpix. * Implemented Native Language Support (NLS) VDKBuilder supports now NLS. In a limited way however since it takes care to write the code to support NLS on gui files side only (thus those files that are overwritten by builder and out of user control). The remaining part of the NLS stuff is under user responsibility that must write his own code to support NSL and take care of use gettextize, editing configure.in, aclocal.m4, POTFILES.in, po.* files and other necessary activities. At this end if the user try to autogen more than once (most likely) he/she will be prompted if want save configure.in, Makefile.am and acconfig.h as configure.in.old, Makefile.am.old and acconfig.h.old since they will be overwritten by builder and he/she could loose the previous written NLS instructions into those files. User can use configure.in.old,Makefile.am.old and acconfig.h.old to restore NLS instructions on newly written configure.in, Makefile.am and acconfig.h To help new users a short tutorial in how to build a nls application with builder can be found into example/nls_HOWTO. * About form revisited and (hopefully) made more pleasant. ---------- GUI Editor ---------- * Now vdkbuilder uses modified version of gtkextext as vdkb editor base. Modified version stolen from glimmer , modified gtkextext seems to be faster, more stable and with some extra features. * Added auto indent capability (user customizable with environment dialog). Hitting enter key triggers code indenting. * Added show/hide line numbers (user customizable),this option operates for all code editors. ================ VDKBuilder 1.2.3 ================ --- IDE --- * Adding an argument to command line: $ vdkb will run vdkbuilder on file.prj Gnome and KDE users can set MIME-type: Mime Type: application/vdkbuilder Extensions: .prj Mime type actions: vdkb %f * Automake/autoconf support. If a file named am_include.am exists, am_include.am is appended to EXTRA_DIST, and the contents of the file are copied verbatim to the end of Makefile.am. am_include.am can be used for automake features not yet supported directly * VDKBuilder maker modified to be runned either modal or non-modal during application run. User can customize this behaviour using VDKBuilder environment dialog. NOTE: Some user may experience "X Server async replay" error during non-modal runs. In such cases reset "run-modal" option * Emacs supported as external editor using emacs-server and emacs-clients. When emacs server is called all text-edit requests made on builder are forwarded to emacs via an emacs-client. However internal builder editor is mantained in background and wakes up as emacs server is terminated. To run emacs click on GNU icon on main form toolbar. GNU icon will became visible checking the emacs checkbox on environment dialog at "Miscellanous page". (VDKBuilder must be rerunned to make the change effective). As emacs lovers knows almost all activities besides editing can be done from within emacs (except gui editing of course). - To compile: compile make -f vdkbMakefile - To execute application: compile make -f vdkbMakefile run - To clean: compile make -f vdkbMakefile clean - To debug with gnu-gdb gdb gdb ./your-app - For those that use automake/autoconf support emacs can compile makefile in the usual way: compile make -------------------- Building environment -------------------- * ./configure now generates vdkbuilder.spec redhat user can install vdkbuilder with: rpm -at vdkbuilder-1.2.3.tar.gz * Added a vdkb.png icon that is installed into: /share/pixmaps and can be used as program icon in desktops and wm's. * Changed app icon to vdkb.xpm Note: this icon is displayed when builder is minimized but not all wm's allows it. (Should work on gnome-compliant wm's such as enlightnment, sawfish,windowmaker) * Changed configure.in to check for libvdkxdb-0.0.4 to decide if support xdb or not. User that had libvdkxdb-0.0.2 should upgrade to 0.0.4 to continue having xdb support. libvdkxdb-0.0.4 should be installed before vdkbuilder. ---------- GUI Editor ---------- * Pixmap data can be set also using a symbol besides file name. In such way pixmap data are hard-coded into executable rather than be loaded from a file at run-time. This affects: VDKPixmap, VDKCustomButtom, VDKToolbar and VDKMenuItem. Setting pixmap data is achieved with a checkbox into WI. The file containing pixmap data must be used however, it will be included into source code rather than loaded at run time. Pixmap data symbol name (char**) are made from standard xpm file header in this way: Filename: pixmap.xpm Data symbol name: char** pixmap_xpm; If file name contains chars as : - or . they are converted into _ (underscore): Filename: pixmap-file.xpm Data symbol name: char** pixmap_file_xpm; Note: While setting pixmaps by data on VDKPixmap, VDKCustomButtom, VDKMenuItem is made on a widget basis, in VDKToolbar affects all buttons contained into toolbar. * Multiple drops of equal widgets without having to reselect the widget all the times: - Select a widget from palette - shift-click on gui editor (cursor will became a diamond cross, different from the hair cross showed for a single drop) - following shift-clicks will continue to drop an equal widget. Resetting from multiple drops can be done in two ways: - drop last one with a simple click - click on "reset selection" icon on main form toolbar. * Now widgets can be declared "public" using a checkbox into WI. * Now is possible set widgets minimum size also with keyboard besides using right click pop menu. - Select the widget: increment v size decrement v size increment h size decrement v size Moreover a little tip window will show you widget dimensions. ================ VDKBuilder 1.2.2 ================ * VDKBuilder text editor Added: - word completion and code templates - brackets matching - hints - code indenting - support for foreign characters * Word completion and code templates Pressing with the text cursor over a partially written word will complete that word if this is known. For most common c/c++ syntax structures such as for, if, while and do, completion will write an empty structure template. If there are more than one completion possibility they will be listed into a tip window that will disappear at first keystroke. If the word isn't into completion list it can be added pressing , an user modified completion list will be prompted to be saved at session end. Default completion list file contains a few most used c/c++ key words, in this way user can easily expand them adding their own words. Each user has his own completion list file at: $(HOME)/.vdkb/res/tokens.db * Bracket matching Added ala Emacs bracket matching for () and {} Inserting a closing ')' or '}' shows the match with the proper nested '(' or '{'. If the matching bracket isn't visible a tip window with matching informations is showed. If a match isn't found a user warning is showed as well. Same effect can be achieved pressing with the text cursor immediately before a ')' or '}'. * Hints Pressing with the text pointer over a word will display a tip window containing hints on that word. Tip window will disappear at first keystroke. Hints file contains most common used vdk class members, generally calling an hint over a class function member will display a full function prototype. Hints file isn't complete however, will be completed on next versions. User can customize the file /share/vdkb/res/cpphints adding or removing hints. (See cpphints file to see how to format key and text, be careful however since file parser isn't protected against errors nor syntax check is performed, generally a bad formatted hint section will break parsing operations) Hints should be formatted as follow: HINT{ KEY[put here the keyword] TEXT[put here hint text] } * Code indenting Pressing will indent code. Indenting logic is naive since it follows only nested bracket matching plus syntax keywords or syntax constructs if they are contained into the previous line. Code will be indented at nearest nested "{" or keyword plus user defined tab spaces. Unsatisfied user can disable code indenting setting "code indenting" to false on environment options at "miscellaneous" page, in this case indenting revert to normal indenting where entire line is shifted to the next tab stop computed as a multiple of user set tab spaces. Anyhow will override indenting and behave as a normal tab. I hope indenting logic will be smarter and more complete in future versions. * Support for foreign characters Keystrokes combination: permits to insert foreign chars into editor. For instance pressing + 169 (into num key pad) and releasing inserts copyright symbol into editor. Those windoze guys that were used to , to insert left-rights braces will appreciate this feature. Should be useful too for those non-english guys that want insert some odd char that their keyboard does not support. * VDKBuilder environment Added a save-restore session capability. Last session is saved on $(HOME)/.vdkb/res/last.session, next run will restore things (opened project, forms, editors etc.) Unfortunately restoring text cursor position didn't succeed :-( Save/restore last session can be disabled/enabled using environment dialog (Miscellaneous things) * Minor fixes and enhancements. See ChangeLog ================ VDKBuilder 1.2.1 ================ * VDKBuilder now supports vdkxdb, a set of classes and data-aware widgets made to build light-weight database applications. (See INSTALL file) * Minor bug fixes and enhancements(See ChangeLog) ================ VDKBuilder 1.2.0 ================ * New much faster in syntax highlighting and more stable text editor. Thanks to Mikael Hermansson and his clever gtkextext widget. * Native Language Support implemented for - en English - it Italian - de German * VDK class reference accessible from vdkbuilder help. * Users that have enabled gnome-support on vdk can use gnome help support to browse class reference manual. * Many improuvements and bug fixes (See Changelog) ================ VDKBuilder 1.0.6 ================ * No changes ================ VDKBuilder 1.0.5 ================ * No changes ================ VDKBuilder 1.0.4 ================ * Added gnome support: - VDKGnomeApplication - VDKGnomeForm - VDKGnomeAppBar - VDKGNomeDateEdit - VDKGnomeEntry * Application wizard modified to support gnome-compliant applications. * Putting "@sep" into a menu item caption makes it a "separator" ================ VDKBuilder 1.0.3 ================ * Better designed WI and gui editor - another look and feel using both containers and widget icons - added cut/copy & paste capability (see below) - added dnd support (see below) * Gui editor: Added drag and drop features for dropping widgets. Now user can drag widgets from tool palette and drop them directly on the gui editor. * WI/Gui editor: Added enhanced cut/copy & paste capability to gui editor and WI Widgets can be cutted and pasted into another container. Cut/copy & paste can be done on gui editor using pop menu on selected widget (right click) or using pop menu on WI, or using speedbar on the WI top. Cut/copied widgets are placed into a clipboard stack, user can paste last cut widget or choose one or more from the clipboard stack. Widget pop-menu (both on gui editor and WI) have these menu items: "Copy" enabled on selected widget (not for containers) "Cut" enabled on selected widget "Paste" enabled on stack top widget "Paste others.." enabled when clipboard stack contains more than one widget. - Key accelerators can be used in gui editor: Ctrl+x cut a widget Ctrl+c copy an widget Ctrl+v paste the stack top widget - Some limitations holds: * cut and paste is allowed only into the same form, pasting between different forms is denied. * Cut & paste isn't available for menus handling. * containers can't be copied * Added dnd support to WI, dragging an widget-node into a a container-node achieves same effect as cut/paste. However some buggy behaviour remains: dragging a node-widget into a node-container that has another node-container nested (as first node) makes the dragged widget dropped into innermost node-containe * VDKBuilders use placeholders to fill an empty box before user drops an widget. When an user drops an widget into a box the placeholder is taken away and substitued with the user dropped widget. Now this placeholders are marked with light grey dashed lines for better visibility until they remain empty. * Now builder autonomously writes both signal list and event list (dynamic tables) declaration and definition in _gui.h and _gui.cc. ** WARNING ** this is s possible code break with already existent user projects. Users should delete their own declarations. * All widget caption entries now react to enter key as well. * Debugger: now when user changes "debugger" field debugger executable is checked in default paths, if not found warns user and let "debugger" field blank. * Improuved menus handling: added some more functionalities: - appending - prepending - inserting to a position menu items into a menubar or a menu. ================ VDKBuilder 1.0.2 ================ * editor: added an undo undo key, now you can use also * added realize_signal to WI signals map. ================ VDKBuilder 1.0.0 ================ * Upgraded to vdk 0.6.7 and gtk+ 1.2.5-pre2 * Improuved syntax colouring * Added plugin capability. Now users can plug into builder their own components without recompile it. * New customizable environment flags: - timed auto saving of text files - auto back-up of text files * Improuved VDKBuilder maker * New redesigned and improuved project wizard * New examples and tutorials (see ChangeLog) ================ VDKBuilder 0.1.6 ================ * upgraded vdkbuilder to gcc 2.95.1 * Enabled menu item "View => View Forms" and "View Forms" icon. It opens a form that lists all project forms and allow to edit them. Useful when the screen is crowded. * Now vdkbuilder denies to run more than one instance per user. At start vdkbuilder looks for a lock file: $(HOME)/.vdkb/.vdkblock (Uses a similar alghoritm as netscape) ================ VDKBuilder 0.1.5 ================ This release is mainly a bug-fix one and contains some additional features: * added VDKFixed support Moving/resizing widget contained into a fixed with mouse and keyboard implemented. * two more tutorial steps ================ VDKBuilder 0.1.4 ================ * Added a cacapbility that writes header dependencies (not recursive) for source files into vdkbMakefile. Dependencies are valid only for those files in project dir.Added: * Added a xpm browser to set glyphs on various widgets: pixamp buttons, toolbars, menuitems. VDKXpmBrowser was derived from VDKFileDialog, is simple and naive too. * Added a grep capability under Tools menu. Grep results are loaded into editor message list, double clicking on a list item will jump to matched line. (A little bug, selecting just one file prevents jump capability, it depends on how grep utility outputs results). * Added help/tutorial system (incomplete) Help/Tutorial uses the great Mozilla that can be invoked from within builder with Help->Index menu. Again thanks to: Jonathan Hudson * At first start VDKBuilder autonomously installs vdkbide.defaults and vdkbrc files into /.vdkb/res * Enabled toggle form/unit on main tool bar. - Activating a VDKBEditor page and cliking on form/unit toggle button the related form editor will be activated and raised. - Otherwise activating a form editor and clicking on form/unit toggle button the related text editor will be activated and raised. Very useful when screen becomes crowded. * Added autoconf/automake support Requires: - autoconf version >= 2.13 - automake (GNU automake) >= 1.4 This capability makes some assumptions: a. all project files are into project dir. b. if the user wants add some extra files it should prepare an file. These files will be added to distribution. (useful for pixmaps, docs, etc.) The file should contains a file list, each one separated by a new-line. * Supported configure commands: ./configure [various options] ./configure --help * Supported make targets: make make clean make distclean make dist make install * For redhat users (and most probably for others) If automake/autoconf support fails with: "AM_PATH_VDK macro not found on aclocal library" make a symlink into /usr/share/aclocal/ to /usr/local/share/aclocal/vdk.m4 Like this: $ su Password: (have su permission) # cd /usr/share/aclocal # ln -s /usr/local/share/aclocal/vdk.m4 # exit $ ================ VDKBuilder 0.1.3 ================ * Added support for: - VDKStatusbar - VDKSLider - VDKGrid not very complete, users should hack on vdkcompo/vdkgrid.h and vdkcompo/gtksheet.h Also use vdkgrid example on vdktest - VDKPacker - Accelerators (VDKBMenuItem and VDKBCustomButton). - Widgtes place holders Place holder is a widget that hold place for those widget that aren't currently supported by builder or are user defined. User should supply constructor definition for widget that will replace place holder. Builder declares and construct "real" widget using user supplied constructor definition. User can set common widget properties such as color,fonts,visible etc. Other behaviours must be coded by user. The right place is in YourForm::Setup() * Editor no more constructed at start-up. It will be displayed when opening a project. * Changed (WITH CODE BREAK) Changed all _Padding,_Fill,_Expand properties from a bool value to int. Also _justify changed from literals to int l_justify = 0 c_justify = 1 r_justify = 2 This can break compatibility with previous .frm files. Users should manually change in their .frm files all above properties from true/false to 1/0 i.e. (from vdkbuilder/example/hello) [object] { this:Hbox2; class:VDKBox; parent:nihil; _justify:l_justify; <== change to 1 _Expand:true; <== change to 1 _Fill:true; <== change to 1 _Padding:true; <== change to 1 Tag:nihil; Usize:239,78; mode:h_box; BorderWidth:1; } NOTE: This break was necessary to properly support a new useful widget: VDKPacker. ================ VDKBuilder 0.1.2 ================ * Added support for VDKCustomButton * Better colors selection * More customizing parameters: - autosave: when autosave is set to "yes" (into vdkbide.defaults) changed files (both .frm and .cc/.h) are saved without ask to user - startup dir: user can customize starting up working dir * Enabled customizing environment with dialog * Enabled project manager to manage console application projects. (Console applications do not use any gui features) ================ VDKBuilder 0.1.1 ================ Automake/Autoconf support vdkbuilder2-2.4.0/TODO0000644000000000000000000000012507535250427010060 TODO LIST In other word what should (will) be made better or fixed in next releases. vdkbuilder2-2.4.0/acconfig.h0000644000000000000000000000052407535250427011315 #undef ENABLE_NLS #undef HAVE_CATGETS #undef HAVE_GETTEXT #undef HAVE_LC_MESSAGES #undef HAVE_STPCPY #undef PACKAGE #undef VERSION #undef VDKB_PREFIX #undef VDKB_DATADIR #undef HAVE_HINTS #undef HAVE_SYNTAX #undef SUPPORT_NESTED_SYNTAX_HIGHLIGHT #undef VDKBDEBUG #undef HAVE_GNOME #undef HAVE_VDKDEVEL #undef VDKB_LOCALE_DIR #undef USE_XDB vdkbuilder2-2.4.0/aclocal.m40000644000000000000000000117430510052401326011225 # generated automatically by aclocal 1.7.8 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. # Do all the work for Automake. -*- Autoconf -*- # This macro actually does too much some checks are only needed if # your package does certain things. But this isn't really a big deal. # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 10 AC_PREREQ([2.54]) # Autoconf 2.50 wants to disallow AM_ names. We explicitly allow # the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AM_MISSING_PROG(AMTAR, tar) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ]) ]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $1 | $1:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) # Copyright 2002 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION so it can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.7.8])]) # Helper functions for option handling. -*- Autoconf -*- # Copyright 2001, 2002 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 2 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # # Check to make sure that the build environment is sane. # # Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 3 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # -*- Autoconf -*- # Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 3 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # AM_AUX_DIR_EXPAND # Copyright 2001 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. # Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50]) AC_DEFUN([AM_AUX_DIR_EXPAND], [ # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. # Copyright 2001 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"$am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # AM_PROG_INSTALL_STRIP # Copyright 2001 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # -*- Autoconf -*- # Copyright (C) 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 1 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # serial 5 -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c : > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking Speeds up one-time builds --enable-dependency-tracking Do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH]) ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. #serial 2 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue # Extract the definition of DEP_FILES from the Makefile without # running `make'. DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` test -z "$DEPDIR" && continue # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n -e '/^U = / s///p' < "$mf"` test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" # We invoke sed twice because it is the simplest approach to # changing $(DEPDIR) to its actual value in the expansion. for file in `sed -n -e ' /^DEP_FILES = .*\\\\$/ { s/^DEP_FILES = // :loop s/\\\\$// p n /\\\\$/ b loop p } /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 2 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright 1997, 2000, 2001 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 5 AC_PREREQ(2.52) # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE]) AC_SUBST([$1_FALSE]) if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]) fi])]) # Add --enable-maintainer-mode option to configure. # From Jim Meyering # Copyright 1996, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 2 AC_DEFUN([AM_MAINTAINER_MODE], [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode is disabled by default AC_ARG_ENABLE(maintainer-mode, [ --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer], USE_MAINTAINER_MODE=$enableval, USE_MAINTAINER_MODE=no) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST(MAINT)dnl ] ) AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- # Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. AC_PREREQ([2.52]) # serial 6 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # serial 47 AC_PROG_LIBTOOL # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) # ----------------------------------------------------------- # If this macro is not defined by Autoconf, define it here. m4_ifdef([AC_PROVIDE_IFELSE], [], [m4_define([AC_PROVIDE_IFELSE], [m4_ifdef([AC_PROVIDE_$1], [$2], [$3])])]) # AC_PROG_LIBTOOL # --------------- AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([_AC_PROG_LIBTOOL])dnl dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. AC_PROVIDE_IFELSE([AC_PROG_CXX], [AC_LIBTOOL_CXX], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX ])]) dnl And a similar setup for Fortran 77 support AC_PROVIDE_IFELSE([AC_PROG_F77], [AC_LIBTOOL_F77], [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 ])]) dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [ifdef([AC_PROG_GCJ], [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([A][M_PROG_GCJ], [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([LT_AC_PROG_GCJ], [define([LT_AC_PROG_GCJ], defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) ])])# AC_PROG_LIBTOOL # _AC_PROG_LIBTOOL # ---------------- AC_DEFUN([_AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Prevent multiple expansion define([AC_PROG_LIBTOOL], []) ])# _AC_PROG_LIBTOOL # AC_LIBTOOL_SETUP # ---------------- AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.50)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! AC_REQUIRE([AC_OBJEXT])dnl AC_REQUIRE([AC_EXEEXT])dnl dnl AC_LIBTOOL_SYS_MAX_CMD_LEN AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE AC_LIBTOOL_OBJDIR AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] # Same as above, but do not quote variable references. [double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" AC_CHECK_TOOL(AR, ar, false) AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;; esac AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], enable_win32_dll=yes, enable_win32_dll=no) AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes AC_ARG_WITH([pic], [AC_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= AC_LIBTOOL_LANG_C_CONFIG _LT_AC_TAGCONFIG ])# AC_LIBTOOL_SETUP # _LT_AC_SYS_COMPILER # ------------------- AC_DEFUN([_LT_AC_SYS_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_AC_SYS_COMPILER # _LT_AC_SYS_LIBPATH_AIX # ---------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], [AC_LINK_IFELSE(AC_LANG_PROGRAM,[ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_AC_SYS_LIBPATH_AIX # _LT_AC_SHELL_INIT(ARG) # ---------------------- AC_DEFUN([_LT_AC_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_AC_SHELL_INIT # _LT_AC_PROG_ECHO_BACKSLASH # -------------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], [_LT_AC_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) ])])# _LT_AC_PROG_ECHO_BACKSLASH # _LT_AC_LOCK # ----------- AC_DEFUN([_LT_AC_LOCK], [AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case "`/usr/bin/file conftest.o`" in *32-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; ]) esac need_locks="$enable_libtool_lock" ])# _LT_AC_LOCK # AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_CACHE_CHECK([$1], [$2], [$2=no ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then $2=yes fi fi $rm conftest* ]) if test x"[$]$2" = xyes; then ifelse([$5], , :, [$5]) else ifelse([$6], , :, [$6]) fi ])# AC_LIBTOOL_COMPILER_OPTION # AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ------------------------------------------------------------ # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" printf "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD else $2=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then ifelse([$4], , :, [$4]) else ifelse([$5], , :, [$5]) fi ])# AC_LIBTOOL_LINKER_OPTION # AC_LIBTOOL_SYS_MAX_CMD_LEN # -------------------------- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [# find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 testring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$testring" 2>/dev/null` \ = "XX$testring") >/dev/null 2>&1 && new_result=`expr "X$testring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` testring=$testring$testring done testring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi ])# AC_LIBTOOL_SYS_MAX_CMD_LEN # _LT_AC_CHECK_DLFCN # -------------------- AC_DEFUN([_LT_AC_CHECK_DLFCN], [AC_CHECK_HEADERS(dlfcn.h)dnl ])# _LT_AC_CHECK_DLFCN # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ------------------------------------------------------------------ AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_unknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_AC_TRY_DLOPEN_SELF # AC_LIBTOOL_DLOPEN_SELF # ------------------- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ])# AC_LIBTOOL_DLOPEN_SELF # AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) # --------------------------------- # Check to see if options -c and -o are simultaneously supported by compiler AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm conftest* ]) ])# AC_LIBTOOL_PROG_CC_C_O # AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) # ----------------------------------------- # Check to see if we can do hard links to lock some files if needed AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_REQUIRE([_LT_AC_LOCK])dnl hard_links="nottested" if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi ])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS # AC_LIBTOOL_OBJDIR # ----------------- AC_DEFUN([AC_LIBTOOL_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir ])# AC_LIBTOOL_OBJDIR # AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) # ---------------------------------------------- # Check hardcoding attributes. AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_AC_TAGVAR(hardcode_action, $1)= if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then # We can hardcode non-existant directories. if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_AC_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_AC_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_AC_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi ])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH # AC_LIBTOOL_SYS_LIB_STRIP # ------------------------ AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], [striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi ])# AC_LIBTOOL_SYS_LIB_STRIP # AC_LIBTOOL_SYS_DYNAMIC_LINKER # ----------------------------- # PORTME Fill in your ld.so characteristics AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_MSG_CHECKING([dynamic linker characteristics]) library_names_spec= libname_spec='lib$name' soname_spec= shrext=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' # Find out which ABI we are using (multilib Linux x86_64 hack). libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 ;; esac fi rm -rf conftest* ;; *) ;; esac sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}" sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no ])# AC_LIBTOOL_SYS_DYNAMIC_LINKER # _LT_AC_TAGCONFIG # ---------------- AC_DEFUN([_LT_AC_TAGCONFIG], [AC_ARG_WITH([tags], [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], [include additional configurations @<:@automatic@:>@])], [tagnames="$withval"]) if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then AC_MSG_WARN([output file `$ofile' does not exist]) fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) else AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) fi fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in "") ;; *) AC_MSG_ERROR([invalid tag name: $tagname]) ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then AC_MSG_ERROR([tag name \"$tagname\" already exists]) fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && test "X$CXX" != "Xno"; then AC_LIBTOOL_LANG_CXX_CONFIG else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then AC_LIBTOOL_LANG_F77_CONFIG else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then AC_LIBTOOL_LANG_GCJ_CONFIG else tagname="" fi ;; RC) AC_LIBTOOL_LANG_RC_CONFIG ;; *) AC_MSG_ERROR([Unsupported tag name: $tagname]) ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" AC_MSG_ERROR([unable to update list of available tagged configurations.]) fi fi ])# _LT_AC_TAGCONFIG # AC_LIBTOOL_DLOPEN # ----------------- # enable checks for dlopen support AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_DLOPEN # AC_LIBTOOL_WIN32_DLL # -------------------- # declare package support for building win32 dll's AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_WIN32_DLL # AC_ENABLE_SHARED([DEFAULT]) # --------------------------- # implement the --enable-shared flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_SHARED], [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([shared], [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]AC_ENABLE_SHARED_DEFAULT) ])# AC_ENABLE_SHARED # AC_DISABLE_SHARED # ----------------- #- set the default shared flag to --disable-shared AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no) ])# AC_DISABLE_SHARED # AC_ENABLE_STATIC([DEFAULT]) # --------------------------- # implement the --enable-static flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_STATIC], [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([static], [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]AC_ENABLE_STATIC_DEFAULT) ])# AC_ENABLE_STATIC # AC_DISABLE_STATIC # ----------------- # set the default static flag to --disable-static AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no) ])# AC_DISABLE_STATIC # AC_ENABLE_FAST_INSTALL([DEFAULT]) # --------------------------------- # implement the --enable-fast-install flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_FAST_INSTALL], [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([fast-install], [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) ])# AC_ENABLE_FAST_INSTALL # AC_DISABLE_FAST_INSTALL # ----------------------- # set the default to --disable-fast-install AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no) ])# AC_DISABLE_FAST_INSTALL # AC_LIBTOOL_PICMODE([MODE]) # -------------------------- # implement the --with-pic flag # MODE is either `yes' or `no'. If omitted, it defaults to `both'. AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl pic_mode=ifelse($#,1,$1,default) ])# AC_LIBTOOL_PICMODE # AC_PROG_EGREP # ------------- # This is predefined starting with Autoconf 2.54, so this conditional # definition can be removed once we require Autoconf 2.54 or later. m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], [AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi]) EGREP=$ac_cv_prog_egrep AC_SUBST([EGREP]) ])]) # AC_PATH_TOOL_PREFIX # ------------------- # find a file program which can recognise shared library AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi ])# AC_PATH_TOOL_PREFIX # AC_PATH_MAGIC # ------------- # find a file program which can recognise a shared library AC_DEFUN([AC_PATH_MAGIC], [AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# AC_PATH_MAGIC # AC_PROG_LD # ---------- # find the path to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH([gnu-ld], [AC_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no]) AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case "$host_cpu" in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; irix5* | irix6* | nonstopux*) case $host_os in irix5* | nonstopux*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" ;; esac lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux*) case $host_cpu in alpha* | hppa* | i*86 | ia64* | m68* | mips | mipsel | powerpc* | sparc* | s390* | sh* | x86_64*) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx) lt_cv_deplibs_check_method=unknown ;; openbsd*) lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' else lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' fi ;; osf3* | osf4* | osf5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' lt_cv_file_magic_test_file=/shlib/libc.so lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_test_file=/lib/libc.so ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown ])# AC_DEPLIBS_CHECK_METHOD # AC_PROG_NM # ---------- # find the path to a BSD-compatible name lister AC_DEFUN([AC_PROG_NM], [AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/${ac_tool_prefix}nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac esac fi done IFS="$lt_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" ])# AC_PROG_NM # AC_CHECK_LIBM # ------------- # check for math library AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac ])# AC_CHECK_LIBM # AC_LIBLTDL_CONVENIENCE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl convenience library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL # and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If # DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will # be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_CONVENIENCE # AC_LIBLTDL_INSTALLABLE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl installable library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-install to the configure arguments. Note that LIBLTDL # and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If # DIRECTORY is not provided and an installed libltdl is not found, it is # assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' # and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single # quotes!). If your package is not flat and you're not using automake, # define top_builddir and top_srcdir appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, lt_dlinit, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" LTDLINCL= fi # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_INSTALLABLE # AC_LIBTOOL_CXX # -------------- # enable support for C++ libraries AC_DEFUN([AC_LIBTOOL_CXX], [AC_REQUIRE([_LT_AC_LANG_CXX]) ])# AC_LIBTOOL_CXX # _LT_AC_LANG_CXX # --------------- AC_DEFUN([_LT_AC_LANG_CXX], [AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([AC_PROG_CXXCPP]) _LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,CXX" | sed 's/^,//'`]) ])# _LT_AC_LANG_CXX # AC_LIBTOOL_F77 # -------------- # enable support for Fortran 77 libraries AC_DEFUN([AC_LIBTOOL_F77], [AC_REQUIRE([_LT_AC_LANG_F77]) ])# AC_LIBTOOL_F77 # _LT_AC_LANG_F77 # --------------- AC_DEFUN([_LT_AC_LANG_F77], [AC_REQUIRE([AC_PROG_F77]) _LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,F77" | sed 's/^,//'`]) ])# _LT_AC_LANG_F77 # AC_LIBTOOL_GCJ # -------------- # enable support for GCJ libraries AC_DEFUN([AC_LIBTOOL_GCJ], [AC_REQUIRE([_LT_AC_LANG_GCJ]) ])# AC_LIBTOOL_GCJ # _LT_AC_LANG_GCJ # --------------- AC_DEFUN([_LT_AC_LANG_GCJ], [AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) _LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,GCJ" | sed 's/^,//'`]) ])# _LT_AC_LANG_GCJ # AC_LIBTOOL_RC # -------------- # enable support for Windows resource files AC_DEFUN([AC_LIBTOOL_RC], [AC_REQUIRE([LT_AC_PROG_RC]) _LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,RC" | sed 's/^,//'`]) ])# AC_LIBTOOL_RC # AC_LIBTOOL_LANG_C_CONFIG # ------------------------ # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) AC_DEFUN([_LT_AC_LANG_C_CONFIG], [lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}\n' _LT_AC_SYS_COMPILER # # Check for any special shared library compilation flags. # _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= if test "$GCC" = no; then case $host_os in sco3.2v5*) _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' ;; esac fi if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$]_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[[ ]]" >/dev/null; then : else AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no fi fi # # Check to make sure the static flag actually works. # AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), [], [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_DLOPEN_SELF($1) # Report which librarie types wil actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; darwin* | rhapsody*) if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case "$host_os" in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' ;; *) # Darwin 1.3 on test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' ;; esac # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. Also zsh mangles # `"' quotes if we put them in here... so don't! output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_C_CONFIG # AC_LIBTOOL_LANG_CXX_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], [AC_LANG_PUSH(C++) AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([AC_PROG_CXXCPP]) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Dependencies to place before and after the object being linked: _LT_AC_TAGVAR(predep_objects, $1)= _LT_AC_TAGVAR(postdep_objects, $1)= _LT_AC_TAGVAR(predeps, $1)= _LT_AC_TAGVAR(postdeps, $1)= _LT_AC_TAGVAR(compiler_lib_search_path, $1)= # Source file extension for C++ test sources. ac_ext=cc # Object file extension for compiled C++ test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration AC_PROG_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_AC_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=yes else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) _LT_AC_TAGVAR(always_export_symbols, $1)=yes # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds it's shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case "$host_os" in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' ;; *) # Darwin 1.3 on test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes fi ;; dgux*) case $cc_basename in ec++) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; ghcx) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before switch to ELF _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_AC_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | egrep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; *) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; ia64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC) case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case "$host_cpu" in ia64*|hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; irix5* | irix6*) case $cc_basename in CC) # SGI C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; linux*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc) # Intel C++ with_gnu_ld=yes _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; cxx) # Compaq C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; osf3*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ $rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; sco*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case $cc_basename in CC) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; lcc) # Lucid # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system # linker. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx) # Green Hills C++ Compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' fi ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_AC_TAGVAR(GCC, $1)="$GXX" _LT_AC_TAGVAR(LD, $1)="$LD" AC_LIBTOOL_POSTDEP_PREDEP($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_DLOPEN_SELF($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ])# AC_LIBTOOL_LANG_CXX_CONFIG # AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) # ------------------------ # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" ifelse([$1], [], [#! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG], [# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) # Is the compiler the GNU C compiler? with_gcc=$_LT_AC_TAGVAR(GCC, $1) # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_[]_LT_AC_TAGVAR(LD, $1) # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext='$shrext' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) # Commands used to build and install a shared archive. archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) # Flag that forces no undefined symbols. no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" # Set to yes if exported symbols are required. always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) # The commands to list exported symbols. export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) # Symbols that must always be exported. include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) ifelse([$1],[], [# ### END LIBTOOL CONFIG], [# ### END LIBTOOL TAG CONFIG: $tagname]) __EOF__ ifelse([$1],[], [ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ]) else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi ])# AC_LIBTOOL_CONFIG # AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi ])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # --------------------------------- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_OBJEXT]) # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32*) symcode='[[ABCDGISTW]]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris* | sysv5*) symcode='[[BDRT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[[]] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi ]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) # --------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], [_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) ifelse([$1],[CXX],[ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux*) case $cc_basename in KCC) # KAI C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; icpc) # Intel C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; cxx) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC) # Rational C++ 2.4.1 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx) # Digital/Compaq C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; sco*) case $cc_basename in CC) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; *) ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc) # Lucid _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; unixware*) ;; vxworks*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; newsos6) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; linux*) case $CC in icc|ecc) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; ccc) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; sco3.2v5*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' ;; solaris*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sunos4*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; uts4*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ;; esac ]) # AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) # ------------------------------------ # See if the linker supports building shared libraries. AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ifelse([$1],[CXX],[ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix4* | aix5*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw*) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ],[ runpath_var= _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)= _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_AC_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac _LT_AC_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; sunos4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; linux*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds" fi else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=yes _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=yes else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) _LT_AC_TAGVAR(always_export_symbols, $1)=yes # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds it's shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # see comment about different semantics on the GNU ld section _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; bsdi4*) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext=".dll" # FIXME: Setting linknames here is a bad hack. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case "$host_os" in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' ;; *) # Darwin 1.3 on test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' ;; esac # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. Also zsh mangles # `"' quotes if we put them in here... so don't! lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes fi ;; dgux*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; *) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; openbsd*) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi ;; os2*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; sco3.2v5*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_AC_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_AC_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4.2uw2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv5*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' ;; uts4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_AC_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) _LT_AC_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac ])# AC_LIBTOOL_PROG_LD_SHLIBS # _LT_AC_FILE_LTDLL_C # ------------------- # Be careful that the start marker always follows a newline. AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ ])# _LT_AC_FILE_LTDLL_C # _LT_AC_TAGVAR(VARNAME, [TAGNAME]) # --------------------------------- AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) # This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL]) AC_DEFUN([LT_AC_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj, no) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS) ]) AC_DEFUN([LT_AC_PROG_RC], [AC_CHECK_TOOL(RC, windres, no) ]) # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # # LT_AC_PROG_SED # -------------- # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. AC_DEFUN([LT_AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && break cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done SED=$lt_cv_path_SED ]) AC_MSG_RESULT([$SED]) ]) # gettext.m4 serial 20 (gettext-0.12) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define(gt_included_intl, ifelse([$1], [external], [no], [yes])) define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Set USE_NLS. AM_NLS ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH(included-gettext, [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. dnl Add a version number to the cache macros. define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, [AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], gt_cv_func_gnugettext_libc=yes, gt_cv_func_gnugettext_libc=no)]) if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], gt_cv_func_gnugettext_libintl, [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], gt_cv_func_gnugettext_libintl=yes, gt_cv_func_gnugettext_libintl=no) dnl Now see whether libintl exists and depends on libiconv. if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext_libintl=yes ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if test "$gt_cv_func_gnugettext_libc" = "yes" \ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE(HAVE_GETTEXT, 1, [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE(HAVE_DCGETTEXT, 1, [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST(BUILD_INCLUDED_LIBINTL) AC_SUBST(USE_INCLUDED_LIBINTL) AC_SUBST(CATOBJEXT) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST(DATADIRNAME) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST(INSTOBJEXT) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST(GENCAT) dnl For backward compatibility. Some Makefiles may be using this. if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST(INTLOBJS) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST(INTLLIBS) dnl Make all documented variables known to autoconf. AC_SUBST(LIBINTL) AC_SUBST(LTLIBINTL) AC_SUBST(POSUB) ]) dnl Checks for all prerequisites of the intl subdirectory, dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. AC_DEFUN([AM_INTL_SUBDIR], [ AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_ISC_POSIX])dnl AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_C_CONST])dnl AC_REQUIRE([AC_C_INLINE])dnl AC_REQUIRE([AC_TYPE_OFF_T])dnl AC_REQUIRE([AC_TYPE_SIZE_T])dnl AC_REQUIRE([AC_FUNC_ALLOCA])dnl AC_REQUIRE([AC_FUNC_MMAP])dnl AC_REQUIRE([jm_GLIBC21])dnl AC_REQUIRE([gt_INTDIV0])dnl AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl AC_REQUIRE([gt_INTTYPES_PRI])dnl AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h]) AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ __fsetlocking]) AM_ICONV AM_LANGINFO_CODESET if test $ac_cv_header_locale_h = yes; then AM_LC_MESSAGES fi dnl intl/plural.c is generated from intl/plural.y. It requires bison, dnl because plural.y uses bison specific features. It requires at least dnl bison-1.26 because earlier versions generate a plural.c that doesn't dnl compile. dnl bison is only needed for the maintainer (who touches plural.y). But in dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put dnl the rule in general Makefile. Now, some people carelessly touch the dnl files or have a broken "make" program, hence the plural.c rule will dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not dnl present or too old. AC_CHECK_PROGS([INTLBISON], [bison]) if test -z "$INTLBISON"; then ac_verc_fail=yes else dnl Found it, now check the version. AC_MSG_CHECKING([version of bison]) changequote(<<,>>)dnl ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) changequote([,])dnl ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac AC_MSG_RESULT([$ac_prog_version]) fi if test $ac_verc_fail = yes; then INTLBISON=: fi ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) # po.m4 serial 1 (gettext-0.12) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AM_NLS])dnl dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU msgfmt. if test "$GMSGFMT" != ":"; then dnl If it is no GNU msgfmt we define it as : so that the dnl Makefiles still can work. if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` AC_MSG_RESULT( [found $GMSGFMT program is not GNU msgfmt; ignore it]) GMSGFMT=":" fi fi dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is no GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po fi AC_OUTPUT_COMMANDS([ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= GMOFILES= UPDATEPOFILES= DUMMYPOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) # nls.m4 serial 1 (gettext-0.12) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT($USE_NLS) AC_SUBST(USE_NLS) ]) AC_DEFUN([AM_MKINSTALLDIRS], [ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but $(top_srcdir). dnl Try to locate it. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) ]) # progtest.m4 serial 3 (gettext-0.12) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) # lib-prefix.m4 serial 2 (gettext-0.12) dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) # lib-link.m4 serial 4 (gettext-0.12) dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes undefine([Name]) undefine([NAME]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. If found, it dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" LIBS="$LIBS $LIB[]NAME" AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) undefine([Name]) undefine([NAME]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, dnl hardcode_direct, hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE(rpath, [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib$1-prefix], [ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib --without-lib$1-prefix don't search for lib$1 in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) # lib-ld.m4 serial 2 (gettext-0.12) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl Subroutines of libtool.m4, dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision dnl with libtool.m4. dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then acl_cv_prog_gnu_ld=yes else acl_cv_prog_gnu_ld=no fi]) with_gnu_ld=$acl_cv_prog_gnu_ld ]) dnl From libtool-1.4. Sets the variable LD. AC_DEFUN([AC_LIB_PROG_LD], [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(acl_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) # iconv.m4 serial AM4 (gettext-0.11.3) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_func_iconv=yes) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_lib_iconv=yes am_cv_func_iconv=yes) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST(LIBICONV) AC_SUBST(LTLIBICONV) ]) AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL(am_cv_proto_iconv, [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([$]{ac_t:- }[$]am_cv_proto_iconv) AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, [Define as const if the declaration of iconv() needs const.]) fi ]) # isc-posix.m4 serial 2 (gettext-0.11.2) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. # This file is not needed with autoconf-2.53 and newer. Remove it in 2005. # This test replaces the one in autoconf. # Currently this macro should have the same name as the autoconf macro # because gettext's gettext.m4 (distributed in the automake package) # still uses it. Otherwise, the use in gettext.m4 makes autoheader # give these diagnostics: # configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX # configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX undefine([AC_ISC_POSIX]) AC_DEFUN([AC_ISC_POSIX], [ dnl This test replaces the obsolescent AC_ISC_POSIX kludge. AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) ] ) # glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. # Test for the GNU C Library, version 2.1 or newer. # From Bruno Haible. AC_DEFUN([jm_GLIBC21], [ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, ac_cv_gnu_library_2_1, [AC_EGREP_CPP([Lucky GNU user], [ #include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) Lucky GNU user #endif #endif ], ac_cv_gnu_library_2_1=yes, ac_cv_gnu_library_2_1=no) ] ) AC_SUBST(GLIBC21) GLIBC21="$ac_cv_gnu_library_2_1" ] ) # intdiv0.m4 serial 1 (gettext-0.11.3) dnl Copyright (C) 2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([gt_INTDIV0], [ AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], gt_cv_int_divbyzero_sigfpe, [ AC_TRY_RUN([ #include #include static void #ifdef __cplusplus sigfpe_handler (int sig) #else sigfpe_handler (sig) int sig; #endif { /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ exit (sig != SIGFPE); } int x = 1; int y = 0; int z; int nan; int main () { signal (SIGFPE, sigfpe_handler); /* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ #if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) signal (SIGTRAP, sigfpe_handler); #endif /* Linux/SPARC yields signal SIGILL. */ #if defined (__sparc__) && defined (__linux__) signal (SIGILL, sigfpe_handler); #endif z = x / y; nan = y / y; exit (1); } ], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, [ # Guess based on the CPU. case "$host_cpu" in alpha* | i[34567]86 | m68k | s390*) gt_cv_int_divbyzero_sigfpe="guessing yes";; *) gt_cv_int_divbyzero_sigfpe="guessing no";; esac ]) ]) case "$gt_cv_int_divbyzero_sigfpe" in *yes) value=1;; *) value=0;; esac AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, [Define if integer division by zero raises signal SIGFPE.]) ]) # uintmax_t.m4 serial 7 (gettext-0.12) dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. AC_PREREQ(2.13) # Define uintmax_t to 'unsigned long' or 'unsigned long long' # if it is not already defined in or . AC_DEFUN([jm_AC_TYPE_UINTMAX_T], [ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) AC_REQUIRE([jm_AC_HEADER_STDINT_H]) if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) test $ac_cv_type_unsigned_long_long = yes \ && ac_type='unsigned long long' \ || ac_type='unsigned long' AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, [Define to unsigned long or unsigned long long if and don't define.]) else AC_DEFINE(HAVE_UINTMAX_T, 1, [Define if you have the 'uintmax_t' type in or .]) fi ]) # inttypes_h.m4 serial 5 (gettext-0.12) dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, # doesn't clash with , and declares uintmax_t. AC_DEFUN([jm_AC_HEADER_INTTYPES_H], [ AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, [AC_TRY_COMPILE( [#include #include ], [uintmax_t i = (uintmax_t) -1;], jm_ac_cv_header_inttypes_h=yes, jm_ac_cv_header_inttypes_h=no)]) if test $jm_ac_cv_header_inttypes_h = yes; then AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi ]) # stdint_h.m4 serial 3 (gettext-0.12) dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_STDINT_H_WITH_UINTMAX if exists, # doesn't clash with , and declares uintmax_t. AC_DEFUN([jm_AC_HEADER_STDINT_H], [ AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, [AC_TRY_COMPILE( [#include #include ], [uintmax_t i = (uintmax_t) -1;], jm_ac_cv_header_stdint_h=yes, jm_ac_cv_header_stdint_h=no)]) if test $jm_ac_cv_header_stdint_h = yes; then AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi ]) # ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40) dnl Copyright (C) 1999-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], [ AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;], [unsigned long long ullmax = (unsigned long long) -1; return ull << i | ull >> i | ullmax / ull | ullmax % ull;], ac_cv_type_unsigned_long_long=yes, ac_cv_type_unsigned_long_long=no)]) if test $ac_cv_type_unsigned_long_long = yes; then AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, [Define if you have the unsigned long long type.]) fi ]) # inttypes.m4 serial 1 (gettext-0.11.4) dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_INTTYPES_H if exists and doesn't clash with # . AC_DEFUN([gt_HEADER_INTTYPES_H], [ AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, [ AC_TRY_COMPILE( [#include #include ], [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) ]) if test $gt_cv_header_inttypes_h = yes; then AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, [Define if exists and doesn't clash with .]) fi ]) # inttypes-pri.m4 serial 1 (gettext-0.11.4) dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. # Define PRI_MACROS_BROKEN if exists and defines the PRI* # macros to non-string values. This is the case on AIX 4.3.3. AC_DEFUN([gt_INTTYPES_PRI], [ AC_REQUIRE([gt_HEADER_INTTYPES_H]) if test $gt_cv_header_inttypes_h = yes; then AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], gt_cv_inttypes_pri_broken, [ AC_TRY_COMPILE([#include #ifdef PRId32 char *p = PRId32; #endif ], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) ]) fi if test "$gt_cv_inttypes_pri_broken" = yes; then AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, [Define if exists and defines unusable PRI* macros.]) fi ]) # codeset.m4 serial AM1 (gettext-0.10.40) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([AM_LANGINFO_CODESET], [ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, [AC_TRY_LINK([#include ], [char* cs = nl_langinfo(CODESET);], am_cv_langinfo_codeset=yes, am_cv_langinfo_codeset=no) ]) if test $am_cv_langinfo_codeset = yes; then AC_DEFINE(HAVE_LANGINFO_CODESET, 1, [Define if you have and nl_langinfo(CODESET).]) fi ]) # lcmessage.m4 serial 3 (gettext-0.11.3) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995. # Check whether LC_MESSAGES is available in . AC_DEFUN([AM_LC_MESSAGES], [ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your file defines LC_MESSAGES.]) fi ]) # Configure paths for VDK # Mario Motta 11-19-2000 # stolen from Frank Belew # stolen from Manish Singh # Shamelessly stolen from Owen Taylor AC_DEFUN(AM_PATH_VDK_2, [## AC_ARG_WITH(vdk-prefix,[ --with-vdk-prefix=PFX Prefix where VDK is installed (optional)], vdk_prefix="$withval", vdk_prefix="") AC_ARG_WITH(vdk-exec-prefix,[ --with-vdk-exec-prefix=PFX Exec prefix where VDK is installed (optional)], vdk_exec_prefix="$withval", vdk_exec_prefix="") AC_ARG_ENABLE(vdktest, [ --disable-vdktest Do not try to compile and run a test VDK program], , enable_vdktest=yes) if test x$vdk_exec_prefix != x ; then vdk_args="$vdk_args --exec-prefix=$vdk_exec_prefix" if test x${VDK_CONFIG+set} != xset ; then VDK_CONFIG=$vdk_exec_prefix/bin/vdk-config-2 fi fi if test x$vdk_prefix != x ; then vdk_args="$vdk_args --prefix=$vdk_prefix" if test x${VDK_CONFIG+set} != xset ; then VDK_CONFIG=$vdk_prefix/bin/vdk-config-2 fi fi AC_PATH_PROG(VDK_CONFIG, vdk-config-2, no) min_vdk_version=ifelse([$1], ,2.4.0,$1) AC_MSG_CHECKING(for VDK - version >= $min_vdk_version) no_vdk="" if test "$VDK_CONFIG" = "no" ; then no_vdk=yes else AC_LANG_SAVE AC_LANG_CPLUSPLUS VDK_CFLAGS=`$VDK_CONFIG $vdkconf_args --cflags` VDK_LIBS=`$VDK_CONFIG $vdkconf_args --libs` vdk_major_version=`$VDK_CONFIG $vdk_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` vdk_minor_version=`$VDK_CONFIG $vdk_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` vdk_micro_version=`$VDK_CONFIG $vdk_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_vdktest" = "xyes" ; then ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CXXFLAGS="$CXXFLAGS $VDK_CFLAGS" LIBS="$LIBS $VDK_LIBS" rm -f conf.vdktest AC_TRY_RUN([ #include // #include #include extern "C" int system(const char *s); int main () { system ("touch conf.vdktest"); if (($vdk_major_version > VDK_VERSION_MAJOR) || (($vdk_major_version == VDK_VERSION_MAJOR) && ($vdk_minor_version > VDK_VERSION_MINOR)) || (($vdk_major_version == VDK_VERSION_MAJOR) && ($vdk_minor_version == VDK_VERSION_MINOR) && ($vdk_micro_version >= VDK_VERSION_MICRO))) { return 0; } else { printf("\n*** 'vdk-config-2 --version' returned %d.%d, but the minimum version\n", $vdk_major_version, $vdk_minor_version); printf("*** of VDK required is %d.%d. If vdk-config is correct, then it is\n", VDK_VERSION_MAJOR, VDK_VERSION_MINOR); printf("*** best to upgrade to the required version.\n"); printf("*** If vdk-config was wrong, set the environment variable VDK_CONFIG\n"); printf("*** to point to the correct copy of vdk-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } ],, no_vdk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_vdk" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$VDK_CONFIG" = "no" ; then echo "*** The vdk-config-2 script installed by VDK could not be found" echo "*** If VDK was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the VDK_CONFIG environment variable to the" echo "*** full path to vdk-config." else if test -f conf.vdktest ; then : else echo "*** Could not run VDK test program, checking why..." CXXFLAGS="$CXXFLAGS $VDK_CFLAGS" LIBS="$LIBS $VDK_LIBS" AC_TRY_LINK([ #include #include ], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding VDK or finding the wrong" echo "*** version of VDK. If it is not finding VDK, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means VDK was incorrectly installed" echo "*** or that you have moved VDK since it was installed. In the latter case, you" echo "*** may want to edit the vdk-config script: $VDK_CONFIG" ]) CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi VDK_CFLAGS="" VDK_LIBS="" ifelse([$3], , :, [$3]) fi VDK_VERSION_MAJOR=2 VDK_VERSION_MINOR=4 VDK_VERSION_MICRO=0 AC_SUBST(VDK_VERSION_MAJOR) AC_SUBST(VDK_VERSION_MINOR) AC_SUBST(VDK_VERSION_MICRO) AC_SUBST(VDK_CFLAGS) AC_SUBST(VDK_LIBS) rm -f conf.vdktest ]) vdkbuilder2-2.4.0/config.guess0000755000000000000000000012206510052401324011676 #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003 Free Software Foundation, Inc. timestamp='2003-06-17' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown ## for Red Hat Linux if test -f /etc/redhat-release ; then VENDOR=redhat ; else VENDOR= ; fi # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; arc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; macppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvmeppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; pmax:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mipseb-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sun3:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; wgrisc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} exit 0 ;; alpha:OSF1:*:*) if test $UNAME_RELEASE = "V4.0"; then UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` fi # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha*:OpenVMS:*:*) echo alpha-hp-vms exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit 0 ;; DRS?6000:UNIX_SV:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7 && exit 0 ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c \ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && exit 0 echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then # avoid double evaluation of $set_cc_for_build test -n "$CC_FOR_BUILD" || eval $set_cc_for_build if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; *:UNICOS/mp:*:*) echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) # Determine whether the default compiler uses glibc. eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #if __GLIBC__ >= 2 LIBC=gnu #else LIBC= #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; x86:Interix*:[34]*) echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' exit 0 ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; ppc:Linux:*:*) echo powerpc-${VENDOR:-unknown}-linux-gnu exit 0 ;; ppc64:Linux:*:*) echo powerpc64-${VENDOR:-unknown}-linux-gnu exit 0 ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit 0 ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit 0 ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR:-ibm}-linux-gnu exit 0 ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; x86_64:Linux:*:*) echo x86_64-${VENDOR:-unknown}-linux-gnu exit 0 ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit 0 ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #ifdef __INTEL_COMPILER LIBC=gnu #else LIBC=gnuaout #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR:-pc}-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; i*86:*:5:[78]*) case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit 0 ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4.3${OS_REL} && exit 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) case `uname -p` in *86) UNAME_PROCESSOR=i686 ;; powerpc) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit 0 ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit 0 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit 0 ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit 0 ;; *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: vdkbuilder2-2.4.0/config.h.in0000644000000000000000000001525110052401444011402 /* config.h.in. Generated from configure.in by autoheader. */ #undef ENABLE_NLS #undef HAVE_CATGETS #undef HAVE_GETTEXT #undef HAVE_LC_MESSAGES #undef HAVE_STPCPY #undef PACKAGE #undef VERSION #undef VDKB_PREFIX #undef VDKB_DATADIR #undef HAVE_HINTS #undef HAVE_SYNTAX #undef SUPPORT_NESTED_SYNTAX_HIGHLIGHT #undef VDKBDEBUG #undef HAVE_GNOME #undef HAVE_VDKDEVEL #undef VDKB_LOCALE_DIR #undef USE_XDB /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ #undef CRAY_STACKSEG_END /* Define to 1 if using `alloca.c'. */ #undef C_ALLOCA /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA /* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H /* Define to 1 if you have the header file. */ #undef HAVE_ARGZ_H /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the `feof_unlocked' function. */ #undef HAVE_FEOF_UNLOCKED /* Define to 1 if you have the `fgets_unlocked' function. */ #undef HAVE_FGETS_UNLOCKED /* Define to 1 if you have the `getcwd' function. */ #undef HAVE_GETCWD /* Define to 1 if you have the `getc_unlocked' function. */ #undef HAVE_GETC_UNLOCKED /* Define to 1 if you have the `getegid' function. */ #undef HAVE_GETEGID /* Define to 1 if you have the `geteuid' function. */ #undef HAVE_GETEUID /* Define to 1 if you have the `getgid' function. */ #undef HAVE_GETGID /* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the `getuid' function. */ #undef HAVE_GETUID /* Define if you have the iconv() function. */ #undef HAVE_ICONV /* Define if exists and doesn't clash with . */ #undef HAVE_INTTYPES_H /* Define if exists, doesn't clash with , and declares uintmax_t. */ #undef HAVE_INTTYPES_H_WITH_UINTMAX /* Define if you have and nl_langinfo(CODESET). */ #undef HAVE_LANGINFO_CODESET /* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `mempcpy' function. */ #undef HAVE_MEMPCPY /* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP /* Define to 1 if you have the `munmap' function. */ #undef HAVE_MUNMAP /* Define to 1 if you have the header file. */ #undef HAVE_NL_TYPES_H /* Define to 1 if you have the `putenv' function. */ #undef HAVE_PUTENV /* Define to 1 if you have the `setenv' function. */ #undef HAVE_SETENV /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE /* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define if exists, doesn't clash with , and declares uintmax_t. */ #undef HAVE_STDINT_H_WITH_UINTMAX /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `stpcpy' function. */ #undef HAVE_STPCPY /* Define to 1 if you have the `strcasecmp' function. */ #undef HAVE_STRCASECMP /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strtoul' function. */ #undef HAVE_STRTOUL /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the `tsearch' function. */ #undef HAVE_TSEARCH /* Define if you have the 'uintmax_t' type in or . */ #undef HAVE_UINTMAX_T /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define if you have the unsigned long long type. */ #undef HAVE_UNSIGNED_LONG_LONG /* Define to 1 if you have the `__argz_count' function. */ #undef HAVE___ARGZ_COUNT /* Define to 1 if you have the `__argz_next' function. */ #undef HAVE___ARGZ_NEXT /* Define to 1 if you have the `__argz_stringify' function. */ #undef HAVE___ARGZ_STRINGIFY /* Define to 1 if you have the `__fsetlocking' function. */ #undef HAVE___FSETLOCKING /* Define as const if the declaration of iconv() needs const. */ #undef ICONV_CONST /* Define if integer division by zero raises signal SIGFPE. */ #undef INTDIV0_RAISES_SIGFPE /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define if exists and defines unusable PRI* macros. */ #undef PRI_MACROS_BROKEN /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define as `__inline' if that's what the C compiler calls it, or to nothing if it is not supported. */ #undef inline /* Define to `long' if does not define. */ #undef off_t /* Define to `unsigned' if does not define. */ #undef size_t /* Define to unsigned long or unsigned long long if and don't define. */ #undef uintmax_t vdkbuilder2-2.4.0/config.sub0000755000000000000000000007301510052401324011341 #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003 Free Software Foundation, Inc. timestamp='2003-06-18' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit 0;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k \ | m32r | m68000 | m68k | m88k | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | msp430 \ | ns16k | ns32k \ | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | s390 | s390x \ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xscale | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* \ | m32r-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | msp430-* \ | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | s390-* | s390x-* \ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; crds | unos) basic_machine=m68k-crds ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; mmix*) basic_machine=mmix-knuth os=-mmixware ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nv1) basic_machine=nv1-cray os=-unicosmp ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; or32 | or32-*) basic_machine=or32-unknown os=-coff ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sh64) basic_machine=sh64-unknown ;; sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -ptx*) vendor=sequent ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: vdkbuilder2-2.4.0/configure.in0000644000000000000000000001266110052401025011665 dnl ************************************************************* dnl VDKBuilder configuration script dnl Mario Motta dnl Last update: VDKBuilder 2.0.6 March 2004 dnl ************************************************************* AC_INIT(vdkbuilder/vdkb.cc) dnl --------------------------------------------- dnl defines package name and version dnl changing package version requires to change dnl #define VDKBVERSION dnl into ./include/vdkb/vdkb_types.h as well dnl --------------------------------------------- PACKAGE=vdkbuilder2 VERSION=2.4.0 dnl put here required vdk version REQUIRED_VDK=2.4.0 dnl ------------------------- dnl Initialize automake stuff dnl ------------------------- AM_INIT_AUTOMAKE($PACKAGE, $VERSION) AM_MAINTAINER_MODE dnl ------------------------ dnl create a config.h header dnl ------------------------ AM_CONFIG_HEADER(config.h) dnl -------------------- dnl initializes Libtool dnl ------------------- AC_LIBTOOL_DLOPEN AC_PROG_LIBTOOL AM_PROG_LIBTOOL dnl ----------------------- dnl begins canonical checks dnl ----------------------- AC_CANONICAL_HOST dnl ------------- dnl Gettext stuff dnl ------------- ALL_LINGUAS="en it" AM_GNU_GETTEXT dnl ------------------------------------------------ dnl check for C,C++ compiler, C++ pre-processor flag dnl ------------------------------------------------ AC_PROG_CXX AC_PROG_CXXCPP AC_LANG_CPLUSPLUS dnl ---------------------------------- dnl checks for appropriate vdk version dnl ---------------------------------- AM_PATH_VDK_2($REQUIRED_VDK,,AC_MSG_ERROR(Correct VDK version not found: requires $REQUIRED_VDK)) dnl ------------------ dnl sets user options dnl------------------- AC_ARG_ENABLE(devel, [ --enable-devel[=yes/no] Compile VDKBuilder with all info for debug [default=no]],,enable_devel=no) AC_ARG_ENABLE(opt, [ --enable-opt[=OPTIMIZATION/no] Compile with -Ox optimization [default=2]],,enable_opt=2) dnl AC_ARG_ENABLE(gnome,[ --enable-gnome=[yes/no] Enable use of gnome[default=no], not required if vdk was compiled with gnome-support], dnl gnome=$enableval, gnome=no) AC_ARG_ENABLE(vdkxdb, [ --enable-vdkxdb[=yes/no] Enable vdkxdb support [default=no]],,enable_vdkxdb=no) dnl ---------------------- dnl sets some common flags dnl ---------------------- AC_DEFINE(HAVE_SYNTAX) AC_DEFINE(HAVE_HINTS) AC_DEFINE(SUPPORT_NESTED_SYNTAX_HIGHLIGHT) dnl ------------------- dnl check user options dnl ------------------- if test "x$enable_devel" = "xyes"; then cflag="-g" AC_DEFINE(VDKBDEBUG) else cflag="-s" fi if test "x$enable_opt" != "xno"; then cflag="$cflag -O$enable_opt" fi if test "x$prefix" = "xNONE"; then prefix="/usr/local" fi CFLAGS="$cflag -I../include -Wall" CXXFLAGS="$cflag -I../include -Wall" dnl check vdkxdb support if test "x$enable_vdkxdb" == "xyes"; then AC_MSG_CHECKING(for libvdkxdb version 2.4.0) AC_PATH_PROG(vdkxdbpath, vdkxdb-config-2) if test "x$vdkxdbpath" != "x"; then VDKXDB_VERSION=`$vdkxdbpath --version 2>/dev/null` VDKXDB_CFLAGS=`$vdkxdbpath --cflags 2>/dev/null` VDKXDB_LDFLAGS=`$vdkxdbpath --libs 2>/dev/null` if test "$VDKXDB_VERSION" = "2.4.0" ; then AC_MSG_RESULT(vdkxdb is ok) LIBS="$LIBS -lvdkxdb2 -lxbase" VDK_CFLAGS="$VDK_CLAGS $VDKXDB_CFLAGS" AC_DEFINE(USE_XDB) WITHXDB="yes" else AC_MSG_WARN(Could not find vdkxdb correct version) AC_MSG_WARN(Building without vdkxdb support) WITHXDB="no" fi else WITHXDB="no" fi else WITHXDB="no" fi dnl ------------------------ dnl checks for gnome support dnl ------------------------ #if test "$gnome" = yes; then #AC_PATH_PROG(gnomepath, gnome-config) #AC_MSG_CHECKING(for Gnome) #GNOME_CFLAGS=`$gnomepath gnomeui --cflags 2>/dev/null` #GNOME_LDFLAGS=`$gnomepath gnomeui --libs 2>/dev/null` #if test "_$GNOME_CFLAGS" = _ ; then # AC_MSG_RESULT([not found, building without Gnome support.]) WITHGNOME="no" #else # AC_MSG_RESULT(ok) # WITHGNOME="yes" #fi #fi VDKBDATADIR=$prefix/share/vdkb2 AC_DEFINE_UNQUOTED(VDKB_DATADIR, "$VDKBDATADIR") AC_DEFINE_UNQUOTED(VDKB_PREFIX, "$prefix") AC_SUBST(CFLAGS) AC_SUBST(CXXFLAGS) dnl Set the location of the locale messages to be used in main.cc dnl This will substitute VDKB_LOCALE_DIR in config.h (from acconfig.h). if test "x$prefix" = "xNONE"; then VDKB_LOCALE_DIR=$ac_default_prefix/share/locale else VDKB_LOCALE_DIR=$prefix/share/locale fi AC_DEFINE_UNQUOTED(VDKB_LOCALE_DIR, "$VDKB_LOCALE_DIR") AC_DEFUN(FC_EXPAND_DIR, [ $1=$2 $1=`( test "x$prefix" = xNONE && prefix="$ac_default_prefix" test "x$exec_prefix" = xNONE && exec_prefix="${prefix}" eval echo \""[$]$1"\" )` ]) FC_EXPAND_DIR(PLUGINS_LIBDIR, "$libdir") AC_SUBST(PLUGINS_LIBDIR) AC_OUTPUT(Makefile \ vdkbuilder.spec \ include/Makefile \ include/vdkb2/Makefile \ plugins/Makefile \ vdkbuilder/Makefile \ vdkbuilder/pixmaps/Makefile \ data/Makefile \ data/res/Makefile \ data/res/plugins.db \ example/Makefile \ po/Makefile.in \ intl/Makefile \ doc/Makefile \ ) echo "" echo "VDKBuilder configure finished succesfully" echo "VDKBuilder configuration:" echo " - VDKBuilder Version : $VERSION" echo " - Required VDK Version : $REQUIRED_VDK" echo " - Gnome support : $WITHGNOME" echo " - Xdb support : $WITHXDB (version $VDKXDB_VERSION)" echo " - Debug : $enable_devel" echo " - Optimization : $enable_opt" echo " * Host : $host" echo " * Installation Prefix : $prefix" echo " * Required libs : $VDK_LIBS $LIBS" vdkbuilder2-2.4.0/depcomp0000755000000000000000000003305207740426644010756 #! /bin/sh # depcomp - compile a program generating dependencies as side-effects # Copyright 1999, 2000, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # `libtool' can also be set to `yes' or `no'. if test -z "$depfile"; then base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` dir=`echo "$object" | sed 's,/.*$,/,'` if test "$dir" = "$object"; then dir= fi # FIXME: should be _deps on DOS. depfile="$dir.deps/$base" fi tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` tmpdepfile="$stripped.u" if test "$libtool" = yes; then "$@" -Wc,-M else "$@" -M fi stat=$? if test -f "$tmpdepfile"; then : else stripped=`echo "$stripped" | sed 's,^.*/,,'` tmpdepfile="$stripped.u" fi if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi if test -f "$tmpdepfile"; then outname="$stripped.o" # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1="$dir.libs/$base.lo.d" tmpdepfile2="$dir.libs/$base.d" "$@" -Wc,-MD else tmpdepfile1="$dir$base.o.d" tmpdepfile2="$dir$base.d" "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi if test -f "$tmpdepfile1"; then tmpdepfile="$tmpdepfile1" else tmpdepfile="$tmpdepfile2" fi if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 vdkbuilder2-2.4.0/install-sh0000755000000000000000000001273607535250427011407 #!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 vdkbuilder2-2.4.0/ltconfig0000755000000000000000000026776507535250427011154 #! /bin/sh # ltconfig - Create a system-specific libtool. # Copyright (C) 1996-1999 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A lot of this script is taken from autoconf-2.10. # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} echo=echo if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell. exec "$SHELL" "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null`} case X$UNAME in *-DOS) PATH_SEPARATOR=';' ;; *) PATH_SEPARATOR=':' ;; esac fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi if test "X${echo_test_string+set}" != "Xset"; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string="`eval $cmd`") 2>/dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then break fi done fi if test "X`($echo '\t') 2>/dev/null`" != 'X\t' || test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH /usr/ucb; do if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then echo="$dir/echo" break fi done IFS="$save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running ltconfig again with it. ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}" export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf "%s\n"' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then # Cool, printf works : elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL" export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # The name of this program. progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` # Constants: PROGRAM=ltconfig PACKAGE=libtool VERSION=1.3.3 TIMESTAMP=" (1.385.2.181 1999/07/02 15:49:11)" ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5' rm="rm -f" help="Try \`$progname --help' for more information." # Global variables: default_ofile=libtool can_build_shared=yes enable_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). enable_static=yes enable_fast_install=yes enable_dlopen=unknown enable_win32_dll=no ltmain= silent= srcdir= ac_config_guess= ac_config_sub= host= nonopt= ofile="$default_ofile" verify_host=yes with_gcc=no with_gnu_ld=no need_locks=yes ac_ext=c objext=o libext=a exeext= cache_file= old_AR="$AR" old_CC="$CC" old_CFLAGS="$CFLAGS" old_CPPFLAGS="$CPPFLAGS" old_LDFLAGS="$LDFLAGS" old_LD="$LD" old_LN_S="$LN_S" old_LIBS="$LIBS" old_NM="$NM" old_RANLIB="$RANLIB" old_DLLTOOL="$DLLTOOL" old_OBJDUMP="$OBJDUMP" old_AS="$AS" # Parse the command line options. args= prev= for option do case "$option" in -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then eval "$prev=\$option" prev= continue fi case "$option" in --help) cat <&2 echo "$help" 1>&2 exit 1 ;; *) if test -z "$ltmain"; then ltmain="$option" elif test -z "$host"; then # This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 # if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then # echo "$progname: warning \`$option' is not a valid host type" 1>&2 # fi host="$option" else echo "$progname: too many arguments" 1>&2 echo "$help" 1>&2 exit 1 fi ;; esac done if test -z "$ltmain"; then echo "$progname: you must specify a LTMAIN file" 1>&2 echo "$help" 1>&2 exit 1 fi if test ! -f "$ltmain"; then echo "$progname: \`$ltmain' does not exist" 1>&2 echo "$help" 1>&2 exit 1 fi # Quote any args containing shell metacharacters. ltconfig_args= for arg do case "$arg" in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) ltconfig_args="$ltconfig_args '$arg'" ;; *) ltconfig_args="$ltconfig_args $arg" ;; esac done # A relevant subset of AC_INIT. # File descriptor usage: # 0 standard input # 1 file creation # 2 errors and warnings # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 5 compiler messages saved in config.log # 6 checking for... messages and results if test "$silent" = yes; then exec 6>/dev/null else exec 6>&1 fi exec 5>>./config.log # NLS nuisances. # Only set LANG and LC_ALL to C if already set. # These must not be set unconditionally because not all systems understand # e.g. LANG=C (notably SCO). if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi if test "${LANG+set}" = set; then LANG=C; export LANG; fi if test -n "$cache_file" && test -r "$cache_file"; then echo "loading cache $cache_file within ltconfig" . $cache_file fi if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ac_n= ac_c=' ' ac_t=' ' else ac_n=-n ac_c= ac_t= fi else ac_n= ac_c='\c' ac_t= fi if test -z "$srcdir"; then # Assume the source directory is the same one as the path to LTMAIN. srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` test "$srcdir" = "$ltmain" && srcdir=. fi trap "$rm conftest*; exit 1" 1 2 15 if test "$verify_host" = yes; then # Check for config.guess and config.sub. ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/config.guess; then ac_aux_dir=$ac_dir break fi done if test -z "$ac_aux_dir"; then echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 echo "$help" 1>&2 exit 1 fi ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub # Make sure we can run config.sub. if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : else echo "$progname: cannot run $ac_config_sub" 1>&2 echo "$help" 1>&2 exit 1 fi echo $ac_n "checking host system type""... $ac_c" 1>&6 host_alias=$host case "$host_alias" in "") if host_alias=`$SHELL $ac_config_guess`; then : else echo "$progname: cannot guess host type; you must specify one" 1>&2 echo "$help" 1>&2 exit 1 fi ;; esac host=`$SHELL $ac_config_sub $host_alias` echo "$ac_t$host" 1>&6 # Make sure the host verified. test -z "$host" && exit 1 elif test -z "$host"; then echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 echo "$help" 1>&2 exit 1 else host_alias=$host fi # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case "$host_os" in linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` case "$host_os" in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "${COLLECT_NAMES+set}" != set; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Determine commands to create old-style static archives. old_archive_cmds='$AR cru $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= # Set a sane default for `AR'. test -z "$AR" && AR=ar # Set a sane default for `OBJDUMP'. test -z "$OBJDUMP" && OBJDUMP=objdump # If RANLIB is not set, then run the test. if test "${RANLIB+set}" != "set"; then result=no echo $ac_n "checking for ranlib... $ac_c" 1>&6 IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH; do test -z "$dir" && dir=. if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then RANLIB="ranlib" result="ranlib" break fi done IFS="$save_ifs" echo "$ac_t$result" 1>&6 fi if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" fi # Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$AS" && AS=as # Check to see if we are using GCC. if test "$with_gcc" != yes || test -z "$CC"; then # If CC is not set, then try to find GCC or a usable CC. if test -z "$CC"; then echo $ac_n "checking for gcc... $ac_c" 1>&6 IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH; do test -z "$dir" && dir=. if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then CC="gcc" break fi done IFS="$save_ifs" if test -n "$CC"; then echo "$ac_t$CC" 1>&6 else echo "$ac_t"no 1>&6 fi fi # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". if test -z "$CC"; then echo $ac_n "checking for cc... $ac_c" 1>&6 IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" cc_rejected=no for dir in $PATH; do test -z "$dir" && dir=. if test -f $dir/cc || test -f $dir/cc$ac_exeext; then if test "$dir/cc" = "/usr/ucb/cc"; then cc_rejected=yes continue fi CC="cc" break fi done IFS="$save_ifs" if test $cc_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $CC shift if test $# -gt 0; then # We chose a different compiler from the bogus one. # However, it has the same name, so the bogon will be chosen # first if we set CC to just the name; use the full file name. shift set dummy "$dir/cc" "$@" shift CC="$@" fi fi if test -n "$CC"; then echo "$ac_t$CC" 1>&6 else echo "$ac_t"no 1>&6 fi if test -z "$CC"; then echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 exit 1 fi fi # Now see if the compiler is really GCC. with_gcc=no echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 echo "$progname:581: checking whether we are using GNU C" >&5 $rm conftest.c cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then with_gcc=yes fi $rm conftest.c echo "$ac_t$with_gcc" 1>&6 fi # Allow CC to be a program name with arguments. set dummy $CC compiler="$2" echo $ac_n "checking for object suffix... $ac_c" 1>&6 $rm conftest* echo 'int i = 1;' > conftest.c echo "$progname:603: checking for object suffix" >& 5 if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then # Append any warnings to the config.log. cat conftest.err 1>&5 for ac_file in conftest.*; do case $ac_file in *.c) ;; *) objext=`echo $ac_file | sed -e s/conftest.//` ;; esac done else cat conftest.err 1>&5 echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi $rm conftest* echo "$ac_t$objext" 1>&6 echo $ac_n "checking for executable suffix... $ac_c" 1>&6 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_exeext="no" $rm conftest* echo 'main () { return 0; }' > conftest.c echo "$progname:629: checking for executable suffix" >& 5 if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then # Append any warnings to the config.log. cat conftest.err 1>&5 for ac_file in conftest.*; do case $ac_file in *.c | *.err | *.$objext ) ;; *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; esac done else cat conftest.err 1>&5 echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi $rm conftest* fi if test "X$ac_cv_exeext" = Xno; then exeext="" else exeext="$ac_cv_exeext" fi echo "$ac_t$ac_cv_exeext" 1>&6 echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 pic_flag= special_shlib_compile_flags= wl= link_static_flag= no_builtin_flag= if test "$with_gcc" = yes; then wl='-Wl,' link_static_flag='-static' case "$host_os" in beos* | irix5* | irix6* | osf3* | osf4*) # PIC is the default for these OSes. ;; aix*) # Below there is a dirty hack to force normal static linking with -ldl # The problem is because libdl dynamically linked with both libc and # libC (AIX C++ library), which obviously doesn't included in libraries # list by gcc. This cause undefined symbols with -static flags. # This hack allows C programs to be linked with "-static -ldl", but # we not sure about C++ programs. link_static_flag="$link_static_flag ${wl}-lC" ;; cygwin* | mingw* | os2*) # We can build DLLs from non-PIC. ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. pic_flag='-m68020 -resident32 -malways-restore-a4' ;; sysv4*MP*) if test -d /usr/nec; then pic_flag=-Kconform_pic fi ;; *) pic_flag='-fPIC' ;; esac else # PORTME Check for PIC flags for the system compiler. case "$host_os" in aix3* | aix4*) # All AIX code is PIC. link_static_flag='-bnso -bI:/lib/syscalls.exp' ;; hpux9* | hpux10* | hpux11*) # Is there a better link_static_flag that works with the bundled CC? wl='-Wl,' link_static_flag="${wl}-a ${wl}archive" pic_flag='+Z' ;; irix5* | irix6*) wl='-Wl,' link_static_flag='-non_shared' # PIC (with -KPIC) is the default. ;; cygwin* | mingw* | os2*) # We can build DLLs from non-PIC. ;; osf3* | osf4*) # All OSF/1 code is PIC. wl='-Wl,' link_static_flag='-non_shared' ;; sco3.2v5*) pic_flag='-Kpic' link_static_flag='-dn' special_shlib_compile_flags='-belf' ;; solaris*) pic_flag='-KPIC' link_static_flag='-Bstatic' wl='-Wl,' ;; sunos4*) pic_flag='-PIC' link_static_flag='-Bstatic' wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) pic_flag='-KPIC' link_static_flag='-Bstatic' wl='-Wl,' ;; uts4*) pic_flag='-pic' link_static_flag='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then pic_flag='-Kconform_pic' link_static_flag='-Bstatic' fi ;; *) can_build_shared=no ;; esac fi if test -n "$pic_flag"; then echo "$ac_t$pic_flag" 1>&6 # Check to make sure the pic_flag actually works. echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 $rm conftest* echo "int some_variable = 0;" > conftest.c save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $pic_flag -DPIC" echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then # Append any warnings to the config.log. cat conftest.err 1>&5 case "$host_os" in hpux9* | hpux10* | hpux11*) # On HP-UX, both CC and GCC only warn that PIC is supported... then they # create non-PIC objects. So, if there were any warnings, we assume that # PIC is not supported. if test -s conftest.err; then echo "$ac_t"no 1>&6 can_build_shared=no pic_flag= else echo "$ac_t"yes 1>&6 pic_flag=" $pic_flag" fi ;; *) echo "$ac_t"yes 1>&6 pic_flag=" $pic_flag" ;; esac else # Append any errors to the config.log. cat conftest.err 1>&5 can_build_shared=no pic_flag= echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" $rm conftest* else echo "$ac_t"none 1>&6 fi # Check to see if options -o and -c are simultaneously supported by compiler echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 $rm -r conftest 2>/dev/null mkdir conftest cd conftest $rm conftest* echo "int some_variable = 0;" > conftest.c mkdir out # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.o" echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then echo "$ac_t"no 1>&6 compiler_c_o=no else echo "$ac_t"yes 1>&6 compiler_c_o=yes fi else # Append any errors to the config.log. cat out/conftest.err 1>&5 compiler_c_o=no echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm -r conftest 2>/dev/null if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 $rm conftest* echo "int some_variable = 0;" > conftest.c save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -c -o conftest.lo" echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then echo "$ac_t"no 1>&6 compiler_o_lo=no else echo "$ac_t"yes 1>&6 compiler_o_lo=yes fi else # Append any errors to the config.log. cat conftest.err 1>&5 compiler_o_lo=no echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" $rm conftest* else compiler_o_lo=no fi # Check to see if we can do hard links to lock some files if needed hard_links="nottested" if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$ac_t$hard_links" 1>&6 $rm conftest* if test "$hard_links" = no; then echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 need_locks=warn fi else need_locks=no fi if test "$with_gcc" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 $rm conftest* echo "int some_variable = 0;" > conftest.c save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then echo "$ac_t"no 1>&6 compiler_rtti_exceptions=no else echo "$ac_t"yes 1>&6 compiler_rtti_exceptions=yes fi else # Append any errors to the config.log. cat conftest.err 1>&5 compiler_rtti_exceptions=no echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" $rm conftest* if test "$compiler_rtti_exceptions" = "yes"; then no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' else no_builtin_flag=' -fno-builtin' fi fi # Check for any special shared library compilation flags. if test -n "$special_shlib_compile_flags"; then echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : else echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 can_build_shared=no fi fi echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 $rm conftest* echo 'main(){return(0);}' > conftest.c save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $link_static_flag" echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then echo "$ac_t$link_static_flag" 1>&6 else echo "$ac_t"none 1>&6 link_static_flag= fi LDFLAGS="$save_LDFLAGS" $rm conftest* if test -z "$LN_S"; then # Check to see if we can use ln -s, or we need hard links. echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 $rm conftest.dat if ln -s X conftest.dat 2>/dev/null; then $rm conftest.dat LN_S="ln -s" else LN_S=ln fi if test "$LN_S" = "ln -s"; then echo "$ac_t"yes 1>&6 else echo "$ac_t"no 1>&6 fi fi # Make sure LD is an absolute path. if test -z "$LD"; then ac_prog=ld if test "$with_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 echo "$progname:991: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we are not using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld... $ac_c" 1>&6 echo "$progname:1015: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 echo "$progname:1018: checking for non-GNU ld" >&5 fi if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" fi if test -n "$LD"; then echo "$ac_t$LD" 1>&6 else echo "$ac_t"no 1>&6 fi if test -z "$LD"; then echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 exit 1 fi fi # Check to see if it really is or is not GNU ld. echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then with_gnu_ld=yes else with_gnu_ld=no fi echo "$ac_t$with_gnu_ld" 1>&6 # See if the linker supports building shared libraries. echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 allow_undefined_flag= no_undefined_flag= need_lib_prefix=unknown need_version=unknown # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments archive_cmds= archive_expsym_cmds= old_archive_from_new_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported runpath_var= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an egrep regular expression of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. case "$host_os" in cygwin* | mingw*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$with_gcc" != yes; then with_gnu_ld=no fi ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case "$host_os" in aix3* | aix4*) # On AIX, the GNU linker is very broken ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF ;; amigaos*) archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=yes # Extract the symbol export list from an `--export-all' def file, # then regenerate the def file from the symbol export list, so that # the compiled dll only exports the symbol export list. export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]* ; *//" < $objdir/$soname-def > $export_symbols' archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ _lt_hint=1; for symbol in `cat $export_symbols`; do echo " \$symbol @ \$_lt_hint ; " >> $objdir/$soname-def; _lt_hint=`expr 1 + \$_lt_hint`; done~ test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' ;; netbsd*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' # can we support soname and/or expsyms with a.out? -oliva fi ;; solaris*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' case $host_os in cygwin* | mingw*) # dlltool doesn't understand --whole-archive et. al. whole_archive_flag_spec= ;; *) whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ;; esac fi else # PORTME fill in a description of your system's linker (not GNU ld) case "$host_os" in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$with_gcc" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4*) hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' hardcode_libdir_separator=':' if test "$with_gcc" = yes; then collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi shared_flag='-shared' else shared_flag='${wl}-bM:SRE' hardcode_direct=yes fi allow_undefined_flag=' ${wl}-berok' archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' case "$host_os" in aix4.[01]|aix4.[01].*) # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on always_export_symbols=yes ;; esac ;; amigaos*) archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs' fix_srcfile_path='`cygpath -w $srcfile`' ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9* | hpux10* | hpux11*) case "$host_os" in hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; esac hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6*) if test "$with_gcc" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF fi hardcode_libdir_flag_spec='${wl}-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; openbsd*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' ;; osf3* | osf4*) if test "$with_gcc" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case "$host_os" in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; sysv4*MP*) if test -d /usr/nec ;then # archive_cmds='$LD -G -z text -h $soname -o $lib$libobjs$deplibs' archive_cmds='$LD -G -h $soname -o $lib$libobjs$deplibs' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; *) ld_shlibs=no ;; esac fi echo "$ac_t$ld_shlibs" 1>&6 test "$ld_shlibs" = no && can_build_shared=no if test -z "$NM"; then echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 case "$NM" in [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then NM="$ac_dir/nm -B" break elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then NM="$ac_dir/nm -p" break else NM=${NM="$ac_dir/nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$NM" && NM=nm ;; esac echo "$ac_t$NM" 1>&6 fi # Check for command to grab the raw symbol name followed by C symbol from nm. echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" # Define system-specific variables. case "$host_os" in aix*) symcode='[BCDT]' ;; cygwin* | mingw*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" ;; irix*) symcode='[BCDEGRST]' ;; solaris*) symcode='[BDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then symcode='[ABCDGISTW]' fi # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no $rm conftest* cat > conftest.c <&5 if { (eval echo $progname:1593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then # Now try to grab the symbols. nlist=conftest.nm if { echo "$progname:1596: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.c #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' cat <> conftest.c #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c cat <<\EOF >> conftest.c {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$objext conftstm.$objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$objext" CFLAGS="$CFLAGS$no_builtin_flag" if { (eval echo $progname:1648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then pipe_works=yes else echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi LIBS="$save_LIBS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi $rm conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else global_symbol_pipe= fi done if test "$pipe_works" = yes; then echo "${ac_t}ok" 1>&6 else echo "${ac_t}failed" 1>&6 fi if test -z "$global_symbol_pipe"; then global_symbol_to_cdecl= fi # Check hardcoding attributes. echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$hardcode_shlibpath_var" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$ac_t$hardcode_action" 1>&6 reload_flag= reload_cmds='$LD$reload_flag -o $output$reload_objs' echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 # PORTME Some linkers may need a different reload flag. reload_flag='-r' echo "$ac_t$reload_flag" 1>&6 test -n "$reload_flag" && reload_flag=" $reload_flag" # PORTME Fill in your ld.so characteristics library_names_spec= libname_spec='lib$name' soname_spec= postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" file_magic_cmd= file_magic_test_file= deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [regex]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given egrep regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 case "$host_os" in aix3*) version_type=linux library_names_spec='${libname}${release}.so$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' ;; aix4*) version_type=linux # AIX has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. # We preserve .a as extension for shared libraries though AIX4.2 # and later linker supports .so library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' shlibpath_var=LIBPATH deplibs_check_method=pass_all ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}.so' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH deplibs_check_method=pass_all lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; bsdi4*) version_type=linux library_names_spec='${libname}.so$major ${libname}.so' soname_spec='${libname}.so' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' file_magic_cmd=/usr/bin/file file_magic_test_file=/shlib/libc.so sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw*) version_type=windows need_version=no need_lib_prefix=no if test "$with_gcc" = yes; then library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' else library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' fi dynamic_linker='Win32 ld.exe' deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' file_magic_cmd='${OBJDUMP} -f' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case "$version_type" in freebsd-elf*) deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /usr/lib/libc.so*` library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' need_version=no need_lib_prefix=no ;; freebsd-*) deplibs_check_method=unknown library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' need_version=yes ;; esac finish_cmds='PATH="\$PATH:/sbin" OBJFORMAT="'"$objformat"'" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH case "$host_os" in freebsd2* | freebsd3.[01]*) shlibpath_overrides_runpath=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. dynamic_linker="$host_os dld.sl" version_type=sunos need_lib_prefix=no need_version=no shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' soname_spec='${libname}${release}.sl$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6*) version_type=irix need_lib_prefix=no need_version=no soname_spec='${libname}${release}.so.$major' library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' case "$host_os" in irix5*) libsuff= shlibsuff= # this will be overridden with pass_all, but let us keep it just in case deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case "$LD" in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac # this will be overridden with pass_all, but let us keep it just in case deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /lib${libsuff}/libc.so*` deplibs_check_method='pass_all' ;; # No shared lib support for Linux oldld, aout, or coff. linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) dynamic_linker=no ;; # This must be Linux ELF. linux-gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` if test -f /lib/ld.so.1; then dynamic_linker='GNU ld.so' else # Only the GNU ld.so supports shared libraries on MkLinux. case "$host_cpu" in powerpc*) dynamic_linker=no ;; *) dynamic_linker='Linux ld.so' ;; esac fi ;; netbsd*) version_type=sunos if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' soname_spec='${libname}${release}.so$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH ;; openbsd*) version_type=sunos if test "$with_gnu_ld" = yes; then need_lib_prefix=no need_version=no fi library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; os2*) libname_spec='$name' need_lib_prefix=no library_names_spec='$libname.dll $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4*) version_type=osf need_version=no soname_spec='${libname}${release}.so' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' shlibpath_var=LD_LIBRARY_PATH # this will be overridden with pass_all, but let us keep it just in case deplibs_check_method='file_magic COFF format alpha shared library' file_magic_cmd=/usr/bin/file file_magic_test_file=/shlib/libc.so deplibs_check_method='pass_all' sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" file_magic_cmd=/usr/bin/file file_magic_test_file=/lib/libc.so ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH case "$host_vendor" in ncr) deplibs_check_method='pass_all' ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /usr/lib/libc.so*` ;; esac ;; uts4*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' soname_spec='$libname.so.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; *) dynamic_linker=no ;; esac echo "$ac_t$dynamic_linker" 1>&6 test "$dynamic_linker" = no && can_build_shared=no # Report the final consequences. echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 # Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in # configure.in, otherwise build static only libraries. case "$host_os" in cygwin* | mingw* | os2*) if test x$can_build_shared = xyes; then test x$enable_win32_dll = xno && can_build_shared=no echo "checking if package supports dlls... $can_build_shared" 1>&6 fi ;; esac if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then case "$deplibs_check_method" in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4*) test "$enable_shared" = yes && enable_static=no ;; esac echo "$ac_t$enable_shared" 1>&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "checking whether to build static libraries... $enable_static" 1>&6 if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi echo $ac_n "checking for objdir... $ac_c" 1>&6 rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. objdir=_libs fi rmdir .libs 2>/dev/null echo "$ac_t$objdir" 1>&6 if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then lt_cv_dlopen=no lt_cv_dlopen_libs= echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 echo "$progname:2170: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen""... $ac_c" 1>&6 echo "$progname:2207: checking for dlopen" >&5 if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else dlopen(); #endif ; return 0; } EOF if { (eval echo $progname:2234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_dlopen=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_dlopen=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dlopen" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 echo "$progname:2251: checking for dld_link in -ldld" >&5 ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for shl_load""... $ac_c" 1>&6 echo "$progname:2288: checking for shl_load" >&5 if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else shl_load(); #endif ; return 0; } EOF if { (eval echo $progname:2315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shl_load=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_shl_load=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="shl_load" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 echo "$progname:2333: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else echo "$ac_t""no" 1>&6 fi fi fi fi fi fi if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes fi case "$lt_cv_dlopen" in dlopen) for ac_hdr in dlfcn.h; do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo "$progname:2395: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int fnord = 0; EOF ac_try="$ac_compile conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo $progname:2405: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 else echo "$ac_t""no" 1>&6 fi done if test "x$ac_cv_header_dlfcn_h" = xyes; then CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" fi eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" LIBS="$lt_cv_dlopen_libs $LIBS" echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 echo "$progname:2433: checking whether a program can dlopen itself" >&5 if test "${lt_cv_dlopen_self+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then lt_cv_dlopen_self=cross else cat > conftest.c < #endif #include #ifdef RTLD_GLOBAL # define LTDL_GLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LTDL_GLOBAL DL_GLOBAL # else # define LTDL_GLOBAL 0 # endif #endif /* We may have to define LTDL_LAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LTDL_LAZY_OR_NOW # ifdef RTLD_LAZY # define LTDL_LAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LTDL_LAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LTDL_LAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LTDL_LAZY_OR_NOW DL_NOW # else # define LTDL_LAZY_OR_NOW 0 # endif # endif # endif # endif #endif fnord() { int i=42;} main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } EOF if { (eval echo $progname:2487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then lt_cv_dlopen_self=yes else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* lt_cv_dlopen_self=no fi rm -fr conftest* fi fi echo "$ac_t""$lt_cv_dlopen_self" 1>&6 if test "$lt_cv_dlopen_self" = yes; then LDFLAGS="$LDFLAGS $link_static_flag" echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 echo "$progname:2506: checking whether a statically linked program can dlopen itself" >&5 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then lt_cv_dlopen_self_static=cross else cat > conftest.c < #endif #include #ifdef RTLD_GLOBAL # define LTDL_GLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LTDL_GLOBAL DL_GLOBAL # else # define LTDL_GLOBAL 0 # endif #endif /* We may have to define LTDL_LAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LTDL_LAZY_OR_NOW # ifdef RTLD_LAZY # define LTDL_LAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LTDL_LAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LTDL_LAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LTDL_LAZY_OR_NOW DL_NOW # else # define LTDL_LAZY_OR_NOW 0 # endif # endif # endif # endif #endif fnord() { int i=42;} main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } EOF if { (eval echo $progname:2560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then lt_cv_dlopen_self_static=yes else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* lt_cv_dlopen_self_static=no fi rm -fr conftest* fi fi echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 fi ;; esac case "$lt_cv_dlopen_self" in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case "$lt_cv_dlopen_self_static" in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Copy echo and quote the copy, instead of the original, because it is # used later. ltecho="$echo" if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then ltecho="$CONFIG_SHELL \$0 --fallback-echo" fi LTSHELL="$SHELL" LTCONFIG_VERSION="$VERSION" # Only quote variables if we're using ltmain.sh. case "$ltmain" in *.sh) # Now quote all the things that may contain metacharacters. for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ old_LD old_LDFLAGS old_LIBS \ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ reload_flag reload_cmds wl \ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ library_names_spec soname_spec \ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ hardcode_libdir_flag_spec hardcode_libdir_separator \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do case "$var" in reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ postinstall_cmds | postuninstall_cmds | \ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case "$ltecho" in *'\$0 --fallback-echo"') ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac trap "$rm \"$ofile\"; exit 1" 1 2 15 echo "creating $ofile" $rm "$ofile" cat < "$ofile" #! $SHELL # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. # # Copyright (C) 1996-1999 Free Software Foundation, Inc. # Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="sed -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "\${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi ### BEGIN LIBTOOL CONFIG EOF cfgfile="$ofile" ;; *) # Double-quote the variables that need it (for aesthetics). for var in old_CC old_CFLAGS old_CPPFLAGS \ old_LD old_LDFLAGS old_LIBS \ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do eval "$var=\\\"\$var\\\"" done # Just create a config file. cfgfile="$ofile.cfg" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 echo "creating $cfgfile" $rm "$cfgfile" cat < "$cfgfile" # `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) EOF ;; esac cat <> "$cfgfile" # Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # # CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ # LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ # NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ # DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ # $0$ltconfig_args # # Compiler and other test output produced by $progname, useful for # debugging $progname, is in ./config.log if it exists. # The version of $progname that generated this script. LTCONFIG_VERSION=$LTCONFIG_VERSION # Shell to use when invoking shell scripts. SHELL=$LTSHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$ltecho # The archiver. AR=$AR # The default C compiler. CC=$CC # The linker used to build libraries. LD=$LD # Whether we need hard or soft links. LN_S=$LN_S # A BSD-compatible nm program. NM=$NM # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$reload_flag reload_cmds=$reload_cmds # How to pass a linker flag through the compiler. wl=$wl # Object file suffix (normally "o"). objext="$objext" # Old archive suffix (normally "a"). libext="$libext" # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$pic_flag # Does compiler simultaneously support -c and -o options? compiler_c_o=$compiler_c_o # Can we write directly to a .lo ? compiler_o_lo=$compiler_o_lo # Must we lock files when doing compilation ? need_locks=$need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$link_static_flag # Compiler flag to turn off builtin functions. no_builtin_flag=$no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$library_names_spec # The coded name of the library, if different from the real name. soname_spec=$soname_spec # Commands used to build and install an old-style archive. RANLIB=$RANLIB old_archive_cmds=$old_archive_cmds old_postinstall_cmds=$old_postinstall_cmds old_postuninstall_cmds=$old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$old_archive_from_new_cmds # Commands used to build and install a shared archive. archive_cmds=$archive_cmds archive_expsym_cmds=$archive_expsym_cmds postinstall_cmds=$postinstall_cmds postuninstall_cmds=$postuninstall_cmds # Method to check whether dependent libraries are shared objects. deplibs_check_method=$deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$global_symbol_to_cdecl # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$hardcode_libdir_separator # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Compile-time system search path for libraries sys_lib_search_path_spec=$sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$exclude_expsyms # Symbols that must always be exported. include_expsyms=$include_expsyms EOF case "$ltmain" in *.sh) echo '### END LIBTOOL CONFIG' >> "$ofile" echo >> "$ofile" case "$host_os" in aix3*) cat <<\EOF >> "$ofile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "${COLLECT_NAMES+set}" != set; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # Append the ltmain.sh script. sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) chmod +x "$ofile" ;; *) # Compile the libtool program. echo "FIXME: would compile $ltmain" ;; esac test -n "$cache_file" || exit 0 # AC_CACHE_SAVE trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs. It is not useful on other systems. # If it contains results you don't want to keep, you may remove or edit it. # # By default, configure uses ./config.cache as the cache file, # creating it if it does not exist already. You can give configure # the --cache-file=FILE option to use a different cache file; that is # what configure does when it calls configure scripts in # subdirectories, so they share the cache. # Giving --cache-file=/dev/null disables caching, for debugging configure. # config.status only pays attention to the cache file if you give it the # --recheck option to rerun configure. # EOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote substitution # turns \\\\ into \\, and sed turns \\ into \). sed -n \ -e "s/'/'\\\\''/g" \ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ;; esac >> confcache if cmp -s $cache_file confcache; then : else if test -w $cache_file; then echo "updating cache $cache_file" cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache exit 0 # Local Variables: # mode:shell-script # sh-indentation:2 # End: vdkbuilder2-2.4.0/ltmain.sh0000644000000000000000000054016310052401325011202 # ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003 # Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program 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 # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" ##################################### # Shell function definitions: # This seems to be the best place for them # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. win32_libid () { win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ grep -E 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | \ sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` if test "X$win32_nmres" = "Ximport" ; then win32_libid_type="x86 archive import" else win32_libid_type="x86 archive static" fi fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $echo $win32_libid_type } # End of Shell function definitions ##################################### # Parse our command line options once, thoroughly. while test "$#" -gt 0 do arg="$1" shift case $arg in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in execute_dlfiles) execute_dlfiles="$execute_dlfiles $arg" ;; tag) tagname="$arg" # Check whether tagname contains only valid characters case $tagname in *[!-_A-Za-z0-9,/]*) $echo "$progname: invalid tag name: $tagname" 1>&2 exit 1 ;; esac case $tagname in CC) # Don't test for the "default" C tag, as we know, it's there, but # not specially marked. ;; *) if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then taglist="$taglist $tagname" # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`" else $echo "$progname: ignoring unknown tag $tagname" 1>&2 fi ;; esac ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case $arg in --help) show_help=yes ;; --version) $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" $echo $echo "Copyright (C) 2003 Free Software Foundation, Inc." $echo "This is free software; see the source for copying conditions. There is NO" $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." exit 0 ;; --config) ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 # Now print the configurations for the tags. for tagname in $taglist; do ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0" done exit 0 ;; --debug) $echo "$progname: enabling shell trace mode" set -x ;; --dry-run | -n) run=: ;; --features) $echo "host: $host" if test "$build_libtool_libs" = yes; then $echo "enable shared libraries" else $echo "disable shared libraries" fi if test "$build_old_libs" = yes; then $echo "enable static libraries" else $echo "disable static libraries" fi exit 0 ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --preserve-dup-deps) duplicate_deps="yes" ;; --quiet | --silent) show=: ;; --tag) prevopt="--tag" prev=tag ;; --tag=*) set tag "$optarg" ${1+"$@"} shift prev=tag ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit 1 ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2 case $nonopt in *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) mode=link for arg do case $arg in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit 1 fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case $mode in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_output= arg_mode=normal libobj= for arg do case "$arg_mode" in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) if test -n "$libobj" ; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit 1 fi arg_mode=target continue ;; -static) build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac lastarg="$lastarg $arg" done IFS="$save_ifs" lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` # Add the arguments to base_compile. base_compile="$base_compile $lastarg" continue ;; * ) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` case $lastarg in # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") lastarg="\"$lastarg\"" ;; esac base_compile="$base_compile $lastarg" done # for arg case $arg_mode in arg) $echo "$modename: you must specify an argument for -Xcompile" exit 1 ;; target) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit 1 ;; *) # Get the name of the library object. [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSifmso]' case $libobj in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.ii) xform=ii ;; *.class) xform=class ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.f90) xform=f90 ;; *.for) xform=for ;; *.java) xform=java ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case $libobj in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit 1 ;; esac # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. if test -n "$available_tags" && test -z "$tagname"; then case $base_compile in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" case "$base_compile " in "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then $echo "$modename: unable to infer tagged configuration" $echo "$modename: specify a tag with \`--tag'" 1>&2 exit 1 # else # $echo "$modename: using $tagname tagged configuration" fi ;; esac fi objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir= else xdir=$xdir/ fi lobj=${xdir}$objdir/$objname if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit 1 fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi $run $rm $removelist trap "$run $rm $removelist; exit 1" 1 2 15 # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit 1" 1 2 15 else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $run ln "$0" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi $echo $srcfile > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi $run $rm "$libobj" "${libobj}T" # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then $show "$mv $output_obj $lobj" if $run $mv $output_obj $lobj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the PIC object to the libtool object file. test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the non-PIC object the libtool object file. # Only append if the libtool object file exists. test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi fi build_libtool_libs=no build_old_libs=yes prefer_static_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" base_compile="$base_compile $arg" shift case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test ;; *) qarg=$arg ;; esac libtool_args="$libtool_args $qarg" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit 1 fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat $save_arg` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit 1 fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit 1 else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi done else $echo "$modename: link input file \`$save_arg' does not exist" exit 1 fi arg=$save_arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= compile_command="$compile_command $wl$qarg" finalize_command="$finalize_command $wl$qarg" continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: more than one -exported-symbols argument is not allowed" exit 1 fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" ;; esac continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 exit 1 fi dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$dir:"*) ;; *) dllsearchpath="$dllsearchpath:$dir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-pw32* | *-*-beos*) # These systems don't actually have a C or math library (as such) continue ;; *-*-mingw* | *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs -framework System" continue esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -module) module=yes continue ;; # gcc -m* arguments should be passed to the linker via $compiler_flags # in order to pass architecture information to the linker # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo # but this is not reliable with gcc because gcc may use -mfoo to # select a different linker, different libraries, etc, while # -Wl,-mfoo simply passes -mfoo to the linker. -m*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" if test "$with_gcc" = "yes" ; then compiler_flags="$compiler_flags $arg" fi continue ;; -shrext) prev=shrext continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # The PATH hackery in wrapper scripts is required on Windows # in order for the loader to find any dlls it needs. $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Wl,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $wl$flag" linker_flags="$linker_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit 1 fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit 1 else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done # argument parsing loop if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base link # command doesn't match the default compiler. if test -n "$available_tags" && test -z "$tagname"; then case $base_compile in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" case $base_compile in "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) # The compiler in $compile_command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then $echo "$modename: unable to infer tagged configuration" $echo "$modename: specify a tag with \`--tag'" 1>&2 exit 1 # else # $echo "$modename: using $tagname tagged configuration" fi ;; esac fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi oldlibs= # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the object directory. if test ! -d "$output_objdir"; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test "$status" -ne 0 && test ! -d "$output_objdir"; then exit $status fi fi # Determine the type of output case $output in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit 1 ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac case $host in *cygwin* | *mingw* | *pw32*) # don't eliminate duplcations in $postdeps and $predeps duplicate_compiler_generated_deps=yes ;; *) duplicate_compiler_generated_deps=$duplicate_deps ;; esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if test "X$duplicate_deps" = "Xyes" ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 exit 1 ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 continue fi if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do # Search the libtool library lib="$searchdir/lib${name}.la" if test -f "$lib"; then found=yes break fi done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then library_names= old_library= case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi ;; *) $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) if test "$deplibs_check_method" != pass_all; then $echo $echo "*** Warning: Trying to link with static lib archive $deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because the file extensions .$libext of this argument makes me believe" $echo "*** that it is just a static archive that I should not used here." else $echo $echo "*** Warning: Linking the shared library $output against the" $echo "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else $echo "$modename: cannot find the library \`$lib'" 1>&2 exit 1 fi # Check to see that this really is a libtool archive. if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." dlname= dlopen= dlpreopen= libdir= library_names= old_library= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no # Read the .la file case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit 1 fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then $echo "$modename: \`$lib' is not a convenience library" 1>&2 exit 1 fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit 1 fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 exit 1 fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 abs_ladir="$ladir" fi ;; esac laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then $echo "$modename: warning: library \`$lib' was moved." 1>&2 dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi # $installed = yes name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 exit 1 fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var"; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *" $absdir "*) ;; *) temp_rpath="$temp_rpath $dir" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi # This is a shared library # Warn about portability, can't link against -module's on some systems (darwin) if test "$shouldnotlink" = yes && test "$pass" = link ; then $echo if test "$linkmode" = prog; then $echo "*** Warning: Linking the executable $output against the loadable module" else $echo "*** Warning: Linking the shared library $output against the loadable module" fi $echo "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names realname="$2" shift; shift libname=`eval \\$echo \"$libname_spec\"` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw*) major=`expr $current - $age` versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" soname=`$echo $soroot | ${SED} -e 's/^.*\///'` newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else $show "extracting exported symbol list from \`$soname'" save_ifs="$IFS"; IFS='~' eval cmds=\"$extract_expsyms_cmds\" for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else $show "generating import library for \`$soname'" save_ifs="$IFS"; IFS='~' eval cmds=\"$old_archive_from_expsyms_cmds\" for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5* ) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a module then we can not link against it, someone # is ignoring the new warnings I added if /usr/bin/file -L $add 2> /dev/null | grep "bundle" >/dev/null ; then $echo "** Warning, lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $echo $echo "** And there doesn't seem to be a static archive available" $echo "** The link will probably fail, sorry" else add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case "$libdir" in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit 1 fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && \ test "$hardcode_minus_L" != yes && \ test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case "$libdir" in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $echo $echo "*** Warning: This system can not link to static lib archive $lib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $echo "*** But as you try to build a module library, libtool will still create " $echo "*** a static module, that should work as long as the dlopening application" $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else convenience="$convenience $dir/$old_library" old_convenience="$old_convenience $dir/$old_library" deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$deplib" && dir="." # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" fi ;; esac if grep "^installed=no" $deplib > /dev/null; then path="$absdir/$objdir" else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit 1 fi if test "$absdir" != "$libdir"; then $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 fi path="$absdir" fi depdepl= case $host in *-*-darwin*) # we do not want to link against static libs, but need to link against shared eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$path/$depdepl" ; then depdepl="$path/$depdepl" fi newlib_search_path="$newlib_search_path $path" path="" fi ;; *) path="-L$path" ;; esac ;; -l*) case $host in *-*-darwin*) # Again, we only want to link against shared libraries eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` for tmp in $newlib_search_path ; do if test -f "$tmp/lib$tmp_libs.dylib" ; then eval depdepl="$tmp/lib$tmp_libs.dylib" break fi done path="" ;; *) continue ;; esac ;; *) continue ;; esac case " $deplibs " in *" $depdepl "*) ;; *) deplibs="$deplibs $depdepl" ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$deplibs $path" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval shared_ext=\"$shrext\" eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval shared_ext=\"$shrext\" eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 exit 1 else $echo $echo "*** Warning: Linking the shared library $output against the non-libtool" $echo "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi if test "$dlself" != no; then $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test "$#" -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit 1 fi # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$2" number_minor="$3" number_revision="$4" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows) current=`expr $number_major + $number_minor` age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) current=`expr $number_major + $number_minor - 1` age="$number_minor" revision="$number_minor" ;; esac ;; no) current="$2" revision="$3" age="$4" ;; esac # Check that each of the things are valid numbers. case $current in [0-9]*) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case $revision in [0-9]*) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case $age in [0-9]*) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac if test "$age" -gt "$current"; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header major=.`expr $current - $age` versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... minor_current=`expr $current + 1` verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; irix | nonstopux) major=`expr $current - $age + 1` case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=.`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. major=`expr $current - $age` versuffix="-$major" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$echo "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) removelist="$removelist $p" ;; *) ;; esac done if test -n "$removelist"; then $show "${rm}r $removelist" $run ${rm}r $removelist fi fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. for path in $notinst_path; do lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs -framework System" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for file magic test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a file magic. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` for a_deplib in $deplibs; do name="`expr $a_deplib : '-l\(.*\)'`" # If $name is empty we are operating on a -L argument. if test -n "$name" && test "$name" != "0"; then if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval \\$echo \"$libname_spec\"` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval $echo \"$potent_lib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for regex pattern test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a regex pattern. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` done fi if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ | grep . >/dev/null; then $echo if test "X$deplibs_check_method" = "Xnone"; then $echo "*** Warning: inter-library dependencies are not supported in this platform." else $echo "*** Warning: inter-library dependencies are not known to be supported." fi $echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $echo $echo "*** Warning: libtool could not satisfy all declared inter-library" $echo "*** dependencies of module $libname. Therefore, libtool will create" $echo "*** a static module, that should work as long as the dlopening" $echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $echo "*** The inter-library dependencies that have been dropped here will be" $echo "*** automatically added whenever a program is linked with this library" $echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $echo $echo "*** Since this library must not contain undefined symbols," $echo "*** because either the platform does not support them or" $echo "*** it was explicitly requested with -no-undefined," $echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext\" eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols eval cmds=\"$export_symbols_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" if len=`expr "X$cmd" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then $show "$cmd" $run eval "$cmd" || exit $? skipped_export=false else # The command line is too long to execute in one step. $show "using reloadable object file for export list..." skipped_export=: fi done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "$mkdir $gentop" $run $mkdir "$gentop" status=$? if test "$status" -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "$mkdir $xdir" $run $mkdir "$xdir" status=$? if test "$status" -ne 0 && test ! -d "$xdir"; then exit $status fi # We will extract separately just the conflicting names and we will no # longer touch any unique names. It is faster to leave these extract # automatically by $AR in one run. $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 $AR t "$xabs" | sort | uniq -cd | while read -r count name do i=1 while test "$i" -le "$count" do # Put our $i before any first dot (extension) # Never overwrite any file name_to="$name" while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" do name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` done $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? i=`expr $i + 1` done done fi libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval cmds=\"$module_expsym_cmds\" else eval cmds=\"$module_cmds\" fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval cmds=\"$archive_expsym_cmds\" else eval cmds=\"$archive_cmds\" fi fi if test "X$skipped_export" != "X:" && len=`expr "X$cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise. $echo "creating reloadable object files..." # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= delfiles= last_robj= k=1 output=$output_objdir/$save_output-${k}.$objext # Loop over the list of objects to be linked. for obj in $save_libobjs do eval test_cmds=\"$reload_cmds $objlist $last_robj\" if test "X$objlist" = X || { len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len"; }; then objlist="$objlist $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" fi last_robj=$output_objdir/$save_output-${k}.$objext k=`expr $k + 1` output=$output_objdir/$save_output-${k}.$objext objlist=$obj len=1 fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if ${skipped_export-false}; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols libobjs=$output # Append the command to create the export file. eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" fi # Set up a command to remove the reloadale object files # after they are used. i=0 while test "$i" -lt "$k" do i=`expr $i + 1` delfiles="$delfiles $output_objdir/$save_output-${i}.$objext" done $echo "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval cmds=\"$archive_expsym_cmds\" else eval cmds=\"$archive_cmds\" fi # Append the command to remove the reloadable object files # to the just-reset $cmds. eval cmds=\"\$cmds~$rm $delfiles\" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? exit 0 fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case $output in *.lo) if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit 1 fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "$mkdir $gentop" $run $mkdir "$gentop" status=$? if test "$status" -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "$mkdir $xdir" $run $mkdir "$xdir" status=$? if test "$status" -ne 0 && test ! -d "$xdir"; then exit $status fi # We will extract separately just the conflicting names and we will no # longer touch any unique names. It is faster to leave these extract # automatically by $AR in one run. $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 $AR t "$xabs" | sort | uniq -cd | while read -r count name do i=1 while test "$i" -le "$count" do # Put our $i before any first dot (extension) # Never overwrite any file name_to="$name" while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" do name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` done $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? i=`expr $i + 1` done done fi reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" eval cmds=\"$reload_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $run eval "echo timestamp > $libobj" || exit $? exit 0 fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" eval cmds=\"$reload_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 ;; prog) case $host in *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac case $host in *darwin*) # Don't allow lazy linking, it breaks C++ global constructors if test "$tagname" = CXX ; then compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" fi ;; esac compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$libdir:"*) ;; *) dllsearchpath="$dllsearchpath:$libdir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case $dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$output.exp" $run $rm $export_symbols $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' else $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` $run eval '$echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else $echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[] = {\ " eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit 1 ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi if test "$need_relink" = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case $dir in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $run $rm $output # Link the executable and exit $show "$link_command" $run eval "$link_command" || exit $? exit 0 fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $0 --fallback-echo"; then case $0 in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; *) qecho="$SHELL `pwd`/$0 --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) cwrappersource=`$echo ${objdir}/lt-${output}.c` cwrapper=`$echo ${output}.exe` $rm $cwrappersource $cwrapper trap "$rm $cwrappersource $cwrapper; exit 1" 1 2 15 cat > $cwrappersource <> $cwrappersource<<"EOF" #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef DIR_SEPARATOR #define DIR_SEPARATOR '/' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) #define HAVE_DOS_BASED_FILE_SYSTEM #ifndef DIR_SEPARATOR_2 #define DIR_SEPARATOR_2 '\\' #endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) const char *program_name = NULL; void * xmalloc (size_t num); char * xstrdup (const char *string); char * basename (const char *name); char * fnqualify(const char *path); char * strendzap(char *str, const char *pat); void lt_fatal (const char *message, ...); int main (int argc, char *argv[]) { char **newargz; int i; program_name = (char *) xstrdup ((char *) basename (argv[0])); newargz = XMALLOC(char *, argc+2); EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" newargz[1] = fnqualify(argv[0]); /* we know the script has the same name, without the .exe */ /* so make sure newargz[1] doesn't end in .exe */ strendzap(newargz[1],".exe"); for (i = 1; i < argc; i++) newargz[i+1] = xstrdup(argv[i]); newargz[argc+1] = NULL; EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" } void * xmalloc (size_t num) { void * p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL ; } char * basename (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha (name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return (char *) base; } char * fnqualify(const char *path) { size_t size; char *p; char tmp[LT_PATHMAX + 1]; assert(path != NULL); /* Is it qualified already? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha (path[0]) && path[1] == ':') return xstrdup (path); #endif if (IS_DIR_SEPARATOR (path[0])) return xstrdup (path); /* prepend the current directory */ /* doesn't handle '~' */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ p = XMALLOC(char, size); sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); return p; } char * strendzap(char *str, const char *pat) { size_t len, patlen; assert(str != NULL); assert(pat != NULL); len = strlen(str); patlen = strlen(pat); if (patlen <= len) { str += len - patlen; if (strcmp(str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char * mode, const char * message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } EOF # we should really use a build-platform specific compiler # here, but OTOH, the wrappers (shell script and this C one) # are only useful if you want to execute the "real" binary. # Since the "real" binary is built for $host, then this # wrapper might as well be built for $host, too. $run $LTCC -s -o $cwrapper $cwrappersource ;; esac $rm $output trap "$rm $output; exit 1" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $echo >> $output "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" $echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $echo \"\$relink_command_output\" >&2 $rm \"\$progdir/\$file\" exit 1 fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else $echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \$progdir\\\\\$program \${1+\"\$@\"} " ;; *) $echo >> $output "\ exec \$progdir/\$program \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" exit 1 fi else # The program doesn't exist. \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 $echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " chmod +x $output fi exit 0 ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "$mkdir $gentop" $run $mkdir "$gentop" status=$? if test "$status" -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" # Add in members from convenience archives. for xlib in $addlibs; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "$mkdir $xdir" $run $mkdir "$xdir" status=$? if test "$status" -ne 0 && test ! -d "$xdir"; then exit $status fi # We will extract separately just the conflicting names and we will no # longer touch any unique names. It is faster to leave these extract # automatically by $AR in one run. $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 $AR t "$xabs" | sort | uniq -cd | while read -r count name do i=1 while test "$i" -le "$count" do # Put our $i before any first dot (extension) # Never overwrite any file name_to="$name" while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" do name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` done $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? i=`expr $i + 1` done done fi oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` done fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then eval cmds=\"$old_archive_from_new_cmds\" else eval cmds=\"$old_archive_cmds\" if len=`expr "X$cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # the command line is too long to link in one step, link in parts $echo "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs # GNU ar 2.10+ was changed to match POSIX; thus no paths are # encoded into archives. This makes 'ar r' malfunction in # this piecewise linking case whenever conflicting object # names appear in distinct ar calls; check, warn and compensate. if (for obj in $save_oldobjs do $echo "X$obj" | $Xsed -e 's%^.*/%%' done | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2 $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2 AR_FLAGS=cq fi # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done for obj in $save_oldobjs do oldobjs="$objlist $obj" objlist="$objlist $obj" eval test_cmds=\"$old_archive_cmds\" if len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~$old_archive_cmds\" fi fi fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit 1 fi newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi newdlfiles="$newdlfiles $libdir/$name" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi newdlprefiles="$newdlprefiles $libdir/$name" done dlprefiles="$newdlprefiles" fi $rm $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $echo >> $output "\ relink_command=\"$relink_command\"" fi done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac exit 0 ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg="$nonopt" fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest="$arg" continue fi case $arg in -d) isdir=yes ;; -f) prev="-f" ;; -g) prev="-g" ;; -m) prev="-m" ;; -o) prev="-o" ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest="$arg" continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit 1 fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test "$#" -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit 1 fi fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi library_names= old_library= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ test "X$dir" = "X$file/" && dir= dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. if test "$inst_prefix_dir" = "$destdir"; then $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 exit 1 fi if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi $echo "$modename: warning: relinking \`$file'" 1>&2 $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 exit 1 fi fi # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. $show "$install_prog $dir/$srcname $destdir/$realname" $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$striplib $destdir/$realname" $run eval "$striplib $destdir/$realname" || exit $? fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" eval cmds=\"$postinstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.$objext) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit 0 ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then file=`$echo $file|${SED} 's,.exe$,,'` stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin*|*mingw*) wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` ;; *) wrapper=$file ;; esac if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then notinst_deplibs= relink_command= # To insure that "foo" is sourced, and not "foo.exe", # finese the cygwin/MSYS system by explicitly sourcing "foo." # which disallows the automatic-append-.exe behavior. case $build in *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; *) wrapperdot=${wrapper} ;; esac # If there is no directory component, then add one. case $file in */* | *\\*) . ${wrapperdot} ;; *) . ./${wrapperdot} ;; esac # Check the variables that should have been set. if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 exit 1 fi finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done relink_command= # To insure that "foo" is sourced, and not "foo.exe", # finese the cygwin/MSYS system by explicitly sourcing "foo." # which disallows the automatic-append-.exe behavior. case $build in *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; *) wrapperdot=${wrapper} ;; esac # If there is no directory component, then add one. case $file in */* | *\\*) . ${wrapperdot} ;; *) . ./${wrapperdot} ;; esac outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" tmpdir_mktemp=`mktemp -d $tmpdir/libtool-XXXXXX 2> /dev/null` if test "$?" = 0 ; then tmpdir="$tmpdir_mktemp" unset tmpdir_mktemp else tmpdir="$tmpdir/libtool-$$" fi if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : else $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyways case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` ;; esac ;; esac $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$old_striplib $oldlib" $run eval "$old_striplib $oldlib" || exit $? fi # Do each command in the postinstall commands. eval cmds=\"$old_postinstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $0 --finish$current_libdirs' else exit 0 fi ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. eval cmds=\"$finish_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = : && exit 0 $echo "----------------------------------------------------------------------" $echo "Libraries have been installed in:" for libdir in $libdirs; do $echo " $libdir" done $echo $echo "If you ever happen to want to link against installed libraries" $echo "in a given directory, LIBDIR, you must either use libtool, and" $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" $echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" $echo " during execution" fi if test -n "$runpath_var"; then $echo " - add LIBDIR to the \`$runpath_var' environment variable" $echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $echo $echo "See any operating system documentation about shared libraries for" $echo "more information, such as the ld(1) and ld.so(8) manual pages." $echo "----------------------------------------------------------------------" exit 0 ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit 1 fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit 1 fi dir= case $file in *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit 1 fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables if test "${save_LC_ALL+set}" = set; then LC_ALL="$save_LC_ALL"; export LC_ALL fi if test "${save_LANG+set}" = set; then LANG="$save_LANG"; export LANG fi # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit 0 fi ;; # libtool clean and uninstall mode clean | uninstall) modename="$modename: $mode" rm="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit 1 fi rmdirs= origobjdir="$objdir" for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$file"; then dir=. objdir="$origobjdir" else objdir="$dir/$origobjdir" fi name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if (test -L "$file") >/dev/null 2>&1 \ || (test -h "$file") >/dev/null 2>&1 \ || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" if test "$mode" = uninstall; then if test -n "$library_names"; then # Do each command in the postuninstall commands. eval cmds=\"$postuninstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. eval cmds=\"$old_postuninstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. fi fi ;; *.lo) # Possibly a libtool object, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # Read the .lo file . $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" \ && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" \ && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) file=`$echo $file|${SED} 's,.exe$,,'` noexename=`$echo $name|${SED} 's,.exe$,,'` # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then relink_command= . $dir/$noexename # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac $show "$rm $rmfiles" $run $rm $rmfiles || exit_status=1 done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then $show "rmdir $dir" $run rmdir $dir >/dev/null 2>&1 fi done exit $exit_status ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit 1 ;; esac if test -z "$exec_cmd"; then $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit 1 fi fi # test -z "$show_help" if test -n "$exec_cmd"; then eval exec $exec_cmd exit 1 fi # We need to display help for each of the modes. case $mode in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --tag=TAG use configuration variables from tag TAG --version print version information MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE. Report bugs to ." exit 0 ;; clean) $echo \ "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac $echo $echo "Try \`$modename --help' for more information about other modes." exit 0 # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: vdkbuilder2-2.4.0/missing0000755000000000000000000001421307535250427010772 #! /bin/sh # Common stub for a few missing GNU programs while installing. # Copyright (C) 1996, 1997 Free Software Foundation, Inc. # Franc,ois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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 General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi case "$1" in -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file yacc create \`y.tab.[ch]', if possible, from existing .[ch]" ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing - GNU libit 0.0" ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; aclocal) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acinclude.m4' or \`configure.in'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`configure.in'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acconfig.h' or \`configure.in'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` fi touch $file ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and you do not seem to have it handy on your system. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequirements for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 vdkbuilder2-2.4.0/mkinstalldirs0000755000000000000000000000133407535250427012201 #! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain # $Id: mkinstalldirs,v 1.1.1.1 2001/03/10 13:24:56 mariomotta Exp $ errstatus=0 for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr fi fi pathcomp="$pathcomp/" done done exit $errstatus # mkinstalldirs ends here vdkbuilder2-2.4.0/vdkbuilder.spec.in0000644000000000000000000000343407535250427013012 %define pkg_name vdkbuilder %define pkg_ver @VERSION@ %define pkg_rel 1 %define pkg_copy GPL Summary: VDKBuilder is a rapid application development tool Source: %{pkg_name}-%{pkg_ver}.tar.gz URL: http://vdkbuilder.sourceforge.net/ Group: Development/Tools Name: %{pkg_name} Version: %{pkg_ver} Release: %{pkg_rel} Copyright: %{pkg_copy} BuildRoot: /var/tmp/%{pkg_name}-root %description VDKBuilder is a rapid application development tool based on VDK "The Visual Development Kit" , a C++ wrapper of the outstanding Gtk+ widget set library. Is a tool that helps programmer in constructing GUI interfaces, editing, compiling, linking and debugging within an integrated environment. Using VDKBuilder dramatically reduces developing time since all code related to gui interface construction and signal processing is is automatically generated and maintained updated. %prep %setup %build CFLAGS="$RPM_OPT_FLAGS" LDFLAGS=-s ./configure \ --prefix=%{_usr} \ --mandir=%{_mandir} make %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT %clean rm -rf $RPM_BUILD_ROOT %post ldconfig %postun ldconfig %files %doc README TODO example %{_bindir}/* %{_includedir}/vdkb %{_libdir}/* %{_datadir}/pixmaps %{_datadir}/vdkb %changelog * Tue Nov 07 2000 Gordon Messmer - use build macros to play better in diverse systems * Sat Jul 08 2000 Gordon Messmer - configure now generates this file * Thu Jul 06 2000 Gordon Messmer - version 1.2.2 * Sat Jun 03 2000 Gordon Messmer - version 1.2.1 * Tue Feb 01 2000 Gordon Messmer - Built 1.0.6 release * Sat Dec 25 1999 Gordon Messmer - Built 1.0.4 release * Mon Dec 20 1999 Gordon Messmer - Built 1.0.3 release vdkbuilder2-2.4.0/autogen.sh0000755000000000000000000000562407535250427011402 #!/bin/sh # Run this to generate all the initial makefiles, etc. srcdir=`dirname $0` test -z "$srcdir" && srcdir=. DIE=0 PKG_NAME="VDKBuilder" (autoconf --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`autoconf' installed to compile Gnome." echo "Download the appropriate package for your distribution," echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" DIE=1 } (grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { (libtool --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`libtool' installed to compile Gnome." echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2.tar.gz" echo "(or a newer version if it is available)" DIE=1 } } (automake --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`automake' installed to compile Gnome." echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" echo "(or a newer version if it is available)" DIE=1 NO_AUTOMAKE=yes } # if no automake, don't bother testing for aclocal test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: Missing \`aclocal'. The version of \`automake'" echo "installed doesn't appear recent enough." echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" echo "(or a newer version if it is available)" DIE=1 } if test "$DIE" -eq 1; then exit 1 fi if test -z "$*"; then echo "**Warning**: I am going to run \`configure' with no arguments." echo "If you wish to pass any to it, please specify them on the" echo \`$0\'" command line." echo fi case $CC in xlc ) am_opt=--include-deps;; esac for coin in `find $srcdir -name configure.in -print` do dr=`dirname $coin` if test -f $dr/NO-AUTO-GEN; then echo skipping $dr -- flagged as no auto-gen else echo processing $dr macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin` ( cd $dr aclocalinclude="$ACLOCAL_FLAGS" for k in $macrodirs; do if test -d $k; then aclocalinclude="$aclocalinclude -I $k" ##else ## echo "**Warning**: No such directory \`$k'. Ignored." fi done if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then echo "Running libtoolize..." libtoolize --force --copy fi echo "Running aclocal $aclocalinclude ..." aclocal $aclocalinclude if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then echo "Running autoheader..." autoheader fi echo "Running automake --gnu $am_opt ..." automake --add-missing --gnu $am_opt echo "Running autoconf ..." autoconf ) fi done conf_flags="--enable-maintainer-mode --enable-compile-warnings" if test x$NOCONFIGURE = x; then echo Running $srcdir/configure $conf_flags "$@" ... $srcdir/configure $conf_flags "$@" \ && echo Now type \`make\' to compile $PKG_NAME else echo Skipping configure process. fi vdkbuilder2-2.4.0/BUGS0000644000000000000000000000317007535250427010056 - moving/resizing widgets contained into a fixed shows a "gummy" behaviour using mouse. Some widgets do not move/resize at all (specially containers), in such case is advisable to use keyboard that works near perfectly. - For redhat users (and most probably for others) If automake/autoconf support fails with: "AM_PATH_VDK macro not found on aclocal library" make a symlink into /usr/share/aclocal/ to /usr/local/share/aclocal/vdk.m4 Like this: $ su Password: (have su permission) # cd /usr/share/aclocal # ln -s /usr/local/share/aclocal/vdk.m4 # exit $ - Automake/Autoconf support needs to be run twice (the first time) to assure a correct making of all necessary files. - A not yet recovered bug in resizing VDKCustomList and VDKCustomTree into a fixed container. Here the bug: ------------- Dropping one of the above widgets if it appears with an hor scrollbar and user picks on right-bottom corner to enlarge until scrollbar disappear happens that widget hangs on a never-ending mouse grabbing without recovering. Here a rationale: ---------------- When the user picks on the right bottom corner the grabbed widget becomes the scrollbar itself. It happens that if the user enlarges the widget to make the scrollbar disappearing it can't be ungrabbed anymore. How to recover: -------------- User should shrink the widget until scrollbar appears again, clicking on scrollbar ungrabs the widget. Then resize using keyboard that is always safer. A similar things happens resizing a VDKScrolled into a fixed container. In this case it's enough click on scrollbars again to free the widget from grab hang.vdkbuilder2-2.4.0/include/0000777000000000000000000000000010052402416011062 5vdkbuilder2-2.4.0/include/Makefile.in0000644000000000000000000003241110052401332013040 # Makefile.in generated by automake 1.7.8 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GENCAT = @GENCAT@ GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLBISON = @INTLBISON@ INTLLIBS = @INTLLIBS@ INTLOBJS = @INTLOBJS@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PLUGINS_LIBDIR = @PLUGINS_LIBDIR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_NLS = @USE_NLS@ VDK_CFLAGS = @VDK_CFLAGS@ VDK_CONFIG = @VDK_CONFIG@ VDK_LIBS = @VDK_LIBS@ VDK_VERSION_MAJOR = @VDK_VERSION_MAJOR@ VDK_VERSION_MICRO = @VDK_VERSION_MICRO@ VDK_VERSION_MINOR = @VDK_VERSION_MINOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ vdkxdbpath = @vdkxdbpath@ SUBDIRS = vdkb2 subdir = include ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = DIST_SOURCES = RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ ps-recursive install-info-recursive uninstall-info-recursive \ all-recursive install-data-recursive install-exec-recursive \ installdirs-recursive install-recursive uninstall-recursive \ check-recursive installcheck-recursive DIST_COMMON = $(srcdir)/Makefile.in Makefile.am DIST_SUBDIRS = $(SUBDIRS) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu include/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ETAGS = etags ETAGSFLAGS = CTAGS = ctags CTAGSFLAGS = tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if (etags --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ else \ include_option=--include; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -f $$subdir/TAGS && \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$tags$$unique" \ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" \ distdir=../$(distdir)/$$subdir \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: info: info-recursive info-am: install-data-am: install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ clean-generic clean-libtool clean-recursive ctags \ ctags-recursive distclean distclean-generic distclean-libtool \ distclean-recursive distclean-tags distdir dvi dvi-am \ dvi-recursive info info-am info-recursive install install-am \ install-data install-data-am install-data-recursive \ install-exec install-exec-am install-exec-recursive \ install-info install-info-am install-info-recursive install-man \ install-recursive install-strip installcheck installcheck-am \ installdirs installdirs-am installdirs-recursive \ maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-generic \ mostlyclean-libtool mostlyclean-recursive pdf pdf-am \ pdf-recursive ps ps-am ps-recursive tags tags-recursive \ uninstall uninstall-am uninstall-info-am \ uninstall-info-recursive uninstall-recursive # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vdkbuilder2-2.4.0/include/Makefile.am0000644000000000000000000000002007252425461013037 SUBDIRS = vdkb2 vdkbuilder2-2.4.0/include/vdkb2/0000777000000000000000000000000010052402417012073 5vdkbuilder2-2.4.0/include/vdkb2/Makefile.in0000644000000000000000000003062210052401332014052 # Makefile.in generated by automake 1.7.8 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GENCAT = @GENCAT@ GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLBISON = @INTLBISON@ INTLLIBS = @INTLLIBS@ INTLOBJS = @INTLOBJS@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PLUGINS_LIBDIR = @PLUGINS_LIBDIR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_NLS = @USE_NLS@ VDK_CFLAGS = @VDK_CFLAGS@ VDK_CONFIG = @VDK_CONFIG@ VDK_LIBS = @VDK_LIBS@ VDK_VERSION_MAJOR = @VDK_VERSION_MAJOR@ VDK_VERSION_MICRO = @VDK_VERSION_MICRO@ VDK_VERSION_MINOR = @VDK_VERSION_MINOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ vdkxdbpath = @vdkxdbpath@ vdkbincludedir = $(prefix)/include/vdkb2 EXTRA_DIST = vdkbinclude_HEADERS = \ input.h\ vdkb.h\ vdkb_about.h\ vdkb_calendar.h\ vdkb_cbrowse.h\ vdkb_cbuttdlg.h\ vdkb_checkbutton.h\ vdkb_clistdlg.h\ vdkb_clistdlg_gui.h\ vdkb_clipdlg.h\ vdkb_combo.h\ vdkb_comboentry.h\ vdkb_compodb.h\ vdkb_custombutton.h\ vdkb_customlist.h\ vdkb_customtree.h\ vdkb_dclock.h\ vdkb_dedit.h\ vdkb_dlgs.h\ vdkb_drawarea.h\ vdkb_editor.h\ vdkb_edhelp.h\ vdkb_edhint.h\ vdkb_entry.h\ vdkb_Env.h\ vdkb_evappbar.h\ vdkb_evbox.h\ vdkb_evcontain.h\ vdkb_evlabel.h\ vdkb_evpbar.h\ vdkb_evsbar.h\ vdkb_evsep.h\ vdkb_evslider.h\ vdkb_fixed.h\ vdkb_form.h\ vdkb_frame.h\ vdkb_frmlist.h\ vdkb_gnomeappbar.h\ vdkb_gnomeentry.h\ vdkb_grep.h\ vdkb_guicanvas.h\ vdkb_handlebox.h\ vdkb_ide_def.h\ vdkb_image.h\ vdkb_interface.h\ vdkb_locale.h\ vdkb_logo.h\ vdkb_lru.h\ vdkb_maker.h\ vdkb_menu.h\ vdkb_menubar.h\ vdkb_menuitem.h\ vdkb_nbook.h\ vdkb_PWizard.h\ vdkb_notebook.h\ vdkb_object.h\ vdkb_objinspect.h\ vdkb_orderdlg.h \ vdkb_paned.h\ vdkb_parser.h\ vdkb_pbar.h\ vdkb_pholder.h\ vdkb_pixmap.h\ vdkb_plugin.h\ vdkb_prj.h\ vdkb_prjman.h\ vdkb_prjopt.h\ vdkb_prjpref.h\ vdkb_prop.h\ vdkb_radiobutton.h\ vdkb_rbgroup.h\ vdkb_replace.h\ vdkb_sbar.h\ vdkb_scrolled.h\ vdkb_search.h\ vdkb_separator.h\ vdkb_signal.h\ vdkb_slider.h\ vdkb_spinbutton.h\ vdkb_table.h\ vdkb_tabledlg.h\ vdkb_tabledlg_gui.h\ vdkb_text.h\ vdkb_textlabel.h\ vdkb_textwidget.h\ vdkb_timebar.h\ vdkb_toolbar.h\ vdkb_tooldialog.h\ vdkb_tooldialog_gui.h\ vdkb_types.h\ vdkb_treeview.h\ vdkb_unit.h\ vdkb_utils.h\ vdkb_widclip.h\ vdkb_widpopmenu.h\ vdkb_xcheckbutton.h \ vdkb_xcustomlist.h\ vdkb_xentry.h \ vdkb_xmemo.h \ vdkb_xtDlg.h \ vdkdclock.h\ vdkxpmbrowser.h\ waitcursor.h subdir = include/vdkb2 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = DIST_SOURCES = HEADERS = $(vdkbinclude_HEADERS) DIST_COMMON = $(srcdir)/Makefile.in $(vdkbinclude_HEADERS) Makefile.am all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu include/vdkb2/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: vdkbincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-vdkbincludeHEADERS: $(vdkbinclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(vdkbincludedir) @list='$(vdkbinclude_HEADERS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " $(vdkbincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(vdkbincludedir)/$$f"; \ $(vdkbincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(vdkbincludedir)/$$f; \ done uninstall-vdkbincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(vdkbinclude_HEADERS)'; for p in $$list; do \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " rm -f $(DESTDIR)$(vdkbincludedir)/$$f"; \ rm -f $(DESTDIR)$(vdkbincludedir)/$$f; \ done ETAGS = etags ETAGSFLAGS = CTAGS = ctags CTAGSFLAGS = tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$tags$$unique" \ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: $(mkinstalldirs) $(DESTDIR)$(vdkbincludedir) install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-am dvi-am: info: info-am info-am: install-data-am: install-vdkbincludeHEADERS install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am uninstall-vdkbincludeHEADERS .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am info \ info-am install install-am install-data install-data-am \ install-exec install-exec-am install-info install-info-am \ install-man install-strip install-vdkbincludeHEADERS \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-info-am uninstall-vdkbincludeHEADERS # vdkb_ccproj.h\ # vdkb_cregex.h\ # vdkb_tree_coll.h\ # vdkb_ccpane.h\ # vdkb_FWizard.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vdkbuilder2-2.4.0/include/vdkb2/input.h0000644000000000000000000000313507252425465013341 /* * Copyright (C) 1999 Jonathan R. Hudson * Developed by Jonathan R. Hudson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _vdkinput_h_ #define _vdkinput_h_ #include #define INP_SIGNAL (user_signal+1) class VDKInput: public VDKObject { protected: static void HandleIO(gpointer obj, gint source, GdkInputCondition condition); gint tag; int fd; GdkInputCondition condition; public: VDKInput (VDKForm* obj, int fd,GdkInputCondition condition = GDK_INPUT_READ); virtual ~VDKInput(); int getfd(void) {return fd;} void connect(int fd) { if(tag == 0) // tag = gdk_input_add(fd, condition, VDKInput::HandleIO, this); tag = gtk_input_add_full(fd, condition, VDKInput::HandleIO, NULL,this,NULL); }; void release(void) { if(tag) // gdk_input_remove(tag); gtk_input_remove(tag); tag = 0; } }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb.h0000644000000000000000000002300407614220475013121 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkbuilder_h #define _vdkbuilder_h #ifdef HAVE_CONFIG_H #include #endif #if USE_XDB #include #include #endif #if HAVE_GNOME #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include /* AUTOMA STATES */ enum { automa_error = -1, automa_end = 0, automa_init, automa_editor_on, automa_editor_off, automa_prjman_on, automa_prjman_off, automa_edit_form_on, automa_edit_form_off }; // not more used #define MAIN_PROGRESS_BLOCK 30 /* drag and drop sources table contains: object: drag source widget classid: drag source widget class id used to set OperationalState.action_target to the proper id as is done by pressing a widget toolbar button */ class DnDBuilderEntry { public: VDKObject* object; int classid; DnDBuilderEntry(VDKObject* object = NULL, int classid = -1): object(object),classid(classid) {} ~DnDBuilderEntry() {} bool operator == (DnDBuilderEntry& entry) { return object == entry.object; } }; /* completions, code templates and hints */ typedef VDKValueList DnDBuilderList; typedef VDKValueListIterator DnDBuilderListIterator; typedef VDKValueList TokenList; typedef VDKValueListIterator TokenListIterator; /* hint class */ class VDKHint { public: VDKString key,hint; VDKHint(): key((char*) ""),hint((char*) "") { } VDKHint(char* k, char* h): key(k),hint(h) { } ~VDKHint() { } VDKHint(VDKHint& h) { key = h.key; hint = h.hint; } VDKHint& operator=(VDKHint& h) { key = h.key; hint = h.hint; return *this; } bool operator==(VDKHint& h) { return key == h.key; } bool operator<(VDKHint& h) { return key < h.key; } }; typedef VDKBtree HintBTree; ////////////////////////////////// // VDKBUILDER MAIN FORM ///////////////////////////////// typedef VDKArray LRUItemsArray; class VDKBMainForm: public VDKForm { private: VDKBLogo *logo; //VDKTimer *timer; VDKPoint _defSize; // for mozilla pid_t mozpid; int mozstatus; // members protected: // main menu stuff VDKMenubar *menubar; VDKMenuItem *file_menu; VDKMenuItem *new_item,*open_item,*reopen_item, *save_item,*saveall_item,*quit_item; // an array of last recently used projects menu items LRUItemsArray lru_items; LRUManager* lrumanager; VDKMenuItem *newform_item, *newunit_item,*newprj_item; VDKMenu *newformmenu,*reopenmenu; VDKMenuItem *newformdefault_item, *newformscrolled_item,* newformpaned_item; VDKMenuItem *openfile_item, *openunit_item,*openprj_item; VDKMenuItem *edit_menu; VDKMenuItem *search_menu, *search_item,*repeat_search_item,*replace_item; VDKMenuItem *view_menu; VDKMenuItem *viewunits_item, *viewforms_item; VDKMenuItem *prj_menu; VDKMenuItem *prjmake_item, *prjmakeclean_item, *prjoptions_item, *prjdebug_item; VDKMenuItem *compo_menu,*edhint_item; VDKMenuItem *tools_menu,*envset_item,*exec_item,*xdb_menuitem; #if USE_XDB VDKMenu *xdb_menu; VDKMenuItem *xdb_opentables; #endif VDKMenuItem *ac_menu; VDKMenuItem *ac_autogen,*ac_make,*ac_makeclean, *ac_makedist,*ac_makedistclean; VDKMenuItem *help_menu; VDKMenuItem *help_index,*help_vdk,*help_about; // VDKToolbar *toolbar1; VDKHLButton *unitlist_nb,*toggle_nb,*formlist_nb,*runprj_nb; VDKHLButton *nb_array1[5]; // VDKToolbar *toolbar; VDKHLButton *newprj_nb, *newunit_nb, *newform_nb, *loadprj_nb, *loadfile_nb, *saveprj_nb,*savefile_nb; VDKHLButton *nb_array[8]; // VDKCustomButton *reset,*emacs; VDKHLButton *reset,*emacs; VDKNotebook *widget_folder; // VDKToolbar *text_widgets_bar, *button_widgets_bar, // *containers_widgets_bar, *misc_widgets_bar,*plugin_widgets_bar; VDKHLButtonBar *text_widgets_bar, *button_widgets_bar, *containers_widgets_bar, *misc_widgets_bar,*plugin_widgets_bar; #if USE_XDB // VDKToolbar *xdb_widgets_bar; VDKHLButtonBar *xdb_widgets_bar; #endif #if HAVE_GNOME // VDKToolbar *gnome_widgets_bar; VDKHLBUttonBar *gnome_widgets_bar; #endif // subsystems VDKBEditor *editor; VDKBProjectManager *prjman; VDKBMaker *maker; VDKBFormListForm* formlistform; // member functions protected: void MakeMainMenu(); VDKBox* MakeToolBox(); // VDKToolbar* MakeContainerWidgetFolder(); VDKHLButtonBar* MakeContainerWidgetFolder(); // VDKToolbar* MakeButtonsWidgetFolder(); VDKHLButtonBar* MakeButtonsWidgetFolder(); // VDKToolbar* MakeTextWidgetFolder(); VDKHLButtonBar* MakeTextWidgetFolder(); // VDKToolbar* MakeMiscWidgetFolder(); VDKHLButtonBar* MakeMiscWidgetFolder(); // VDKToolbar* MakePluginWidgetFolder(); VDKHLButtonBar* MakePluginWidgetFolder(); #if USE_XDB // VDKToolbar* MakeXdbWidgetFolder(); VDKHLButtonBar* MakeXdbWidgetFolder(); #endif #if HAVE_GNOME //VDKToolbar* MakeGnomeWidgetFolder(); VDKHLButtonBar* MakeGnomeWidgetFolder(); #endif VDKString ToBeToggled; // form/unit to be toggled // disabled for now // VDKToolbar* MakeDlgWidgetFolder(); bool ContinueSetup(VDKObject*); void OnShow(VDKForm* sender); void OnMove(VDKForm* sender); void OnResize(VDKForm* sender,VDKPoint& p); void OnFormActivate(VDKForm* sender, bool in_out); // response functions bool Quit(VDKObject*); bool About(VDKObject*); bool HandleToolbar(VDKObject*); bool HandleToolbar1(VDKObject*); bool HandleContainersWidgetsBar(VDKObject*); bool HandleButtonsWidgetsBar(VDKObject*); bool HandleTextWidgetsBar(VDKObject*); bool HandleAllWidgetsBar(VDKObject*); bool CanClose(); bool NewUnit(VDKObject*); bool NewForm(VDKObject*); bool OpenFile(VDKObject*); bool OnReopenMenu(VDKObject*); bool SaveProject(VDKObject*); bool FileSave(VDKObject*); bool OpenProject(VDKObject*); bool ProjectOptions(VDKObject*); bool Search(VDKObject*); bool RepeatSearch(VDKObject*); bool ReplaceText(VDKObject*); bool SetBuilderEnvironment(VDKObject*); void OnIconize(VDKForm*); void OnRestore(VDKForm*); bool RunDebugger(VDKObject*); bool RunGrep(VDKObject* sender); bool OpenHintsEditor(VDKObject* sender); bool ViewForms(VDKObject* sender); /* emacs support as external editor */ bool CallEmacsServer(VDKObject*); /* in vdkb_acsupport.cc */ bool AcAutogen(VDKObject* sender); bool AcMake(VDKObject* sender); bool AcMakeClean(VDKObject* sender); bool AcMakeDist(VDKObject* sender); bool AcMakeDistclean(VDKObject* sender); bool VDKBHelp(VDKObject*); /* xdb support */ #if USE_XDB bool OnOpenXdbTables(VDKObject* sender); #endif // bool BrowseCompoDb(VDKObject* sender); // void CallMaker(char * args[], char* pth,int output); /* editor completions, code templates and hints */ bool LoadTokens(); bool SaveTokens(); bool LoadHints(); public: VDKBMainForm(VDKApplication* , gchar* ); ~VDKBMainForm(); void Setup(); void OnChildClosing(VDKForm* child); void Automa(int state = automa_end); VDKBEditor* MakeEditor(); VDKBEditor* Editor() { return editor; } LRUManager* LruManager() { return lrumanager; } bool NewProject(VDKObject*); VDKBProjectManager * PrjManager() { return prjman; } VDKBFormListForm* Formlistform() { return formlistform; } bool Reset(VDKObject*); // VDKToolbar* Toolbar1() { return toolbar1; } void EnableToggleFormUnit(bool active, char* file); bool Make(VDKObject*); void RunExecutable(); #if HAVE_GNOME void EnableGnomeWidgets(bool flag); #endif // for Mozilla bool RunMozilla(VDKObject*, char* html); bool MozillaMourn(VDKObject*); int MozillaPid() {return mozpid;} void MozillaPid(int p) {mozpid=p;} int MozillaStatus() {return mozstatus;} void MozillaStatus(int p) {mozstatus=p;} static void MozillaReaper(int); void LoadEditorWithErrors(VDKBStringList* list); void UpdateLRU(); bool OnLRUTimer(VDKObject* sender); DECLARE_SIGNAL_MAP(VDKBMainForm); DECLARE_SIGNAL_LIST(VDKBMainForm); }; /////////////////////////////////////// #if HAVE_GNOME class VDKBuilder: public VDKGnomeApplication #else class VDKBuilder: public VDKApplication #endif { protected: VDKBPluginList plugin_list; public: #if USE_XDB VDKXDatabase* theXdb; #endif VDKString user_home,user_cwd; // static VDKBDefaults ideDefaults; VDKBuilder(int* argc, char** argv, char* rc = NULL); ~VDKBuilder(); void Setup(); VDKBPluginList& PluginList() { return plugin_list; } }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_about.h0000644000000000000000000000357307614220476014325 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_about_h #define _vdkb_about_h #include #include // About FORM CLASS class VDKBAboutForm: public VDKForm { // gui object declarations private: // gui object declarations void GUISetup(void); VDKTimer* timer; bool OnTimer(VDKObject*); protected: VDKBox* vbox; VDKCanvas* canvas0; VDKSeparator* separator1; VDKImage* pixmap0; VDKSeparator* separator0; VDKBox* hbox2; // VDKCustomButton* custombutton0; VDKHLButton* custombutton0; VDKLabel* label0; void OnShow(VDKForm* sender); bool CanClose(); bool Oncustombutton0Click(VDKObject* sender); bool OnCanvas0ButtonPress(VDKObject*, GdkEvent*); public: VDKBAboutForm(VDKForm* owner, char* title = NULL); ~VDKBAboutForm(); void Setup(void); DECLARE_SIGNAL_MAP(VDKBAboutForm); DECLARE_EVENT_LIST(VDKBAboutForm); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_calendar.h0000644000000000000000000000642407422524176014763 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ /* -------- OVERVIEW -------- - This file should be considered as a template for constructing vdkbuilder plugin components. Users should copy/paste and easily adapt this file to their own components. - See also plugins.txt into /plugins directory for further informations. */ // write here your sentinel #ifndef _vdkb_calendar_h #define _vdkb_calendar_h // #include #include #include #include // write here your vdkbuilder component class name #define CLASS VDKBCalendar // write here your vdk component class name #define VDK_ANCESTOR VDKCalendar // write here your vdk component class name as string #define VDK_CLASS "VDKCalendar" // widget specific #define CHECK_BUTTONS_NUMBER 5 class VDKBGuiForm; class VDKBParser; class CLASS: public VDK_ANCESTOR, public VDKBObject { /////////////////////////////////////////////// /* this part is common to all component leave it as is */ protected: // a pop menu activated with right click on component VDKBWidgetPopMenu *popmenu; // Widget Inspector address VDKBObjectInspector* inspector; public: static int Counter; static char* CreateSource(char* buffer, VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer, VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); CLASS(char* name,VDKForm* owner); virtual ~CLASS() {} virtual char* VDKName() { return VDK_CLASS; } void PopMenu() { popmenu->Popup(); } // called from designer virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); // signal tables DECLARE_SIGNAL_LIST(CLASS); DECLARE_EVENT_LIST(CLASS); //////////////////////////////////////////////// /* this part is component specific patch it as you need */ protected: VDKCustomButton *setButton; VDKCheckButton *checkButtons[CHECK_BUTTONS_NUMBER]; /* This is called to add properties settings to Widget Inspector. Comment out if your component does not have properties to be set. */ public: virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); /* signal handler (aka response methods) for set button. Comment out if your component does not have properties to be set or write your own handlers. */ bool OnSetProperties(VDKObject* sender); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_cbrowse.h0000644000000000000000000000517007256046116014651 /* * =========================== * VDK Builder * Version 2.0 * March 2001 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_cbrowse_h_ #define _vdkb_cbrowse_h_ #ifdef HAVE_CONFIG_H #include #endif // vdk support #include class VDKDefaultColor { public: VDKString name; int red,green,blue; VDKDefaultColor():name(""),red(-1),green(-1),blue(-1) {} VDKDefaultColor(char* name, int red, int green, int blue): name(name),red(red),green(green),blue(blue) {} bool operator < (VDKDefaultColor& rgb) { return name < rgb.name; } bool operator == (VDKDefaultColor& rgb) { return name == rgb.name; } }; typedef VDKArray CanvasArray; typedef VDKValueList ColorList; typedef VDKValueListIterator ColorListIterator; // Test FORM CLASS class VDKBColorBrowser: public VDKForm { // gui object declarations private: // gui object declarations void GUISetup(void); CanvasArray canvasArray; ColorList colorList; int selectedCanvas; bool OnCanvasClick (VDKObject* sender, GdkEvent*); bool ReadRGB (); VDKRgb DefaultColorsColorRgb (int t); char* DefaultColorsName (int t); VDKDefaultColor* color; public: VDKBColorBrowser(VDKForm* , VDKDefaultColor* color, char* title = NULL); ~VDKBColorBrowser(); void Setup(void); protected: VDKBox* vbox; VDKEventBox* evbox; VDKScrolled* scrolled; VDKSeparator* separator0; VDKBox* hbox4; VDKLabel* label; VDKCustomButton* accept; VDKCustomButton* cancel; void OnExpose(VDKForm* sender, GdkRectangle area); public: DECLARE_SIGNAL_MAP(VDKBColorBrowser); bool OncancelClick(VDKObject* sender); bool OnacceptClick(VDKObject* sender); DECLARE_SIGNAL_LIST(VDKBColorBrowser); DECLARE_EVENT_LIST(VDKBColorBrowser); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_cbuttdlg.h0000644000000000000000000000424207257643320015015 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_combodlg_main_form_h_ #define _vdkb_combodlg_main_form_h_ #include class VDKBComboButtonDlg: public VDKForm { // gui object declarations private: // vdkbuilder reserved gui construction void GUISetup(void); int* pixmapped; unsigned int* type; GtkPositionType* label_pos; public: VDKBComboButtonDlg(VDKForm* owner, char* title, int* pixmapped, unsigned int* type, GtkPositionType* label_pos); ~VDKBComboButtonDlg(); void Setup(void); protected: VDKFrame* frame0; VDKBox* vbox1; VDKTable* table1; VDKBox* vbox10; VDKCheckButton* pixmapCb; VDKBox* vbox11; VDKBox* vbox12; VDKRadioButtonGroup* VRadioButtonGroup16; VDKRadioButton* radiobutton4; VDKRadioButton* radiobutton6; VDKBox* vbox13; VDKRadioButtonGroup* VRadioButtonGroup17; VDKRadioButton* radiobutton8; VDKRadioButton* radiobutton10; VDKBox* vbox14; VDKCustomButton* acceptButton; VDKBox* vbox15; VDKCustomButton* defaultButton; VDKLabel* label0; VDKCombo* labelPosCombo; public: DECLARE_SIGNAL_MAP(VDKBComboButtonDlg); bool OnacceptButtonClick(VDKObject* sender); bool OndefaultButtonClick(VDKObject* sender); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_checkbutton.h0000644000000000000000000000455607257643320015526 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_checkbutton_h #define _vdkb_checkbutton_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBCheckButton: public VDKCheckButton, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKBObjectInspector* inspector; // specific to this widget VDKEntry* caption; VDKCustomButton* set; VDKCheckButton* wrap; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBCheckButton(char* name,VDKForm* owner, char* label, char* tip = NULL); virtual ~VDKBCheckButton() {} // specific to this widget /* virtual VDKString& Name(char* s = NULL) { if(s) Caption = s; return VDKBObject::Name(s); } */ // virtual int Type() { return vdkbclass_checkbutton; } virtual char* VDKName() { return "VDKCheckButton"; } virtual int isA() { return vdkbclass_checkbutton; } void PopMenu() { popmenu->Popup(); } // designer virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool OnSetCaption(VDKObject*); bool OnSetCaptionWrap(VDKObject*); // virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBCheckButton); DECLARE_EVENT_LIST(VDKBCheckButton); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_clistdlg.h0000644000000000000000000000102107252425473015004 /* vdkb_clistdlg Form header file: vdkb_clistdlg.h */ #ifndef _vdkb_clistdlg_form_h_ #define _vdkb_clistdlg_form_h_ #include // Vdkb_clistdlg FORM CLASS class Vdkb_clistdlgForm: public VDKForm { // gui object declarations private: // vdkbuilder reserved gui construction void GUISetup(void); int* colnum; public: Vdkb_clistdlgForm(VDKForm* owner, char* title, int* colnum); ~Vdkb_clistdlgForm(); void Setup(void); /* gui setup include do not patch below here */ #include }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_clistdlg_gui.h0000644000000000000000000000056707257643317015672 /* vdkb_clistdlg gui header */ protected: VDKBox* Hbox4; VDKBox* Hbox5; VDKBox* Vbox7; VDKLabel* Label1; VDKLabel* Label2; VDKBox* Hbox6; VDKEntry* columns; VDKCustomButton* ok; VDKCustomButton* cancel; public: DECLARE_SIGNAL_MAP(Vdkb_clistdlgForm); bool OnokClick(VDKObject* sender); bool OncancelClick(VDKObject* sender); //DECLARE_SIGNAL_LIST(Vdkb_clistdlgForm); vdkbuilder2-2.4.0/include/vdkb2/vdkb_clipdlg.h0000644000000000000000000000335607252425474014633 /* * =========================== * VDK Builder * Version 1.0.3 * November 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_clip_dlg_h #define _vdkb_clip_dlg_h #include #include #include class VDKBWidgetClipboardDialog: public VDKForm { private: void GUISetup(void); VDKBWidgetClipboardArray* cliparray; public: VDKBWidgetClipboardDialog(VDKForm* owner, VDKBWidgetClipboardArray* cliparray, char* title); ~VDKBWidgetClipboardDialog(); void Setup(void); protected: VDKBox* vbox1; VDKCustomList* widgetList; VDKSeparator* separator0; VDKBox* hbox2; VDKCustomButton* pasteBtn; VDKCustomButton* cancelBtn; public: DECLARE_SIGNAL_MAP(VDKBWidgetClipboardDialog); bool OnPasteBtnClick(VDKObject* sender); bool OncancelBtnClick(VDKObject* sender); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_combo.h0000644000000000000000000000442607252425474014313 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_combo_h #define _vdkb_combo_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBCombo: public VDKCombo, public VDKBObject { protected: bool EntryButtonPressed(VDKObject* sender,GdkEvent* ev); VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKBObjectInspector* inspector; VDKCheckButton *editable,*sorted,*hidden,*casesensitive; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBCombo(char* name,VDKForm* owner); virtual ~VDKBCombo() {} virtual int Type() { return vdkbclass_combo; } virtual char* VDKName() { return "VDKCombo"; } virtual int isA() { return vdkbclass_combo; } bool DelWidget(VDKObject*); bool SetWidgetSize(VDKObject* sender); void PopMenu() { popmenu->Popup(); } VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); // designer bool OnSetEditable(VDKObject*); bool OnSetSorted(VDKObject*); bool OnSetHidden(VDKObject*); bool OnSetCaseSensitive(VDKObject*); virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBCombo); DECLARE_EVENT_LIST(VDKBCombo); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_comboentry.h0000644000000000000000000000654110031624445015361 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ /* -------- OVERVIEW -------- - This file should be considered as a template for constructing vdkbuilder plugin components. Users should copy/paste and easily adapt this file to their own components. - See also plugins.txt into /plugins directory for further informations. */ // write here your sentinel #ifndef _vdkb_comboentry_h #define _vdkb_comboentry_h // #include #include #include #include // write here your vdkbuilder component class name #define CLASS VDKBComboEntry // write here your vdk component class name #define VDK_ANCESTOR VDKComboEntry // write here your vdk component class name as string #define VDK_CLASS "VDKComboEntry" // widget specific #define CHECK_BUTTONS_NUMBER 2 class VDKBGuiForm; class VDKBParser; class CLASS: public VDK_ANCESTOR, public VDKBObject { /////////////////////////////////////////////// /* this part is common to all component leave it as is */ protected: // a pop menu activated with right click on component VDKBWidgetPopMenu *popmenu; // Widget Inspector address VDKBObjectInspector* inspector; public: static int Counter; static char* CreateSource(char* buffer, VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer, VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); CLASS(char* name,VDKForm* owner); virtual ~CLASS() {} virtual char* VDKName() { return VDK_CLASS; } void PopMenu() { popmenu->Popup(); } // called from designer virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); // signal tables DECLARE_SIGNAL_LIST(CLASS); DECLARE_EVENT_LIST(CLASS); bool OverriddenButtonPressed(VDKObject* sender, GdkEvent* ev); //////////////////////////////////////////////// /* this part is component specific patch it as you need */ protected: VDKCustomButton *setButton; VDKCheckButton *checkButtons[CHECK_BUTTONS_NUMBER]; /* This is called to add properties settings to Widget Inspector. Comment out if your component does not have properties to be set. */ public: virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); /* signal handler (aka response methods) for set button. Comment out if your component does not have properties to be set or write your own handlers. */ bool OnSetProperties(VDKObject* sender); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_compodb.h0000644000000000000000000000530007423024131014610 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkbcompodb_form_h_ #define _vdkbcompodb_form_h_ #include class VDKBCompodbForm: public VDKForm { private: void GUISetup(void); bool Changed; public: VDKBCompodbForm(VDKForm* owner, char* title); ~VDKBCompodbForm(); void Setup(void); protected: VDKBox* vbox1; // VDKCustomList* compoList; VDKTreeView* compoList; VDKSeparator* separator0; VDKBox* hbox2; VDKCustomButton* closeButton; VDKCustomButton* deleteButton; VDKCustomButton* addButton; VDKCustomButton* modifyButton; VDKCustomButton* saveButton; VDKStatusbar* statusbar0; bool OnRealizeCompoList(VDKObject* sender); void LoadComponentDb(); bool SaveComponentDb(); bool CanClose(void); public: DECLARE_SIGNAL_MAP(VDKBCompodbForm); bool OncloseButtonClick(VDKObject* sender); bool OncompoListSelectRow(VDKObject* sender); bool OndeleteButtonClick(VDKObject* sender); bool OnaddButtonClick(VDKObject* sender); bool OnmodifyButtonClick(VDKObject* sender); bool OnsaveButtonClick(VDKObject* sender); }; // input form class VDKBCompoInputForm: public VDKForm { private: void GUISetup(void); char* libpath, *libname; public: VDKBCompoInputForm(VDKForm* owner, char* libpath, char* libname); ~VDKBCompoInputForm(); void Setup(void); protected: VDKBox* vbox1; VDKBox* vbox2; VDKBox* hbox5; VDKLabel* label0; VDKEntry* libpathEntry; VDKBox* hbox6; VDKLabel* label1; VDKEntry* libnameEntry; VDKSeparator* separator1; VDKBox* hbox10; VDKCustomButton* acceptButton; VDKCustomButton* cancelButton; public: DECLARE_SIGNAL_MAP(VDKBCompoInputForm); bool OnacceptButtonClick(VDKObject* sender); bool OncancelButtonClick(VDKObject* sender); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_custombutton.h0000644000000000000000000000571107257643316015762 /* * =========================== * VDK Visual Development Kit * Version 0.4 * October 1998 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_custombutton_h #define _vdkb_custombutton_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBCustomButton: public VDKCustomButton, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKBObjectInspector* inspector; VDKEntry* caption, *pixfile; VDKCombo *relief; VDKCustomButton* set; VDKCheckButton* wrap; VDKCheckButton* bydata; VDKCustomButton *shortname; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBCustomButton(char* name, VDKForm* owner, char* pixfile, char* label, unsigned int type = VDK_CBUTTON_UNTOGGLED | VDK_CBUTTON_NORMAL, GtkPositionType position = GTK_POS_RIGHT); VDKBCustomButton(char* name, VDKForm* owner, char** pixdata, char* label, unsigned int type = VDK_CBUTTON_UNTOGGLED | VDK_CBUTTON_NORMAL, GtkPositionType position = GTK_POS_RIGHT); virtual ~VDKBCustomButton() {} virtual VDKString& Name(char* s = NULL) { if(s) Caption = s; return VDKBObject::Name(s); } virtual int Type() { return vdkbclass_custombutton; } virtual char* VDKName() { return "VDKCustomButton"; } virtual int isA() { return vdkbclass_custombutton; } virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool DelWidget(VDKObject*); bool SetWidgetSize(VDKObject* sender); void PopMenu() { popmenu->Popup(); } // designer bool OnSetRelief(VDKObject*); bool OnSetCaption(VDKObject*); bool OnSetCaptionWrap(VDKObject*); bool OnSetGlyph(VDKObject*); bool OnSetShortName(VDKObject*); bool OnToggleBydata(VDKObject*); virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBCustomButton); DECLARE_EVENT_LIST(VDKBCustomButton); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_customlist.h0000644000000000000000000000475207252425476015426 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_clist_h #define _vdkb_clist_h #include #include #include typedef VDKArray TitlesArray; class VDKBGuiForm; class VDKBParser; class VDKBCustomList: public VDKCustomList, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKBObjectInspector* inspector; // object inspector VDKEntry *columnTitle; VDKCheckButton *autoresize; VDKCombo *shadow,*selmode; public: TitlesArray column_titles; static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBCustomList(char* name, VDKForm* owner, int cols, char** titles, GtkSelectionMode mode = GTK_SELECTION_SINGLE); virtual ~VDKBCustomList() {} virtual int Type() { return vdkbclass_clist; } virtual char* VDKName() { return "VDKCustomList"; } virtual int isA() { return vdkbclass_clist; } virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool DelWidget(VDKObject*); bool SetWidgetSize(VDKObject* sender); bool OnColumnClicked(VDKObject*); bool OnSetColumnTitle(VDKObject*); bool OnSetAutoResize(VDKObject*); bool OnSetShadow(VDKObject*); bool OnSetSelectionMode(VDKObject*); void PopMenu() { popmenu->Popup(); } virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBCustomList); DECLARE_EVENT_LIST(VDKBCustomList); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_customtree.h0000644000000000000000000000501307252425477015402 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_ctree_h #define _vdkb_ctree_h #include #include #include typedef VDKArray TitlesArray; class VDKBGuiForm; class VDKBParser; class VDKBGuiCustomTree: public VDKCustomTree, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKBObjectInspector* inspector; // object inspector VDKEntry *columnTitle; VDKCheckButton *autoresize; VDKCombo *shadow,*selmode; public: TitlesArray column_titles; static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBGuiCustomTree(char* name, VDKForm* owner, int cols, char** titles, GtkSelectionMode mode = GTK_SELECTION_SINGLE, int tree_column = 0); virtual ~VDKBGuiCustomTree() {} virtual int Type() { return vdkbclass_ctree; } virtual char* VDKName() { return "VDKCustomTree"; } virtual int isA() { return vdkbclass_ctree; } virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); // bool DelWidget(VDKObject*); // bool SetWidgetSize(VDKObject* sender); bool OnColumnClicked(VDKObject*); bool OnSetColumnTitle(VDKObject*); bool OnSetAutoResize(VDKObject*); bool OnSetShadow(VDKObject*); bool OnSetSelectionMode(VDKObject*); void PopMenu() { popmenu->Popup(); } virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBGuiCustomTree); DECLARE_EVENT_LIST(VDKBGuiCustomTree); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_dclock.h0000644000000000000000000000636307252425500014443 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ /* -------- OVERVIEW -------- - This file should be considered as a template for constructing vdkbuilder plugin components. Users should copy/paste and easily adapt this file to their own components. - See also plugins.txt into /plugins directory for further informations. */ // write here your sentinel #ifndef _vdkb_digitalclock_h #define _vdkb_digitalclock_h // #include #include #include #include // write here your vdkbuilder component class name #define CLASS VDKBDigitalClock // write here your vdk component class name #define VDK_ANCESTOR VDKDigitalClock // write here your vdk component class name as string #define VDK_CLASS "VDKDigitalClock" class VDKBGuiForm; class VDKBParser; class CLASS: public VDK_ANCESTOR, public VDKBObject { /////////////////////////////////////////////// /* this part is common to all component leave it as is */ protected: // a pop menu activated with right click on component VDKBWidgetPopMenu *popmenu; // Widget Inspector address VDKBObjectInspector* inspector; public: static int Counter; static char* CreateSource(char* buffer, VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer, VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); CLASS(char* name,VDKForm* owner); virtual ~CLASS() {} virtual char* VDKName() { return VDK_CLASS; } void PopMenu() { popmenu->Popup(); } // called from designer virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); // signal tables DECLARE_SIGNAL_LIST(CLASS); DECLARE_EVENT_LIST(CLASS); //////////////////////////////////////////////// /* this part is component specific patch it as you need */ protected: /* This is called to add properties settings to Widget Inspector. Comment out if your component does not have properties to be set. */ public: // virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); /* signal handler (aka response methods) for set button. We decided to set all (same boolean type) properties with a single shot. Comment out if your component does not have properties to be set or write your own handlers. */ // bool OnSetProperties(VDKObject* sender); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_dedit.h0000644000000000000000000000437307252425500014274 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_GNOME #ifndef _vdkb_date_edit_h #define _vdkb_date_edit_h #include #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBGnomeDateEdit: public VDKGnomeDateEdit, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKBObjectInspector* inspector; // specific to this widget VDKCheckButton* showtime,*format24; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBGnomeDateEdit(char* name,VDKForm* owner); virtual ~VDKBGnomeDateEdit() {} // virtual int Type() { return vdkbclass_date_edit; } virtual char* VDKName() { return "VDKGnomeDateEdit"; } virtual int isA() { return vdkbclass_date_edit; } void PopMenu() { popmenu->Popup(); } VDKBWidgetPopMenu* WidgetPopmenu() { return popmenu; } // designer virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool OnSetShowTime(VDKObject*); bool OnSetFormat24(VDKObject*); // virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBGnomeDateEdit); DECLARE_EVENT_LIST(VDKBGnomeDateEdit); }; #endif #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_dlgs.h0000644000000000000000000000422307324454075014137 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_dialogs_h #define _vdkb_dialogs_h #include #include // setting property dialogs base class class VDKBPropDialog: public VDKForm { protected: VDKBObject* active; public: VDKBPropDialog(VDKForm* owner, VDKBObject* active, char* title = "", #ifdef HAVE_VDKDEVEL VDKBoxType mode = v_box, #else int mode = v_box, #endif GtkWindowType display = GTK_WINDOW_TOPLEVEL): VDKForm(owner,title,mode,display),active(active) {} virtual ~VDKBPropDialog() {} }; // setting size class VDKBPropSizeDialog: public VDKBPropDialog { protected: VDKSpinButton *hspin,*vspin; VDKCustomButton* quit,*reset; public: VDKBPropSizeDialog(VDKForm* owner, VDKBObject* active, char* title = "", #ifdef HAVE_VDKDEVEL VDKBoxType mode = v_box, #else int mode = v_box, #endif GtkWindowType display = GTK_WINDOW_TOPLEVEL): VDKBPropDialog(owner,active,title,mode,display) {} virtual ~VDKBPropSizeDialog() {} void Setup(); bool OnChange(VDKObject* sender); bool OnReset(VDKObject* sender); DECLARE_SIGNAL_MAP(VDKBPropSizeDialog); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_drawarea.h0000644000000000000000000000632007441646250014772 /* * =========================== * VDK Builder * Version 2.0 * March 2002 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ /* -------- OVERVIEW -------- - This file should be considered as a template for constructing vdkbuilder plugin components. Users should copy/paste and easily adapt this file to their own components. - See also plugins.txt into /plugins directory for further informations. */ // write here your sentinel #ifndef _vdkb_drawingarea_h #define _vdkb_drawingarea_h // #include #include #include #include // write here your vdkbuilder component class name #define CLASS VDKBDrawingArea // write here your vdk component class name #define VDK_ANCESTOR VDKDrawingArea // write here your vdk component class name as string #define VDK_CLASS "VDKDrawingArea" // widget specific class VDKBGuiForm; class VDKBParser; class CLASS: public VDK_ANCESTOR, public VDKBObject { /////////////////////////////////////////////// /* this part is common to all component leave it as is */ protected: // a pop menu activated with right click on component VDKBWidgetPopMenu *popmenu; // Widget Inspector address VDKBObjectInspector* inspector; public: static int Counter; static char* CreateSource(char* buffer, VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer, VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); CLASS(char* name,VDKForm* owner); virtual ~CLASS() {} virtual char* VDKName() { return VDK_CLASS; } void PopMenu() { popmenu->Popup(); } // called from designer virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); // signal tables DECLARE_SIGNAL_LIST(CLASS); DECLARE_EVENT_LIST(CLASS); //////////////////////////////////////////////// /* this part is component specific patch it as you need */ protected: // VDKCustomButton *setButton; // VDKCombo *selmode; /* This is called to add properties settings to Widget Inspector. Comment out if your component does not have properties to be set. */ public: virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); /* signal handler (aka response methods) for set button. Comment out if your component does not have properties to be set or write your own handlers. */ bool OnSetSelectionMode(VDKObject*); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_editor.h0000644000000000000000000000754607614220475014504 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_editor_h #define _vdkb_editor_h /////////////////////// #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include // for safe #ifndef HAVE_SYNTAX #undef HAVE_HINTS #endif #ifdef HAVE_HINTS //#include #include struct VDKBHint { VDKString match,text; bool operator==(VDKBHint& hint) { return match == hint.match; } bool operator<(VDKBHint& hint) { return match < hint.match; } } ; //typedef VDKBtree HintDb; typedef VDKValueList HintDb; #endif typedef VDKValueList TextList; typedef VDKValueListIterator TextListIterator; class VDKBEditor: public VDKForm { protected: VDKPanelbar *bar; // VDKToolbar * toolbar; VDKHLButtonBar * toolbar; bool GoToLine(VDKString& file, int line,bool enlight = false, bool bug = false); VDKMenu *popmenu; VDKMenuItem *toggleHeader,*closePage,*fileSave, *fileSaveAs,*search,*repeatsearch; VDKMenuItem *undo,*redo,*hilite,*shortcut; void UpdateUnit(VDKBText* text,VDKString& rep); int Replace(VDKBText* text, int pos, char* match, char* replace); VDKTimer* autosavetimer; VDKHandleBox* handle; VDKDockerBox* message_docker; VDKHLButtonBar* dockbar; public: // TextList textlist; VDKBNotebook *nbook; VDKCustomList *messages; bool ForceToClose; VDKBEditor(VDKForm* owner); virtual ~VDKBEditor(); void Setup(); void AddNewUnit(); void AddText(char* text_name, bool editable,bool hilite); bool CanClose(); void OnShow(VDKForm*); void ClearMessages(); void ToggleMessages(); void FillMessages(VDKBStringList* list); bool Search(VDKObject*); bool RepeatSearch(VDKObject*); void ReplaceText(); void UpdateFiles(); void EnableMaker(bool flag); void OnChildClosing(VDKForm* child); /////// bool OnTextChanged(VDKObject* ); bool OnPageChanged(VDKObject* ); bool OnLineChanged(VDKObject* ); bool JumpToError(VDKObject* ); bool OnPopMenu(VDKObject* ); bool OnClosePage(VDKObject* ); bool OnToggleHeader(VDKObject* ); bool FileSaveAs(VDKObject* ); bool FileSave(VDKObject* ); bool NoMoreUndo(VDKObject*); bool Hilite(VDKObject* ); bool OnAutosaveTimer(VDKObject* ); bool NewForm(char* name); bool WriteFormCC(char* name, FILE* fp); bool WriteFormH(char* name,FILE* fp); bool WriteFrm(char* fname,FILE* fp); bool HandleToolbar(VDKObject*); bool HandleDockbar(VDKObject*); bool MessageDocked(VDKObject* sender); void LogMessages(); bool Undo(VDKObject*); bool UserPrompt(VDKObject*); bool OnHandleAttach(VDKObject* sender); bool OnHandleDetach(VDKObject* sender); bool ShortCut(VDKObject*); DECLARE_SIGNAL_LIST(VDKBEditor); DECLARE_SIGNAL_MAP(VDKBEditor); }; //////////////////////// #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_edhelp.h0000644000000000000000000000271007257643316014451 /* * ============ * VDK Builder * Version 1.2 * Revision 4 * October 2000 * ============ * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_edhelp_h_ #define _vdkb_edhelp_h_ #include class Vdkb_edhelpForm: public VDKForm { private: void GUISetup(void); VDKColor* color; public: Vdkb_edhelpForm(VDKForm* owner, char* title); ~Vdkb_edhelpForm(); void Setup(void); bool OncloseClick(VDKObject* sender); bool OnhelpListRealize(VDKObject* sender); protected: VDKBox* vbox1,*vbox2,*hbox3; VDKCustomList* helpList; VDKCustomButton* close; public: DECLARE_SIGNAL_MAP(Vdkb_edhelpForm); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_edhint.h0000644000000000000000000000440007456502040014446 /* * ============ * VDK Builder * Version 1.2 * Revision 4 * November 2000 * ============ * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkbedhint_h_ #define _vdkbedhint_h_ #include // VdkbEdHint FORM CLASS class VdkbEdHintForm: public VDKForm { private: void GUISetup(void); void LoadList(void); bool Save(); public: VdkbEdHintForm(VDKForm* app, char* title); ~VdkbEdHintForm(); void Setup(void); void Select(const char* key_text); protected: VDKBox* hbox4; VDKCustomList* customlist0; VDKBox* vbox2; VDKTextView* text0; VDKTable* table2; VDKBox* vbox18; VDKCustomButton* addButton; VDKBox* vbox19; VDKCustomButton* removeButton; VDKBox* vbox20; VDKCustomButton* changeButton; VDKBox* vbox21; VDKCustomButton* closeandsaveButton; VDKBox* vbox22; VDKCustomButton* quitButton; VDKBox* vbox23; VDKEntry *key; public: DECLARE_SIGNAL_MAP(VdkbEdHintForm); bool OnaddButtonClick(VDKObject* sender); bool OnremoveButtonClick(VDKObject* sender); bool OnchangeButtonClick(VDKObject* sender); bool OncloseandsaveButtonClick(VDKObject* sender); bool OnquitButtonClick(VDKObject* sender); bool Oncustomlist0SelectRow(VDKObject* sender); bool Ontext0Realize(VDKObject* sender); bool OnKeyChanged(VDKObject* sender); /* declaring signal and events dynamics tables */ DECLARE_SIGNAL_LIST(VdkbEdHintForm); DECLARE_EVENT_LIST(VdkbEdHintForm); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_entry.h0000644000000000000000000000436107252425504014345 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_entry_h #define _vdkb_entry_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBEntry: public VDKEntry, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKBObjectInspector* inspector; VDKCheckButton* hidden,*editable; VDKEntry *text; VDKSpinButton *maxchars; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBEntry(char* name,VDKForm* owner, char* def = NULL); virtual ~VDKBEntry() {} virtual int Type() { return vdkbclass_entry; } virtual char* VDKName() { return "VDKEntry"; } virtual int isA() { return vdkbclass_entry; } virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); void PopMenu() { popmenu->Popup(); } bool OverriddenButtonPressed(VDKObject* sender, GdkEvent* ev); // designer bool OnSetHidden(VDKObject*); bool OnSetEditable(VDKObject*); bool OnSetEntryText(VDKObject*); bool OnSetMaxChars(VDKObject*); virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBEntry); DECLARE_EVENT_LIST(VDKBEntry); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_Env.h0000644000000000000000000001212307475363076013743 /* * =========================== * VDK Builder * Version 2.0 * March 2001 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_Env_main_form_h_ #define _vdkb_Env_main_form_h_ #ifdef HAVE_CONFIG_H #include #endif #define OBJECTS 50 #define CHANGED_COLOR "red" // vdk support #include // Vdkb_Env FORM CLASS class Vdkb_EnvForm: public VDKForm { // gui object declarations private: // gui object declarations void GUISetup(void); VDKObject* objects[OBJECTS]; bool Changed; bool LockChanged; bool forceToClose; void WriteSyntaxSampleText(); void SaveEnvironment(); protected: void OnOptionChanged (); public: Vdkb_EnvForm(VDKForm* owner, char* title); ~Vdkb_EnvForm(); void Setup(void); protected: VDKBox* vbox2; protected: VDKBox* vbox3; protected: VDKNotebook* nbook; protected: VDKBox* Nbook0_Page0; protected: VDKFixed* fixed0; protected: VDKLabel* label0; protected: VDKEntry* workdir; protected: VDKCheckButton* hide_on_run; protected: VDKCheckButton* wi_resizeable; protected: VDKCheckButton* autosave; protected: VDKLabel* label2; protected: VDKSpinButton* savingtime; protected: VDKCheckButton* backup; protected: VDKLabel* label3; protected: VDKEntry* vdk_ref_path; protected: VDKCheckButton* run_modal; protected: VDKCheckButton* emacs; protected: VDKCheckButton* save_session; protected: VDKCheckButton* theme; protected: VDKCheckButton* enable_class_browser; protected: VDKBox* nbook_page2; protected: VDKFixed* fixed1; protected: VDKLabel* label4; protected: VDKLabel* label1; protected: VDKLabel* label5; protected: VDKEntry* cc_ext; protected: VDKEntry* h_ext; protected: VDKEntry* o_ext; protected: VDKEntry* editor_font; protected: VDKCustomButton* fontbutton; protected: VDKCustomButton* bgbutton; protected: VDKEntry* editor_bg; protected: VDKCustomButton* fgbutton; protected: VDKEntry* editor_fg; protected: VDKLabel* label6; protected: VDKSpinButton* editor_size_x; protected: VDKLabel* label7; protected: VDKSpinButton* editor_size_y; protected: VDKCheckButton* code_autoindent; protected: VDKCheckButton* showln; protected: VDKSpinButton* editortab; protected: VDKLabel* label8; protected: VDKBox* nbook_page3; protected: VDKFixed* fixed2; protected: VDKCustomButton* syntfontbutton; protected: VDKCustomButton* syntcolorbutton; protected: VDKEntry* syntfont; protected: VDKFrame* frame0; protected: VDKEditor* code_example; protected: VDKCustomList* tokenlistbox; protected: VDKSeparator* separator0; protected: VDKBox* hbox4; protected: VDKCustomButton* done; protected: VDKCustomButton* cancel; protected: VDKLabel* label9; protected: VDKEntry* vdk_ref_browser; VDKRadioButtonGroup* rgroup; bool CanClose(); public: DECLARE_SIGNAL_MAP(Vdkb_EnvForm); bool OndoneClick(VDKObject* sender); bool OncancelClick(VDKObject* sender); bool OnfontbuttonClick(VDKObject* sender); bool OnbgbuttonClick(VDKObject* sender); bool OnfgbuttonClick(VDKObject* sender); bool Oneditor_fontActivate (VDKObject* sender); bool OnsyntfontbuttonClick(VDKObject* sender); bool OnsyntfontActivate (VDKObject* sender); bool OnsyntcolorbuttonClick(VDKObject* sender); bool Oncode_exampleRealize(VDKObject* sender); bool Onhide_on_runToggled(VDKObject* sender); bool Onwi_resizeableToggled(VDKObject* sender); bool OnautosaveToggled(VDKObject* sender); bool OnbackupToggled(VDKObject* sender); bool Onrun_modalToggled(VDKObject* sender); bool OnemacsToggled(VDKObject* sender); bool Onsave_sessionToggled(VDKObject* sender); bool OnworkdirChanged(VDKObject* sender); bool OnsavingtimeValueChanged(VDKObject* sender); bool Onvdk_ref_pathChanged(VDKObject* sender); bool Onvdk_ref_browserChanged(VDKObject* sender); bool Oncc_extChanged(VDKObject* sender); bool Onh_extChanged(VDKObject* sender); bool Oneditor_size_xValueChanged(VDKObject* sender); bool Oneditor_size_yValueChanged(VDKObject* sender); bool OneditortabValueChanged(VDKObject* sender); bool Oncode_autoindentToggled(VDKObject* sender); bool OnshowlnToggled(VDKObject* sender); bool OntokenlistboxSelectRow (VDKObject* sender); bool OnthemeToggled(VDKObject* sender); bool Onenable_class_browserToggled(VDKObject* sender); bool OnRgroupToggled(VDKObject* sender); /* declaring signal and events dynamics tables */ DECLARE_SIGNAL_LIST(Vdkb_EnvForm); DECLARE_EVENT_LIST(Vdkb_EnvForm); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_evappbar.h0000644000000000000000000000306707252425505015007 /* * =========================== * VDK Builder * Version 1.0.4 * December 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_GNOME #ifndef _vdkbevappbar_h #define _vdkbevappbar_h #include #include #include #include class VDKBEvGnomeAppBar: public VDKEventBox { protected: VDKGnomeAppBar *statusbar; public: VDKBEvGnomeAppBar(VDKForm* owner, bool has_progress = true, bool has_status = true): VDKEventBox(owner) { statusbar = new VDKGnomeAppBar(owner, has_progress, has_status); statusbar->SetSize(-1,30); Add(statusbar,l_justify,true,true,false); } virtual ~VDKBEvGnomeAppBar() {} operator VDKGnomeAppBar*() { return statusbar; } }; #endif #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_evbox.h0000644000000000000000000000636407455115611014334 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_event_box_h #define _vdkb_event_box_h #include #include //#include class VDKBGuiForm; class VDKBParser; class VDKBObjectInspector; class VDKBEventBox: public VDKBEventContainer { protected: VDKMenuItem *delBox, *addHbox, *addVbox, *split, *setsize; VDKMenuItem *addwidget,*delwidget; void Init(int w, int h); // property controls used by object inspector VDKCheckButton* evboxCb,*dockCb; public: static int Counter; bool PreviewFlag; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidgetV(VDKBGuiForm* owner, GdkEvent* ev = NULL); static int MakeWidgetH(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBEventBox(char* name, VDKForm* owner , bool empty); VDKBEventBox(char* name, VDKForm* owner, int mode = v_box, int w = 16, int h = 16); VDKBEventBox(char* name, VDKBEventContainer* outer, int mode = v_box, int w = 16, int h = 16); virtual ~VDKBEventBox() {} void AddBox(); void AddCanvas(int w, int h); void PopMenu() { if(popmenu) popmenu->Popup(); } bool OnButtonPressed(VDKObject*, GdkEvent*); bool OnButtonReleased(VDKObject*, GdkEvent*); bool OnMouseMove(VDKObject*, GdkEvent*); bool Split(VDKObject* sender); bool AddVBox(VDKObject*); bool AddHBox(VDKObject*); bool DelBox(VDKObject* sender); virtual int Type() { return vdkbevbox_class; } virtual int isA() { return vdkbevbox_class; } virtual void Add(VDKObject* obj, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 0); virtual void AddWidget(VDKObject* w, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 0, bool forceArgs = false); virtual char* VDKName() { return "VDKBox"; } bool OnDragStop(VDKObject*, GdkEvent* ); bool SetBoxSize(VDKObject* sender); // designer virtual void WriteOnFrm(FILE* fp, VDKBObject* parentobj); virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool OnSetEventBox(VDKObject*); bool OnSetDockable(VDKObject*); DECLARE_EVENT_LIST(VDKBEventBox); DECLARE_SIGNAL_LIST(VDKBEventBox); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_evcontain.h0000644000000000000000000000721207252425506015172 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. */ #ifndef _VDKB_EVENT_CONTAINER_H #define _VDKB_EVENT_CONTAINER_H #include #include #include #include #include #include #include #include #include typedef VDKList EventBoxList; typedef VDKListIterator EventBoxListIterator; /* */ class VDKBCanvas: public VDKCanvas, public VDKBObject { public: static int Counter; VDKBCanvas(char* name,VDKForm* owner, int w, int h); virtual ~VDKBCanvas() {} void Mark(); void DrawUnfilledRect(int x, int y, int w, int h); bool OnExpose(VDKObject* sender, GdkEvent* event); virtual int isA() { return vdkbcanvas_class; } virtual int Type() { return vdkbcanvas_class; } virtual char* VDKName() { return "VDKCanvas"; } DECLARE_EVENT_LIST(VDKBCanvas); }; /* */ class VDKBObjectInspector; class VDKBContainerPopMenu; class VDKBEventContainer: public VDKObjectContainer, public VDKBObject { protected: GtkWidget* container; VDKBEventContainer* outerbox; int slot, mode; VDKMenuItem* selectparent; bool BinCheck(VDKObject* wid); VDKSpinButton* borderspin; VDKBObjectInspector* inspector; // object inspector public: VDKBContainerPopMenu *popmenu; static int Counter; VDKBCanvas* canvas; // don't be confused, really boxlist can contain any vdkobject :-) EventBoxList boxlist; VDKBEventContainer(char* name, VDKForm* owner); virtual ~VDKBEventContainer() {} virtual void Add(VDKObject* obj, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 0); // last arg forces previous args to be used virtual void AddWidget(VDKObject* obj, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 0, bool forceArgs = false) {} GtkWidget* Container() { return container; } // common actions bool DelBox(VDKObject*); bool OnButtonPressed(VDKObject* sender, GdkEvent* event); bool OnExpose(VDKObject* sender, GdkEvent* event); bool SelectParentContainer(VDKObject*); bool PasteWidget(VDKObject*); virtual void ClearMark(); virtual void Mark(); virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); virtual void WriteOnFrm(FILE* fp, VDKBObject* parentobj); bool OnBorderWidth(VDKObject*); // access VDKBEventContainer* Outerbox(VDKBEventContainer* b = NULL); int Mode() { return mode; } VDKBCanvas* Canvas() { return canvas; } virtual int Type() { return vdkbclass_evcontainer; } virtual int isA() { return vdkbclass_evcontainer; } virtual char* VDKName() { return "VDKObjectContainer"; } DECLARE_SIGNAL_LIST(VDKBEventContainer); DECLARE_EVENT_LIST(VDKBEventContainer); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_evlabel.h0000644000000000000000000000361007305376740014620 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkbevlabel_h #define _vdkbevlabel_h #include #include #include #include class VDKBEvLabel: public VDKEventBox { protected: VDKLabel *label; public: VDKReadWriteValueProp Justify; VDKReadWriteValueProp Caption; VDKReadWriteValueProp CaptionWrap; VDKBEvLabel(VDKForm* owner, const char* lbl,GtkJustification = GTK_JUSTIFY_LEFT); virtual ~VDKBEvLabel() {} operator VDKLabel*() { return label; } void SetCaption (const char* str) { label->SetCaption((char*) str); } const char* GetCaption () { return label->GetCaption(); } void SetCaptionWrap (bool flag) { label->SetCaptionWrap(flag); } bool GetCaptionWrap () { return label->GetCaptionWrap(); } void SetJustify(GtkJustification jtype) { label->SetJustify(jtype); } GtkJustification GetJustify() { return label->GetJustify(); } }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_evpbar.h0000644000000000000000000000414407252425507014465 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkbevpbar_h #define _vdkbevpbar_h #include #include #include #include class VDKBEvProgressBar: public VDKEventBox { protected: VDKProgressBar *pbar; public: VDKReadWriteValueProp Value; VDKReadWriteValueProp BlockCount; VDKReadWriteValueProp BarStyle; VDKReadWriteValueProp BarOrientation; VDKReadWriteValueProp ActivityMode; VDKBEvProgressBar(VDKForm* owner, double min = 0.0, double max = 1.0); virtual ~VDKBEvProgressBar() {} operator VDKProgressBar*() { return pbar; } void Update(double val) { pbar->Update(val); } void SetBlockCount(int bc) { pbar->BlockCount = bc; } #ifdef HAVE_VDKDEVEL void SetBarStyle(GtkProgressBarStyle style){ pbar->BarStyle = style; } void SetBarOrientation(GtkProgressBarOrientation or) { pbar->BarOrientation = or; } #else void SetBarStyle(int style){ pbar->BarStyle = style; } void SetBarOrientation(int orient) { pbar->BarOrientation = orient; } #endif void SetActivityMode(bool flag) { pbar->ActivityMode = flag; } }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_evsbar.h0000644000000000000000000000267307252425511014470 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkbevsbar_h #define _vdkbevsbar_h #include #include #include #include class VDKBEvStatusbar: public VDKEventBox { protected: VDKStatusbar *statusbar; public: VDKBEvStatusbar(VDKForm* owner): VDKEventBox(owner) { statusbar = new VDKStatusbar(owner); statusbar->SetSize(-1,30); Add(statusbar,l_justify,true,true,false); } virtual ~VDKBEvStatusbar() {} operator VDKStatusbar*() { return statusbar; } }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_evsep.h0000644000000000000000000000301207252425511014314 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkbevsep_h #define _vdkbevsep_h #include #include #include #include class VDKBEvSeparator: public VDKEventBox { protected: VDKSeparator *separator; public: #ifdef HAVE_VDKDEVEL VDKBEvSeparator(VDKForm* owner, VDKSeparatorType mode): #else VDKBEvSeparator(VDKForm* owner, int mode): #endif VDKEventBox(owner) { separator = new VDKSeparator(owner, mode); Add(separator,l_justify,false,false,false); } virtual ~VDKBEvSeparator() {} operator VDKSeparator*() { return separator; } }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_evslider.h0000644000000000000000000000261407252425511015016 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.3 * July 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkbevslider_h #define _vdkbevslider_h #include #include #include #include class VDKBEvSlider: public VDKEventBox { protected: VDKSlider *slider; public: VDKBEvSlider(VDKForm* owner); virtual ~VDKBEvSlider() {} operator VDKSlider*() { return slider; } void SetDigits(int d) { slider->Digits = d; } void SetUpdatePolicy(VDKUpdateType d) { slider->UpdatePolicy = d; } }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_fixed.h0000644000000000000000000000541207252425511014277 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.5 * August 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_fixed_h #define _vdkb_fixed_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBObjectInspector; class VDKBFixed: public VDKBEventContainer { VDKMenuItem *delBox; VDKMenuItem *addwidget,*delwidget,*setsize; VDKBEventBox* innerbox; VDKCustomButton *setgrid; VDKCheckButton *gridcb; VDKSpinButton *vspace,*hspace; void Init(); public: static int Counter; static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer, VDKBParser& parser); void WriteOnFrm(FILE* fp, VDKBObject* parentobj); VDKBFixed(char* name, VDKForm* owner); VDKBFixed(char* name, VDKBEventContainer* outer); virtual ~VDKBFixed() {} void Mark(); void ClearMark(); void AddBox(); void PopMenu() { popmenu->Popup(); } bool OnButtonPressed(VDKObject*, GdkEvent*); bool OnButtonReleased(VDKObject*, GdkEvent*); bool OnExpose(VDKObject* sender, GdkEvent* ev); void Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs); bool AddNewWidget(VDKObject* sender); bool DelBox(VDKObject* sender); virtual int Type() { return vdkbfixed_class; } virtual int isA() { return vdkbfixed_class; } void AddWidget(VDKObject* w, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 0, bool forceArgs = false); virtual char* VDKName() { return "VDKFixed"; } bool SetBoxSize(VDKObject* sender); // designer virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool OnSetGrid(VDKObject*); DECLARE_EVENT_LIST(VDKBFixed); DECLARE_SIGNAL_LIST(VDKBFixed); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_form.h0000644000000000000000000001370607342302271014145 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_form #define _vdkb_form #include #include #include #include #include #include #include #include #include #include class VDKBObjectInspector; class VDKBConnection { public: VDKString sender,signal,slot; bool declare; VDKBConnection(char* sender, char* signal, char* slot, bool declare = true); ~VDKBConnection() {} bool operator==(VDKBConnection& c); bool operator<(VDKBConnection& c); }; typedef VDKValueList VDKBConnectionList; typedef VDKValueListIterator VDKBConnectionListIterator; class VDKBPropDialog; class VDKBObjectInspector; ///////////////////////////////// class VDKBGuiForm: public VDKForm, public VDKBObject { protected: VDKString name,filename; VDKBEventBox* innerbox; VDKBPropDialog* dialog; void RecursiveShowBoxes(VDKBObject* parentobj, EventBoxList& list, int depth = 0); VDKEntry* title,*pixfile,*focuswidget; VDKCheckButton *free_usize; VDKCombo *display_type,*winpos; VDKCustomButton *shortname, *set_dsp,*set_ip; VDKBObjectInspector* inspector; int form_type; // can be: type_vdk_form, type_vdk_gnomefor public: bool Changed; bool ForceToClose; VDKBObject* Active; VDKPoint DesignedSize; VDKBConnectionList SignalList; int FormType() { return form_type; } VDKBGuiForm(VDKForm* owner, char* name, char* filename, char* title = (char*) NULL, int mode = v_box, int type = type_vdk_form, GtkWindowType display = GTK_WINDOW_TOPLEVEL); virtual ~VDKBGuiForm() {} void OnChildClosing(VDKForm* child); void Setup(void) {} virtual void Setup(VDKBParser& parser, char* formname); void SetupFormProperties(VDKBParser& parser, char* formname); virtual void OnResize(VDKForm*,VDKPoint&); bool OnFocusIn(VDKObject*, GdkEvent* ); bool OnFocusOut(VDKObject*, GdkEvent* ); VDKString& Name() { return name; } VDKString& FileName() { return filename; } bool CanClose(); void WriteFormFile(); void WriteBoxesOnFrm(FILE* fp); void RecursiveWriteBoxesOnFrm(VDKBObject* parentobj, EventBoxList& list, FILE* fp); void MakeGuiObjects(VDKBParser& parser); // in vdkb_parser.cc void ReadSignals(VDKBParser& parser); void WriteSignals(FILE* fp); bool GenerateWidgetName(char* target, const char* widget_class, int* widget_counter); int AddToSelf(VDKBObject* widget,GdkEvent* ev); int AddContainerToSelf(VDKBEventContainer* widget,GdkEvent* ev); bool PackToSelf(VDKBObject* widget, VDKBEventContainer* container, char* buffer, VDKBParser& parser, char* obj_parent = NULL); bool AddVBox(VDKObject*); bool AddHBox(VDKObject*); bool AddVFrame(VDKObject*); bool AddScrolled(VDKObject*); bool AddMenubar(VDKObject*); bool AddHPaned(VDKObject*); bool AddVPaned(VDKObject*); bool AddNotebook(VDKObject*); bool AddToolbar(VDKObject*); bool AddTable(VDKObject*); bool AddHandleBox(VDKObject*); bool AddVRadioBg(VDKObject*); bool AddHRadioBg(VDKObject*); // bool AddPacker(VDKObject*); bool AddFixed(VDKObject*); bool AddStatusbar(VDKObject*); #if HAVE_GNOME bool AddGnomeAppbar(VDKObject*); #endif VDKBEventBox* InnerBox() { return innerbox; } void AddWidget(VDKObject* obj, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 1, bool forceArgs = false); VDKObject* ChildWithName(char* name); VDKObject* RecursiveChildWithName(EventBoxList& list,char* name); void DisconnectWidget(VDKBObject* wid); void ChangeConnectionSenderName(VDKString& newname, VDKString& oldname); bool OnButtonPress(VDKObject*, GdkEvent* ev); bool SetBoxSize(VDKObject* sender); bool ShowBoxes(VDKObject*); bool OnExpose(VDKObject*, GdkEvent*); bool HandleMinSize(VDKObject* ,GdkEvent* ); bool HandleBeforeOnKeyRelease(VDKObject* sender, GdkEvent* ev); bool HandleCutAndPaste(VDKObject* sender, GdkEvent* ev); bool OnKey(VDKObject* sender, GdkEvent* event) ; bool OnKeyRelease(VDKObject* sender, GdkEvent* ev); bool HandleOnKey(VDKObject* sender, GdkEventKey* event); void CutWidget(VDKBObject* active); void PasteWidget(); void ConnectToDrop(VDKObject* obj); bool OnDropSignal(VDKObject* sender); VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool OnSetFormTitle(VDKObject*); bool OnSetGlyph(VDKObject*); bool OnSetShortName(VDKObject*); bool OnSetFocusWidget(VDKObject*); bool OnSetDisplayType(VDKObject*); bool OnSetInitialPosition(VDKObject*); bool OnSetFreeUsize(VDKObject*); DECLARE_EVENT_LIST(VDKBGuiForm); DECLARE_SIGNAL_LIST(VDKBGuiForm); }; /* size tip win */ class SizeTipWin: public VDKForm { VDKLabel* label; char* tip; public: SizeTipWin(VDKForm* owner, char* tip): VDKForm(owner,NULL,v_box,GTK_WINDOW_POPUP),tip(tip) {} ~SizeTipWin() {} void Setup(void); void Update(VDKPoint p); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_frame.h0000644000000000000000000000523707257643315014310 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_frame_h #define _vdkb_frame_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBObjectInspector; class VDKBFrame: public VDKBEventContainer { VDKMenuItem *delBox; VDKMenuItem *addwidget,*delwidget,*setsize; // property controls used by object inspector VDKEntry *label; VDKCombo* shadow,*align; VDKCustomButton* set; VDKBEventBox* innerbox; void Init(); public: static int Counter; static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer, VDKBParser& parser); VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); void WriteOnFrm(FILE* fp, VDKBObject* parentobj); VDKBFrame(char* name, VDKForm* owner); VDKBFrame(char* name, VDKBEventContainer* outer); virtual ~VDKBFrame() {} void AddBox(char* name); void PopMenu() { popmenu->Popup(); } void Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs); bool AddNewWidget(VDKObject* sender); bool DelBox(VDKObject* sender); virtual int Type() { return vdkbframe_class; } virtual int isA() { return vdkbframe_class; } void AddWidget(VDKObject* w, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 0, bool forceArgs = false); virtual char* VDKName() { return "VDKFrame"; } bool SetBoxSize(VDKObject* sender); bool OnSetLabel(VDKObject*); bool OnSetShadowAndAlign(VDKObject*); // designer DECLARE_EVENT_LIST(VDKBFrame); DECLARE_SIGNAL_LIST(VDKBFrame); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_frmlist.h0000644000000000000000000000364207423771706014675 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.6 * August 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_formlist_h #define _vdkb_formlist_h #include class VDKBProjectManager; // Vdkb_frmlist FORM CLASS class VDKBFormListForm: public VDKForm { // gui object declarations private: // vdkbuilder reserved gui construction void GUISetup(void); VDKBProjectManager *prjman; public: VDKBFormListForm(VDKForm* owner, VDKBProjectManager *prjman, char* title); ~VDKBFormListForm(); void Setup(void); // void OnShow(VDKForm*); // void Update(); protected: VDKBox* vbox4; VDKTreeView* formCustomList; VDKSeparator* separator2; VDKBox* hbox5; VDKCustomButton* selectButton; VDKCustomButton* closeButton; public: DECLARE_SIGNAL_MAP(VDKBFormListForm); bool OnformCustomListSelectRow(VDKObject* sender); bool OnselectButtonClick(VDKObject* sender); bool OncloseButtonClick(VDKObject* sender); bool OnformCustomListRealize(VDKObject* sender); //DECLARE_SIGNAL_LIST(VDKBFormListForm); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_gnomeappbar.h0000644000000000000000000000434607252425515015504 /* * =========================== * VDK Builder * Version 1.0.4 * Decenber 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_GNOME #ifndef _vdkb_gnomeappbar_h #define _vdkb_gnomeappbar_h #include #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBGnomeAppBar: public VDKBEvGnomeAppBar, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *delwidget; VDKBObjectInspector* inspector; VDKCheckButton *has_status,*has_progress; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBGnomeAppBar(char* name, VDKForm* owner, bool has_progress = true, bool has_status = true); virtual ~VDKBGnomeAppBar() {} virtual int Type() { return vdkbclass_gnomeappbar; } virtual char* VDKName() { return "VDKGnomeAppBar"; } virtual int isA() { return vdkbclass_gnomeappbar; } void PopMenu() { popmenu->Popup(); } // designer virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool OnSetStatus(VDKObject*); bool OnSetProgress(VDKObject*); DECLARE_SIGNAL_LIST(VDKBGnomeAppBar); DECLARE_EVENT_LIST(VDKBGnomeAppBar); }; #endif #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_gnomeentry.h0000644000000000000000000000455207252425516015400 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_GNOME #ifndef _vdkb_gnomeentry_h #define _vdkb_gnomeentry_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBGnomeEntry: public VDKGnomeEntry, public VDKBObject { protected: bool EntryButtonPressed(VDKObject* sender,GdkEvent* ev); VDKBWidgetPopMenu *popmenu; VDKBObjectInspector* inspector; VDKCheckButton *editable,*sorted,*hidden,*casesensitive; VDKEntry *history; VDKSpinButton *max_saved; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBGnomeEntry(char* name,VDKForm* owner); virtual ~VDKBGnomeEntry() {} virtual int Type() { return vdkbclass_gnomeentry; } virtual char* VDKName() { return "VDKGnomeEntry"; } virtual int isA() { return vdkbclass_gnomeentry; } void PopMenu() { popmenu->Popup(); } VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); // designer bool OnSetEditable(VDKObject*); bool OnSetSorted(VDKObject*); bool OnSetHidden(VDKObject*); bool OnSetHistory(VDKObject*); bool OnSetMaxSaved(VDKObject*); bool OnSetCaseSensitive(VDKObject*); virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBGnomeEntry); DECLARE_EVENT_LIST(VDKBGnomeEntry); }; #endif #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_grep.h0000644000000000000000000000406707257643314014152 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_grep_form_h_ #define _vdkb_grep_form_h_ #include #include // Vdkb_execdlg FORM CLASS class VDKBGrepDlg: public VDKForm { protected: FileStringArray* selections; char* match; public: VDKBGrepDlg(VDKForm* owner, char* title, FileStringArray* selections, char* match ); ~VDKBGrepDlg(); void Setup(void); protected: VDKFrame* Vframe1; VDKBox* Vbox3; VDKTable* Table1; VDKBox* Vbox12; VDKLabel* Label3; VDKBox* Vbox13; VDKEntry* TextMatchEntry; VDKBox* Vbox14; VDKLabel* Label2; VDKBox* Vbox15; VDKBox* Hbox18; VDKEntry* FilesMatchEntry; VDKCustomButton* BrowseButton; VDKBox* Vbox16; VDKCustomButton* ClearFilesButton; VDKBox* Vbox17; VDKBox* Hbox20; VDKCustomButton* OkButton; VDKCustomButton* CancelButton; public: DECLARE_SIGNAL_MAP(VDKBGrepDlg); bool OnBrowseButtonClick(VDKObject* sender); bool OnClearFilesButtonClick(VDKObject* sender); bool OnOkButtonClick(VDKObject* sender); bool OnCancelButtonClick(VDKObject* sender); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_guicanvas.h0000644000000000000000000000362507252425517015172 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_guicanvas_h #define _vdkb_guicanvas_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBGuiCanvas: public VDKCanvas, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKBObjectInspector* inspector; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBGuiCanvas(char* name,VDKForm* owner); virtual ~VDKBGuiCanvas() {} virtual int Type() { return vdkbclass_guicanvas; } virtual char* VDKName() { return "VDKCanvas"; } virtual int isA() { return vdkbclass_guicanvas; } void PopMenu() { popmenu->Popup(); } // designer virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBGuiCanvas); DECLARE_EVENT_LIST(VDKBGuiCanvas); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_handlebox.h0000644000000000000000000000507407257643314015160 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_handlebox_h #define _vdkb_handlebox_h #include #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBObjectInspector; class VDKBHandleBox: public VDKBEventContainer { protected: VDKHandleBox* handlebox; VDKMenuItem *delBox; VDKMenuItem *delwidget,*setsize; // property controls used by object inspector VDKCustomButton* set; void Init(); public: static int Counter; static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); void WriteOnFrm(FILE* fp, VDKBObject* parentobj); VDKBHandleBox(char* name, VDKForm* owner); VDKBHandleBox(char* name, VDKBEventContainer* outer); virtual ~VDKBHandleBox() {} void AddBox(); void PopMenu() { popmenu->Popup(); } void Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs); bool DelBox(VDKObject* sender); virtual int Type() { return vdkbhandlebox_class; } virtual int isA() { return vdkbhandlebox_class; } void AddWidget(VDKObject* w, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 0, bool forceArgs = false); virtual char* VDKName() { return "VDKHandleBox"; } bool SetBoxSize(VDKObject* sender); // designer DECLARE_EVENT_LIST(VDKBHandleBox); DECLARE_SIGNAL_LIST(VDKBHandleBox); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_ide_def.h0000644000000000000000000001757707475363077014615 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_ide_def_h #define _vdkb_ide_def_h #include #include #include #include #include #include // default file parser // sections #define END_SECTION "}" #define EDITOR_SECTION "vdkb_editor{" #define UNIT_SECTION "vdkb_units{" #define PROJECT_SECTION "vdkb_project{" // keys #define END_KEY ";" // editor keys #define FONT_KEY "font:" #define FG_KEY "fg:" #define BG_KEY "bg:" #define EDITOR_HSIZE_KEY "h_size:" #define EDITOR_VSIZE_KEY "v_size:" #define EDITOR_KEY_FONT_KEY "key_font:" #define EDITOR_KEY_COLOR_KEY "key_color:" #define EDITOR_GTK_FONT_KEY "gtk_font:" #define EDITOR_GTK_COLOR_KEY "gtk_color:" #define EDITOR_MACRO_FONT_KEY "macro_font:" #define EDITOR_MACRO_COLOR_KEY "macro_color:" #define EDITOR_PREPROCESS_COLOR_KEY "preprocess_color:" #define EDITOR_PREPROCESS_FONT_KEY "preprocess_font:" #define EDITOR_CONST_FONT_KEY "const_font:" #define EDITOR_CONST_COLOR_KEY "const_color:" #define EDITOR_COMMENT_FONT_KEY "comment_font:" #define EDITOR_COMMENT_COLOR_KEY "comment_color:" #define EDITOR_KEY_TIMEDSAVE "timed_save:" #define EDITOR_KEY_BACKUP "backup:" #define EDITOR_KEY_TAB "tab:" // unit keys #define UNIT_COUNT_KEY "count:" #define UNIT_NAME_KEY "name:" #define UNIT_CC_EXT_KEY "cc_ext:" #define UNIT_H_EXT_KEY "h_ext:" // project keys #define PROJECT_COUNT_KEY "count:" #define PROJECT_NAME_KEY "name:" #define PROJECT_PRJ_EXT_KEY "prj_ext:" #define PROJECT_HIDE_ON_RUN_KEY "hide_on_run:" #define PROJECT_AUTOSAVE_KEY "autosave:" #define PROJECT_STARTUPDIR_KEY "startup_dir:" #define PROJECT_WI_RESIZEABLE_KEY "wi_resizeable:" #define PROJECT_WI_LAYOUT_KEY "wi_layout:" #define PROJECT_VDK_REF_PATH_KEY "vdk_ref_path:" #define PROJECT_VDK_REF_BROWSER_KEY "vdk_ref_browser:" #define PROJECT_SAVE_SESSION_KEY "save_session:" #define PROJECT_CODE_INDENT_KEY "code_indent:" #define PROJECT_RUN_MODAL_KEY "run_modal:" #define PROJECT_EMACS_KEY "emacs:" #define PROJECT_THEME_KEY "theme:" #define PROJECT_CODE_AUTOINDENT_KEY "code_autoindent:" #define PROJECT_SHOWLN_KEY "show_line_numbers:" #define PROJECT_EXTASCII_KEY "ext_ascii:" #define PROJECT_ENABLE_CLASS_BROWSER_KEY "enable_class_browser:" // defaults of defaults // editor #define EDITOR_DEF_SIZE VDKPoint(500,400) #define EDITOR_DEF_FONT "courier 12" #define EDITOR_DEF_FG "black" #define EDITOR_DEF_BG "white" #define EDITOR_DEF_COMMENT_COLOR "navy blue" #define EDITOR_DEF_CONST_COLOR "blue" #define EDITOR_DEF_KEY_COLOR "brown" #define EDITOR_DEF_PREPROCESS_COLOR "ForestGreen" #define EDITOR_DEF_MACRO_COLOR "ForestGreen" #define EDITOR_DEF_GTK_COLOR "indian red" #define EDITOR_DEF_COMMENT_FONT "courier 12" #define EDITOR_DEF_CONST_FONT "courier 12" #define EDITOR_DEF_KEY_FONT "courier bold 12" #define EDITOR_DEF_MACRO_FONT "courier 12" #define EDITOR_DEF_PREPROCESS_FONT "courier bold 12" #define EDITOR_DEF_GTK_FONT "courier 12" #define EDITOR_DEF_TIMEDSAVE "0" #define EDITOR_DEF_BACKUP "yes" #define EDITOR_DEF_TAB "4" // unit #define UNIT_DEF_COUNT 1 #define UNIT_DEF_NAME (char*) "unit" #define UNIT_DEF_CC_EXT (char*) ".cc" #define UNIT_DEF_H_EXT (char*) ".h" // project #define PROJECT_DEF_COUNT 1 #define PROJECT_DEF_NAME (char*) "project" #define PROJECT_DEF_PRJ_EXT (char*) ".prj" #define PROJECT_DEF_HIDE_ON_RUN (char*) "no" #define PROJECT_AUTOSAVE (char*) "no" #define PROJECT_STARTUPDIR (char*) "home" #define PROJECT_WI_RESIZEABLE (char*) "no" #define PROJECT_WI_LAYOUT (char*) "0" #define PROJECT_VDK_REF_PATH (char*) "?" #define PROJECT_VDK_REF_BROWSER (char*) "netscape" #define PROJECT_SAVE_SESSION (char*) "no" #define PROJECT_CODE_INDENT (char*) "yes" #define PROJECT_RUN_MODAL (char*) "yes" #define PROJECT_EMACS (char*) "no" #define PROJECT_THEME (char*) "no" #define PROJECT_CODE_AUTOINDENT (char*) "no" #define PROJECT_SHOWLN (char*) "no" #define PROJECT_EXTASCII (char*) "yes" #define PROJECT_ENABLE_CLASS_BROWSER (char*) "no" /////// for project /////////////// class VDKBProjectDefaults { public: int count; VDKString def_name,prj_ext,hide_on_run, autosave,startupdir,wi_resizeable,wi_layout,vdk_ref_path,vdk_ref_browser, save_session, code_indent, run_modal, emacs,code_autoindent, showln, extascii,theme,enable_class_browser; public: VDKBProjectDefaults(): count(PROJECT_DEF_COUNT), def_name(PROJECT_DEF_NAME), prj_ext(PROJECT_DEF_PRJ_EXT), hide_on_run(PROJECT_DEF_HIDE_ON_RUN), autosave(PROJECT_AUTOSAVE), startupdir(PROJECT_STARTUPDIR), wi_resizeable(PROJECT_WI_RESIZEABLE), wi_layout(PROJECT_WI_LAYOUT), vdk_ref_path(PROJECT_VDK_REF_PATH), vdk_ref_browser(PROJECT_VDK_REF_BROWSER), save_session(PROJECT_SAVE_SESSION), code_indent(PROJECT_CODE_INDENT), run_modal(PROJECT_RUN_MODAL), emacs(PROJECT_EMACS), code_autoindent(PROJECT_CODE_AUTOINDENT), showln(PROJECT_SHOWLN), extascii(PROJECT_EXTASCII), theme(PROJECT_THEME), enable_class_browser(PROJECT_ENABLE_CLASS_BROWSER) {} void LoadDefaults(char* section); ~VDKBProjectDefaults() {} }; /////// for editor //////////////// class VDKBEditorDefaults { public: VDKString font, fg, bg; VDKPoint size; VDKString key_font,key_color, gtk_font,gtk_color, macro_font,macro_color, preprocess_font, preprocess_color, const_font,const_color, comment_font,comment_color, timedsave,backup, tab; public: VDKBEditorDefaults(): font(EDITOR_DEF_FONT), fg(EDITOR_DEF_FG), bg(EDITOR_DEF_BG), size(EDITOR_DEF_SIZE), key_font(EDITOR_DEF_KEY_FONT), key_color(EDITOR_DEF_KEY_COLOR), gtk_font(EDITOR_DEF_GTK_FONT), gtk_color(EDITOR_DEF_GTK_COLOR), macro_font(EDITOR_DEF_MACRO_FONT), macro_color(EDITOR_DEF_MACRO_COLOR), preprocess_font(EDITOR_DEF_PREPROCESS_FONT), preprocess_color(EDITOR_DEF_PREPROCESS_COLOR), const_font(EDITOR_DEF_CONST_FONT), const_color(EDITOR_DEF_CONST_COLOR), comment_font(EDITOR_DEF_COMMENT_FONT), comment_color(EDITOR_DEF_COMMENT_COLOR), timedsave(EDITOR_DEF_TIMEDSAVE), backup(EDITOR_DEF_BACKUP), tab(EDITOR_DEF_TAB) {} void LoadDefaults(char* section); ~VDKBEditorDefaults() {} }; ///// for units /////////////// class VDKBUnitDefaults { public: int count; VDKString def_name,cc_ext,h_ext; public: VDKBUnitDefaults(): count(UNIT_DEF_COUNT), def_name(UNIT_DEF_NAME), cc_ext(UNIT_DEF_CC_EXT), h_ext(UNIT_DEF_H_EXT) {} void LoadDefaults(char* section); ~VDKBUnitDefaults() {} }; ////////// all defaults ///////////// class VDKBDefaults { VDKString rcFile; public: VDKBEditorDefaults editor; VDKBUnitDefaults unit; VDKBProjectDefaults project; // VDKBDefaults(char* resFile = NULL); void LoadDefaults(char* home); ~VDKBDefaults() {} }; //////// #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_image.h0000644000000000000000000000466207334242625014274 /* * =========================== * VDK Builder * Version 2.0.0 * Revision 0.0 * August 2001 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_image_h #define _vdkb_image_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBImage: public VDKImage, public VDKBObject { protected: bool OnEnter(VDKObject* sender,GdkEvent* ev); bool OnLeave(VDKObject* sender,GdkEvent* ev); bool ButtonPressed(VDKObject* sender,GdkEvent* ev); VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKEntry *pixfile; VDKCustomButton *shortname; VDKCheckButton* bydata; VDKBObjectInspector* inspector; // object inspector public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBImage(char* name,VDKForm* owner, char* file); VDKBImage(char* name, VDKForm* owner, char** pixdata); virtual ~VDKBImage() {} virtual int Type() { return vdkbclass_image; } virtual char* VDKName() { return "VDKImage"; } virtual int isA() { return vdkbclass_image; } virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool DelWidget(VDKObject*); bool SetWidgetSize(VDKObject* sender); void PopMenu() { popmenu->Popup(); } virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); bool OnSetGlyph(VDKObject*); bool OnSetShortName(VDKObject*); bool OnToggleBydata(VDKObject*); DECLARE_SIGNAL_LIST(VDKBImage); DECLARE_EVENT_LIST(VDKBImage); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_interface.h0000644000000000000000000000325607252425523015147 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_interface_h #define _vdkb_interface_h #include #include /* abstract class for common interfaces subclasses must override pure virtual functions. */ class VDKBAbstractComponentInterface { public: virtual char* CreateSource(char* buffer, VDKBParser& parser) = 0; virtual bool CreateWidget(VDKBGuiForm* owner, char* buffer, VDKBParser& parser) = 0; virtual int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) = 0; virtual const char **Icon() { return (const char**) NULL; } virtual const char* Tip() { return (const char*) NULL; } virtual const char* VDKName() { return "VDKObject"; } }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_locale.h0000644000000000000000000000651707422633275014455 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_locale_h #define _vdkb_locale_h #include #include #include #include #define FOLDER_WIDGET_TITLES 5 #define MAIN_TOOLBAR_TIPS 7 #define MAIN_TOOLBAR1_TIPS 4 #define MAIN_MENU_PROMPTS 45 #define CONTAINER_WIDGETS_TIPS 14 #define BUTTON_WIDGETS_TIPS 4 #define TEXT_WIDGETS_TIPS 3 #define MISC_WIDGETS_TIPS 13 #define GNOME_WIDGETS_TIPS 3 #define DLG_WIDGETS_TIPS 5 #define ABOUT_DLG_TEXT 5 #define VDKB_STATUS 1 #define STATE_READY 0 #define USER_MESSAGES 13 #define EDITOR_PROMPTS 10 #define PRJMAN_PROMPTS 6 #define PRJ_STATUS 3 #define FILE_DIALOG_PROMPTS 5 #define PRJWIZ_PROMPTS 15 #define VDKBMAKER_PROMPTS 4 #define PRJOPTIONS_PROMPTS 13 #define SEARCH_DIALOG_PROMPTS 21 #define REPLACE_DIALOG_PROMPTS 25 //////////////////////////////// extern char **main_toolbar_pixmaps[]; extern char **main_toolbar1_pixmaps[]; extern char **main_menu_pixmaps[]; extern char *main_toolbar_tips[] ; extern char *main_toolbar1_tips[] ; extern char *main_menu_prompts[] ; extern char *folder_widget_titles[]; extern char **container_widgets_pixmaps[]; extern char *container_widgets_tips[]; extern char **button_widgets_pixmaps[]; extern char *button_widgets_tips[]; extern char **text_widgets_pixmaps[]; extern char *text_widgets_tips[]; extern char **misc_widgets_pixmaps[]; extern char *misc_widgets_tips[]; extern char **gnome_widgets_pixmaps[]; extern char *gnome_widgets_tips[]; extern char **xdb_widgets_pixmaps[]; extern char *xdb_widgets_tips[]; extern char **dlg_widgets_pixmaps[]; extern char *dlg_widgets_tips[]; ///////////////////////////////// extern char *user_messages[]; extern char *about_dlg_text[]; extern char *vdkb_status[]; extern char *editor_prompts[]; extern char *prjman_prompts[]; extern char **prjman_pixmaps[]; extern char *prj_status[]; extern char *file_dialog_prompts[]; extern char *prjwiz_prompts[]; extern char *vdkbmaker_prompts[]; extern char *prjoptions_prompts[]; extern char *search_dialog_prompts[]; extern char *replace_dialog_prompts[]; void LoadInternational(int language, char* home); void FreeInternational(); // user messages enum { user_can_close = 0, user_ok, user_no, user_cancel, user_nodefaults, user_request_save, user_unknown_unit, user_unknown_unit1, user_cant_close, user_cant_load_project, user_incorrect_project, user_cant_remove_unit, user_dup_unit }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_logo.h0000644000000000000000000000271507443645776014166 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_logo_h #define _vdkb_logo_h #include #include class ProgressForm; class VDKBLogo: public VDKForm { VDKTimer *timer; ProgressForm* progress; // VDKFrame* frame; VDKLabel* label; public: VDKBLogo(VDKForm* owner); ~VDKBLogo(); void Setup(); bool OnTimer(VDKObject*); void OnShow(VDKForm* sender); void ShowMessage(char* msg); DECLARE_SIGNAL_MAP(VDKBLogo); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_lru.h0000644000000000000000000000334207252425525014007 /* * ============ * VDK Builder * Version 1.2 * Revision 4 * October 2000 * ============ * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_lru_h_ #define _vdkb_lru_h_ #include class LRUItem { VDKString filename; public: LRUItem(char* fn): filename(fn) {}; ~LRUItem() {} char* Name() { return (char*) filename; } bool operator==(LRUItem& i) { return filename == i.filename; } bool operator<(LRUItem& i) { return filename < i.filename; } }; typedef VDKValueList LRUValueList; typedef VDKValueListIterator LRUItemsIterator; class LRUItems : public LRUValueList { public: LRUItems() : LRUValueList() {} ~LRUItems() {}; }; class LRUManager { LRUItems itemlist; public: LRUManager(); ~LRUManager(); void Init(); LRUItems& ItemList() { return itemlist; } bool Load(const char*); bool Save(); bool Update(char* project); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_maker.h0000644000000000000000000000254307252425526014307 #ifndef _vdkb_maker_h #define _vdkb_maker_h #include #include #include #include #include #include #include #include #include #include #include "input.h" #define IO_NONE 0 #define IO_STDOUT 1 #define IO_STDERR 2 #define MAX_BUFF 1024 class VDKBMaker: public VDKForm { private: // gui VDKInput *inp1,*inp2; VDKTextView *text,*errtext; // VDKToolbar * toolbar; // guchar io; pid_t pid; char **args; VDKBStringList* errlist; int status; bool hide_on_run; // wheter hide or not VDKBuilder on run int outlist; // load message list: 0 = stderr, 1 = stdout // response void quit(void); bool DoIO (VDKObject*); bool CanClose(void); public: static void reaper(int); VDKBMaker(VDKForm* app, char **args, VDKBStringList* list, bool hide_on_run = false, int outlist = 0); ~VDKBMaker() { } static VDKBMaker *self; void Setup(void); inline int Pid() { return pid; } inline void Pid(int p) { pid = p; } void runcmd (void); bool HandleToolbar(VDKObject*); bool OnTextRealize(VDKObject* sender); void OnShow(VDKForm*); int ChildStatus() {return status;} void ChildStatus(int sts) {status = sts;} VDKBStringList* ErrorList() { return errlist; } DECLARE_SIGNAL_MAP(VDKBMaker); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_menu.h0000644000000000000000000000531307252425526014152 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_menu_h #define _vdkb_menu_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBObjectInspector; class VDKBMenu: public VDKBEventContainer { VDKMenu *popmenu; VDKMenuItem *delBox; VDKMenuItem *addmenuitem,*prependmenuitem,*insertmenuitem, *delwidget,*setsize; void Init(); public: static int Counter; static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); bool Locked; VDKBMenu(char* name, VDKForm* owner); VDKBMenu(char* name, VDKBEventContainer* outer); virtual ~VDKBMenu() {} void Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs); void AddBox(); void AddWidget(VDKObject* w, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 0, bool forceArgs = false); bool AddMenuItem(VDKObject* sender); bool PrependMenuItem(VDKObject* sender); bool InsertMenuItem(VDKObject* sender); void PopMenu() { popmenu->Popup(); } bool DelBox(VDKObject* sender); bool SetBoxSize(VDKObject* sender); bool OnButtonPressed(VDKObject*, GdkEvent*); bool OnButtonReleased(VDKObject*, GdkEvent*); bool OnLeave(VDKObject* sender, GdkEvent* ev); bool OnEnter(VDKObject* sender, GdkEvent* ev); virtual int Type() { return vdkbmenu_class; } virtual int isA() { return vdkbmenu_class; } virtual char* VDKName() { return "VDKMenu"; } void WriteOnFrm(FILE* fp, VDKBObject* parentobj); // DECLARE_EVENT_LIST(VDKBMenu); DECLARE_SIGNAL_LIST(VDKBMenu); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_menubar.h0000644000000000000000000000552107257643314014642 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_menubar_h #define _vdkb_menubar_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBObjectInspector; class VDKBMenubar: public VDKBEventContainer { protected: VDKMenuItem *delBox; VDKMenuItem *addmenuitem,*prependmenuitem,*insertmenuitem, *delwidget,*setsize; // property controls used by object inspector VDKEntry *label; VDKCombo* shadow; VDKCustomButton* set; void Init(); VDKMenu* popmenu; public: static int Counter; static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); VDKBMenubar(char* name, VDKForm* owner); VDKBMenubar(char* name, VDKBEventContainer* outer); virtual ~VDKBMenubar() {} void Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs); void AddBox(); void AddWidget(VDKObject* w, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 0, bool forceArgs = false); bool AddMenuItem(VDKObject* sender); bool PrependMenuItem(VDKObject* sender); bool InsertMenuItem(VDKObject* sender); void PopMenu() { popmenu->Popup(); } bool DelBox(VDKObject* sender); bool OnButtonPressed(VDKObject*, GdkEvent*); bool OnButtonReleased(VDKObject*, GdkEvent*); virtual int Type() { return vdkbmenubar_class; } virtual int isA() { return vdkbmenubar_class; } virtual char* VDKName() { return "VDKMenubar"; } void WriteOnFrm(FILE* fp, VDKBObject* parentobj); VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool SetBoxSize(VDKObject* sender); bool OnSetShadow(VDKObject*); // DECLARE_EVENT_LIST(VDKBMenubar); DECLARE_SIGNAL_LIST(VDKBMenubar); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_menuitem.h0000644000000000000000000000607507336121666015040 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_menuitem_h #define _vdkb_menuitem_h #include #include #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBMenuItem: public VDKMenuItem, public VDKBObject { protected: VDKMenu* popmenu; // VDKMenuItem *setsize,*delwidget; VDKEntry *pixfile,*caption; VDKCheckButton *checked; VDKCustomButton *shortname; VDKCheckButton* bydata; VDKBObjectInspector* inspector; // object inspector bool SetBoxSize(VDKObject* sender); void InvokeMenuItemInspector(); public: // weird here isn't a container but can have childs !! EventBoxList boxlist; bool Locked; static int Counter; static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); void AddWidget(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs); VDKBMenuItem(char* name, VDKForm* owner, char* prompt = NULL); virtual ~VDKBMenuItem() {} virtual int Type() { return vdkbclass_menuitem; } virtual char* VDKName() { return "VDKMenuItem"; } virtual int isA() { return vdkbclass_menuitem; } virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool DelWidget(VDKObject*); bool SetWidgetSize(VDKObject* sender); bool AddMenu(VDKObject* sender); void PopMenu() { popmenu->Popup(); } virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); bool OnSetGlyph(VDKObject*); bool OnSetShortName(VDKObject*); bool OnToggleBydata(VDKObject*); bool OnSetCaption(VDKObject*); bool OnSetChecked(VDKObject*); bool RepackWidget(VDKObject*); bool OnEnter(VDKObject* sender,GdkEvent* ev); bool OnLeave(VDKObject* sender,GdkEvent* ev); bool UnlockMenu(VDKObject* sender); bool ButtonPressed(VDKObject* sender,GdkEvent* ev); bool ButtonReleased(VDKObject* sender, GdkEvent* ev); bool SetProperties(VDKObject*); bool DelBox(VDKObject* sender); DECLARE_SIGNAL_LIST(VDKBMenuItem); DECLARE_EVENT_LIST(VDKBMenuItem); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_nbook.h0000644000000000000000000000256607252425531014321 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * December 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_nbook_h #define _vdkb_nbook_h #include #include class VDKBNotebook: public VDKNotebook { // void SetStyle(VDKBText* text, bool hilite); public: VDKBNotebook(VDKForm* owner); ~VDKBNotebook(); // void AddNewUnit(VDKBText* text, char* ext); void AddText(VDKBText* text, char* text_name,bool hilite); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_PWizard.h0000644000000000000000000000673207614220473014570 /* * =========================== * VDK Builder * Version 2.0 * March 2001 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_PWizard_main_form_h_ #define _vdkb_PWizard_main_form_h_ #ifdef HAVE_CONFIG_H #include #endif // vdk support #include #define MAX_STEP 1 typedef struct VDKBNewProjectInfo { VDKString prjname,author,email; bool isValid,gpld; int type; }; // Vdkb_PWizard FORM CLASS class Vdkb_PWizardForm: public VDKForm { // gui object declarations private: // gui object declarations void GUISetup(void); void SetPaths (void); VDKFrame* steps[MAX_STEP+1]; int activeStep; VDKBNewProjectInfo* info; public: Vdkb_PWizardForm(VDKForm* owner, char* title, VDKBNewProjectInfo* info = NULL); ~Vdkb_PWizardForm(); void Setup(void); /* gui setup include do not patch below here */ /* vdkb_PWizard gui header */ protected: VDKBox* vbox4; protected: VDKFrame* step1frame; protected: VDKBox* step1; protected: VDKEventBox* iconbox; protected: VDKPixmap* vdk_pix; protected: VDKPixmap* console_pix; protected: VDKPixmap* gnome_pix; protected: VDKRadioButtonGroup* prjtypegroup; protected: VDKRadioButton* vdk; protected: VDKRadioButton* console; protected: VDKRadioButton* gnome; protected: VDKFrame* frame1; protected: VDKEventBox* labelbox; protected: VDKLabel* prj_info_label; protected: VDKFrame* step2frame; protected: VDKFixed* step2; protected: VDKLabel* label1; protected: VDKLabel* label2; protected: VDKLabel* label3; protected: VDKEntry* prjroot; protected: VDKEntry* prjname; protected: VDKEntry* abspath; protected: VDKCustomButton* browsedir; protected: VDKSeparator* separator1; protected: VDKTextView* filestree; protected: VDKSeparator* separator2; protected: VDKBox* buttonsbox; VDKEntry* author,*email; VDKCheckButton* gpld; /* protected: VDKCustomButton* prev; protected: VDKCustomButton* next; protected: VDKCustomButton* finish; protected: VDKCustomButton* cancel; */ protected: VDKHLButton* prev; protected: VDKHLButton* next; protected: VDKHLButton* finish; protected: VDKHLButton* cancel; public: DECLARE_SIGNAL_MAP(Vdkb_PWizardForm); bool OnprevClick(VDKObject* sender); bool OnnextClick(VDKObject* sender); bool OncancelClick(VDKObject* sender); bool OnrbgroupToggled(VDKObject* sender); bool OnbrowsedirClick(VDKObject* sender); bool OnprjnameChanged(VDKObject* sender); bool OnprjrootChanged(VDKObject* sender); bool OnfinishClick(VDKObject* sender); /* declaring signal and events dynamics tables */ DECLARE_SIGNAL_LIST(Vdkb_PWizardForm); DECLARE_EVENT_LIST(Vdkb_PWizardForm); }; #endif // do not remove this mark: #!# // end of file:vdkb_PWizard.h vdkbuilder2-2.4.0/include/vdkb2/vdkb_notebook.h0000644000000000000000000000642507252425533015031 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_guinotebook_h #define _vdkb_guinotebook_h #include #include #include #include #include #include typedef VDKList NBookPages; typedef VDKListIterator NBookPagesIterator; typedef VDKValueList TabLabelList; typedef VDKValueListIterator TabLabelListIterator; class VDKBGuiForm; class VDKBParser; class VDKBObjectInspector; class VDKBGuiNotebook: public VDKBEventContainer { protected: NBookPages pagelist; VDKMenuItem *delBox; VDKMenuItem *addwidget,*delpage,*delwidget,*setsize; TabLabelList tablabels; // property controls used by object inspector VDKCheckButton *scrollable,*popup; void Init(); bool LoadTabLabels(char* buffer,VDKBParser& parser); public: VDKNotebook* nbook; VDKEntry *tablabel; static int Counter; static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); VDKBGuiNotebook(char* name, VDKForm* owner); VDKBGuiNotebook(char* name, VDKBEventContainer* outer); virtual ~VDKBGuiNotebook() { nbook->Destroy(); } void Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs); void AddBox(); void AddWidget(VDKObject* w, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 0, bool forceArgs = false); bool AddNewWidget(VDKObject* sender); void PopMenu() { popmenu->Popup(); } bool DelBox(VDKObject* sender); bool OnButtonPressed(VDKObject* sender, GdkEvent* event); virtual int Type() { return vdkbguinotebook_class; } virtual int isA() { return vdkbguinotebook_class; } virtual char* VDKName() { return "VDKNotebook"; } void WriteOnFrm(FILE* fp, VDKBObject* parentobj); VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool OnSetTabLabel(VDKObject*); bool OnSetScrollable(VDKObject*); bool OnSetPopUp(VDKObject*); bool SetBoxSize(VDKObject* sender); bool AddNewPage(VDKObject* sender); bool RemovePage(VDKObject* sender); // DECLARE_EVENT_LIST(VDKBGuiNotebook); DECLARE_SIGNAL_LIST(VDKBGuiNotebook); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_object.h0000644000000000000000000001211607422633274014453 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_object #define _vdkb_object #include #include #include // for common events #define CONNECT_COMMON_EVENTS \ EventConnect("expose_event",&VDKBObject::BaseExposeEvent,true);\ EventConnect("button_press_event",&VDKBObject::ButtonPressed);\ EventConnect("button_release_event",&VDKBObject::ButtonReleased);\ EventConnect("enter_notify_event",&VDKBObject::OnEnter);\ EventConnect("leave_notify_event",&VDKBObject::OnLeave); /* gtk_widget_set_events(WrappedWidget(),GDK_POINTER_MOTION_MASK);\ EventConnect("motion_notify_event",&VDKBObject::OnMouseMove); */ class VDKBParser; // vdkbclass class type enum #define VDKB_GUI_CLASSES_OFFSET 1024 #define VDKBUILDER_CLASSES_OFFSET 2048 enum { vdkbclass_object = 0, /* specific vdkbuilder gui class */ vdkbclass_evcontainer = 512, /* gui object classes */ vdkbclass_form = 1024, vdkbclass_gnomeform, vdkbclass_panedform, // obsolete vdkbclass_labelbutton, // obsolete vdkbclass_label, vdkbclass_pixmap, vdkbclass_image, vdkbclass_menuitem, vdkbclass_textwidget, vdkbclass_entry, vdkbclass_pixmapbutton, // obsolete vdkbclass_clist, vdkbclass_ctree, vdkbclass_sep, vdkbclass_rbgroup, vdkbclass_guicanvas, vdkbclass_combo, vdkbclass_checkbutton, vdkbclass_radiobutton, vdkbclass_spinbutton, vdkbclass_progressbar, vdkbclass_custombutton, vdkbclass_sbar, vdkbclass_grid, vdkbclass_slider, vdkbclass_placeholder, // vdkbclass_treeview, // gnome vdkbclass_gnomeappbar, vdkbclass_date_edit, vdkbclass_gnomeentry, // xdb vdkbclass_xentry, vdkbclass_xcheckbutton, vdkbclass_xclist, vdkbclass_xmemo, // end of non-containers widgets vdkbclass_none, /* gui containers classes */ vdkbcanvas_class = 2048, vdkbevbox_class, vdkbframe_class, vdkbscrolled_class, vdkbmenubar_class, vdkbmenu_class, vdkbpaned_class, vdkbguinotebook_class, vdkbtoolbar_class, vdkbtable_class, vdkbhandlebox_class, // vdkbpacker_class, // unused vdkbfixed_class }; //=========================================================== class VDKBObjectInspector; class VDKBGuiForm; class VDKBObject { // plm private: bool Marked; protected: VDKBPropertyList proplist; VDKBSignalList siglist; VDKString name; VDKObject* object; void WriteBgProp(char* propname, GtkStateType state, FILE* fp); static VDKString nihil_property; public: VDKBObject(char* name); VDKBObject(char* name, VDKObject* o); virtual ~VDKBObject(); void SetPropValue(const char* prop, const char* value); VDKString& GetProp(char* prop); virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); void WriteCommonOnFrm(FILE* fp, VDKBObject* parentobj); void WriteOnFrmEnd(FILE* fp); virtual VDKString& Name(char* s = NULL) { if(s) name = s; return name; } virtual bool AddToParent(VDKObject* obj, GdkEvent* ev); virtual int Type() { return vdkbclass_object; } virtual int isA() { return object ? object->isA() : -1; } virtual char* VDKName() { return "VDKObject"; } // place holders for subclasses virtual void PopMenu() {} virtual void PopObjectBrowser(); virtual void Mark(); virtual void ClearMark(); static int Counter() { return 0; } virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); VDKBPropertyList& PropList() { return proplist; } VDKBSignalList& SignalList() { return siglist; } // accessing to underlying vdk object VDKObject* ObjectFromVDK() { return object; } operator VDKObject*() { return object; } static char* CreateSource(char* buffer,VDKBParser& parser,char* obj_name); static void CreateWidget(VDKBObject* gui_object, char* buffer,VDKBParser& parser); // virtual signal handlers void SetupSignals(VDKObject*); bool ButtonPressed(VDKObject* sender, GdkEvent* ev); bool ButtonReleased(VDKObject* sender, GdkEvent* ev); bool OnEnter(VDKObject* sender, GdkEvent* ev); bool OnLeave(VDKObject* sender, GdkEvent* ev); bool OnMouseMove(VDKObject* sender, GdkEvent* ev); bool HandleFixed(VDKObject* sender, GdkEventButton *event); bool BaseExposeEvent(VDKObject* sender, GdkEvent* ev); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_objinspect.h0000644000000000000000000001064307614220475015346 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_object_inspector_h #define _vdkb_object_inspector_h #include #include class VDKBEventBox; class VDKBObjectInspector: public VDKForm { protected: VDKEntry* name; VDKBObject* active; // active widget VDKCombo *colortypecombo; VDKNotebook *nbook; VDKCustomList *sigtable,*evtable; VDKCombo *sigcombo; VDKCustomButton* add_remove_event; VDKBox *sigpageBox,*evpageBox; VDKTable* connectTable; VDKBox* MakeSignalsPage(); VDKArray connectButtons; VDKArray slots; VDKArray sigEntries; VDKMenu* popmenu,*treepopmenu; VDKMenuItem *delConnection,*dropwidget; VDKEntry* font; VDKCheckButton *enabled,*visible,*fill,*expand,*declarePublic; VDKSpinButton *padding; VDKCustomButton *repackButton, *fontButton,*nameButton,*justifyButton,*tipButton,*tagButton, *set_tag,*mul_connect; VDKCustomButton *colorButton,*restoreDefaultButton; VDKCombo *justification; VDKFrame* subclassFrame,*CommonPropertiesFrame; VDKEntry *tip,*tag; VDKBox* mainbox; VDKPaned* mainpane; VDKDockerBox* dockerbox; VDKTable* CommonPropertyTable; void LoadStaticTable(); void SetSlotEntries(); void DisableInspector(); bool LoadRGB(StringList& colors); VDKBox* MakePropertiesPage(); VDKBox* MakeWidgetsTreePage(); VDKBox* MakeFormEventsPage(); VDKObjectContainer* extrawidget; VDKString oldWidgetName; VDKHLButtonBar *treeToolbar; public: bool ForceToClose; VDKCheckButton *preview; VDKCustomTree *WidgetsTree; VDKBObjectInspector(VDKForm* owner, VDKBObject* active, char* title = "", int mode = v_box, GtkWindowType display = GTK_WINDOW_TOPLEVEL); virtual ~VDKBObjectInspector(); void Setup(); void SetActive(VDKBObject* act, bool loadWidgetsTree = true); void RemoveExtraWidget(); void AddExtraWidget(VDKObjectContainer* wid); void OnShow(VDKForm*); void FormNeedToBeChanged(bool flag = true); void LoadTree(VDKBGuiForm* owner); void SelectWidgetByTree(VDKBObject* object); bool OnChangeColor(VDKObject*); bool OnRestoreDefaultStyle(VDKObject* sender); bool SetWidgetName(VDKObject*); bool OnPageSwitch(VDKObject*); // can be closed only by project manager bool CanClose(); bool OnSignalListButtonPress(VDKObject* sender, GdkEvent* event); bool OnWidgetsTreeButtonPress(VDKObject* sender, GdkEvent* event); bool DeleteConnection(VDKObject* sender); bool OnSelectTable(VDKObject*); bool OnSelectEventTable(VDKObject*); bool ConnectToFormEvent(VDKObject*); bool OnActivateSlotName(VDKObject* sender); bool OnConnectSignal(VDKObject* sender); bool OnSelectVisible(VDKObject*); bool OnSelectEnabled(VDKObject*); bool OnSelectFont(VDKObject*); bool RepackWidget(VDKObject*); bool SetWidgetTip(VDKObject*); bool ColorSelectionChanged(VDKObject*); bool OnSelectPreview(VDKObject*); bool OnSelectWidgetsTree(VDKObject*); bool DropWidget(VDKObject*); bool OnClickColumnWidgetsTree(VDKObject*); bool OnJumpToFormEventHandler(VDKObject*); bool OnMultipleConnect(VDKObject*); bool SetWidgetTag(VDKObject*); bool OnDeclarePublic(VDKObject*); static void OnTreeMove (GtkCTree *ctree, GtkCTreeNode *child, GtkCTreeNode *parent, GtkCTreeNode *sibling, gpointer data); bool OnToolbarClicked(VDKObject* sender); void PasteOthers(VDKBObject* selected_object); bool OnDocked(VDKObject*); DECLARE_SIGNAL_LIST(VDKBObjectInspector); DECLARE_SIGNAL_MAP(VDKBObjectInspector); DECLARE_EVENT_LIST(VDKBObjectInspector); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_orderdlg.h0000644000000000000000000000340207252425536015006 /* * =========================== * VDK Builder * Version 1.0.3 * November 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_orderdlg_h #define _vdkb_orderdlg_h #include #include class Vdkb_reorderdlgForm: public VDKForm { // gui object declarations private: // vdkbuilder reserved gui construction void GUISetup(void); EventBoxList* boxlist; int* pos; public: Vdkb_reorderdlgForm(VDKForm* owner, EventBoxList* boxlist, int* pos, char* title); ~Vdkb_reorderdlgForm(); void Setup(void); protected: VDKBox* vbox1; VDKCustomList* widgetList; VDKSeparator* separator0; VDKBox* hbox2; VDKCustomButton* insertBtn; VDKCustomButton* cancelBtn; public: DECLARE_SIGNAL_MAP(Vdkb_reorderdlgForm); bool OninsertBtnClick(VDKObject* sender); bool OncancelBtnClick(VDKObject* sender); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_paned.h0000644000000000000000000000511607252425540014272 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_paned_h #define _vdkb_paned_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBObjectInspector; class VDKBPaned: public VDKBEventContainer { VDKMenuItem *delBox; VDKMenuItem *addwidget,*delwidget,*setsize; // property controls used by object inspector VDKEntry *label; void Init(); public: static int Counter; static int MakeWidgetH(VDKBGuiForm* owner, GdkEvent* ev = NULL); static int MakeWidgetV(VDKBGuiForm* owner, GdkEvent* ev = NULL); static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer, VDKBParser& parser); VDKBPaned(char* name, VDKForm* owner, int mode); VDKBPaned(char* name, VDKBEventContainer* outer, int mode); virtual ~VDKBPaned() {} void Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs); void AddBox(); void AddWidget(VDKObject* w, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 0, bool forceArgs = false); bool AddNewWidget(VDKObject* sender); void PopMenu() { popmenu->Popup(); } bool DelBox(VDKObject* sender); virtual int Type() { return vdkbpaned_class; } virtual int isA() { return vdkbpaned_class; } virtual char* VDKName() { return "VDKPaned"; } void WriteOnFrm(FILE* fp, VDKBObject* parentobj); VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool SetBoxSize(VDKObject* sender); // DECLARE_EVENT_LIST(VDKBPaned); DECLARE_SIGNAL_LIST(VDKBPaned); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_parser.h0000644000000000000000000000476307414212203014474 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_parser_h #define _vdkb_parser_h #include #include #include #include typedef VDKValueList SymbolList; typedef VDKValueListIterator SymbolListIterator; class VDKBParser { VDKString fname; char* buffer; public: SymbolList decSymbols; VDKBParser(char* fname); virtual ~VDKBParser(); char* Buffer() { return buffer; } int ClassName(char* name); char* GetObject(char* name); char* GetWidget(char* name); char* GetObjectName(char* object,char* tgt); char* GetObjectClass(char* object,char* tgt); char* GetParam( char* arg, // target char* object, // object buffer char* param); // param name bool GetNameAndParent(char* pars_buff, char* obj_name, char* obj_parent); void WriteCodeToPack(char* obj_parent, char* obj_name, char* source, char* buffer, char* tmp, bool viewport = true); void WriteVisible(char* obj_name, char* arg, char* source, char* buffer, char* tmp); #if USE_XDB void WriteXDBAssignCode(char* objname, char* assigntable, char* assignfiedl, char* source, char* tmp); void WriteXDBClistAssignCode(char* obj_name, char* assigntable, char* assignfield, char* source, char* tmp); bool CheckXDBSupport(int mode); #endif bool CheckNLSSupport(); VDKPoint Size(char* object); VDKRgb Color(char*object, char* colortype); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_pbar.h0000644000000000000000000000462207252425541014131 /* * =========================== * VDK Visual Development Kit * Version 0.4 * October 1998 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_pbar_h #define _vdkb_pbar_h #include #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBProgressBar: public VDKBEvProgressBar, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKBObjectInspector* inspector; VDKSpinButton * blockcount; VDKCombo* barstyle,*barorient; VDKCheckButton *activitymode; VDKEntry *min,*max; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBProgressBar(char* name,VDKForm* owner, float min = 0.0, float max = 1.0); virtual ~VDKBProgressBar() {} virtual int Type() { return vdkbclass_progressbar; } virtual char* VDKName() { return "VDKProgressBar"; } virtual int isA() { return vdkbclass_progressbar; } void PopMenu() { popmenu->Popup(); } // designer virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); bool OnSetMin(VDKObject*); bool OnSetMax(VDKObject*); bool OnSetBlockCount(VDKObject*); bool OnSetBarStyle(VDKObject*); bool OnSetBarOrient(VDKObject*); bool OnSetActivityMode(VDKObject*); DECLARE_SIGNAL_LIST(VDKBProgressBar); DECLARE_EVENT_LIST(VDKBProgressBar); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_pholder.h0000644000000000000000000000407107252425542014641 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.3 * July 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_pholder_h #define _vdkb_pholder_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBPlaceHolder: public VDKCanvas, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKBObjectInspector* inspector; VDKEntry *ctor; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBPlaceHolder(char* name,VDKForm* owner); virtual ~VDKBPlaceHolder() {} virtual int Type() { return vdkbclass_placeholder; } virtual char* VDKName() { return "VDKPlaceHolder"; } virtual int isA() { return vdkbclass_placeholder; } void PopMenu() { popmenu->Popup(); } // designer virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool OnSetCtor(VDKObject*); DECLARE_SIGNAL_LIST(VDKBPlaceHolder); DECLARE_EVENT_LIST(VDKBPlaceHolder); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_pixmap.h0000644000000000000000000000467507257643313014517 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_pixmap_h #define _vdkb_pixmap_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBPixmap: public VDKPixmap, public VDKBObject { protected: bool OnEnter(VDKObject* sender,GdkEvent* ev); bool OnLeave(VDKObject* sender,GdkEvent* ev); bool ButtonPressed(VDKObject* sender,GdkEvent* ev); VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKEntry *pixfile; VDKCustomButton *shortname; VDKCheckButton* bydata; VDKBObjectInspector* inspector; // object inspector public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBPixmap(char* name,VDKForm* owner, char* file); VDKBPixmap(char* name, VDKForm* owner, char** pixdata); virtual ~VDKBPixmap() {} virtual int Type() { return vdkbclass_pixmap; } virtual char* VDKName() { return "VDKPixmap"; } virtual int isA() { return vdkbclass_pixmap; } virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool DelWidget(VDKObject*); bool SetWidgetSize(VDKObject* sender); void PopMenu() { popmenu->Popup(); } virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); bool OnSetGlyph(VDKObject*); bool OnSetShortName(VDKObject*); bool OnToggleBydata(VDKObject*); DECLARE_SIGNAL_LIST(VDKBPixmap); DECLARE_EVENT_LIST(VDKBPixmap); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_plugin.h0000644000000000000000000000634707252425544014514 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_plugin_h #define _vdkb_plugin_h #include #include #include #include #include /* returns a pointer to an interface users should override it in subclasses */ extern "C" VDKBAbstractComponentInterface* GetExportClass(); //=============== PLUGINS ======================== /* this class is an interface with a component contained into a shared library */ class VDKBPlugin { protected: GModule *module; /* assigned during construction if NULL module is invalid */ VDKString lib_path,lib_name; VDKString module_name; //assigned during construction const char** icon; // assigned during construction (from module) VDKString tip; // assigned during construction VDKString error; // assigned during construction (from module) VDKBAbstractComponentInterface* interface; int id; /* assigned during construction and = PLUGIN_TOOL_BEGIN + ordinal number */ public: VDKBPlugin(char* libpath, char* libname); ~VDKBPlugin(); VDKBAbstractComponentInterface* Interface() { return interface; } bool DlOpen(); bool DlClose(); bool IsValid() { return module != (GModule*) NULL; } int Id() { return id; } void Id(int id) { VDKBPlugin::id = id; } const char** Icon() { return icon; } char* Tip() { return tip; } char* Error() { return (char*) error; } char* ModuleName() { return (char*) module_name; } char* LibName() { return (char*) lib_name; } char* PathName() { return (char*) lib_path; } void LibName(char* p) { lib_name = p; } void PathName(char* p) { lib_path = p; } }; //=============== PLUGIN LIST ====================== typedef VDKValueList VDKBPlugs; typedef VDKValueListIterator VDKBPluginListIterator; class VDKBPluginList : public VDKBPlugs { public: VDKBPluginList() {} ~VDKBPluginList() {} bool Load(char* file); bool Save(char* file); bool DlOpen(); bool DlClose(); // returns the interface of the loaded // plugin or // looking at interface vdk class name // NULL on failure VDKBAbstractComponentInterface* Interface(int id); VDKBAbstractComponentInterface* Interface(char *classname); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_prj.h0000644000000000000000000000516707434173762014014 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_prj_ #define _vdkb_prj_ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include ////////////////// VDKBProject class ///////////// typedef VDKList UnitList; typedef VDKListIterator UnitListIterator; class VDKBProject { UnitList units; bool LoadUnits(char* name); VDKForm* owner; VDKBProjectOptions options; public: // properties int Status; VDKString PathName; VDKString Path; VDKString Name; bool Valid; int Type; // a brand new project VDKBProject(VDKForm *owner,char* name, int type, char* author, char* email, bool gpld, bool flag); // a file loaded project VDKBProject(VDKForm *owner,char* name); ~VDKBProject(); //void Close() {} // to be implemented UnitList& Units() { return units; } // save as.. bool Save(char* name); // save bool Save(); bool CreateTemplatesFilesForVDK(int type); bool CreateTemplatesFilesForConsole(); bool WriteMainCC(FILE* fp, int type); bool WriteMainH(FILE* fp, int type); bool WriteMainCCForConsole(FILE* fp); #if USE_XDB void WriteXDBSetup(FILE* fp, char* name); #endif bool WriteMainHForConsole(FILE* fp); bool WriteMakefile(FILE* fp); bool WriteDfmFile(FILE* fp, int type); bool WriteGUISetup(FILE* fp, int type); bool WriteSourcesForAutomake(FILE* fp); void WriteGUISetupParsingFrm(FILE* fp, char* fname); void WriteGuiHeaderParsingFrm(FILE* fp, char* fname); void WriteGUIBoxesSetup(VDKBParser& parser, FILE* fp); VDKBProjectOptions* Options() { return &options; } public: }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_prjman.h0000644000000000000000000001222607614220474014473 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_prj_man_h #define _vdkb_prj_man_h #include #include #include #include #include #include ///////////////////////////////// // visual design part of // project manager code is in: // // - vdkb_createform.cc // - vdkb_design.cc ///////////////////////////////// typedef VDKList GFL; typedef VDKListIterator GuiFormListIterator; /* this list manages all gui child forms */ // code in vdkb_create_form.cc class GuiFormList : public GFL { public: GuiFormList() {} ~GuiFormList() {} // find child address looking at child name VDKBGuiForm* search(VDKString& name); void Iconize(); // iconize all gui childs void Restore(); // restore them void Destroy(); // let them to be closed void Close(); // close all childs }; //////////////////////////////////////////////////// typedef VDKList ProjectList; typedef VDKListIterator ProjectListIterator; //////////////////////////////////////////////////////// // stores active design form struct GUIActiveChild { VDKBGuiForm *child; // active child address VDKString name; // pathfilename extracted from path/file.frm }; /* */ class VDKBCustomTree: public VDKCustomTree { public: VDKBCustomTree(VDKForm* owner, int columns = 1, char **titles = NULL, GtkSelectionMode mode = GTK_SELECTION_SINGLE, int tree_column = 0): VDKCustomTree(owner,columns,titles,mode,tree_column) {} virtual ~VDKBCustomTree() {} // substitutes ancestor Find() // returns a list of node that contains // returned list should be freed by user. VDKTreeNodeList* Select(char* key); }; ///////////////////////////////////////////////////////// // class VDKBCCPane; // forward declaration of class viewer ///////////////////////////////////////////////////////// class VDKBProjectManager: public VDKForm { VDKNotebook *panebar; VDKBCustomTree *tree; VDKPanelbar *bar; // VDKToolbar *toolbar; VDKHLButtonBar *toolbar; VDKBProject *project; VDKTreeNode root; // VDKBCCPane *cpane; void LoadTree(); void RemoveUnit(); void AddUnitNode(VDKBUnit* unit); bool Unique(VDKBUnit*); GuiFormList formlist; // always updated active child infos bool AskSaveForm(char* name); public: bool ForceToClose; bool Changed; GUIActiveChild ActiveChild; VDKBObjectInspector* objInspector; // VDKBProjectManager(VDKForm* owner); ~VDKBProjectManager(); void Setup(); void AddNewProject(char*, int, char*, char* , bool, bool updatelru = true); void AddUnit(); void OnShow(VDKForm*); void OpenProject(char* filename = NULL, bool updatelru = true); bool Save(); bool CanClose(); void ActivateEditor(VDKTreeNode, bool editable = true, bool hilite = true); void ActivateEditor(char* text, bool editable = true, bool hilite = true); VDKBProject* Project() { return project; } VDKBGuiForm* CreateForm(char* name); GuiFormList* FormList() { return &formlist; } void WriteGuiFiles(bool ask = true); void LoadLastSession(void); bool SaveLastSession(); // received from active gui childs (VDKBGuiForm) void ChildResized(VDKBGuiForm* sender, VDKPoint& newsize); void ActivateChild(VDKBGuiForm* sender, bool active); // replacing on sources void ReplaceAllMatches(char* match, char* replace, char* textname, int offset = 0, // see vdkb_design.cc bool all = true); // if false replace only first match void DefineResponseMethod( char* textname, char* method); void DefineFormEventHandler( char* textname, char* handler); VDKBCustomTree * Tree() { return tree; } bool IsFormChanged(char* name); // in vdkb_design.cc void OnChildClosing(VDKForm* child); // signals bool OnSelectRow(VDKObject* obj); bool HandleToolbar(VDKObject* obj); static void OnTreeSelection(GtkWidget* wid, GtkCTreeNode* node, int column, gpointer gp); // events bool OnReleaseButton(VDKObject* obj, GdkEvent*); DECLARE_SIGNAL_MAP(VDKBProjectManager); DECLARE_EVENT_LIST(VDKBProjectManager); DECLARE_SIGNAL_LIST(VDKBProjectManager); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_prjopt.h0000644000000000000000000000537107445652416014534 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * January 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_prj_opt_h #define _vdkb_prj_opt_h #if HAVE_CONFIG_H #include #endif #if USE_XDB #include #include #endif #include #include #include #include #include #include // sections #define END_SECTION "}" #define DEVELOPER_SECTION "developer{" #define COMPILERS_SECTION "compilers{" #define LINK_SECTION "link{" #define C_FLAGS_SECTION "compile_flags{" #define DEFINES_SECTION "defines{" #define INCLUDES_SECTION "includes{" #define LIBS_SECTION "shared_libs{" #define DEBUGGER_SECTION "debugger{" #define PROGRAM_SECTION "program{" #define PACKAGE_SECTION "package{" #if USE_XDB #include #include #define XDB_SECTION "xdb_section{" #endif // keys #define END_KEY ";" #define AUTHOR "author:" #define EMAIL "email:" #define GPLD "gpld:" #define C_COMPILER "c_compiler:" #define CC_COMPILER "cc_compiler:" #define LINK "lnk:" #define C_FLAGS "c_flags:" #define DEFINES "def:" #define INCLUDES "include:" #define LIBS "so_libs:" #define DEBUGGER "use_db:" #define RUNARGS "args:" #define PKG_NAME "name:" #define PKG_VERSION "version:" #define NLS_SUPPORT "nls_support:" #if USE_XDB #define XDB_MAX_OPENTABLE 16 #define XDB_TABLE_OPEN "table:" #define XDB_INDEX_OPEN "index:" #endif class VDKBProjectOptions { int type; public: VDKString c_compiler,cc_compiler,link,c_flags, defines,includes,libs,debugger,runargs,package,version,nls_support; VDKString filename,author,email; bool gpld; VDKBProjectOptions(int type = vdk_project); ~VDKBProjectOptions(); bool Save(); bool Load(); }; #if USE_XDB extern bool SaveXdbOptions(VDKXDatabase* db, char* filename); #endif #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_prjpref.h0000644000000000000000000000312507257643312014655 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * January 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_prj_pref_h #define _vdkb_prj_pref_h #include class VDKBPrjPrefForm: public VDKForm { protected: VDKTable *table; VDKEntry *c_compiler, *cc_compiler, *link, *c_flags, *defines, *includes, *libs,*debugger,*runargs,*package,*version; VDKCheckButton* nls_support; VDKBProjectOptions *options; VDKCustomButton *ok,*cancel; bool Ok(VDKObject*); bool Cancel(VDKObject*); public: VDKBPrjPrefForm(VDKForm* owner, VDKBProjectOptions *options); virtual ~VDKBPrjPrefForm(); void Setup(); DECLARE_SIGNAL_MAP(VDKBPrjPrefForm); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_prop.h0000644000000000000000000000406407252425550014165 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_property #define _vdkb_property #include #include #define NIHIL_PROP (char*) "nihil" extern "C" { #include } //========================= class VDKBProperty { protected: VDKString name,value; public: VDKBProperty() {}; VDKBProperty(const char* n, const char* v = NULL): name(n),value(v ? v : NIHIL_PROP) { } ~VDKBProperty() {}; char* Value(const char* v = NULL) { if(v) value = v; return (char*) value; } char* Name() { return (char*) name; } VDKString& Property() { return value; } bool operator==(VDKBProperty& p) { return name == p.name; } bool operator<(VDKBProperty& p) { return name < p.name; } }; //=========================================================== typedef VDKValueList VDKBPList; typedef VDKValueListIterator VDKBPListIterator; //=========================================================== class VDKBPropertyList: public VDKBPList { protected: public: VDKBPropertyList() {} ~VDKBPropertyList(){} }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_radiobutton.h0000644000000000000000000000370307252425551015537 /* * =========================== * VDK Visual Development Kit * Version 0.4 * October 1998 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_radiobutton_h #define _vdkb_radiobutton_h #include #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBRadioButton: public VDKBCheckButton { public: static int OnButtonEvent(GtkWidget *w, GdkEvent* event, void* o); static int OnEnterEvent(GtkWidget *w, GdkEvent* event, void* o); static int OnLeaveEvent(GtkWidget *w, GdkEvent* event, void* o); static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); void WriteOnFrm(FILE* fp, VDKBObject* parentobj); VDKBRadioButton(char* name,VDKForm* owner, char* label, char* tip = NULL); virtual ~VDKBRadioButton() {} virtual int Type() { return vdkbclass_radiobutton; } virtual char* VDKName() { return "VDKRadioButton"; } virtual int isA() { return vdkbclass_radiobutton; } }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_rbgroup.h0000644000000000000000000000410307252425551014660 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_rbgroup_h #define _vdkb_rbgroup_h #include class VDKBRadioButtonGroup: public VDKBEventBox { protected: public: static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidgetH(VDKBGuiForm* owner, GdkEvent* ev = NULL); static int MakeWidgetV(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBRadioButtonGroup(char* name, VDKForm* owner, int mode = v_box, int w = 16, int h = 16); VDKBRadioButtonGroup(char* name, VDKBEventContainer* outer, int mode = v_box, int w = 16, int h = 16); virtual int Type() { return vdkbclass_rbgroup; } virtual char* VDKName() { return "VDKRadioButtonGroup"; } virtual int isA() { return vdkbclass_rbgroup; } virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); // void Init(); void Add(VDKObject* obj, int justify, int expand, int fill , int padding); void AddWidget(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs); virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_replace.h0000644000000000000000000000444107257643312014622 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * February 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_replace_h #define _vdkb_replace_h #include #include #include #include #include typedef VDKValueList SearchList; typedef VDKValueListIterator SearchListIterator; /* */ class VDKBReplaceForm: public VDKForm { VDKCombo *find_combo,*replace_combo; VDKCheckButton *casesens,*wholeword,*regex,*prompt; VDKRadioButtonGroup *direction,*scope,*origin; VDKCustomButton *ok,*replaceall,*cancel; VDKBText* text; static SearchList find_history; static SearchList replace_history; int ReplaceText(int pos, char* match, char* rep); public: VDKBReplaceForm(VDKForm* owner, VDKBText* text); virtual ~VDKBReplaceForm(); void Setup(); bool Ok(VDKObject*); bool Cancel(VDKObject*); bool ReplaceAll(VDKObject*); DECLARE_SIGNAL_MAP(VDKBReplaceForm); }; /* */ class VDKBReplaceDialog: public VDKForm { VDKLabel *label; VDKCustomButton *ok,*cancel,*no_button; int *answer; char *match,*rep;; public: VDKBReplaceDialog(VDKForm* owner, char *match, char* rep, int *answer); virtual ~VDKBReplaceDialog(); void Setup(); bool Ok(VDKObject*); bool No(VDKObject*); bool Cancel(VDKObject*); DECLARE_SIGNAL_MAP(VDKBReplaceDialog); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_sbar.h0000644000000000000000000000407707252425552014142 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.3 * July 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_statusbar_h #define _vdkb_statusbar_h #include #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBStatusbar: public VDKBEvStatusbar, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *delwidget; VDKBObjectInspector* inspector; VDKCombo* shadow; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBStatusbar(char* name,VDKForm* owner); virtual ~VDKBStatusbar() {} virtual int Type() { return vdkbclass_sbar; } virtual char* VDKName() { return "VDKStatusbar"; } virtual int isA() { return vdkbclass_sbar; } void PopMenu() { popmenu->Popup(); } // designer virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool OnSetShadow(VDKObject*); DECLARE_SIGNAL_LIST(VDKBStatusbar); DECLARE_EVENT_LIST(VDKBStatusbar); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_scrolled.h0000644000000000000000000000511407413114277015011 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_scrolled_h #define _vdkb_scrolled_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBObjectInspector; class VDKBScrolled: public VDKBEventContainer { VDKMenuItem *delBox; VDKMenuItem *addwidget,*delwidget,*setsize; // property controls used by object inspector VDKEntry *label; VDKCombo *shadow; void Init(); public: static int Counter; static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer, VDKBParser& parser); VDKBScrolled(char* name, VDKForm* owner); VDKBScrolled(char* name, VDKBEventContainer* outer); virtual ~VDKBScrolled() {} void Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs); void AddBox(); void AddWidget(VDKObject* w, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 0, bool forceArgs = false); bool AddNewWidget(VDKObject* sender); void PopMenu() { popmenu->Popup(); } bool DelBox(VDKObject* sender); virtual int Type() { return vdkbscrolled_class; } virtual int isA() { return vdkbscrolled_class; } virtual char* VDKName() { return "VDKScrolled"; } void WriteOnFrm(FILE* fp, VDKBObject* parentobj); VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool SetBoxSize(VDKObject* sender); bool OnSetShadow(VDKObject*); // DECLARE_EVENT_LIST(VDKBScrolled); DECLARE_SIGNAL_LIST(VDKBScrolled); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_search.h0000644000000000000000000000332507257643312014454 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * February 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_search_h #define _vdkb_search_h #include #include #include #include typedef VDKValueList SearchList; typedef VDKValueListIterator SearchListIterator; class VDKBSearchForm: public VDKForm { char **match; VDKCombo *combo; VDKCheckButton *casesens,*wholeword,*regex; VDKRadioButtonGroup *direction,*scope,*origin; VDKCustomButton *ok,*cancel; static SearchList history; public: VDKBSearchForm(VDKForm* owner, char** match); virtual ~VDKBSearchForm(); void Setup(); bool Ok(VDKObject*); bool Cancel(VDKObject*); bool OnComboEntry(VDKObject*); DECLARE_SIGNAL_MAP(VDKBSearchForm); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_separator.h0000644000000000000000000000410307252425554015203 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_hseparator_h #define _vdkb_hseparator_h #include #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBSeparator: public VDKBEvSeparator, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *delwidget; VDKBObjectInspector* inspector; int mode; // h_sep, v_sep public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidgetH(VDKBGuiForm* owner, GdkEvent* ev = NULL); static int MakeWidgetV(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBSeparator(char* name,VDKForm* owner, int mode = h_separator); virtual ~VDKBSeparator() {} virtual int Type() { return vdkbclass_sep; } virtual char* VDKName() { return "VDKSeparator"; } virtual int isA() { return vdkbclass_sep; } void PopMenu() { popmenu->Popup(); } // designer virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBSeparator); DECLARE_EVENT_LIST(VDKBSeparator); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_signal.h0000644000000000000000000000433107252425554014463 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_signal_h #define _vdkb_signal_h #include #include extern "C" { #include } //========================= class VDKBObject; class VDKBSignal { protected: VDKString signal,slot,nickname; VDKBObject* sender; bool connected; bool slotFixed; public: VDKBSignal() {}; VDKBSignal(char* name, VDKBObject* sender, char* nickname, char* slot = NULL); ~VDKBSignal() {}; char* Signal() { return (char*) signal; } VDKBObject* Sender(); char* Slot(char* s = NULL) { if(s) slot = s; return slot; } char* Nickname() { return (char*) nickname; } bool Connected(int f = -1) { if(f >=0) connected = f; return connected; } bool SlotFixed(int f = -1) { if(f >=0) slotFixed = f; return slotFixed; } bool operator==(VDKBSignal& p); bool operator<(VDKBSignal& p) { return sender < p.sender; } }; //=========================================================== typedef VDKValueList VDKBSList; typedef VDKValueListIterator VDKBSListIterator; //=========================================================== class VDKBSignalList: public VDKBSList { protected: public: VDKBSignalList() {} ~VDKBSignalList(){} }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_slider.h0000644000000000000000000000460207252425555014472 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.3 * July 1999 * =========================== * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_slider_h #define _vdkb_slider_h #include #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBSlider: public VDKBEvSlider, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKBObjectInspector* inspector; VDKEntry *digits,*lower,*upper,*defvalue; VDKSpinButton *step; VDKCombo *updatepolicy; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBSlider(char* name,VDKForm* owner, float def = 0.0, float lower = 0.0, float upper = 20.0, float step = 0.1); virtual ~VDKBSlider() {} virtual int Type() { return vdkbclass_slider; } virtual char* VDKName() { return "VDKSlider"; } virtual int isA() { return vdkbclass_slider; } void PopMenu() { popmenu->Popup(); } // designer virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); bool OnSetDigits(VDKObject*); bool OnSetStep(VDKObject*); bool OnSetLower(VDKObject*); bool OnSetUpper(VDKObject*); bool OnSetUpdatePolicy(VDKObject*); bool OnSetDefValue(VDKObject*); DECLARE_SIGNAL_LIST(VDKBSlider); DECLARE_EVENT_LIST(VDKBSlider); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_spinbutton.h0000644000000000000000000000460307252425557015420 /* * =========================== * VDK Visual Development Kit * Version 0.4 * October 1998 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_spinbutton_h #define _vdkb_spinbutton_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBSpinButton: public VDKSpinButton, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKBObjectInspector* inspector; VDKEntry *digits,*defvalue,*lower,*upper,*step,*climb; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBSpinButton(char* name,VDKForm* owner, float defValue = 0.0, float lower = 0.0, float upper = 1.0, float step_increment = 0.05, float climb_rate = 0.0); virtual ~VDKBSpinButton() {} virtual int Type() { return vdkbclass_spinbutton; } virtual char* VDKName() { return "VDKSpinButton"; } virtual int isA() { return vdkbclass_spinbutton; } void PopMenu() { popmenu->Popup(); } // designer virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); bool OnSetDefValue(VDKObject*); bool OnSetLower(VDKObject*); bool OnSetUpper(VDKObject*); bool OnSetStep(VDKObject*); bool OnSetClimb(VDKObject*); bool OnSetDigits(VDKObject*); DECLARE_SIGNAL_LIST(VDKBSpinButton); DECLARE_EVENT_LIST(VDKBSpinButton); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_table.h0000644000000000000000000000541307252425557014302 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_table_h #define _vdkb_table_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBObjectInspector; class VDKBTable: public VDKBEventContainer { protected: VDKMenuItem *delBox; VDKMenuItem *addwidget,*delwidget,*setsize; // property controls used by object inspector VDKSpinButton *rowspacing,*colspacing; VDKCheckButton *homogeneous; void Init(); int rows,cols; bool homo; public: static int Counter; static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer, VDKBParser& parser); VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); void WriteOnFrm(FILE* fp, VDKBObject* parentobj); VDKBTable(char* name, VDKForm* owner, int rows, int cols,bool homo); VDKBTable(char* name, VDKBEventContainer* outer, int rows, int cols,bool homo); virtual ~VDKBTable() {} void AddBox(char* name); void PopMenu() { popmenu->Popup(); } void Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs); bool OnButtonPressed(VDKObject* sender, GdkEvent* event); bool DelBox(VDKObject* sender); virtual int Type() { return vdkbtable_class; } virtual int isA() { return vdkbtable_class; } void AddWidget(VDKObject* w, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 0, bool forceArgs = false); virtual char* VDKName() { return "VDKTable"; } bool SetBoxSize(VDKObject* sender); bool OnSetHomogeneous(VDKObject*); bool OnRowColSpacing(VDKObject*); // designer DECLARE_EVENT_LIST(VDKBTable); DECLARE_SIGNAL_LIST(VDKBTable); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_tabledlg.h0000644000000000000000000000103007252425560014752 /* vdkb_tabledlg Form header file: vdkb_tabledlg.h */ #ifndef _vdkb_tabledlg_form_h_ #define _vdkb_tabledlg_form_h_ #include // Vdkb_tabledlg FORM CLASS class Vdkb_tabledlgForm: public VDKForm { // gui object declarations private: // vdkbuilder reserved gui construction void GUISetup(void); int* r; int* c; public: Vdkb_tabledlgForm(VDKForm* owner, char* title, int* r, int * c); ~Vdkb_tabledlgForm(); void Setup(void); /* gui setup include do not patch below here */ #include }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_tabledlg_gui.h0000644000000000000000000000057207257643311015631 /* vdkb_tabledlg gui header */ protected: VDKBox* Hbox9; VDKLabel* Label2; VDKEntry* rows; VDKBox* Hbox11; VDKLabel* Label3; VDKEntry* columns; VDKBox* Hbox13; VDKCustomButton* ok; VDKCustomButton* cancel; public: DECLARE_SIGNAL_MAP(Vdkb_tabledlgForm); bool OnokClick(VDKObject* sender); bool OncancelClick(VDKObject* sender); //DECLARE_SIGNAL_LIST(Vdkb_tabledlgForm); vdkbuilder2-2.4.0/include/vdkb2/vdkb_text.h0000644000000000000000000000474607260542534014201 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * December 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_text_h #define _vdkb_text_h #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include class VDKBText: public VDKEditor { VDKString filename; bool mapped,realized; // VDKBActionStack action_stack; unsigned int lastGuessed; void ScrollTo(int pos); static void DeleteText(GtkWidget* wid, int start, int end,void* gp); static void InsertText(GtkWidget* wid, const char* buf, int len, int pos, void* gp); char * MakeTip(char* word); time_t mtime; public: __rproperty(VDKBText,int) CurrentLine; bool Hilite; // VDKBText(VDKForm* owner, bool editable = true, char* filename = NULL); ~VDKBText(); char* ShortName(); char* Extension(); char* Filename(char* name = NULL); bool GoToLine(int line); int Search(char* st,int from = 0, bool select = true , bool bell = true); void SetStyle(); time_t Mtime(time_t mt = 0) { if(mt) mtime = mt; return mtime; } virtual int Save(char* filename); virtual int Load(char* filename); bool Realized(VDKObject*); bool KeyEventAfter(VDKObject* sender, GdkEvent *ev); bool KeyEventBefore(VDKObject* sender, GdkEvent *ev); bool ButtonPressEvent(VDKObject* sender, GdkEvent *ev); bool ButtonReleaseEvent(VDKObject* sender, GdkEvent *ev); bool MappedEvent(VDKObject* sender, GdkEvent *ev); DECLARE_SIGNAL_LIST(VDKBText); DECLARE_EVENT_LIST(VDKBText); // }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_textlabel.h0000644000000000000000000000447707257643311015203 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_label_h #define _vdkb_label_h #include #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBTextLabel: public VDKBEvLabel, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKBObjectInspector* inspector; VDKEntry* caption; VDKCombo *align; VDKCustomButton* set; VDKCheckButton* wrap; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBTextLabel(char* name,VDKForm* owner, char* label); virtual ~VDKBTextLabel() {} /* virtual VDKString& Name(char* s = NULL) { if(s) Caption = s; return VDKBObject::Name(s); } */ virtual int Type() { return vdkbclass_label; } virtual char* VDKName() { return "VDKLabel"; } virtual int isA() { return vdkbclass_label; } virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); void PopMenu() { popmenu->Popup(); } // designer bool OnSetJustify(VDKObject*); bool OnSetCaption(VDKObject*); bool OnSetCaptionWrap(VDKObject*); virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBTextLabel); DECLARE_EVENT_LIST(VDKBTextLabel); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_textwidget.h0000644000000000000000000000416307272031755015377 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_textwidget_h #define _vdkb_textwidget_h #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBTextWidget: public VDKTextView, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKBObjectInspector* inspector; VDKCheckButton* wrap,*editable; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBTextWidget(char* name,VDKForm* owner); virtual ~VDKBTextWidget() {} virtual int Type() { return vdkbclass_textwidget; } virtual char* VDKName() { return "VDKTextView"; } virtual int isA() { return vdkbclass_textwidget; } virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); void PopMenu() { popmenu->Popup(); } // designer // bool OnSetWordWrap(VDKObject*); bool OnSetEditable(VDKObject*); virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBTextWidget); DECLARE_EVENT_LIST(VDKBTextWidget); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_timebar.h0000644000000000000000000000266507252425562014640 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_timebar_h #define _vdkb_timebar_h #include // Timebar class class VDKBTimebar: public VDKProgressBar { protected: VDKTimer* timer; unsigned int timeElapsed; public: VDKBTimebar(VDKForm* owner, double min = 0.0, double max = 1.0, double tick = 0.1); virtual ~VDKBTimebar(); void Setup(void); bool OnTimer(VDKObject*); DECLARE_SIGNAL_LIST(VDKBTimebar); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_toolbar.h0000644000000000000000000000671207257643311014653 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_toolbar_h #define _vdkb_toolbar_h #include #include #include #include struct ToolButtonData { GtkWidget* button; VDKString pix,tip,text; }; typedef VDKValueList TBDList; typedef VDKValueListIterator TBDListIterator; class VDKBGuiForm; class VDKBParser; class VDKBObjectInspector; class VDKBToolbar: public VDKBEventContainer { protected: VDKToolbar* toolbar; VDKMenuItem *delBox; VDKMenuItem *addbutton,*removebutton,*delwidget,*setsize; // property controls used by object inspector VDKSpinButton *spacing; VDKEntry *label; VDKCombo* shadow,*align; VDKCustomButton* set; VDKBEventBox* innerbox; VDKCombo *orientation,*style,*relief; VDKCheckButton* bydata; void Init(); static void OnButtonSignal(GtkWidget *wid, gpointer gp); bool LoadButtons(char* buffer,VDKBParser& parser); public: static int Counter; static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static void CreateButtons(char* buffer, VDKBParser& parser, char* source, char* obj_name); TBDList buttonlist; int ButtonSelected; VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); void WriteOnFrm(FILE* fp, VDKBObject* parentobj); VDKBToolbar(char* name, VDKForm* owner); VDKBToolbar(char* name, VDKBEventContainer* outer); virtual ~VDKBToolbar() {} void AddBox(); void PopMenu() { popmenu->Popup(); } void Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs); bool AddNewWidget(VDKObject* sender); bool DelBox(VDKObject* sender); bool AddButton(VDKObject* sender); bool RemoveButton(VDKObject* sender); bool OnSetStyle(VDKObject*); bool OnSetOrientation(VDKObject*); bool OnSetRelief(VDKObject*); bool OnSetSpacing(VDKObject*); virtual int Type() { return vdkbtoolbar_class; } virtual int isA() { return vdkbtoolbar_class; } void AddWidget(VDKObject* w, int justify = l_justify, int expand = TRUE, int fill = TRUE , int padding = 0, bool forceArgs = false); virtual char* VDKName() { return "VDKToolbar"; } bool SetBoxSize(VDKObject* sender); bool OnToggleBydata(VDKObject*); // designer DECLARE_EVENT_LIST(VDKBToolbar); DECLARE_SIGNAL_LIST(VDKBToolbar); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_tooldialog.h0000644000000000000000000000120307252425563015336 /* vdkb_tooldialog Form header file: vdkb_tooldialog.h */ #ifndef _vdkb_tooldialog_form_h_ #define _vdkb_tooldialog_form_h_ #include // Vdkb_tooldialog FORM CLASS class Vdkb_tooldialogForm: public VDKForm { protected: VDKString *buttonpix,*buttontip,*buttontext; // gui object declarations private: // vdkbuilder reserved gui construction void GUISetup(void); public: Vdkb_tooldialogForm(VDKForm* owner, char* title, VDKString* pix,VDKString* tip, VDKString* text); ~Vdkb_tooldialogForm(); void Setup(void); /* gui setup include do not patch below here */ #include }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_tooldialog_gui.h0000644000000000000000000000125607257643311016210 /* vdkb_tooldialog gui header */ protected: VDKBox* Hbox2; VDKLabel* Label0; VDKEntry* pixfile; VDKCustomButton* browse; VDKBox* Hbox4; VDKLabel* Label1; VDKEntry* tip; VDKBox* Hbox8; VDKLabel* Label2; VDKEntry* text; VDKBox* Hbox11; VDKCustomButton* ok; VDKCustomButton* cancel; VDKCustomButton* copytodir; public: DECLARE_SIGNAL_MAP(Vdkb_tooldialogForm); bool OnbrowseClick(VDKObject* sender); bool OnpixfileActivate(VDKObject* sender); bool OntipActivate(VDKObject* sender); bool OntextActivate(VDKObject* sender); bool OnokClick(VDKObject* sender); bool OncancelClick(VDKObject* sender); bool OnCopyToDir(VDKObject* sender); //DECLARE_SIGNAL_LIST(Vdkb_tooldialogForm); vdkbuilder2-2.4.0/include/vdkb2/vdkb_types.h0000644000000000000000000004722010052401435014336 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_types_h #define _vdkb_types_h #include #include #include #if HAVE_CONFIG_H #include #endif // project types enum { vdk_project , console_project, vdk_gnome_project , shared_project, static_project }; // typedef struct FormEventHandlers { char *items[2]; char* method; }; typedef struct VDKBDefaultColors { char* colorname; int red,green,blue; }; typedef struct OpState { int state, action,action_target; VDKObject *source,*target; }; extern OpState OperationalState; // states enum { op_ready = 0, op_stand_by }; // actions enum { act_nope = 0, act_add_widget }; // targets enum { tgt_no_target = 0 }; // form type enum { type_vdk_form, type_vdk_gnomeform }; /* tools palette */ /* containers widgets */ #define CONTAINERS_TOOL_BEGIN 0x2000 /* 8 k */ #define CONTAINERS_TOOL_VBOX CONTAINERS_TOOL_BEGIN #define CONTAINERS_TOOL_HBOX CONTAINERS_TOOL_BEGIN+1 #define CONTAINERS_TOOL_FRAME CONTAINERS_TOOL_BEGIN+2 #define CONTAINERS_TOOL_TABLE CONTAINERS_TOOL_BEGIN+3 #define CONTAINERS_TOOL_VPANED CONTAINERS_TOOL_BEGIN+4 #define CONTAINERS_TOOL_HPANED CONTAINERS_TOOL_BEGIN+5 #define CONTAINERS_TOOL_NBOOK CONTAINERS_TOOL_BEGIN+6 #define CONTAINERS_TOOL_HANDLE CONTAINERS_TOOL_BEGIN+7 #define CONTAINERS_TOOL_TOOLBAR CONTAINERS_TOOL_BEGIN+8 #define CONTAINERS_TOOL_SCROLLED CONTAINERS_TOOL_BEGIN+9 #define CONTAINERS_TOOL_MENUBAR CONTAINERS_TOOL_BEGIN+10 #define CONTAINERS_TOOL_VRADIOBG CONTAINERS_TOOL_BEGIN+11 #define CONTAINERS_TOOL_HRADIOBG CONTAINERS_TOOL_BEGIN+12 #define CONTAINERS_TOOL_FIXED CONTAINERS_TOOL_BEGIN+13 #define CONTAINERS_TOOL_END CONTAINERS_TOOL_FIXED #define IS_A_CONTAINER(x) \ (( (x) >= CONTAINERS_TOOL_BEGIN) && ( (x) <= CONTAINERS_TOOL_END)) /* button widgets */ #define BUTTON_TOOL_BEGIN 0x2400 /* 9 k */ #define BUTTON_TOOL_CUSTOM_BUTTON BUTTON_TOOL_BEGIN #define BUTTON_TOOL_SPIN_BUTTON BUTTON_TOOL_BEGIN+1 #define BUTTON_TOOL_CHECK_BUTTON BUTTON_TOOL_BEGIN+2 #define BUTTON_TOOL_RADIO_BUTTON BUTTON_TOOL_BEGIN+3 #define BUTTON_TOOL_END BUTTON_TOOL_RADIO_BUTTON /* text widgets */ #define IS_A_BUTTON(x) \ (( (x) >= BUTTON_TOOL_BEGIN) && ( (x) <= BUTTON_TOOL_END)) #define TEXT_TOOL_BEGIN 0x2800 /* 10 k */ #define TEXT_TOOL_LABEL TEXT_TOOL_BEGIN #define TEXT_TOOL_ENTRY TEXT_TOOL_BEGIN+1 #define TEXT_TOOL_TEXT TEXT_TOOL_BEGIN+2 #define TEXT_TOOL_END TEXT_TOOL_TEXT #define IS_A_TEXT(x) \ (( (x) >= TEXT_TOOL_BEGIN) && ( (x) <= TEXT_TOOL_END)) /* miscellanous widgets */ #define MISC_TOOL_BEGIN 0x2C00 /* 11 k */ #define MISC_TOOL_CANVAS MISC_TOOL_BEGIN #define MISC_TOOL_PIXMAP MISC_TOOL_BEGIN+1 #define MISC_TOOL_IMAGE MISC_TOOL_BEGIN+2 #define MISC_TOOL_PROGRESS MISC_TOOL_BEGIN+3 #define MISC_TOOL_SLIDER MISC_TOOL_BEGIN+4 #define MISC_TOOL_STATUSBAR MISC_TOOL_BEGIN+5 #define MISC_TOOL_TIMER MISC_TOOL_BEGIN+6 #define MISC_TOOL_CUSTOMLIST MISC_TOOL_BEGIN+7 #define MISC_TOOL_COMBOBOX MISC_TOOL_BEGIN+8 #define MISC_TOOL_CUSTOMTREE MISC_TOOL_BEGIN+9 #define MISC_TOOL_HSEPARATOR MISC_TOOL_BEGIN+10 #define MISC_TOOL_VSEPARATOR MISC_TOOL_BEGIN+11 #define MISC_TOOL_PLACEHOLDER MISC_TOOL_BEGIN+12 #define MISC_TOOL_END MISC_TOOL_PLACEHOLDER /* #define MISC_TOOL_TREEVIEW MISC_TOOL_BEGIN+13 #define MISC_TOOL_MENU_ITEM MISC_TOOL_BEGIN+14 #define MISC_TOOL_GRID MISC_TOOL_BEGIN+15 #define MISC_TOOL_END MISC_TOOL_MENU_ITEM */ #define IS_A_MISC(x) \ (( (x) >= MISC_TOOL_BEGIN) && ( (x) <= MISC_TOOL_END)) /* plugin support */ #define PLUGIN_TOOL_BEGIN 0x3000 /* 12 k */ /* gnome support */ #if HAVE_GNOME #define GNOME_TOOL_BEGIN 0x3400 /* 13 k */ #define GNOME_TOOL_STATUSBAR GNOME_TOOL_BEGIN #define GNOME_TOOL_DATEEDIT GNOME_TOOL_BEGIN+1 #define GNOME_TOOL_ENTRY GNOME_TOOL_BEGIN+2 #define GNOME_TOOL_END GNOME_TOOL_ENTRY #define IS_A_GNOME(x) \ (( (x) >= GNOME_TOOL_BEGIN) && ( (x) <= GNOME_TOOL_END)) #endif /* xdb tools */ #if USE_XDB #define XDB_TOOL_BEGIN 0x3800 /* 14 k */ #define XDB_TOOL_ENTRY XDB_TOOL_BEGIN #define XDB_TOOL_CUSTOMLIST XDB_TOOL_BEGIN+1 #define XDB_TOOL_CHECK_BUTTON XDB_TOOL_BEGIN+2 #define XDB_TOOL_MEMO XDB_TOOL_BEGIN+3 #define XDB_TOOL_END XDB_TOOL_MEMO #define IS_A_XDB(x) \ (( (x) >= XDB_TOOL_BEGIN) && ( (x) <= XDB_TOOL_END)) #endif /* main form toolbar buttons */ #define NEW_PROJECT_BUTTON 0 #define NEW_UNIT_BUTTON 1 #define NEW_FORM_BUTTON 2 #define OPEN_PRJ_BUTTON 3 #define OPEN_FILE_BUTTON 4 #define SAVE_PRJ_BUTTON 5 #define SAVE_FILE_BUTTON 6 /* main form toolbar1 buttons */ //#define ADD_TO_PROJECT 0 //#define REMOVE_FROM__PROJECT 1 #define UNIT_LIST 0 #define TOGGLE_FORM_UNIT 1 #define FORM_LIST 2 #define RUN_PRJ_BUTTON 3 /* project manager toolbar buttons */ #define ADD_UNIT_BUTTON 1 #define REMOVE_UNIT_BUTTON 2 #define ACTIVATE_EDITOR_BUTTON 3 #define FORM_PROPS_BUTTON 4 /* class viewer toolbar buttons */ //#define ADD_FUNCTION_BUTTON 0 #define DECLARATION_BUTTON 0 #define DEFINITION_BUTTON 1 #define UPDATE_CLASS_BUTTON 2 /* locale */ #define ITALIAN 0 #define ENGLISH 1 #define FRENCH 2 #define SPANISH 3 #define GERMAN 4 #define JAPANESE 5 #define VDKB_USAGE "\nVDK Builder usage: vkdb2 [arg] &\n\ arg:\n\ -it = italian\n\ -en = english\n\ -fr = french\n\ -sp = spanish\n\ -de = german\n\ (default english)\n" /* misc */ #define CORRECT_PROJECT_FILE (char*) "#VDK Builder 0.1# project file#" #define VDKB_RESOURCE_FILE (char*) "res/vdkbrc" #define VDKB_PLUGIN_FILE (char*) "res/plugins.db" #define VDKB_TOKENS_FILE (char*) "res/tokens.db" #define VDKB_HINT_FILE (char*) "res/cpphints" #define VDKB_LOGO (char*) "res/logo.png" #define VDKB_HELP_INDEX (char*) "res/index.htm" #define VDKBVERSION (char*) "VDKBuilder 2.4.0" #define APPNAME (char*) "VDKBuilder" #define VDKB_LOCKFILE (char*) ".vdkblock" #define VDKB_RGB (char*) "rgb.txt" #define CHECK_TRUE (char*) "true" #define CHECK_FALSE (char*) "false" #define CHECK_YES (char*) "yes" #define CHECK_NO (char*) "no" #define SOURCE_END_MARK "#!#\n" /* vdkb maker */ typedef VDKValueList VDKBStringList; typedef VDKValueListIterator VDKBStringListIterator; /* ide defaults */ #define DEFAULTS_FILE (char*) "res/vdkbide.defaults" #define FORM_EXT (char*) "frm" #endif /* defines for parser */ #define PARSER_CLASS "class:" #define PARSER_THIS "this:" #define PARSER_PARENT "parent:" // statements #define STATEMENT_ADD "Add" #define STATEMENT_ADD_NO_VIEWPORT "AddWithoutViewport" #define STATEMENT_VISIBLE "Visible" // common to all widgets #define NORMALBACKGROUND "NormalBackground" #define PRELIGHTBACKGROUND "PrelightBackground" #define INSENSITIVEBACKGROUND "InsensitiveBackground" #define ACTIVEBACKGROUND "ActiveBackground" #define SELECTEDBACKGROUND "SelectedBackground" #define FOREGROUND "Foreground" #define FONT "Font" #define ENABLED "Enabled" #define CURSOR "Cursor" #define USIZE "Usize" #define VISIBLE "Visible" #define BACKPIX "BackgroundPixmap" #define TITLE "Title" #define JUSTIFY_INTERNAL "_justify" #define EXPAND_INTERNAL "_Expand" #define DECLARE_PUBLIC "declare_public" #define FILL_INTERNAL "_Fill" #define PADDING_INTERNAL "_Padding" #define TIP "Tip" #define TAG "Tag" #define LABEL "Label" #define TABLEROW "TableRow" #define TABLECOL "TableCol" /* defines for properties */ // common to all widgets #define PROP_NORMALBACKGROUND "NormalBackground:" #define PROP_PRELIGHTBACKGROUND "PrelightBackground:" #define PROP_INSENSITIVEBACKGROUND "InsensitiveBackground:" #define PROP_ACTIVEBACKGROUND "ActiveBackground:" #define PROP_SELECTEDBACKGROUND "SelectedBackground:" #define PROP_FOREGROUND "Foreground:" #define PROP_FONT "Font:" #define PROP_ENABLED "Enabled:" #define PROP_CURSOR "Cursor:" #define PROP_USIZE "Usize:" #define PROP_VISIBLE "Visible:" #define PROP_TITLE "Title:" #define PROP_BACKPIX "BackgroundPixmap:" #define PROP_JUSTIFY_INTERNAL "_justify:" #define PROP_EXPAND_INTERNAL "_Expand:" #define PROP_FILL_INTERNAL "_Fill:" #define PROP_PADDING_INTERNAL "_Padding:" #define PROP_TIP "Tip:" #define PROP_TAG "Tag:" #define PROP_LABEL "Label:" #define PROP_TABLEROW "TableRow:" #define PROP_TABLECOL "TableCol:" #define PROP_DECLARE_PUBLIC "declare_public:" /* specific to widgets */ #define PROP_FOCUSWIDGET "FocusWidget:" #define PROP_FREEZE_USIZE "FreezeUsize:" #define PROP_DISPLAY_TYPE "DisplayType:" #define PROP_WINPOS "InitialPosition:" #define PROP_CAPTION "Caption:" #define PROP_CAPTIONWRAP "CaptionWrap:" #define PROP_RELIEF "Relief:" #define PROP_PIXMAPPED_INTERNAL "pixmapped:" #define PROP_CB_TYPE_INTERNAL "cbtype:" #define PROP_CB_POS_INTERNAL "labelpos:" #define PROP_EDITABLE "Editable:" #define PROP_SORTED "Sorted:" #define PROP_HIDDEN "Hidden:" #define PROP_CASESENSITIVE "CaseSensitive:" #define PROP_GLYPH "Glyph:" #define PROP_GLYPH_BYDATA "GlyphBydata:" #define PROP_VPOLICY "VPolicy:" #define PROP_HPOLICY "HPolicy:" #define PROP_BORDERSHADOW "BorderShadow:" #define PROP_ROWHEIGHT "RowHeight:" #define PROP_AUTORESIZE "AutoResize:" #define PROP_SELECTIONMODE "SelectionMode:" #define PROP_COLUMNS_INTERNAL "Columns:" #define PROP_TITLES_INTERNAL "Titles:" #define PROP_TEXT "Text:" #define PROP_EDITABLE "Editable:" #define PROP_HIDDEN "Hidden:" #define PROP_MAXCHARS "MaxChars:" #define PROP_COLWIDTH "ColWidth:" #define PROP_ROWS_INTERNAL "Rows:" #define PROP_COLUMNS_INTERNAL "Columns:" #define PROP_COLVISIBLE "ColVisible:" #define PROP_ROWVISIBLE "RowVisible:" #define PROP_VIEWPORT_INTERNAL "Viewport:" #define PROP_BARBLOCKCOUNT "BlockCount:" #define PROP_BARSTYLE "BarStyle:" #define PROP_BARORIENTATION "BarOrientation:" #define PROP_BARACTIVITYMODE "ActivityMode:" #define PROP_BARMIN "Min:" #define PROP_BARMAX "Max:" #define PROP_PHOLDER_CTOR "Ctor:" #define PROP_SHADOW "Shadow:" #define PROP_SEPARATOR_MODE "mode:" #define PROP_SLIDER_DIGITS "Digits:" #define PROP_SLIDER_STEP "Step:" #define PROP_SLIDER_LOWER "Lower:" #define PROP_SLIDER_UPPER "Upper:" #define PROP_SLIDER_UPDATE_POLICY "UpdatePolicy:" #define PROP_SLIDER_DEFVALUE "DefValue:" #define PROP_SPIN_CLIMB "Climb:" #define PROP_JUSTIFY "Justify:" #define PROP_WORDWRAP "WordWrap:" // for containers #define PROP_BORDERWIDTH "BorderWidth:" #define PROP_HAVEGRID "have_grid:" #define PROP_GRIDHSPACE "h_grid_spacing:" #define PROP_GRIDVSPACE "v_grid_spacing:" #define PROP_EVENTAWARE "event-aware:" #define PROP_DOCKABLE "dockable:" #define PROP_ALIGN "Align:" #define PROP_ROWSPACING "RowSpacing:" #define PROP_COLSPACING "ColSpacing:" #define PROP_HOMOGENEOUS "Homogeneous:" #define PROP_SCROLLABLE "Scrollable:" #define PROP_POPUP "PopUp:" #define PROP_TBORIENTATION "Orientation:" #define PROP_TBSTYLE "Style:" #define PROP_TBSPACING "Spacing:" // for gnome support // vdkgnome application bar #define PROP_STATUS_INTERNAL "_status:" #define PROP_PROGRESS_INTERNAL "_progress:" // vdkgnome date edit #define PROP_SHOWTIME_INTERNAL "_showtime:" #define PROP_FORMAT24_INTERNAL "_format24:" // vdkgnome entry #define PROP_HISTORY_INTERNAL "_history:" #define PROP_MAXSAVED "MaxSaved:" // vdkxdb support #define PROP_ASSIGNTABLE "assign-table:" #define PROP_ASSIGNFIELD "assign-field:" // /* props names */ #define FREEZE_USIZE "FreezeUsize" #define FOCUSWIDGET "FocusWidget" #define DISPLAY_TYPE "DisplayType" #define WINPOS "InitialPosition" #define CAPTION "Caption" #define CAPTIONWRAP "CaptionWrap" #define RELIEF "Relief" #define PIXMAPPED_INTERNAL "pixmapped" #define CB_TYPE_INTERNAL "cbtype" #define CB_POS_INTERNAL "labelpos" #define EDITABLE "Editable" #define SORTED "Sorted" #define HIDDEN "Hidden" #define CASESENSITIVE "CaseSensitive" #define GLYPH "Glyph" #define GLYPH_BYDATA "GlyphBydata" #define VPOLICY "VPolicy" #define HPOLICY "HPolicy" #define BORDERSHADOW "BorderShadow" #define ROWHEIGHT "RowHeight" #define AUTORESIZE "AutoResize" #define SELECTIONMODE "SelectionMode" #define TITLES_INTERNAL "Titles" #define TEXT "Text" #define EDITABLE "Editable" #define HIDDEN "Hidden" #define MAXCHARS "MaxChars" #define COLWIDTH "ColWidth" #define ROWS_INTERNAL "Rows" #define COLUMNS_INTERNAL "Columns" #define COLVISIBLE "ColumnTitleVisible" #define ROWVISIBLE "RowTitleVisible" #define VIEWPORT_INTERNAL "Viewport" #define BARBLOCKCOUNT "BlockCount" #define BARSTYLE "BarStyle" #define BARORIENTATION "BarOrientation" #define BARACTIVITYMODE "ActivityMode" #define BARMIN "Min" #define BARMAX "Max" #define PHOLDER_CTOR "Ctor" #define SHADOW "Shadow" #define SEPARATOR_MODE "mode" #define SLIDER_DIGITS "Digits" #define SLIDER_STEP "Step" #define SLIDER_LOWER "Lower" #define SLIDER_UPPER "Upper" #define SLIDER_UPDATE_POLICY "UpdatePolicy" #define SLIDER_DEFVALUE "DefValue" #define SPIN_CLIMB "Climb" #define JUSTIFY "Justify" #define WORDWRAP "WordWrap" // for containers #define BORDERWIDTH "BorderWidth" #define HAVEGRID "have_grid" #define GRIDHSPACE "h_grid_spacing" #define GRIDVSPACE "v_grid_spacing" #define EVENTAWARE "event-aware" #define DOCKABLE "dockable" #define ALIGN "Align" #define ROWSPACING "RowSpacing" #define COLSPACING "ColSpacing" #define HOMOGENEOUS "Homogeneous" #define SCROLLABLE "Scrollable" #define POPUP "PopUp" #define TBORIENTATION "Orientation" #define TBSTYLE "Style" #define TBSPACING "Spacing" // for gnome support // vdkgnome application bar #define STATUS_INTERNAL "_status" #define PROGRESS_INTERNAL "_progress" // vdkgnome date edit #define SHOWTIME_INTERNAL "_showtime" #define FORMAT24_INTERNAL "_format24" // vdkgnome entry #define HISTORY_INTERNAL "_history" #define MAXSAVED "MaxSaved" // vdkxdb support #define ASSIGNTABLE "assign-table" #define ASSIGNFIELD "assign-field" /* Signals names && nicknames Default response method name will be made by: On. For instance if object name = and nickname = default response method name will be: */ #define SIGNAL_REALIZE "realize_signal" #define SIGNAL_CLICKED "clicked_signal" #define SIGNAL_ENTER "enter_signal" #define SIGNAL_LEAVE "leave_signal" #define SIGNAL_TOGGLED "toggled_signal" #define SIGNAL_ACTIVATE "activate_signal" #define SIGNAL_CHANGED "changed_signal" #define SIGNAL_SELECTION_CHANGED "selection_changed_signal" #define SIGNAL_FOCUS_IN "focus_in_signal" #define SIGNAL_FOCUS_OUT "focus_out_signal" #define SIGNAL_SELECT_ROW "select_row_signal" #define SIGNAL_UNSELECT_ROW "unselect_row_signal" #define SIGNAL_CLICK_COLUMN "click_column_signal" #define SIGNAL_SELECT_NODE "select_node_signal" #define SIGNAL_UNSELECT_NODE "unselect_node_signal" #define SIGNAL_VALUE_CHANGED "value_changed_signal" #define SIGNAL_REALIZED "realize_signal" #define SIGNAL_DATE_CHANGED "date_changed" #define SIGNAL_TIME_CHANGED "time_changed" #define SIGNAL_ROW_ACTIVATED "row_activated_signal" #define NICK_REALIZE "Realize" #define NICK_CLICKED "Click" #define NICK_ENTER "Enter" #define NICK_LEAVE "Leave" #define NICK_TOGGLED "Toggled" #define NICK_ACTIVATE "Activate" #define NICK_CHANGED "Changed" #define NICK_SELECTION_CHANGED "SelectionChanged" #define NICK_FOCUS_IN "FocusIn" #define NICK_FOCUS_OUT "FocusOut" #define NICK_SELECT_ROW "SelectRow" #define NICK_ROW_ACTIVATED "RowActivated" #define NICK_UNSELECT_ROW "UnselectRow" #define NICK_CLICK_COLUMN "ClickColumn" #define NICK_SELECT_NODE "SelectNode" #define NICK_UNSELECT_NODE "UnselectNode" #define NICK_VALUE_CHANGED "ValueChanged" #define NICK_REALIZED "Realize" #define NICK_DATE_CHANGED "DateChanged" #define NICK_TIME_CHANGED "TimeChanged" vdkbuilder2-2.4.0/include/vdkb2/vdkb_treeview.h0000644000000000000000000000631707422642066015044 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ /* -------- OVERVIEW -------- - This file should be considered as a template for constructing vdkbuilder plugin components. Users should copy/paste and easily adapt this file to their own components. - See also plugins.txt into /plugins directory for further informations. */ // write here your sentinel #ifndef _vdkb_treeview_h #define _vdkb_treeview_h // #include #include #include #include // write here your vdkbuilder component class name #define CLASS VDKBTreeView // write here your vdk component class name #define VDK_ANCESTOR VDKTreeView // write here your vdk component class name as string #define VDK_CLASS "VDKTreeView" // widget specific class VDKBGuiForm; class VDKBParser; class CLASS: public VDK_ANCESTOR, public VDKBObject { /////////////////////////////////////////////// /* this part is common to all component leave it as is */ protected: // a pop menu activated with right click on component VDKBWidgetPopMenu *popmenu; // Widget Inspector address VDKBObjectInspector* inspector; public: static int Counter; static char* CreateSource(char* buffer, VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer, VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); CLASS(char* name,VDKForm* owner); virtual ~CLASS() {} virtual char* VDKName() { return VDK_CLASS; } void PopMenu() { popmenu->Popup(); } // called from designer virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); // signal tables DECLARE_SIGNAL_LIST(CLASS); DECLARE_EVENT_LIST(CLASS); //////////////////////////////////////////////// /* this part is component specific patch it as you need */ protected: VDKCustomButton *setButton; VDKCombo *selmode; /* This is called to add properties settings to Widget Inspector. Comment out if your component does not have properties to be set. */ public: virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); /* signal handler (aka response methods) for set button. Comment out if your component does not have properties to be set or write your own handlers. */ bool OnSetSelectionMode(VDKObject*); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_unit.h0000644000000000000000000000376307252425571014174 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_unit_ #define _vdkb_unit_ #include #include /* unit types */ enum { source_unit = 0, object_unit, staticlib_unit, project_unit, c_source_unit, form_unit, header_unit, unknow_type }; enum { prj_never_saved, prj_unsaved, prj_saved }; ////////////////// VDKBUnit class ///////////// class VDKBUnit { public: // __rwproperty(VDKBUnit,int) Status; VDKBUnit(char* name, int status ); VDKBUnit(char* name, int type, int status); ~VDKBUnit(); char* ShortName(); char* Name(char* name = NULL); char* Header(); char* Source(); char* Dfm(); char* DfmHeader(); char* Gui(); char* GuiSource(); bool operator==(VDKBUnit& u) { return name == u.name; } int Type() { return type; } bool IsSource() { return type == source_unit || type == project_unit || type == c_source_unit; } bool IsForm() { return type == form_unit; } protected: VDKString name; int type; }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_utils.h0000644000000000000000000000254407252425572014352 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * December 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifndef _vdkb_utils_h #define _vdkb_utils_h char* get_path(char* name); char* get_shortfilename(char* s); char* get_extension(char* s); char* ExtractWord(char* src,char* tgt,char* key1,char* key2); char * ExtractSection (char *buffer, char *section_begin, char* section_end); void LoadSection(char* lines,char ** section, int n); #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_widclip.h0000644000000000000000000000456207252425572014647 /* * =========================== * VDK Builder * Version 1.0.3 * Revision: * November 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_widclipboard_h #define _vdkb_widclipboard_h #include #include #include #include /* widget clipboard item */ class VDKBWidgetClipboardItem { public: VDKBObject* object; VDKBEventContainer* container; GtkWidget* widget; GtkWidget* parent; VDKBWidgetClipboardItem( VDKBObject* object = NULL, VDKBEventContainer* container = NULL, GtkWidget* widget = NULL, GtkWidget* parent = NULL): object(object), container(container), widget(widget), parent(parent) {} ~VDKBWidgetClipboardItem() {} bool operator==(VDKBWidgetClipboardItem& item) { return object == item.object; } }; /* global widget clipboard */ typedef VDKValueList VDKBWidClip; typedef VDKValueListIterator VDKBWidgetClipboardIterator; typedef VDKArray VDKBWidgetClipboardArray; class VDKBWidgetClipboard: public VDKBWidClip { public: VDKBWidgetClipboard() {} ~VDKBWidgetClipboard() {} void CutWidget(VDKObject* cut); void CopyWidget(VDKObject* copy); void DeepCopyWidget(VDKObject* obj); void RecursiveDeepCopyWidget(VDKObject* obj); void PasteWidget(VDKObject* paste, int ndx, bool reset_wi = true); VDKObject* ChildWithName(char* name); }; /* global widget clipboard address */ extern VDKBWidgetClipboard* WidgetClipboard; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_widpopmenu.h0000644000000000000000000000432407252425573015400 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 1.0.3 * March 1999, November 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_widpopmenu_h #define _vdkb_widpopmenu_h #include #include #include #include class VDKBWidgetPopMenu: public VDKMenu { protected: VDKMenuItem *setsize,*delwidget,*widprops, *selectparent,*cutwidget,*pastewidget,*pasteothers, *copywidget; VDKObject *parent_widget; bool DelWidget(VDKObject*); bool SetWidgetSize(VDKObject*); bool SelectParentContainer(VDKObject*); bool Cut(VDKObject*); bool Copy(VDKObject*); bool Paste(VDKObject*); bool PasteOthers(VDKObject*); bool MakeInspector(VDKObject*); public: VDKBWidgetPopMenu(VDKObject* widget); ~VDKBWidgetPopMenu() {} void Popup(guint button = 0, guint32 activate_time = 0); DECLARE_SIGNAL_LIST(VDKBWidgetPopMenu); }; /* */ class VDKBContainerPopMenu: public VDKMenu { protected: VDKObject *parent_widget; VDKMenuItem *cutwidget,*pastewidget,*pasteothers, *copywidget; public: VDKBContainerPopMenu(VDKObject* widget); ~VDKBContainerPopMenu() {} void Popup(guint button = 0, guint32 activate_time = 0); bool Paste(VDKObject*); void Setup(); bool Cut(VDKObject*); bool PasteOthers(VDKObject*); bool Copy(VDKObject*); DECLARE_SIGNAL_LIST(VDKBContainerPopMenu); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_xcheckbutton.h0000644000000000000000000000507707445652416015722 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_xcheckbutton_h #define _vdkb_xcheckbutton_h #if HAVE_CONFIG_H #include #endif #if USE_XDB #include #include #include #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBXCheckButton: public VDKXCheckButton, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKBObjectInspector* inspector; // specific to this widget VDKEntry* caption; VDKCustomButton* set; VDKCheckButton* wrap; VDKCustomList* tablelist,*fieldlist; VDKCustomButton* assignButton; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBXCheckButton(char* name,VDKForm* owner, char* label, char* tip = NULL); virtual ~VDKBXCheckButton() {} virtual int Type() { return vdkbclass_xcheckbutton; } virtual char* VDKName() { return "VDKXCheckButton"; } virtual int isA() { return vdkbclass_xcheckbutton; } void PopMenu() { popmenu->Popup(); } // designer virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); bool OnSetCaption(VDKObject*); bool OnSetCaptionWrap(VDKObject*); bool OnAssignButtonClicked(VDKObject*); bool OnTableListSelectRow(VDKObject*); bool OnTableListUnselectRow(VDKObject*); // virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBXCheckButton); DECLARE_EVENT_LIST(VDKBXCheckButton); }; #endif #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_xcustomlist.h0000644000000000000000000000607607445652415015616 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_xclist_h #define _vdkb_xclist_h #if HAVE_CONFIG_H #include #endif #if USE_XDB #include #include #include #include #include #include typedef VDKArray TitlesArray; class VDKBGuiForm; class VDKBParser; class VDKBXCustomList: public VDKXCustomList, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKBObjectInspector* inspector; // object inspector VDKEntry *columnTitle; VDKCheckButton *autoresize; VDKCombo *shadow,*selmode; VDKCustomList* tablelist,*fieldlist; VDKCustomButton* assignButton,*assignTableButton,*resetTableButton; TitlesArray assigned_fields; public: TitlesArray column_titles; static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBXCustomList(char* name, VDKForm* owner, int cols, char** titles, GtkSelectionMode mode = GTK_SELECTION_SINGLE); virtual ~VDKBXCustomList() {} virtual int Type() { return vdkbclass_xclist; } virtual char* VDKName() { return "VDKXCustomList"; } virtual int isA() { return vdkbclass_xclist; } virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); void AssignFieldsToColumn(char* assignfield, VDKXTable* table); bool DelWidget(VDKObject*); bool SetWidgetSize(VDKObject* sender); bool OnColumnClicked(VDKObject*); bool OnSetColumnTitle(VDKObject*); bool OnSetAutoResize(VDKObject*); bool OnSetShadow(VDKObject*); bool OnSetSelectionMode(VDKObject*); void PopMenu() { popmenu->Popup(); } bool OnAssignButtonClicked(VDKObject*); bool OnAssignTableButtonClicked(VDKObject*); bool OnResetTableButtonClicked(VDKObject*); bool OnTableListSelectRow(VDKObject*); bool OnTableListUnselectRow(VDKObject*); virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBXCustomList); DECLARE_EVENT_LIST(VDKBXCustomList); }; #endif #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_xentry.h0000644000000000000000000000475607445652415014554 /* * =========================== * VDK Builder * Version 1.2 * Revision 0.1 * May 2000 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_xentry_h #define _vdkb_xentry_h #if HAVE_CONFIG_H #include #endif #if USE_XDB #include #include #include #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBXEntry: public VDKXEntry, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKBObjectInspector* inspector; VDKCheckButton* hidden,*editable; VDKCustomList* tablelist,*fieldlist; VDKCustomButton* assignButton; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBXEntry(char* name,VDKForm* owner, char* def = NULL); virtual ~VDKBXEntry() {} virtual int Type() { return vdkbclass_xentry; } virtual char* VDKName() { return "VDKXEntry"; } virtual int isA() { return vdkbclass_xentry; } virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); void PopMenu() { popmenu->Popup(); } bool OverriddenButtonPressed(VDKObject* sender, GdkEvent* ev); // designer bool OnSetHidden(VDKObject*); bool OnSetEditable(VDKObject*); bool OnAssignButtonClicked(VDKObject*); bool OnTableListSelectRow(VDKObject*); bool OnTableListUnselectRow(VDKObject*); virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); DECLARE_SIGNAL_LIST(VDKBXEntry); DECLARE_EVENT_LIST(VDKBXEntry); }; #endif #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_xmemo.h0000644000000000000000000000463407445652415014343 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifndef _vdkb_xmemo_h #define _vdkb_xmemo_h #if HAVE_CONFIG_H #include #endif #if USE_XDB #include #include #include #include #include #include class VDKBGuiForm; class VDKBParser; class VDKBXMemo: public VDKXMemo, public VDKBObject { protected: VDKBWidgetPopMenu *popmenu; VDKMenuItem *setsize,*delwidget; VDKBObjectInspector* inspector; VDKCheckButton* wrap,*editable; VDKCustomList* tablelist,*fieldlist; VDKCustomButton* assignButton; public: static int Counter; static char* CreateSource(char* buffer,VDKBParser& parser); static bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); static int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL); VDKBXMemo(char* name,VDKForm* owner); virtual ~VDKBXMemo() {} virtual int Type() { return vdkbclass_xmemo; } virtual char* VDKName() { return "VDKXMemo"; } virtual int isA() { return vdkbclass_xmemo; } virtual VDKObjectContainer* ExtraWidget(VDKBObjectInspector* isp); void PopMenu() { popmenu->Popup(); } // designer bool OnSetWordWrap(VDKObject*); bool OnSetEditable(VDKObject*); virtual void WriteOnFrm(FILE* fp,VDKBObject* parentobj); bool OnAssignButtonClicked(VDKObject*); bool OnTableListSelectRow(VDKObject*); bool OnTableListUnselectRow(VDKObject*); DECLARE_SIGNAL_LIST(VDKBXMemo); DECLARE_EVENT_LIST(VDKBXMemo); }; #endif #endif vdkbuilder2-2.4.0/include/vdkb2/vdkb_xtDlg.h0000644000000000000000000000426707252425577014305 /* * =========================== * VDK Builder * Version 1.2 * Revision 0.1 * May 2000 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if USE_XDB #ifndef _vdkb_xtDlg_main_form_h_ #define _vdkb_xtDlg_main_form_h_ #include // Vdkb_xtDlg FORM CLASS class Vdkb_xtDlgForm: public VDKForm { // gui object declarations private: // gui object declarations void GUISetup(void); public: Vdkb_xtDlgForm(VDKForm* owner, char* title); ~Vdkb_xtDlgForm(); void Setup(void); protected: bool Changed; // if xdb was changed VDKBox* vbox1; VDKBox* vbox2; VDKCustomTree* dbTree; VDKCustomList* fieldList; VDKSeparator* separator1; VDKBox* hbox3; VDKCustomButton* addTable; VDKCustomButton* removeTable; VDKCustomButton* addIndex; VDKCustomButton* editTable; VDKCustomButton* close; VDKStatusbar* statusbar; bool CanClose(); void LoadTables(); public: DECLARE_SIGNAL_MAP(Vdkb_xtDlgForm); bool OncloseClick(VDKObject* sender); bool OnaddTableClick(VDKObject* sender); bool OnaddIndexClick(VDKObject* sender); bool OneditTableClick(VDKObject* sender); bool OnSelectNode(VDKObject* sender); bool OnUnselectNode(VDKObject* sender); bool OnRemoveClick(VDKObject* sender); /* declaring signal and events dynamics tables */ DECLARE_SIGNAL_LIST(Vdkb_xtDlgForm); DECLARE_EVENT_LIST(Vdkb_xtDlgForm); }; #endif #endif vdkbuilder2-2.4.0/include/vdkb2/vdkdclock.h0000644000000000000000000001075707252425602014147 /* * =========================== * VDK Visual Development Kit * Version 0.6 * Revision 7 * September 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. */ /* OVERVIEW -------- This file has the aim to be a footstep that shows how to make a vdk component. COMPONENT REFERENCES -------------------- VDKDigitalClock class inherits from VDKEventBox DESCRIPTION ----------- VDKDigitalClock is a simple digital clock that shows time, date and can be set with an alarm time. The widget is a composite one, made by a canvas and a button. Operations: - When the mouse pass over the canvas a tooltip displays current date. - Clicking on the canvas shows current alarm time setting or "no alarm" - Clicking on "Alarm" button emit a signal of "clock_alarm_set" PUBLIC MEMBERS -------------- none PROPERTIES ---------- VDKRgb ClockBackground Sets clock background VDKRgb ClockForeground; Sets clock foreground By default clock colors are green on black VDKPoint Alarm; where x = hours and y = minutes, if x || y < 0 alarm is off. Setting an alarm time causes the "clock_alarm" signal be emitted for 60 seconds or less if user calls StopAlarm(). i.e: clock->Alarm = VDKPoint(10,35); sets alarm at 10:35 am METHODS ------- VDKDigitalClock(VDKForm* owner, bool activate = false); Constructor, make a VDKDigitalClock. If arg is true the clock begins normal operations displaying time, date etc. Default is false and can be later activate using Activate() method. ~VDKDigitalClock(); Destructor void Activate(); Activates clock opertaions. void StopAlarm() Stop alarm signal. SIGNALS ------- "clock_alarm" Received when and if an alarm time was set. Widget owner receives this signal for 60 secs. If the user calls StopAlarm() signal emission will be stopped. "clock_alarm_set" Received whenever user presses the "alarm" button. Tip: Since neither "clock_alarm" and "clock_alarm_set" are signal provided by gtk+, user must connect with this signals using dynamic tables and setting arg to false. i.e.: SignalConnect(clock,"clock_alarm_set",&ClockForm::OnAlarmSet,false); SignalConnect(clock,"clock_alarm",&ClockForm::OnAlarm,false); */ #ifndef _vdkdclock_h #define _vdkdclock_h #include /* The clock class */ class VDKDigitalClock: public VDKEventBox { private: bool activated; protected: bool alarm_enabled; VDKTimer* timer; // the clock ticker VDKCanvas* clock; // where clock displays VDKCustomButton* set; // to set alarm VDKForm *popform; // to show alarm time char timebuff[64]; void GetTime(); bool OnTimer(VDKObject*); // actually shows current time bool OnExpose(VDKObject *, GdkEvent* event); bool OnClockButtonPress(VDKObject *, GdkEvent* event); bool OnClockButtonRelease(VDKObject *, GdkEvent* event); bool OnSetClick(VDKObject*); void SetClockBackground(VDKRgb back); void SetClockForeground(VDKRgb back); void SetAlarm(VDKPoint p) { alarm_enabled = true; } public: __rwproperty(VDKDigitalClock,VDKRgb) ClockBackground; __rwproperty(VDKDigitalClock,VDKRgb) ClockForeground; __rwproperty(VDKDigitalClock,VDKPoint) Alarm; VDKDigitalClock(VDKForm* owner,bool activated = false); ~VDKDigitalClock(); void Activate(); void Setup(void); void StopAlarm() { alarm_enabled = false; } DECLARE_SIGNAL_LIST(VDKDigitalClock); DECLARE_EVENT_LIST(VDKDigitalClock); }; /* a splash form used to show alarm time */ class VDKDigitalClockPopForm: public VDKForm { VDKPoint alarm; public: VDKDigitalClockPopForm(VDKForm* owner,VDKPoint alarm): VDKForm(owner,NULL,v_box,GTK_WINDOW_POPUP),alarm(alarm) {} ~VDKDigitalClockPopForm() {} void Setup(void); }; #endif vdkbuilder2-2.4.0/include/vdkb2/vdkxpmbrowser.h0000644000000000000000000000117207252425602015107 //======================================= #ifndef _xpmbrowser_h //====== put your code below here ======= #define _xpmbrowser_h #include class VDKXpmBrowser: public VDKFileDialog { protected: bool OpenClick(VDKObject*); VDKPixmap* pixmap; static void XpmSelected(GtkWidget* wid, gint row, gint column, GdkEvent *event, gpointer gp); public: VDKXpmBrowser(VDKForm* owner, FileStringArray* selections, char* title = "", GtkWindowType display = GTK_WINDOW_TOPLEVEL); virtual ~VDKXpmBrowser() {} DECLARE_SIGNAL_MAP(VDKXpmBrowser); }; //======================================= #endif vdkbuilder2-2.4.0/include/vdkb2/waitcursor.h0000644000000000000000000000075407252425602014401 /* */ #ifndef _wait_cursor_h #define _wait_cursor_h class WaitCursor { GdkCursor *cursor; VDKForm* form; public: WaitCursor(VDKForm *form):form(form) { cursor = gdk_cursor_new (GDK_WATCH); gdk_window_set_cursor (form->Window()->window, cursor); gdk_cursor_destroy (cursor); } ~WaitCursor() { cursor = gdk_cursor_new (GDK_LEFT_PTR); gdk_window_set_cursor (form->Window()->window, cursor); gdk_cursor_destroy (cursor); } }; #endif vdkbuilder2-2.4.0/include/vdkb2/Makefile.am0000644000000000000000000000356410031572520014053 vdkbincludedir = $(prefix)/include/vdkb2 EXTRA_DIST = vdkbinclude_HEADERS = \ input.h\ vdkb.h\ vdkb_about.h\ vdkb_calendar.h\ vdkb_cbrowse.h\ vdkb_cbuttdlg.h\ vdkb_checkbutton.h\ vdkb_clistdlg.h\ vdkb_clistdlg_gui.h\ vdkb_clipdlg.h\ vdkb_combo.h\ vdkb_comboentry.h\ vdkb_compodb.h\ vdkb_custombutton.h\ vdkb_customlist.h\ vdkb_customtree.h\ vdkb_dclock.h\ vdkb_dedit.h\ vdkb_dlgs.h\ vdkb_drawarea.h\ vdkb_editor.h\ vdkb_edhelp.h\ vdkb_edhint.h\ vdkb_entry.h\ vdkb_Env.h\ vdkb_evappbar.h\ vdkb_evbox.h\ vdkb_evcontain.h\ vdkb_evlabel.h\ vdkb_evpbar.h\ vdkb_evsbar.h\ vdkb_evsep.h\ vdkb_evslider.h\ vdkb_fixed.h\ vdkb_form.h\ vdkb_frame.h\ vdkb_frmlist.h\ vdkb_gnomeappbar.h\ vdkb_gnomeentry.h\ vdkb_grep.h\ vdkb_guicanvas.h\ vdkb_handlebox.h\ vdkb_ide_def.h\ vdkb_image.h\ vdkb_interface.h\ vdkb_locale.h\ vdkb_logo.h\ vdkb_lru.h\ vdkb_maker.h\ vdkb_menu.h\ vdkb_menubar.h\ vdkb_menuitem.h\ vdkb_nbook.h\ vdkb_PWizard.h\ vdkb_notebook.h\ vdkb_object.h\ vdkb_objinspect.h\ vdkb_orderdlg.h \ vdkb_paned.h\ vdkb_parser.h\ vdkb_pbar.h\ vdkb_pholder.h\ vdkb_pixmap.h\ vdkb_plugin.h\ vdkb_prj.h\ vdkb_prjman.h\ vdkb_prjopt.h\ vdkb_prjpref.h\ vdkb_prop.h\ vdkb_radiobutton.h\ vdkb_rbgroup.h\ vdkb_replace.h\ vdkb_sbar.h\ vdkb_scrolled.h\ vdkb_search.h\ vdkb_separator.h\ vdkb_signal.h\ vdkb_slider.h\ vdkb_spinbutton.h\ vdkb_table.h\ vdkb_tabledlg.h\ vdkb_tabledlg_gui.h\ vdkb_text.h\ vdkb_textlabel.h\ vdkb_textwidget.h\ vdkb_timebar.h\ vdkb_toolbar.h\ vdkb_tooldialog.h\ vdkb_tooldialog_gui.h\ vdkb_types.h\ vdkb_treeview.h\ vdkb_unit.h\ vdkb_utils.h\ vdkb_widclip.h\ vdkb_widpopmenu.h\ vdkb_xcheckbutton.h \ vdkb_xcustomlist.h\ vdkb_xentry.h \ vdkb_xmemo.h \ vdkb_xtDlg.h \ vdkdclock.h\ vdkxpmbrowser.h\ waitcursor.h # vdkb_ccproj.h\ # vdkb_cregex.h\ # vdkb_tree_coll.h\ # vdkb_ccpane.h\ # vdkb_FWizard.h vdkbuilder2-2.4.0/plugins/0000777000000000000000000000000010052402417011121 5vdkbuilder2-2.4.0/plugins/Makefile.in0000644000000000000000000004475310052401332013112 # Makefile.in generated by automake 1.7.8 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GENCAT = @GENCAT@ GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLBISON = @INTLBISON@ INTLLIBS = @INTLLIBS@ INTLOBJS = @INTLOBJS@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PLUGINS_LIBDIR = @PLUGINS_LIBDIR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_NLS = @USE_NLS@ VDK_CFLAGS = @VDK_CFLAGS@ VDK_CONFIG = @VDK_CONFIG@ VDK_LIBS = @VDK_LIBS@ VDK_VERSION_MAJOR = @VDK_VERSION_MAJOR@ VDK_VERSION_MICRO = @VDK_VERSION_MICRO@ VDK_VERSION_MINOR = @VDK_VERSION_MINOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ vdkxdbpath = @vdkxdbpath@ # --------------------------- # VDKBuilder version 0.1.7 # Plugins stuff # copyright Mario Motta, 1999 # all rights reserved. # licensed under LGPL # --------------------------- PLUGIN_VERSION = 2:0:0 CLOCK_VERSION = 2:0:0 #------------------ lib_LTLIBRARIES = \ libvdkdclock.la\ libvdkbcalendar.la\ libvdkbdclock.la\ libvdkbtreeview.la\ libvdkbdrawarea.la\ libvdkbcomboentry.la INCLUDES = -I$(top_srcdir)/include $(VDK_CFLAGS) #--------------------------- # vdkdclock shared library #--------------------------- libvdkdclock_la_SOURCES = vdkdclock.cc libvdkdclock_la_LDFLAGS = $(VDK_LIBS) -version-info $(CLOCK_VERSION) -export-dynamic #------------------------- # plugins shared libraries #------------------------- libvdkbcalendar_la_SOURCES = vdkb_calendar.cc libvdkbcalendar_la_LDFLAGS = $(VDK_LIBS) -rpath $(libdir) \ -L$(top_srcdir)/plugins/ -version-info $(PLUGIN_VERSION) -module libvdkbdclock_la_SOURCES = vdkb_dclock.cc libvdkbdclock_la_LDFLAGS = $(VDK_LIBS) -rpath $(libdir) \ -L$(top_srcdir)/plugins/ -lvdkdclock -version-info $(PLUGIN_VERSION) -module libvdkbtreeview_la_SOURCES = vdkb_treeview.cc libvdkbtreeview_la_LDFLAGS = $(VDK_LIBS) -rpath $(libdir) \ -L$(top_srcdir)/plugins/ -version-info $(PLUGIN_VERSION) -module libvdkbdrawarea_la_SOURCES = vdkb_drawarea.cc libvdkbdrawarea_la_LDFLAGS = $(VDK_LIBS) -rpath $(libdir) \ -L$(top_srcdir)/plugins/ -version-info $(PLUGIN_VERSION) -module libvdkbcomboentry_la_SOURCES = vdkb_comboentry.cc libvdkbcomboentry_la_LDFLAGS = $(VDK_LIBS) -rpath $(libdir) \ -L$(top_srcdir)/plugins/ -version-info $(PLUGIN_VERSION) -module subdir = plugins ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(lib_LTLIBRARIES) libvdkbcalendar_la_LIBADD = am_libvdkbcalendar_la_OBJECTS = vdkb_calendar.lo libvdkbcalendar_la_OBJECTS = $(am_libvdkbcalendar_la_OBJECTS) libvdkbcomboentry_la_LIBADD = am_libvdkbcomboentry_la_OBJECTS = vdkb_comboentry.lo libvdkbcomboentry_la_OBJECTS = $(am_libvdkbcomboentry_la_OBJECTS) libvdkbdclock_la_LIBADD = am_libvdkbdclock_la_OBJECTS = vdkb_dclock.lo libvdkbdclock_la_OBJECTS = $(am_libvdkbdclock_la_OBJECTS) libvdkbdrawarea_la_LIBADD = am_libvdkbdrawarea_la_OBJECTS = vdkb_drawarea.lo libvdkbdrawarea_la_OBJECTS = $(am_libvdkbdrawarea_la_OBJECTS) libvdkbtreeview_la_LIBADD = am_libvdkbtreeview_la_OBJECTS = vdkb_treeview.lo libvdkbtreeview_la_OBJECTS = $(am_libvdkbtreeview_la_OBJECTS) libvdkdclock_la_LIBADD = am_libvdkdclock_la_OBJECTS = vdkdclock.lo libvdkdclock_la_OBJECTS = $(am_libvdkdclock_la_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/vdkb_calendar.Plo \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_comboentry.Plo \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_dclock.Plo \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_drawarea.Plo \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_treeview.Plo \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkdclock.Plo CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ DIST_SOURCES = $(libvdkbcalendar_la_SOURCES) \ $(libvdkbcomboentry_la_SOURCES) $(libvdkbdclock_la_SOURCES) \ $(libvdkbdrawarea_la_SOURCES) $(libvdkbtreeview_la_SOURCES) \ $(libvdkdclock_la_SOURCES) DIST_COMMON = $(srcdir)/Makefile.in Makefile.am SOURCES = $(libvdkbcalendar_la_SOURCES) $(libvdkbcomboentry_la_SOURCES) $(libvdkbdclock_la_SOURCES) $(libvdkbdrawarea_la_SOURCES) $(libvdkbtreeview_la_SOURCES) $(libvdkdclock_la_SOURCES) all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu plugins/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) libLTLIBRARIES_INSTALL = $(INSTALL) install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libdir) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \ else :; fi; \ done uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ p="`echo $$p | sed -e 's|^.*/||'`"; \ echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" = "$$p" && dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libvdkbcalendar.la: $(libvdkbcalendar_la_OBJECTS) $(libvdkbcalendar_la_DEPENDENCIES) $(CXXLINK) -rpath $(libdir) $(libvdkbcalendar_la_LDFLAGS) $(libvdkbcalendar_la_OBJECTS) $(libvdkbcalendar_la_LIBADD) $(LIBS) libvdkbcomboentry.la: $(libvdkbcomboentry_la_OBJECTS) $(libvdkbcomboentry_la_DEPENDENCIES) $(CXXLINK) -rpath $(libdir) $(libvdkbcomboentry_la_LDFLAGS) $(libvdkbcomboentry_la_OBJECTS) $(libvdkbcomboentry_la_LIBADD) $(LIBS) libvdkbdclock.la: $(libvdkbdclock_la_OBJECTS) $(libvdkbdclock_la_DEPENDENCIES) $(CXXLINK) -rpath $(libdir) $(libvdkbdclock_la_LDFLAGS) $(libvdkbdclock_la_OBJECTS) $(libvdkbdclock_la_LIBADD) $(LIBS) libvdkbdrawarea.la: $(libvdkbdrawarea_la_OBJECTS) $(libvdkbdrawarea_la_DEPENDENCIES) $(CXXLINK) -rpath $(libdir) $(libvdkbdrawarea_la_LDFLAGS) $(libvdkbdrawarea_la_OBJECTS) $(libvdkbdrawarea_la_LIBADD) $(LIBS) libvdkbtreeview.la: $(libvdkbtreeview_la_OBJECTS) $(libvdkbtreeview_la_DEPENDENCIES) $(CXXLINK) -rpath $(libdir) $(libvdkbtreeview_la_LDFLAGS) $(libvdkbtreeview_la_OBJECTS) $(libvdkbtreeview_la_LIBADD) $(LIBS) libvdkdclock.la: $(libvdkdclock_la_OBJECTS) $(libvdkdclock_la_DEPENDENCIES) $(CXXLINK) -rpath $(libdir) $(libvdkdclock_la_LDFLAGS) $(libvdkdclock_la_OBJECTS) $(libvdkdclock_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_calendar.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_comboentry.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_dclock.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_drawarea.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_treeview.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkdclock.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ @am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCXX_TRUE@ fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< .cc.obj: @am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ @am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCXX_TRUE@ fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` .cc.lo: @am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ @am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCXX_TRUE@ fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: ETAGS = etags ETAGSFLAGS = CTAGS = ctags CTAGSFLAGS = tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$tags$$unique" \ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: $(mkinstalldirs) $(DESTDIR)$(libdir) install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-libtool distclean-tags dvi: dvi-am dvi-am: info: info-am info-am: install-data-am: install-exec-am: install-libLTLIBRARIES install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am info info-am install \ install-am install-data install-data-am install-exec \ install-exec-am install-info install-info-am \ install-libLTLIBRARIES install-man install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-info-am \ uninstall-libLTLIBRARIES #------------ # extra files #------------ #databox.xpm\ #EXTRA_DIST = \ # calendar.xpm\ # clock.xpm\ # plugins.txt # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vdkbuilder2-2.4.0/plugins/Makefile.am0000644000000000000000000000326510031572435013104 # --------------------------- # VDKBuilder version 0.1.7 # Plugins stuff # copyright Mario Motta, 1999 # all rights reserved. # licensed under LGPL # --------------------------- PLUGIN_VERSION = 2:0:0 CLOCK_VERSION = 2:0:0 #------------------ lib_LTLIBRARIES = \ libvdkdclock.la\ libvdkbcalendar.la\ libvdkbdclock.la\ libvdkbtreeview.la\ libvdkbdrawarea.la\ libvdkbcomboentry.la INCLUDES = -I$(top_srcdir)/include $(VDK_CFLAGS) #--------------------------- # vdkdclock shared library #--------------------------- libvdkdclock_la_SOURCES = vdkdclock.cc libvdkdclock_la_LDFLAGS = $(VDK_LIBS) -version-info $(CLOCK_VERSION) -export-dynamic #------------------------- # plugins shared libraries #------------------------- libvdkbcalendar_la_SOURCES = vdkb_calendar.cc libvdkbcalendar_la_LDFLAGS = $(VDK_LIBS) -rpath $(libdir) \ -L$(top_srcdir)/plugins/ -version-info $(PLUGIN_VERSION) -module libvdkbdclock_la_SOURCES = vdkb_dclock.cc libvdkbdclock_la_LDFLAGS = $(VDK_LIBS) -rpath $(libdir) \ -L$(top_srcdir)/plugins/ -lvdkdclock -version-info $(PLUGIN_VERSION) -module libvdkbtreeview_la_SOURCES = vdkb_treeview.cc libvdkbtreeview_la_LDFLAGS = $(VDK_LIBS) -rpath $(libdir) \ -L$(top_srcdir)/plugins/ -version-info $(PLUGIN_VERSION) -module libvdkbdrawarea_la_SOURCES = vdkb_drawarea.cc libvdkbdrawarea_la_LDFLAGS = $(VDK_LIBS) -rpath $(libdir) \ -L$(top_srcdir)/plugins/ -version-info $(PLUGIN_VERSION) -module libvdkbcomboentry_la_SOURCES = vdkb_comboentry.cc libvdkbcomboentry_la_LDFLAGS = $(VDK_LIBS) -rpath $(libdir) \ -L$(top_srcdir)/plugins/ -version-info $(PLUGIN_VERSION) -module #------------ # extra files #------------ #databox.xpm\ EXTRA_DIST = \ calendar.xpm\ clock.xpm\ plugins.txt vdkbuilder2-2.4.0/plugins/vdkb_calendar.cc0000644000000000000000000004163407364722313014147 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ /* -------- OVERVIEW -------- - This file should be considered as a template for constructing vdkbuilder plugin components. Users should copy/paste and easily adapt this file to their own components. - See also plugins.txt into /plugins directory for further informations. */ // write here your component include file #define COMPO_INCLUDE // leave it as is #define INTERFACE_INCLUDE // write how vdkbuilder will name components pointers, // pointer names will be suffixed with a number // i.e: databox0 #define VDK_WIDGET "calendar" // write here your interface name // normally: CLASSComponentInterface #define INTERFACE VDKBCalendarComponentInterface // tip displayed into builder tool palette // change with your own #define COMPO_TIP "VDKCalendar" ////////////////////// #include COMPO_INCLUDE #include INTERFACE_INCLUDE #include #include #include #include #include #include #include //////////////////////// /* icon to be displayed on toolbar palette */ /* change to your own icon, do not change COMPO_XPM, change string constants instead. */ static const char * COMPO_XPM[] = { /* width height num_colors chars_per_pixel */ " 40 24 13 1", /* colors */ ". c none", "# c #000000", "a c #0000ff", "b c #ff0000", "c c #ffffff", "d c #87cefa", "e c #000080", "f c #2f4f4f", "g c #ffffe0", "h c #d9d9d9", "i c #8b7765", "j c #b3b3b3", "k c #d2b48c", /* pixels */ "........................................", "........................................", ".......#bbbbbbbbbbbb.......ccaaaaa......", "......##bbbbbbbbbbbb......acdaaaaa......", "......##bbbbbbbbbbbb....adddddddaaaa....", "......##bbbbbbbbbbbb....eeeeeeeeeeee....", "......##ggggggggggg#.....aaaahhaaaa.....", "......#i#gggggegggg#....aahhhhhhjjaa....", "......#k#geegegeggg#....ahhhheehjjhaa...", "......#k#geegggeegg#..aahhhhheehhhjhaa..", "......#k#gegggeggegg.faahhhhheehhhjjha..", "......#k#gegegggggegffahhhhhheehhhhjjaa.", "......#k#gggeeggggegffhhhhhhhhhhhhhjjha.", "......#k#ggggegeeeegfahhhhhhhhhhhhhhjha.", "......#k##ggggegggggfahhhhhhhhhhhhhhjha.", "......#k#kggggggggggfahhhhhhhhhehhhhjha.", "......#k###gggggggggffahhhhhhhhhehhhhaa.", "......#k##k#gggg#gggffahhhhhhhhhhehhhaa.", "......#kkkgkj##ggg###faahhhhhhhhhhhhaa..", "......#ik#k#kkj####j##ffahhhhhhhhhhaa...", "......#ii#g#kkkkkgg##.ffaahhhhhhhhaa....", "......#iiikkkkkkkki#...fafaaahhaaaaa....", "......##############...fafffaaaafaffa...", "......................fa...........ff..." }; //////////////////////// /* Interface class for builder widget leave it as is */ class INTERFACE : public VDKBAbstractComponentInterface { public: INTERFACE() {} virtual ~INTERFACE() { } // write vdk code to create component char* CreateSource(char* buffer,VDKBParser& parser) { return CLASS::CreateSource(buffer,parser); } // parse .frm file to make the component bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { return CLASS::CreateWidget(owner,buffer,parser); } // make and add a new component to edit form int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL) { return CLASS::MakeWidget(owner,ev); } // return component icon to be inserted // into vdkbuilder tool palette const char** Icon() { return COMPO_XPM; } // icon tip const char* Tip() { return COMPO_TIP; } // return component vdk class name const char* VDKName() { return (const char*) VDK_CLASS; } }; // get a new interface object // this is called by plugin object from builder extern "C" VDKBAbstractComponentInterface* GetExportClass() { return new INTERFACE; } /* component properties, change here with your own or leave array empty like this: static char* vdk_props[] = { 0 }; if your component does not have any property to be set with the WI */ #define PROPERTY1 "DisplayOptions" /* #define PROPERTY2 "Cross" #define PROPERTY3 "Scrollbars" */ static char* vdk_props[] = { PROPERTY1, /* PROPERTY2, PROPERTY3, */ 0 }; /* component provided signals, change here signal provided for your component or leave array empty like this: static char* vdk_signals[] = { 0 }; if your component does not have any signal provided */ #define SIGNAL1 "day_select_signal" #define SIGNAL2 "day_selected_double_click" /* #define SIGNAL3 "databox_selection_started_signal" #define SIGNAL4 "databox_selection_changed_signal" #define SIGNAL5 "databox_selection_stopped_signal" #define SIGNAL6 "databox_selection_canceled_signal" */ static char* vdk_signals[] = { SIGNAL1, SIGNAL2, /* SIGNAL3, SIGNAL4, SIGNAL5, SIGNAL6, */ 0 }; /* component signal nicknames, they will be used to make signal response signatures like this: bool On(VdkObject* sender); e.g. Ondatabox1Zoomed(VDKObject* sender); Change here nicknames for your component or leave array empty like this: static char* vdk_nicknames[] = { 0 }; if your component does not have any signal provided */ #define NICK1 "DaySelected" #define NICK2 "DoubleClickDaySelected" /* #define NICK3 "SelectionStarted" #define NICK4 "SelectionChanged" #define NICK5 "SelectionStopped" #define NICK6 "SelectionCanceled" */ static char* vdk_nicknames[] = { NICK1, NICK2, /* NICK3, NICK4, NICK5, NICK6, */ 0 }; /* local buffer */ static char buff[256]; /* used to autogenerate default component names */ int CLASS::Counter = 0; // dynamic tables // leave it as is DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// ////////////////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner): VDK_ANCESTOR(owner),VDKBObject(name) { int t = 0; // newly constructed component counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add component specific properties to VDKBObject properties list for(t = 0; vdk_props[t]; t++) proplist.add(VDKBProperty(vdk_props[t])); // add component specifi signal to VDKBObject signal list for(t = 0; vdk_signals[t]; t++) siglist.add(VDKBSignal(vdk_signals[t], this, vdk_nicknames[t])); /* here you may want set some default value for some property: SetPropValue(<"property name">,<"property value">); e.g: //set a reasonable size fro the widget in the case // it will be dropped into a fixed container sprintf(buff,"%d,%d",150,110); SetPropValue("Usize",buff); */ sprintf(buff,"%d",GTK_CALENDAR_SHOW_HEADING); SetPropValue("DisplayOptions",buff); //set a reasonable size fro the widget in the case // it will be dropped into a fixed container sprintf(buff,"%d,%d",150,110); SetPropValue("Usize",buff); // connects component common events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); // a reasonable initial size (mainly for adding the component // to a fixed container) // change to your own size SetSize(100,100); } /////////////////////////////////////////////// // // WRITE WIDGET DESCRIPTION TO .FRM FILE // /////////////////////////////////////////////// /* Writes a .frm format representation of the component This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { int t; // first call ancestor to write common properties values VDKBObject::WriteOnFrm(fp,parentobj); // now we write component specific properties values. for( t = 0; vdk_props[t]; t++) fprintf(fp,"\n\t%s:%s;", vdk_props[t],(char*) GetProp(vdk_props[t])); } //////////////////////////////////////// // // PREPARE GUI WIDGETS // //////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc triggered when user wants drop a widget into a form. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable counter // to ensure unicity CLASS* component; // component name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else { // actually makes component // contains component pointer name (autogenerated) // may be your constructor is different // patch if necessary //////////////////////////////////////// component = new CLASS(buff,owner); //////////////////////////////////////// } /* in this part we write some widget specific initailization code, patch or comment out if not applicable to your widget */ //////////////////////////////////////////// // add component to form return owner->AddToSelf(component,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; // gets component name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; // writes code to make the component // may be your constructor is different // patch if necessary /////////////////////////////////////////////////////// sprintf(tmp,"\n%s = new %s(this);",obj_name,VDK_CLASS); /////////////////////////////////////////////////////// strcpy(source,tmp); // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } /* in this part we write some component specific initialization code, reading properties values from .frm file and setting them to into widget. */ /////////////////////////////////////////////////////////////// char local[64]; int t = 0; for( t = 0; vdk_props[t]; t++) { /* since in .frm file property is suffixed with colon we have to precisely write it in order to be correctly parsed by parser.GetParam() */ sprintf(local,"%s:",vdk_props[t]); if(parser.GetParam(arg,buffer,local) && strcmp(arg,NIHIL_PROP) ) { sprintf(tmp,"\n%s->%s = %s %s;", obj_name, vdk_props[t], !strcmp(PROPERTY1,vdk_props[t]) ? "(GtkCalendarDisplayOptions) " : "", arg); strcat(source,tmp); } } ////////////////////////////////////////////////////////////// // get code that adds component to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[64],local[64]; CLASS* component; // get component name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { // actually makes component // contains component pointer name (autogenerated) // may be your constructor is different // patch if necessary /////////////////////////////////////////// component = new CLASS(obj_name,owner); /////////////////////////////////////////// /* in this part we write some component specific initialization code, and we can't use vdk_props[] loop. Patch or comment out if not applicable to your widget */ // set DisplayOptions property sprintf(local,"%s:",PROPERTY1); if( parser.GetParam(arg,buffer,local) && strcmp(arg,NIHIL_PROP) ) { component->DisplayOptions = (GtkCalendarDisplayOptions) atoi(arg); component->SetPropValue(PROPERTY1,arg); } //////////////////////////////////////////// // pack widget to container return owner->PackToSelf(component, container, buffer, parser); } else return false; } //////////////////////////// // WIDGET INSPECTOR STUFF //////////////////////////// /* This part of code is dedicated to widget inspector management. All widget described here have the purpose to let the end-user set component properties that will be showed at the bottom of the WI when end-user selects your component. So this part of code is only a footstep, you have to write your own, anyway i hope will be useful. I suggest to initially write components without this part and add it after you have checked component works properly withou properties setting. */ static GtkCalendarDisplayOptions calOptions[CHECK_BUTTONS_NUMBER] = { GTK_CALENDAR_SHOW_HEADING, GTK_CALENDAR_SHOW_DAY_NAMES, GTK_CALENDAR_NO_MONTH_CHANGE, GTK_CALENDAR_SHOW_WEEK_NUMBERS, GTK_CALENDAR_WEEK_START_MONDAY }; static char *cbCaptions[CHECK_BUTTONS_NUMBER] = { "Heading","Day names","No month change", "Week numbers","Week start on monday" }; /* This is called by Widget Inspector when end-user selects your component on edit form. */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { // assign inspector for later use inspector = isp; /* generally we make a frame and fill it with widgets. Frame will be returned to widget inspector and showed at his bottom */ VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); /* now we make a table that will accomodate all widgets since we have 5 check buttons and a set button we will use a 3 rows - 2 columns table like this: |-----------------------------| | <> show head | <> show day| |-------------- |-------------| | <> no ch month| <> show week| |-----------------------------| | <> start mond | Set button | |-----------------------------| */ VDKTable* table = new VDKTable(inspector,3,2,true); table->SetSize(219,-1); setButton = new VDKCustomButton(inspector,"Set"); table->AddToCell(setButton,2,1); // set component as parent setButton->Parent(this); // now we connect "clicked" signal with signal response SignalConnect(setButton,"clicked",&CLASS::OnSetProperties); // makes all check buttons GtkCalendarDisplayOptions options = DisplayOptions; int t = 0; for(;t < CHECK_BUTTONS_NUMBER; t++) { checkButtons[t] = new VDKCheckButton( inspector, cbCaptions[t]); checkButtons[t]->Checked = options & calOptions[t]; } // add cb to table table->AddToCell(checkButtons[0],0,0); table->AddToCell(checkButtons[1],0,1); table->AddToCell(checkButtons[2],1,0); table->AddToCell(checkButtons[3],1,1); table->AddToCell(checkButtons[4],2,0); /* we have finished, now add table to frame and return it */ bframe->Add(table,l_justify,false,false,false); return bframe; } /* signal response to clicked signal on setButton */ bool CLASS::OnSetProperties(VDKObject* sender) { GtkCalendarDisplayOptions options = (GtkCalendarDisplayOptions) 0; int t = 0; for(; t < CHECK_BUTTONS_NUMBER; t++) if(checkButtons[t]->Checked == true) { unsigned int o = (unsigned int) options; unsigned int ored = (unsigned int) calOptions[t]; o |= ored; options = (GtkCalendarDisplayOptions) o; } sprintf(buff,"%u", (unsigned int) options); SetPropValue(PROPERTY1, buff); DisplayOptions = options; inspector->FormNeedToBeChanged(); // returning true, signal is stopped here. return true; } vdkbuilder2-2.4.0/plugins/vdkb_comboentry.cc0000644000000000000000000003720010031777777014562 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ /* -------- OVERVIEW -------- - This file should be considered as a template for constructing vdkbuilder plugin components. Users should copy/paste and easily adapt this file to their own components. - See also plugins.txt into /plugins directory for further informations. */ // write here your component include file #define COMPO_INCLUDE // leave it as is #define INTERFACE_INCLUDE // write how vdkbuilder will name components pointers, // pointer names will be suffixed with a number // i.e: databox0 #define VDK_WIDGET "combo_entry" // write here your interface name // normally: CLASSComponentInterface #define INTERFACE VDKComboEntryComponentInterface // tip displayed into builder tool palette // change with your own #define COMPO_TIP "VDKComboEntry" ////////////////////// #include COMPO_INCLUDE #include INTERFACE_INCLUDE #include #include #include #include #include #include #include //////////////////////// /* icon to be displayed on toolbar palette */ /* change to your own icon, do not change COMPO_XPM, change string constants instead. */ static const char * COMPO_XPM[] = { /* width height num_colors chars_per_pixel */ " 22 20 5 1", /* colors */ ". c #000000", "# c #000080", "a c #000000", "b c #none", "c c #none", /* pixels */ "bbbbbbbbbbbbbbbbbbbbbb", "baaaaaaaaaaaaaa......b", "baccccccccccccc.cccb.b", "bac###########c.c..b.b", "baccccccccccccc.caab.b", "baccccccccccccc.bbbb.b", "ba...................b", "bbb.cccccccccccccccc.b", "bbb.cc############cc.b", "bbb.cccccccccccccccc.b", "bbb.cc###########ccc.b", "bbb.################.b", "bbb.##cccccccccccc##.b", "bbb.################.b", "bbb.cc###########ccc.b", "bbb.cccccccccccccccc.b", "bbb.cc############cc.b", "bbb.cccccccccccccccc.b", "bbb..................b", "bbbbbbbbbbbbbbbbbbbbbb" }; //////////////////////// /* Interface class for builder widget leave it as is */ class INTERFACE : public VDKBAbstractComponentInterface { public: INTERFACE() {} virtual ~INTERFACE() { } // write vdk code to create component char* CreateSource(char* buffer,VDKBParser& parser) { return CLASS::CreateSource(buffer,parser); } // parse .frm file to make the component bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { return CLASS::CreateWidget(owner,buffer,parser); } // make and add a new component to edit form int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL) { return CLASS::MakeWidget(owner,ev); } // return component icon to be inserted // into vdkbuilder tool palette const char** Icon() { return COMPO_XPM; } // icon tip const char* Tip() { return COMPO_TIP; } // return component vdk class name const char* VDKName() { return (const char*) VDK_CLASS; } }; // get a new interface object // this is called by plugin object from builder extern "C" VDKBAbstractComponentInterface* GetExportClass() { return new INTERFACE; } /* component properties, change here with your own or leave array empty like this: static char* vdk_props[] = { 0 }; if your component does not have any property to be set with the WI */ #define PROPERTY1 "Editable" #define PROPERTY2 "Sorted" /* #define PROPERTY3 "Scrollbars" */ static char* vdk_props[] = { PROPERTY1, PROPERTY2, /* PROPERTY3, */ 0 }; /* component provided signals, change here signal provided for your component or leave array empty like this: static char* vdk_signals[] = { 0 }; if your component does not have any signal provided */ #define SIGNAL1 "activate_signal" #define SIGNAL2 "changed_signal" #define SIGNAL3 "focus_in_signal" #define SIGNAL4 "focus_out_signal" /* #define SIGNAL5 "databox_selection_stopped_signal" #define SIGNAL6 "databox_selection_canceled_signal" */ static char* vdk_signals[] = { SIGNAL1, SIGNAL2, SIGNAL3, SIGNAL4, /* SIGNAL5, SIGNAL6, */ 0 }; /* component signal nicknames, they will be used to make signal response signatures like this: bool On(VdkObject* sender); e.g. Ondatabox1Zoomed(VDKObject* sender); Change here nicknames for your component or leave array empty like this: static char* vdk_nicknames[] = { 0 }; if your component does not have any signal provided */ #define NICK1 "Activated" #define NICK2 "Changed" #define NICK3 "FocusIn" #define NICK4 "FocusOut" /* #define NICK5 "SelectionStopped" #define NICK6 "SelectionCanceled" */ static char* vdk_nicknames[] = { NICK1, NICK2, NICK3, NICK4, /* NICK5, NICK6, */ 0 }; /* local buffer */ static char buff[256]; /* used to autogenerate default component names */ int CLASS::Counter = 0; // dynamic tables // leave it as is DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// ////////////////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner): VDK_ANCESTOR(owner),VDKBObject(name) { int t = 0; // newly constructed component counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add component specific properties to VDKBObject properties list for(t = 0; vdk_props[t]; t++) proplist.add(VDKBProperty(vdk_props[t])); // add component specifi signal to VDKBObject signal list for(t = 0; vdk_signals[t]; t++) siglist.add(VDKBSignal(vdk_signals[t], this, vdk_nicknames[t])); /* here you may want set some default value for some property: SetPropValue(<"property name">,<"property value">); e.g: //set a reasonable size fro the widget in the case // it will be dropped into a fixed container sprintf(buff,"%d,%d",150,110); SetPropValue("Usize",buff); */ //sprintf(buff,"%d",GTK_CALENDAR_SHOW_HEADING); SetPropValue("Editable","true"); //set a reasonable size fro the widget in the case // it will be dropped into a fixed container sprintf(buff,"%d,%d",150,20); SetPropValue("Usize",buff); // connects component common events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); // a reasonable initial size (mainly for adding the component // to a fixed container) // change to your own size SetSize(150,20); } /* overridden ButtonPressed used in substitution of VDKBObject::ButtonPress */ bool VDKBComboEntry::OverriddenButtonPressed(VDKObject* sender, GdkEvent* ev) { VDKBEventContainer* container; gtk_signal_emit_stop_by_name(GTK_OBJECT(sender->WrappedWidget()), "button_press_event"); container = dynamic_cast(sender->Parent()); if(container) // we pass instead // otherwise entry widget selection // is lost (don'y ask me why !) container->OnButtonPressed(this,ev); return true; } /////////////////////////////////////////////// // // WRITE WIDGET DESCRIPTION TO .FRM FILE // /////////////////////////////////////////////// /* Writes a .frm format representation of the component This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { int t; // first call ancestor to write common properties values VDKBObject::WriteOnFrm(fp,parentobj); // now we write component specific properties values. for( t = 0; vdk_props[t]; t++) fprintf(fp,"\n\t%s:%s;", vdk_props[t],(char*) GetProp(vdk_props[t])); } //////////////////////////////////////// // // PREPARE GUI WIDGETS // //////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc triggered when user wants drop a widget into a form. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable counter // to ensure unicity CLASS* component; // component name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else { // actually makes component // contains component pointer name (autogenerated) // may be your constructor is different // patch if necessary //////////////////////////////////////// component = new CLASS(buff,owner); //////////////////////////////////////// } /* in this part we write some widget specific initailization code, patch or comment out if not applicable to your widget */ //////////////////////////////////////////// // add component to form return owner->AddToSelf(component,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; // gets component name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; // writes code to make the component // may be your constructor is different // patch if necessary /////////////////////////////////////////////////////// sprintf(tmp,"\n%s = new %s(this);",obj_name,VDK_CLASS); /////////////////////////////////////////////////////// strcpy(source,tmp); // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } /* in this part we write some component specific initialization code, reading properties values from .frm file and setting them to into widget. */ /////////////////////////////////////////////////////////////// char local[64]; int t = 0; for( t = 0; vdk_props[t]; t++) { /* since in .frm file property is suffixed with colon we have to precisely write it in order to be correctly parsed by parser.GetParam() */ sprintf(local,"%s:",vdk_props[t]); if(parser.GetParam(arg,buffer,local) && strcmp(arg,NIHIL_PROP) ) { sprintf(tmp,"\n%s->%s = %s;", obj_name, vdk_props[t], arg); strcat(source,tmp); } } ////////////////////////////////////////////////////////////// // get code that adds component to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[64],local[64]; CLASS* component; // get component name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { // actually makes component // contains component pointer name (autogenerated) // may be your constructor is different // patch if necessary /////////////////////////////////////////// component = new CLASS(obj_name,owner); /////////////////////////////////////////// /* in this part we write some component specific initialization code, and we can't use vdk_props[] loop. Patch or comment out if not applicable to your widget */ sprintf(local,"%s:",PROPERTY1); if(parser.GetParam(arg,buffer,local) && strcmp(arg,NIHIL_PROP)) component->SetPropValue(PROPERTY1,arg); sprintf(local,"%s:",PROPERTY2); if(parser.GetParam(arg,buffer,local) && strcmp(arg,NIHIL_PROP)) component->SetPropValue(PROPERTY2,arg); //////////////////////////////////////////// // pack widget to container return owner->PackToSelf(component, container, buffer, parser); } else return false; } //////////////////////////// // WIDGET INSPECTOR STUFF //////////////////////////// /* This part of code is dedicated to widget inspector management. All widget described here have the purpose to let the end-user set component properties that will be showed at the bottom of the WI when end-user selects your component. So this part of code is only a footstep, you have to write your own, anyway i hope will be useful. I suggest to initially write components without this part and add it after you have checked component works properly withou properties setting. */ static char *cbCaptions[CHECK_BUTTONS_NUMBER] = { "Editable","Sorted" }; /* This is called by Widget Inspector when end-user selects your component on edit form. */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { // assign inspector for later use inspector = isp; /* generally we make a frame and fill it with widgets. Frame will be returned to widget inspector and showed at his bottom */ VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); /* now we make a table that will accomodate all widgets since we have 2 check buttons and a set button */ VDKTable* table = new VDKTable(inspector,2,1,true); table->SetSize(219,-1); setButton = new VDKCustomButton(inspector,"Set"); table->AddToCell(setButton,2,0); // set component as parent setButton->Parent(this); // now we connect "clicked" signal with signal response SignalConnect(setButton,"clicked",&CLASS::OnSetProperties); // makes all check buttons VDKString True = CHECK_TRUE; int t = 0; for(;t < CHECK_BUTTONS_NUMBER; t++) { checkButtons[t] = new VDKCheckButton( inspector, cbCaptions[t]); checkButtons[t]->Checked = GetProp(vdk_props[t]) == True; } // add cb to table table->AddToCell(checkButtons[0],0,0); table->AddToCell(checkButtons[1],0,1); /* we have finished, now add table to frame and return it */ bframe->Add(table,l_justify,false,false,false); return bframe; } /* signal response to clicked signal on setButton */ bool CLASS::OnSetProperties(VDKObject* sender) { int t = 0; for(; t < CHECK_BUTTONS_NUMBER; t++) { bool state = checkButtons[t]->Checked; SetPropValue(vdk_props[t],state ? CHECK_TRUE : CHECK_FALSE); } inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/plugins/vdkb_dclock.cc0000644000000000000000000003167007305376333013636 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ /* -------- OVERVIEW -------- - This file should be considered as a template for constructing vdkbuilder plugin components. Users should copy/paste and easily adapt this file to their own components. - See also plugins.txt into /plugins directory for further informations. */ // write here your component include file #define COMPO_INCLUDE // leave it as is #define INTERFACE_INCLUDE // write how vdkbuilder will name components pointers, // pointer names will be suffixed with a number // i.e: databox0 #define VDK_WIDGET "digiclock" // write here your interface name // normally: CLASS+ComponentInterface #define INTERFACE VDKBDigitalClockComponentInterface // tip displayed into builder tool palette // change with your own #define COMPO_TIP "VDKDigitalClock" ////////////////////// #include COMPO_INCLUDE #include INTERFACE_INCLUDE #include #include #include #include #include #include #include #include //////////////////////// /* icon to be displayed on toolbar palette */ /* change to your own icon, do not change COMPO_XPM, change string constants instead. */ static const char * COMPO_XPM[] = { "21 21 6 1", ". c #808080", "c c #c3c3c3", "a c #00ff00", "# c #000000", "d c None", "b c #ffffff", ".....................", ".###################.", ".#aaaa#aaaa###aaaa##.", ".#a##a#a##a###a##a##.", ".#a##a#a##a#a#a##a##.", ".#a##a#a##a#a#a##a##.", ".##aa###aa#####aa###.", ".#a##a#a##a###a##a##.", ".#a##a#a##a#a#a##a##.", ".#a##a#a##a#a#a##a##.", ".#aaaa#aaaa###aaaa##.", ".###################.", ".###################.", ".###################.", ".bbbbbbbbbbbbbbbbbbb.", ".bcccccccccccccccccc.", ".bd#dd#ddd#dd##dd#d#.", ".b#d#d#dd#d#d#d#d###.", ".b###d#dd###d###d#d#.", ".b#d#d##d#d#d#d#d#d#.", "....................." }; //////////////////////// /* Interface class for builder widget leave it as is */ class INTERFACE : public VDKBAbstractComponentInterface { public: INTERFACE() {} virtual ~INTERFACE() { } // write vdk code to create component char* CreateSource(char* buffer,VDKBParser& parser) { return CLASS::CreateSource(buffer,parser); } // parse .frm file to make the component bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { return CLASS::CreateWidget(owner,buffer,parser); } // make and add a new component to edit form int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL) { return CLASS::MakeWidget(owner,ev); } // return component icon to be inserted // into vdkbuilder tool palette const char** Icon() { return COMPO_XPM; } // icon tip const char* Tip() { return COMPO_TIP; } // return component vdk class name const char* VDKName() { return (const char*) VDK_CLASS; } }; // get a new interface object // this is called by plugin object from builder extern "C" VDKBAbstractComponentInterface* GetExportClass() { return new INTERFACE; } /* component properties, change here with your own or leave array empty like this: static char* vdk_props[] = { 0 }; if your component does not have any property to be set with the WI */ #define PROPERTY1 "Rulers" #define PROPERTY2 "Cross" #define PROPERTY3 "Scrollbars" static char* vdk_props[] = {/* PROPERTY1, PROPERTY2, PROPERTY3, */ 0 }; /* component provided signals, change here signal provided for your component or leave array empty like this: static char* vdk_signals[] = { 0 }; if your component does not have any signal provided */ #define SIGNAL1 "databox_zoomed_signal" #define SIGNAL2 "databox_marked_signal" #define SIGNAL3 "databox_selection_started_signal" #define SIGNAL4 "databox_selection_changed_signal" #define SIGNAL5 "databox_selection_stopped_signal" #define SIGNAL6 "databox_selection_canceled_signal" static char* vdk_signals[] = { /* SIGNAL1, SIGNAL2, SIGNAL3, SIGNAL4, SIGNAL5, SIGNAL6, */ 0 }; /* component signal nicknames, they will be used to make signal response signatures like this: bool On(VdkObject* sender); e.g. Ondatabox1Zoomed(VDKObject* sender); Change here nicknames for your component or leave array empty like this: static char* vdk_nicknames[] = { 0 }; if your component does not have any signal provided */ #define NICK1 "Zoomed" #define NICK2 "Marked" #define NICK3 "SelectionStarted" #define NICK4 "SelectionChanged" #define NICK5 "SelectionStopped" #define NICK6 "SelectionCanceled" static char* vdk_nicknames[] = { /* NICK1, NICK2, NICK3, NICK4, NICK5, NICK6, */ 0 }; /* local buffer */ static char buff[256]; /* used to autogenerate default component names */ int CLASS::Counter = 0; // dynamic tables // leave it as is DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// ////////////////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner): VDK_ANCESTOR(owner),VDKBObject(name) { int t = 0; // newly constructed component counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add component specific properties to VDKBObject properties list for(t = 0; vdk_props[t]; t++) proplist.add(VDKBProperty(vdk_props[t])); // add component specifi signal to VDKBObject signal list for(t = 0; vdk_signals[t]; t++) siglist.add(VDKBSignal(vdk_signals[t], this, vdk_nicknames[t])); /* here you may want set some default value for some property: SetPropValue(<"property name">,<"property value">); e.g: // set Rulers property to true SetPropValue(PROPERTY1,"true"); // even better set a reasonable size in the case // it will be dropped into a fixed container */ sprintf(buff,"%d,%d",60,40); SetPropValue("Usize",buff); // connects component common events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); // a reasonable initial size (mainly for adding the component // to a fixed container) // change to your own size SetSize(60,40); } /////////////////////////////////////////////// // // WRITE WIDGET DESCRIPTION TO .FRM FILE // /////////////////////////////////////////////// /* Writes a .frm format representation of the component This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { int t; // first call ancestor to write common properties values VDKBObject::WriteOnFrm(fp,parentobj); // now we write component specific properties values. for( t = 0; vdk_props[t]; t++) fprintf(fp,"\n\t%s:%s;", vdk_props[t],(char*) GetProp(vdk_props[t])); } //////////////////////////////////////// // // PREPARE GUI WIDGETS // //////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc triggered when user wants drop a widget into a form. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable counter // to ensure unicity CLASS* component; // component name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else { // actually makes component // contains component pointer name (autogenerated) // may be your constructor is different // patch if necessary //////////////////////////////////////// component = new CLASS(buff,owner); //////////////////////////////////////// } /* in this part we write some widget specific initailization code, patch or comment out if not applicable to your widget */ //////////////////////////////////////////// // add component to form return owner->AddToSelf(component,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; // gets component name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; // writes code to make the component // may be your constructor is different // patch if necessary /////////////////////////////////////////////////////// sprintf(tmp,"\n%s = new %s(this);",obj_name,VDK_CLASS); /////////////////////////////////////////////////////// strcpy(source,tmp); // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } /* in this part we write some component specific initialization code, reading properties values from .frm file and setting them to into widget. */ /////////////////////////////////////////////////////////////// char local[64]; int t = 0; for( t = 0; vdk_props[t]; t++) { /* since in .frm file property is suffixed with colon we have to precisely write it in order to be correctly parsed by parser.GetParam() */ sprintf(local,"%s:",vdk_props[t]); if(parser.GetParam(arg,buffer,local) && strcmp(arg,NIHIL_PROP) ) { sprintf(tmp,"\n%s->%s = %s;",obj_name,vdk_props[t],arg); strcat(source,tmp); } } ////////////////////////////////////////////////////////////// // get code that adds component to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; // char arg[64],local[64]; CLASS* component = NULL; // get component name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { // actually makes component // contains component pointer name (autogenerated) // may be your constructor is different // patch if necessary /////////////////////////////////////////// component = new CLASS(obj_name,owner); /////////////////////////////////////////// /* in this part we write some component specific initialization code, and we can't use vdk_props[] loop. Patch or comment out if not applicable to your widget */ //////////////////////////////////////////// // pack widget to container return owner->PackToSelf(component, container, buffer, parser); } else return false; } //////////////////////////// // WIDGET INSPECTOR STUFF //////////////////////////// /* This part of code is dedicated to widget inspector management. All widget described here have the purpose to let the end-user set component properties that will be showed at the bottom of the WI when end-user selects your component. So this part of code is only a footstep, you have to write your own, anyway i hope will be useful. I suggest to initially write components without this part and add it after you have checked component works properly withou properties setting. */ /* This is called by Widget Inspector when end-user selects your component on edit form. */ vdkbuilder2-2.4.0/plugins/vdkb_drawarea.cc0000644000000000000000000003127007441654057014164 /* * =========================== * VDK Builder * Version 2.0 * March 2002 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ /* -------- OVERVIEW -------- - This file should be considered as a template for constructing vdkbuilder plugin components. Users should copy/paste and easily adapt this file to their own components. - See also plugins.txt into /plugins directory for further informations. */ // write here your component include file #define COMPO_INCLUDE // leave it as is #define INTERFACE_INCLUDE // write how vdkbuilder will name components pointers, // pointer names will be suffixed with a number // i.e: databox0 #define VDK_WIDGET "drawarea" // write here your interface name // normally: CLASSComponentInterface #define INTERFACE VDKBDrawingAreaComponentInterface // tip displayed into builder tool palette // change with your own #define COMPO_TIP "Drawing area" ////////////////////// #include COMPO_INCLUDE #include INTERFACE_INCLUDE #include #include #include #include #include #include #include //////////////////////// /* icon to be displayed on toolbar palette */ /* change to your own icon, do not change COMPO_XPM, change string constants instead. */ static const char * COMPO_XPM[] = { /* width height num_colors chars_per_pixel */ " 24 24 6 1", /* colors */ ". c #000000", "# c #000080", "a c #none", "b c #none", "c c #none", "d c #ffff00", /* pixels */ "cbbbccccccccccccccccccca", "cbbbcbbbbbbbbbbbbbbba#ba", "cbbbcbbbbbbbbbbb#bba#aba", "cbbbcbbbbbbbbb##ba##abba", "cbbbcbbbbbbbb########bba", "cbbbcbbbbba.########abba", "cbbbcbbbbb.#c..##.##bbba", "cbbbcbbbba.##cccc..#bbba", "cbbbcbbbb.####c###.bbbba", "cbbbcbbba.#######.abbbba", "cbbbcbbb.a######a.bbbbba", "cbbbcbb.baa####a#abbbbba", "cbbbcb.cdcbaa#a.aabbbbba", "cbbbcb.bbddcba.aabbbbbba", "cbbbaa.bdbbda.aaaaaaaaaa", "cbbbbb.cba.b.aabbbbbbbbb", "cbbbb.cba###aabbbbbbbbbb", "cbbb.dba#aaabbbbbbbbbbbb", "cbb.dba#abbbbbbbbbbbbbbb", "cbb.a.#abbbbbbbbbbbbbbbb", "cbb..#abbbbbbbbbbbbbbbbb", "cbbbbbbbbbbbbbbbbbbbbbbb", "cbbbbbbbbbbbbbbbbbbbbbbb", "aaaaaaaaaaaaaaaaaaaaaaaaa" }; //////////////////////// /* Interface class for builder widget leave it as is */ class INTERFACE : public VDKBAbstractComponentInterface { public: INTERFACE() {} virtual ~INTERFACE() { } // write vdk code to create component char* CreateSource(char* buffer,VDKBParser& parser) { return CLASS::CreateSource(buffer,parser); } // parse .frm file to make the component bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { return CLASS::CreateWidget(owner,buffer,parser); } // make and add a new component to edit form int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL) { return CLASS::MakeWidget(owner,ev); } // return component icon to be inserted // into vdkbuilder tool palette const char** Icon() { return COMPO_XPM; } // icon tip const char* Tip() { return COMPO_TIP; } // return component vdk class name const char* VDKName() { return (const char*) VDK_CLASS; } }; // get a new interface object // this is called by plugin object from builder extern "C" VDKBAbstractComponentInterface* GetExportClass() { return new INTERFACE; } /* component properties, change here with your own or leave array empty like this: static char* vdk_props[] = { 0 }; if your component does not have any property to be set with the WI */ #define PROPERTY1 /* #define PROPERTY2 "Cross" #define PROPERTY3 "Scrollbars" */ static char* vdk_props[] = { /* PROPERTY1 PROPERTY2, PROPERTY3, */ 0 }; /* component provided signals, change here signal provided for your component or leave array empty like this: static char* vdk_signals[] = { 0 }; if your component does not have any signal provided */ /* #define SIGNAL1 #define SIGNAL2 #define SIGNAL3 #define SIGNAL4 #define SIGNAL5 #define SIGNAL6 */ static char* vdk_signals[] = { /* SIGNAL1, SIGNAL2, SIGNAL3, SIGNAL4, SIGNAL5, SIGNAL6, */ 0 }; /* component signal nicknames, they will be used to make signal response signatures like this: bool On(VdkObject* sender); e.g. Ondatabox1Zoomed(VDKObject* sender); Change here nicknames for your component or leave array empty like this: static char* vdk_nicknames[] = { 0 }; if your component does not have any signal provided */ /* #define NICK1 #define NICK2 #define NICK3 #define NICK4 #define NICK5 #define NICK6 */ static char* vdk_nicknames[] = { /* NICK1, NICK2, NICK3, NICK4, NICK5, NICK6, */ 0 }; /* local buffer */ static char buff[256]; /* used to autogenerate default component names */ int CLASS::Counter = 0; // dynamic tables // leave it as is DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner): VDK_ANCESTOR(owner),VDKBObject(name) { int t = 0; // newly constructed component counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add component specific properties to VDKBObject properties list for(t = 0; vdk_props[t]; t++) proplist.add(VDKBProperty(vdk_props[t])); // add component specifi signal to VDKBObject signal list for(t = 0; vdk_signals[t]; t++) siglist.add(VDKBSignal(vdk_signals[t], this, vdk_nicknames[t])); /* here you may want set some default value for some property: SetPropValue(<"property name">,<"property value">); e.g: //set a reasonable size fro the widget in the case // it will be dropped into a fixed container sprintf(buff,"%d,%d",150,110); SetPropValue("Usize",buff); */ //set a reasonable size fro the widget in the case // it will be dropped into a fixed container sprintf(buff,"%d,%d",150,110); SetPropValue("Usize",buff); // connects component common events. /* gtk_signal_connect(GTK_OBJECT(WrappedWidget()),"button_press_event", GTK_SIGNAL_FUNC(::OnCtreeButtonEvent), reinterpret_cast(this)); */ CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); // a reasonable initial size (mainly for adding the component // to a fixed container) // change to your own size SetSize(100,100); } /////////////////////////////////////////////// // // WRITE WIDGET DESCRIPTION TO .FRM FILE // /////////////////////////////////////////////// /* Writes a .frm format representation of the component This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { int t; // first call ancestor to write common properties values VDKBObject::WriteOnFrm(fp,parentobj); // now we write component specific properties values. for( t = 0; vdk_props[t]; t++) fprintf(fp,"\n\t%s:%s;", vdk_props[t],(char*) GetProp(vdk_props[t])); } //////////////////////////////////////// // // PREPARE GUI WIDGETS // //////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc triggered when user wants drop a widget into a form. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable counter // to ensure unicity CLASS* component; // component name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else { // actually makes component // contains component pointer name (autogenerated) // may be your constructor is different // patch if necessary //////////////////////////////////////// component = new CLASS(buff,owner); //////////////////////////////////////// } /* in this part we write some widget specific initailization code, patch or comment out if not applicable to your widget */ //////////////////////////////////////////// // add component to form return owner->AddToSelf(component,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; int smode = 0; char local[64]; // gets component name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; // writes code to make the component // may be your constructor is different // patch if necessary /////////////////////////////////////////////////////// sprintf(tmp,"\n%s = new %s(this);", obj_name,VDK_CLASS); strcpy(source,tmp); // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } /* in this part we write some component specific initialization code, reading properties values from .frm file and setting them to into widget. */ ////////////////////////////////////////////////////////////// // get code that adds component to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[64]; int smode; CLASS* component; // get component name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { // actually makes component // contains component pointer name (autogenerated) // may be your constructor is different // patch if necessary /////////////////////////////////////////// component = new CLASS(obj_name,owner); /////////////////////////////////////////// /* in this part we write some component specific initialization code, and we can't use vdk_props[] loop. Patch or comment out if not applicable to your widget */ //////////////////////////////////////////// // pack widget to container return owner->PackToSelf(component, container, buffer, parser); } else return false; } //////////////////////////// // WIDGET INSPECTOR STUFF //////////////////////////// /* This part of code is dedicated to widget inspector management. All widget described here have the purpose to let the end-user set component properties that will be showed at the bottom of the WI when end-user selects your component. So this part of code is only a footstep, you have to write your own, anyway i hope will be useful. I suggest to initially write components without this part and add it after you have checked component works properly withou properties setting. */ /* This is called by Widget Inspector when end-user selects your component on edit form. */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { return VDKBObject::ExtraWidget(isp); } vdkbuilder2-2.4.0/plugins/vdkb_treeview.cc0000644000000000000000000003607707422654600014233 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ /* -------- OVERVIEW -------- - This file should be considered as a template for constructing vdkbuilder plugin components. Users should copy/paste and easily adapt this file to their own components. - See also plugins.txt into /plugins directory for further informations. */ // write here your component include file #define COMPO_INCLUDE // leave it as is #define INTERFACE_INCLUDE // write how vdkbuilder will name components pointers, // pointer names will be suffixed with a number // i.e: databox0 #define VDK_WIDGET "treeview" // write here your interface name // normally: CLASSComponentInterface #define INTERFACE VDKBTreeViewComponentInterface // tip displayed into builder tool palette // change with your own #define COMPO_TIP "TreeView" ////////////////////// #include COMPO_INCLUDE #include INTERFACE_INCLUDE #include #include #include #include #include #include #include //////////////////////// /* icon to be displayed on toolbar palette */ /* change to your own icon, do not change COMPO_XPM, change string constants instead. */ static const char * COMPO_XPM[] = { "22 21 7 1", ". c #808080", "# c #000000", "e c #ffff00", "b c #303030", "d c #0000ff", "a c #ffffff", "c c #ff0000", "......................", ".####################.", ".#aaaaaaaaaaaaa#aaa.#.", ".#bbbaaaaaaaaaa#a##.#.", ".#aabaaaaaaaaaa#a##.#.", ".#aabaaacccaaaa#....#.", ".#aabbbbcccaaaa######.", ".#aabaabaaaaaaa#a.a.#.", ".#aabaa#aaaaaaa#.a.a#.", ".#aabaa#aaaddda#a.a.#.", ".#aabaa####ddda#.a.a#.", ".#aabaaaaa#aaaa#a.a.#.", ".#aabaaaaa#aaaa#.a.a#.", ".#aabaaaaa###aa#a.a.#.", ".#aabaaaaaaaaaa######.", ".#aabaaaeeeaaaa#aaa.#.", ".#aab###eeeaaaa#a##.#.", ".#aaaaaaaaaaaaa#a##.#.", ".#aaaaaaaaaaaaa#....#.", ".####################.", "......................" }; //////////////////////// /* Interface class for builder widget leave it as is */ class INTERFACE : public VDKBAbstractComponentInterface { public: INTERFACE() {} virtual ~INTERFACE() { } // write vdk code to create component char* CreateSource(char* buffer,VDKBParser& parser) { return CLASS::CreateSource(buffer,parser); } // parse .frm file to make the component bool CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { return CLASS::CreateWidget(owner,buffer,parser); } // make and add a new component to edit form int MakeWidget(VDKBGuiForm* owner, GdkEvent* ev = NULL) { return CLASS::MakeWidget(owner,ev); } // return component icon to be inserted // into vdkbuilder tool palette const char** Icon() { return COMPO_XPM; } // icon tip const char* Tip() { return COMPO_TIP; } // return component vdk class name const char* VDKName() { return (const char*) VDK_CLASS; } }; // get a new interface object // this is called by plugin object from builder extern "C" VDKBAbstractComponentInterface* GetExportClass() { return new INTERFACE; } /* component properties, change here with your own or leave array empty like this: static char* vdk_props[] = { 0 }; if your component does not have any property to be set with the WI */ #define PROPERTY1 "SelectionMode" /* #define PROPERTY2 "Cross" #define PROPERTY3 "Scrollbars" */ static char* vdk_props[] = { PROPERTY1, /* PROPERTY2, PROPERTY3, */ 0 }; /* component provided signals, change here signal provided for your component or leave array empty like this: static char* vdk_signals[] = { 0 }; if your component does not have any signal provided */ #define SIGNAL1 "select_row_signal" #define SIGNAL2 "row_activated_signal" #define SIGNAL3 "click_column_signal" /* #define SIGNAL4 "databox_selection_changed_signal" #define SIGNAL5 "databox_selection_stopped_signal" #define SIGNAL6 "databox_selection_canceled_signal" */ static char* vdk_signals[] = { SIGNAL1, SIGNAL2, SIGNAL3, /* SIGNAL4, SIGNAL5, SIGNAL6, */ 0 }; /* component signal nicknames, they will be used to make signal response signatures like this: bool On(VdkObject* sender); e.g. Ondatabox1Zoomed(VDKObject* sender); Change here nicknames for your component or leave array empty like this: static char* vdk_nicknames[] = { 0 }; if your component does not have any signal provided */ #define NICK1 "RowSelected" #define NICK2 "RowActivated" #define NICK3 "ColumnClicked" /* #define NICK4 "SelectionChanged" #define NICK5 "SelectionStopped" #define NICK6 "SelectionCanceled" */ static char* vdk_nicknames[] = { NICK1, NICK2, NICK3, /* NICK4, NICK5, NICK6, */ 0 }; /* local buffer */ static char buff[256]; /* used to autogenerate default component names */ int CLASS::Counter = 0; // dynamic tables // leave it as is DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// /* static int OnCtreeButtonEvent(GtkWidget *w, GdkEvent* event, void* o) { g_return_val_if_fail(o != NULL, FALSE); g_return_val_if_fail(w != NULL, FALSE); CLASS* obj = reinterpret_cast(o); obj->ButtonPressed(obj->ObjectFromVDK(), event); return FALSE; } */ ////////////////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner): VDK_ANCESTOR(owner),VDKBObject(name) { int t = 0; // newly constructed component counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add component specific properties to VDKBObject properties list for(t = 0; vdk_props[t]; t++) proplist.add(VDKBProperty(vdk_props[t])); // add component specifi signal to VDKBObject signal list for(t = 0; vdk_signals[t]; t++) siglist.add(VDKBSignal(vdk_signals[t], this, vdk_nicknames[t])); /* here you may want set some default value for some property: SetPropValue(<"property name">,<"property value">); e.g: //set a reasonable size fro the widget in the case // it will be dropped into a fixed container sprintf(buff,"%d,%d",150,110); SetPropValue("Usize",buff); */ //set a reasonable size fro the widget in the case // it will be dropped into a fixed container sprintf(buff,"%d,%d",150,110); SetPropValue("Usize",buff); // connects component common events. /* gtk_signal_connect(GTK_OBJECT(WrappedWidget()),"button_press_event", GTK_SIGNAL_FUNC(::OnCtreeButtonEvent), reinterpret_cast(this)); */ CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); // a reasonable initial size (mainly for adding the component // to a fixed container) // change to your own size SetSize(100,100); } /////////////////////////////////////////////// // // WRITE WIDGET DESCRIPTION TO .FRM FILE // /////////////////////////////////////////////// /* Writes a .frm format representation of the component This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { int t; // first call ancestor to write common properties values VDKBObject::WriteOnFrm(fp,parentobj); // now we write component specific properties values. for( t = 0; vdk_props[t]; t++) fprintf(fp,"\n\t%s:%s;", vdk_props[t],(char*) GetProp(vdk_props[t])); } //////////////////////////////////////// // // PREPARE GUI WIDGETS // //////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc triggered when user wants drop a widget into a form. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable counter // to ensure unicity CLASS* component; // component name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else { // actually makes component // contains component pointer name (autogenerated) // may be your constructor is different // patch if necessary //////////////////////////////////////// component = new CLASS(buff,owner); //////////////////////////////////////// } /* in this part we write some widget specific initailization code, patch or comment out if not applicable to your widget */ //////////////////////////////////////////// // add component to form return owner->AddToSelf(component,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; int smode = 0; char local[64]; // gets component name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; // writes code to make the component // may be your constructor is different // patch if necessary /////////////////////////////////////////////////////// sprintf(local,"%s:",vdk_props[0]); if(parser.GetParam(arg,buffer,local) && strcmp(arg,NIHIL_PROP)) { smode = atoi(arg); } sprintf(tmp,"\n%s = new %s(this,NULL,(GtkSelectionMode) %d);", obj_name,VDK_CLASS,smode); /////////////////////////////////////////////////////// strcpy(source,tmp); // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } /* in this part we write some component specific initialization code, reading properties values from .frm file and setting them to into widget. */ ////////////////////////////////////////////////////////////// // get code that adds component to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp,false); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[64]; int smode; CLASS* component; // get component name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; if(parser.GetParam(arg,buffer,"SelectionMode:") && strcmp(arg,NIHIL_PROP)) smode = atoi(arg); VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { // actually makes component // contains component pointer name (autogenerated) // may be your constructor is different // patch if necessary /////////////////////////////////////////// component = new CLASS(obj_name,owner); /////////////////////////////////////////// /* in this part we write some component specific initialization code, and we can't use vdk_props[] loop. Patch or comment out if not applicable to your widget */ if(parser.GetParam(arg,buffer,"SelectionMode:") && strcmp(arg,NIHIL_PROP)) component->SetPropValue("SelectionMode",arg); //////////////////////////////////////////// // pack widget to container return owner->PackToSelf(component, container, buffer, parser); } else return false; } //////////////////////////// // WIDGET INSPECTOR STUFF //////////////////////////// /* This part of code is dedicated to widget inspector management. All widget described here have the purpose to let the end-user set component properties that will be showed at the bottom of the WI when end-user selects your component. So this part of code is only a footstep, you have to write your own, anyway i hope will be useful. I suggest to initially write components without this part and add it after you have checked component works properly withou properties setting. */ /* GTK_SELECTION_SINGLE, GTK_SELECTION_BROWSE, GTK_SELECTION_MULTIPLE, GTK_SELECTION_EXTENDED */ static char *selectionmodes[] = { "none","single","browse","multiple",0 }; /* This is called by Widget Inspector when end-user selects your component on edit form. */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { // assign inspector for later use inspector = isp; /* generally we make a frame and fill it with widgets. Frame will be returned to widget inspector and showed at his bottom */ VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); /* now we make a table that will accomodate all widgets */ VDKTable* table = new VDKTable(inspector,1,2,true); table->SetSize(219,-1); setButton = new VDKCustomButton(inspector,"Set sel mode"); table->AddToCell(setButton,0,0); // set component as parent setButton->Parent(this); // now we connect "clicked" signal with signal response SignalConnect(setButton,"clicked",&CLASS::OnSetSelectionMode); selmode = new VDKCombo(inspector,NULL); selmode->SetSize(100,-1); StringList sm; int t = 0; for(;selectionmodes[t];t++) sm.add(VDKString(selectionmodes[t])); selmode->PopdownStrings = sm; table->AddToCell(selmode,0,1); int r = atoi(GetProp(vdk_props[0])); selmode->SelectItem(r); /* we have finished, now add table to frame and return it */ bframe->Add(table,l_justify,false,false,false); return bframe; } /* signal response to clicked signal on setButton */ bool CLASS::OnSetSelectionMode(VDKObject* sender) { int sel = selmode->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); SetPropValue(vdk_props[0],buff); inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/plugins/vdkdclock.cc0000644000000000000000000001107507430210523013315 #include #include #include #include static char buff[64]; DEFINE_SIGNAL_LIST(VDKDigitalClock,VDKEventBox); DEFINE_EVENT_LIST(VDKDigitalClock,VDKEventBox); /* constructor */ VDKDigitalClock::VDKDigitalClock(VDKForm* owner,bool activated): VDKEventBox(owner),activated(activated), ClockBackground("ClockBackground",this,clBlack, &VDKDigitalClock::SetClockBackground), ClockForeground("ClockForeground",this,clGreen, &VDKDigitalClock::SetClockForeground), Alarm("Alarm",this,VDKPoint(-1,-1),&VDKDigitalClock::SetAlarm) { ConnectDefaultSignals(); } /* fill the widget and initialize */ void VDKDigitalClock::Setup(void) { VDKFixed* fixed = new VDKFixed(Owner()); // makes a timer with 1000 msecs thick timer = new VDKTimer(Owner(),1000,false); // since timer isn't added it has Owner() as // default parent. // we change the parent to in order to // receive timer_tick_signal timer->Parent(this); // add a canvas used to display time clock = new VDKCanvas(Owner(),60,20); clock->NormalBackground = ClockBackground; clock->Foreground = ClockForeground; clock->Font = new VDKFont(Owner(),"courier bold 10"); fixed->Add(clock,0,0); // add a button set = new VDKCustomButton(Owner(),"Alarm"); set->SetSize(60,20); fixed->Add(set,0,21); Add(fixed,l_justify,false,false,0); // by default disables alarm alarm_enabled = false; // initialize pop form to NULL popform = NULL; // if(activated) Activate(); } /* */ void VDKDigitalClock::Activate() { // starts timer timer->Start(); // connect timer with , since // "timer_tick_signal" isn't a gtk+ // provided signal we have to set // arg to false thus letting vdk to // handle signal internally. SignalConnect(timer,"timer_tick_signal", &VDKDigitalClock::OnTimer,false); // connect button with SignalConnect(set,"clicked",&VDKDigitalClock::OnSetClick); // connect canvas event EventConnect(clock,"expose_event",&VDKDigitalClock::OnExpose); EventConnect(clock,"button_press_event", &VDKDigitalClock::OnClockButtonPress); EventConnect(clock,"button_release_event", &VDKDigitalClock::OnClockButtonRelease); } /* destructor */ VDKDigitalClock::~VDKDigitalClock() { timer->Stop(); } /* sets background */ void VDKDigitalClock::SetClockBackground(VDKRgb back) { clock->NormalBackground = ClockBackground; OnTimer(NULL); } /* sets foreground */ void VDKDigitalClock::SetClockForeground(VDKRgb back) { OnTimer(NULL); } /* received when user clicks on "Alarm" button, emits a "clock_alarm_set" to parent. */ bool VDKDigitalClock::OnSetClick(VDKObject*) { SignalEmitParent("clock_alarm_set"); return true; } /* received when timer ticks, displays time and send "clock_alarm" if applicable */ bool VDKDigitalClock::OnTimer(VDKObject*) { time_t t = time(&t); struct tm *loc_t = localtime(&t); sprintf(timebuff,"%02d:%02d:%02d", loc_t->tm_hour, loc_t->tm_min, loc_t->tm_sec); clock->Foreground = ClockForeground; clock->Clear(); clock->DrawString(8,15,timebuff); clock->Redraw(); VDKPoint p = Alarm; if((alarm_enabled) && (p.x >= 0) && (p.y >= 0) && (p.x == loc_t->tm_hour) && (p.y == loc_t->tm_min) ) { SignalEmitParent("clock_alarm"); } return true; } /* call OnTimer with NULL so time will be redisplayed, The first time is received set current date as tip. */ bool VDKDigitalClock::OnExpose(VDKObject *, GdkEvent* event) { static bool exposed = false; if(!exposed) { calendardate today; sprintf(buff,"%s",today.CalendarDate()); clock->SetTip(buff); } OnTimer(NULL); exposed = true; return true; } /* make a splash form displaying current alarm setting */ void VDKDigitalClockPopForm::Setup() { NormalBackground = clWhite; if(alarm.x < 0 || alarm.y < 0) sprintf(buff,"no alarm"); else sprintf(buff,"alarm at: %02d:%02d",alarm.x,alarm.y); VDKLabel* label = new VDKLabel(this,buff); Add(label,false,false,false); } /* display splash form */ bool VDKDigitalClock::OnClockButtonPress(VDKObject *, GdkEvent* event) { if(!popform) { VDKPoint alarm = Alarm; popform = new VDKDigitalClockPopForm(Owner(),alarm); popform->Setup(); popform->Show(GTK_WIN_POS_MOUSE); } return true; } /* remove splash form */ bool VDKDigitalClock::OnClockButtonRelease(VDKObject *, GdkEvent* event) { if(popform) { popform->Close(); popform->Destroy(); popform = NULL; } return true; } vdkbuilder2-2.4.0/vdkbuilder/0000777000000000000000000000000010052402420011565 5vdkbuilder2-2.4.0/vdkbuilder/Makefile.in0000644000000000000000000010766110052401333013563 # Makefile.in generated by automake 1.7.8 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GENCAT = @GENCAT@ GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLBISON = @INTLBISON@ INTLLIBS = @INTLLIBS@ INTLOBJS = @INTLOBJS@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PLUGINS_LIBDIR = @PLUGINS_LIBDIR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_NLS = @USE_NLS@ VDK_CFLAGS = @VDK_CFLAGS@ VDK_CONFIG = @VDK_CONFIG@ VDK_LIBS = @VDK_LIBS@ VDK_VERSION_MAJOR = @VDK_VERSION_MAJOR@ VDK_VERSION_MICRO = @VDK_VERSION_MICRO@ VDK_VERSION_MINOR = @VDK_VERSION_MINOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ vdkxdbpath = @vdkxdbpath@ SUBDIRS = pixmaps bin_PROGRAMS = vdkb2 INCLUDES = -I$(top_srcdir)/include $(VDK_CFLAGS) #vdkb_LDFLAGS = $(VDK_LIBS) vdkb2_LDADD = $(VDK_LIBS) vdkb2_LDFLAGS = -export-dynamic EXTRA_DIST = vdkb2_SOURCES = \ input.cc\ line-arrow.xbm\ line-wrap.xbm\ vdkb.cc\ vdkb_about.cc\ vdkb_acsupport.cc\ vdkb_bugfix.cc\ vdkb_cbrowse.cc\ vdkb_cbuttdlg.cc\ vdkb_checkbutton.cc\ vdkb_clistdlg.cc\ vdkb_clistdlg_gui.cc\ vdkb_clipdlg.cc\ vdkb_combo.cc\ vdkb_compodb.cc\ vdkb_createform.cc\ vdkb_custombutton.cc\ vdkb_customlist.cc\ vdkb_customtree.cc\ vdkb_dedit.cc\ vdkb_design.cc\ vdkb_dlgs.cc\ vdkb_editor.cc\ vdkb_edhelp.cc\ vdkb_edhint.cc\ vdkb_emacs.cc\ vdkb_entry.cc\ vdkb_Env.cc\ vdkb_evbox.cc\ vdkb_evcontain.cc\ vdkb_evlabel.cc\ vdkb_evpbar.cc\ vdkb_evslider.cc\ vdkb_fixed.cc\ vdkb_form.cc\ vdkb_frame.cc\ vdkb_frmlist.cc\ vdkb_gnomeappbar.cc\ vdkb_gnomeentry.cc\ vdkb_grep.cc\ vdkb_guicanvas.cc\ vdkb_handlebox.cc\ vdkb_ide_def.cc\ vdkb_image.cc\ vdkb_locale.cc\ vdkb_logo.cc\ vdkb_lru.cc\ vdkb_main_automa.cc\ vdkb_main_sig.cc\ vdkb_maker.cc\ vdkb_menu.cc\ vdkb_menubar.cc\ vdkb_menuitem.cc\ vdkb_nbook.cc\ vdkb_nls.cc \ vdkb_notebook.cc\ vdkb_object.cc\ vdkb_objinspect.cc\ vdkb_orderdlg.cc \ vdkb_paned.cc\ vdkb_parser.cc\ vdkb_pbar.cc\ vdkb_pixmap.cc\ vdkb_pholder.cc\ vdkb_plugin.cc\ vdkb_prj.cc\ vdkb_prjman.cc\ vdkb_prjopt.cc\ vdkb_prjpref.cc\ vdkb_PWizard.cc\ vdkb_prop.cc\ vdkb_radiobutton.cc\ vdkb_spinbutton.cc\ vdkb_rbgroup.cc\ vdkb_replace.cc\ vdkb_sbar.cc\ vdkb_scrolled.cc\ vdkb_search.cc\ vdkb_separator.cc\ vdkb_signal.cc\ vdkb_slider.cc\ vdkb_tabledlg.cc\ vdkb_tabledlg_gui.cc\ vdkb_templates.cc\ vdkb_table.cc\ vdkb_text.cc\ vdkb_textlabel.cc\ vdkb_textwidget.cc\ vdkb_timebar.cc\ vdkb_toolbar.cc\ vdkb_tooldialog.cc\ vdkb_tooldialog_gui.cc\ vdkb_unit.cc\ vdkb_utils.cc\ vdkb_widclip.cc\ vdkb_widpopmenu.cc\ vdkb_widsel.c\ vdkb_xcheckbutton.cc\ vdkb_xcustomlist.cc\ vdkb_xentry.cc \ vdkb_xmemo.cc \ vdkb_xtDlg.cc \ vdkxpmbrowser.cc subdir = vdkbuilder ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = bin_PROGRAMS = vdkb2$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) am_vdkb2_OBJECTS = input.$(OBJEXT) vdkb.$(OBJEXT) vdkb_about.$(OBJEXT) \ vdkb_acsupport.$(OBJEXT) vdkb_bugfix.$(OBJEXT) \ vdkb_cbrowse.$(OBJEXT) vdkb_cbuttdlg.$(OBJEXT) \ vdkb_checkbutton.$(OBJEXT) vdkb_clistdlg.$(OBJEXT) \ vdkb_clistdlg_gui.$(OBJEXT) vdkb_clipdlg.$(OBJEXT) \ vdkb_combo.$(OBJEXT) vdkb_compodb.$(OBJEXT) \ vdkb_createform.$(OBJEXT) vdkb_custombutton.$(OBJEXT) \ vdkb_customlist.$(OBJEXT) vdkb_customtree.$(OBJEXT) \ vdkb_dedit.$(OBJEXT) vdkb_design.$(OBJEXT) vdkb_dlgs.$(OBJEXT) \ vdkb_editor.$(OBJEXT) vdkb_edhelp.$(OBJEXT) \ vdkb_edhint.$(OBJEXT) vdkb_emacs.$(OBJEXT) vdkb_entry.$(OBJEXT) \ vdkb_Env.$(OBJEXT) vdkb_evbox.$(OBJEXT) \ vdkb_evcontain.$(OBJEXT) vdkb_evlabel.$(OBJEXT) \ vdkb_evpbar.$(OBJEXT) vdkb_evslider.$(OBJEXT) \ vdkb_fixed.$(OBJEXT) vdkb_form.$(OBJEXT) vdkb_frame.$(OBJEXT) \ vdkb_frmlist.$(OBJEXT) vdkb_gnomeappbar.$(OBJEXT) \ vdkb_gnomeentry.$(OBJEXT) vdkb_grep.$(OBJEXT) \ vdkb_guicanvas.$(OBJEXT) vdkb_handlebox.$(OBJEXT) \ vdkb_ide_def.$(OBJEXT) vdkb_image.$(OBJEXT) \ vdkb_locale.$(OBJEXT) vdkb_logo.$(OBJEXT) vdkb_lru.$(OBJEXT) \ vdkb_main_automa.$(OBJEXT) vdkb_main_sig.$(OBJEXT) \ vdkb_maker.$(OBJEXT) vdkb_menu.$(OBJEXT) vdkb_menubar.$(OBJEXT) \ vdkb_menuitem.$(OBJEXT) vdkb_nbook.$(OBJEXT) vdkb_nls.$(OBJEXT) \ vdkb_notebook.$(OBJEXT) vdkb_object.$(OBJEXT) \ vdkb_objinspect.$(OBJEXT) vdkb_orderdlg.$(OBJEXT) \ vdkb_paned.$(OBJEXT) vdkb_parser.$(OBJEXT) vdkb_pbar.$(OBJEXT) \ vdkb_pixmap.$(OBJEXT) vdkb_pholder.$(OBJEXT) \ vdkb_plugin.$(OBJEXT) vdkb_prj.$(OBJEXT) vdkb_prjman.$(OBJEXT) \ vdkb_prjopt.$(OBJEXT) vdkb_prjpref.$(OBJEXT) \ vdkb_PWizard.$(OBJEXT) vdkb_prop.$(OBJEXT) \ vdkb_radiobutton.$(OBJEXT) vdkb_spinbutton.$(OBJEXT) \ vdkb_rbgroup.$(OBJEXT) vdkb_replace.$(OBJEXT) \ vdkb_sbar.$(OBJEXT) vdkb_scrolled.$(OBJEXT) \ vdkb_search.$(OBJEXT) vdkb_separator.$(OBJEXT) \ vdkb_signal.$(OBJEXT) vdkb_slider.$(OBJEXT) \ vdkb_tabledlg.$(OBJEXT) vdkb_tabledlg_gui.$(OBJEXT) \ vdkb_templates.$(OBJEXT) vdkb_table.$(OBJEXT) \ vdkb_text.$(OBJEXT) vdkb_textlabel.$(OBJEXT) \ vdkb_textwidget.$(OBJEXT) vdkb_timebar.$(OBJEXT) \ vdkb_toolbar.$(OBJEXT) vdkb_tooldialog.$(OBJEXT) \ vdkb_tooldialog_gui.$(OBJEXT) vdkb_unit.$(OBJEXT) \ vdkb_utils.$(OBJEXT) vdkb_widclip.$(OBJEXT) \ vdkb_widpopmenu.$(OBJEXT) vdkb_widsel.$(OBJEXT) \ vdkb_xcheckbutton.$(OBJEXT) vdkb_xcustomlist.$(OBJEXT) \ vdkb_xentry.$(OBJEXT) vdkb_xmemo.$(OBJEXT) vdkb_xtDlg.$(OBJEXT) \ vdkxpmbrowser.$(OBJEXT) vdkb2_OBJECTS = $(am_vdkb2_OBJECTS) vdkb2_DEPENDENCIES = DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/input.Po ./$(DEPDIR)/vdkb.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_Env.Po ./$(DEPDIR)/vdkb_PWizard.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_about.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_acsupport.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_bugfix.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_cbrowse.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_cbuttdlg.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_checkbutton.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_clipdlg.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_clistdlg.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_clistdlg_gui.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_combo.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_compodb.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_createform.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_custombutton.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_customlist.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_customtree.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_dedit.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_design.Po ./$(DEPDIR)/vdkb_dlgs.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_edhelp.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_edhint.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_editor.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_emacs.Po ./$(DEPDIR)/vdkb_entry.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_evbox.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_evcontain.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_evlabel.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_evpbar.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_evslider.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_fixed.Po ./$(DEPDIR)/vdkb_form.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_frame.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_frmlist.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_gnomeappbar.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_gnomeentry.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_grep.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_guicanvas.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_handlebox.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_ide_def.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_image.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_locale.Po ./$(DEPDIR)/vdkb_logo.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_lru.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_main_automa.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_main_sig.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_maker.Po ./$(DEPDIR)/vdkb_menu.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_menubar.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_menuitem.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_nbook.Po ./$(DEPDIR)/vdkb_nls.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_notebook.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_object.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_objinspect.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_orderdlg.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_paned.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_parser.Po ./$(DEPDIR)/vdkb_pbar.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_pholder.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_pixmap.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_plugin.Po ./$(DEPDIR)/vdkb_prj.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_prjman.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_prjopt.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_prjpref.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_prop.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_radiobutton.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_rbgroup.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_replace.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_sbar.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_scrolled.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_search.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_separator.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_signal.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_slider.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_spinbutton.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_table.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_tabledlg.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_tabledlg_gui.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_templates.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_text.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_textlabel.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_textwidget.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_timebar.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_toolbar.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_tooldialog.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_tooldialog_gui.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_unit.Po ./$(DEPDIR)/vdkb_utils.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_widclip.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_widpopmenu.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_widsel.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_xcheckbutton.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_xcustomlist.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_xentry.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkb_xmemo.Po ./$(DEPDIR)/vdkb_xtDlg.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/vdkxpmbrowser.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ DIST_SOURCES = $(vdkb2_SOURCES) RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ ps-recursive install-info-recursive uninstall-info-recursive \ all-recursive install-data-recursive install-exec-recursive \ installdirs-recursive install-recursive uninstall-recursive \ check-recursive installcheck-recursive DIST_COMMON = $(srcdir)/Makefile.in AUTHORS Makefile.am DIST_SUBDIRS = $(SUBDIRS) SOURCES = $(vdkb2_SOURCES) all: all-recursive .SUFFIXES: .SUFFIXES: .c .cc .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu vdkbuilder/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ || test -f $$p1 \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ rm -f $(DESTDIR)$(bindir)/$$f; \ done clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done vdkb2$(EXEEXT): $(vdkb2_OBJECTS) $(vdkb2_DEPENDENCIES) @rm -f vdkb2$(EXEEXT) $(CXXLINK) $(vdkb2_LDFLAGS) $(vdkb2_OBJECTS) $(vdkb2_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_Env.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_PWizard.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_about.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_acsupport.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_bugfix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_cbrowse.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_cbuttdlg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_checkbutton.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_clipdlg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_clistdlg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_clistdlg_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_combo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_compodb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_createform.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_custombutton.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_customlist.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_customtree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_dedit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_design.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_dlgs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_edhelp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_edhint.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_editor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_emacs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_entry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_evbox.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_evcontain.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_evlabel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_evpbar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_evslider.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_fixed.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_form.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_frame.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_frmlist.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_gnomeappbar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_gnomeentry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_grep.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_guicanvas.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_handlebox.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_ide_def.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_image.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_locale.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_logo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_lru.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_main_automa.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_main_sig.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_maker.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_menu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_menubar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_menuitem.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_nbook.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_nls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_notebook.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_object.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_objinspect.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_orderdlg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_paned.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_parser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_pbar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_pholder.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_pixmap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_plugin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_prj.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_prjman.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_prjopt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_prjpref.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_prop.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_radiobutton.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_rbgroup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_replace.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_sbar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_scrolled.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_search.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_separator.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_signal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_slider.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_spinbutton.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_table.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_tabledlg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_tabledlg_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_templates.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_text.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_textlabel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_textwidget.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_timebar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_toolbar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_tooldialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_tooldialog_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_unit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_widclip.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_widpopmenu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_widsel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_xcheckbutton.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_xcustomlist.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_xentry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_xmemo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkb_xtDlg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdkxpmbrowser.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` .c.lo: @am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< .cc.o: @am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ @am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCXX_TRUE@ fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< .cc.obj: @am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ @am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCXX_TRUE@ fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` .cc.lo: @am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ @am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ @am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ @am__fastdepCXX_TRUE@ fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ETAGS = etags ETAGSFLAGS = CTAGS = ctags CTAGSFLAGS = tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if (etags --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ else \ include_option=--include; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -f $$subdir/TAGS && \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$tags$$unique" \ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" \ distdir=../$(distdir)/$$subdir \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(PROGRAMS) installdirs: installdirs-recursive installdirs-am: $(mkinstalldirs) $(DESTDIR)$(bindir) install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: info: info-recursive info-am: install-data-am: install-exec-am: install-binPROGRAMS install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool clean-recursive \ ctags ctags-recursive distclean distclean-compile \ distclean-generic distclean-libtool distclean-recursive \ distclean-tags distdir dvi dvi-am dvi-recursive info info-am \ info-recursive install install-am install-binPROGRAMS \ install-data install-data-am install-data-recursive \ install-exec install-exec-am install-exec-recursive \ install-info install-info-am install-info-recursive install-man \ install-recursive install-strip installcheck installcheck-am \ installdirs installdirs-am installdirs-recursive \ maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ tags-recursive uninstall uninstall-am uninstall-binPROGRAMS \ uninstall-info-am uninstall-info-recursive uninstall-recursive # vdkb_ccproj.cc\ # vdkb_ccpane.cc\ # vdkb_FWizard.cc # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vdkbuilder2-2.4.0/vdkbuilder/AUTHORS0000644000000000000000000000073507252425634012602 ORIGINAL AUTHOR ---------------- Mario Motta In alphabetical order: DEVELOPING TEAM --------------- Ionutz Borcoman Mario Motta CONTRIBUTORS: -------------- Jonathan Hudson For vdkinput and reaper great job. Thomas Mailund Jensen for great gtkeditor with syntax hilite and more. Raffaele Salmaso vdkbuilder2-2.4.0/vdkbuilder/Makefile.am0000644000000000000000000000407407614215533013563 SUBDIRS = pixmaps bin_PROGRAMS = vdkb2 INCLUDES = -I$(top_srcdir)/include $(VDK_CFLAGS) #vdkb_LDFLAGS = $(VDK_LIBS) vdkb2_LDADD = $(VDK_LIBS) vdkb2_LDFLAGS = -export-dynamic EXTRA_DIST = vdkb2_SOURCES = \ input.cc\ line-arrow.xbm\ line-wrap.xbm\ vdkb.cc\ vdkb_about.cc\ vdkb_acsupport.cc\ vdkb_bugfix.cc\ vdkb_cbrowse.cc\ vdkb_cbuttdlg.cc\ vdkb_checkbutton.cc\ vdkb_clistdlg.cc\ vdkb_clistdlg_gui.cc\ vdkb_clipdlg.cc\ vdkb_combo.cc\ vdkb_compodb.cc\ vdkb_createform.cc\ vdkb_custombutton.cc\ vdkb_customlist.cc\ vdkb_customtree.cc\ vdkb_dedit.cc\ vdkb_design.cc\ vdkb_dlgs.cc\ vdkb_editor.cc\ vdkb_edhelp.cc\ vdkb_edhint.cc\ vdkb_emacs.cc\ vdkb_entry.cc\ vdkb_Env.cc\ vdkb_evbox.cc\ vdkb_evcontain.cc\ vdkb_evlabel.cc\ vdkb_evpbar.cc\ vdkb_evslider.cc\ vdkb_fixed.cc\ vdkb_form.cc\ vdkb_frame.cc\ vdkb_frmlist.cc\ vdkb_gnomeappbar.cc\ vdkb_gnomeentry.cc\ vdkb_grep.cc\ vdkb_guicanvas.cc\ vdkb_handlebox.cc\ vdkb_ide_def.cc\ vdkb_image.cc\ vdkb_locale.cc\ vdkb_logo.cc\ vdkb_lru.cc\ vdkb_main_automa.cc\ vdkb_main_sig.cc\ vdkb_maker.cc\ vdkb_menu.cc\ vdkb_menubar.cc\ vdkb_menuitem.cc\ vdkb_nbook.cc\ vdkb_nls.cc \ vdkb_notebook.cc\ vdkb_object.cc\ vdkb_objinspect.cc\ vdkb_orderdlg.cc \ vdkb_paned.cc\ vdkb_parser.cc\ vdkb_pbar.cc\ vdkb_pixmap.cc\ vdkb_pholder.cc\ vdkb_plugin.cc\ vdkb_prj.cc\ vdkb_prjman.cc\ vdkb_prjopt.cc\ vdkb_prjpref.cc\ vdkb_PWizard.cc\ vdkb_prop.cc\ vdkb_radiobutton.cc\ vdkb_spinbutton.cc\ vdkb_rbgroup.cc\ vdkb_replace.cc\ vdkb_sbar.cc\ vdkb_scrolled.cc\ vdkb_search.cc\ vdkb_separator.cc\ vdkb_signal.cc\ vdkb_slider.cc\ vdkb_tabledlg.cc\ vdkb_tabledlg_gui.cc\ vdkb_templates.cc\ vdkb_table.cc\ vdkb_text.cc\ vdkb_textlabel.cc\ vdkb_textwidget.cc\ vdkb_timebar.cc\ vdkb_toolbar.cc\ vdkb_tooldialog.cc\ vdkb_tooldialog_gui.cc\ vdkb_unit.cc\ vdkb_utils.cc\ vdkb_widclip.cc\ vdkb_widpopmenu.cc\ vdkb_widsel.c\ vdkb_xcheckbutton.cc\ vdkb_xcustomlist.cc\ vdkb_xentry.cc \ vdkb_xmemo.cc \ vdkb_xtDlg.cc \ vdkxpmbrowser.cc # vdkb_ccproj.cc\ # vdkb_ccpane.cc\ # vdkb_FWizard.cc vdkbuilder2-2.4.0/vdkbuilder/input.cc0000644000000000000000000000264207252425636013201 /* * Copyright (C) 1999 Jonathan R. Hudson * Developed by Jonathan R. Hudson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include class VDKForm; VDKInput::VDKInput(VDKForm* obj,int fd, GdkInputCondition c): VDKObject(obj), tag(0), fd(fd),condition(c) { // tag = gdk_input_add(fd, c, VDKInput::HandleIO, this); tag = gtk_input_add_full(fd, c, VDKInput::HandleIO, NULL,this,NULL); obj->Objects().add(this); Parent(obj); } VDKInput::~VDKInput() { release(); } void VDKInput::HandleIO(gpointer gp, gint source, GdkInputCondition condition) { VDKInput *ip = static_cast(gp); ip->condition = condition; ip->SignalEmit(INP_SIGNAL); } vdkbuilder2-2.4.0/vdkbuilder/line-arrow.xbm0000644000000000000000000000023407252425636014315 #define line_arrow_width 6 #define line_arrow_height 9 static unsigned char line_arrow_bits[] = { 0x00, 0x00, 0x04, 0x0c, 0x18, 0x3f, 0x18, 0x0c, 0x04}; vdkbuilder2-2.4.0/vdkbuilder/line-wrap.xbm0000644000000000000000000000023207252425636014132 #define line_wrap_width 6 #define line_wrap_height 9 static unsigned char line_wrap_bits[] = { 0x1e, 0x3e, 0x30, 0x30, 0x39, 0x1f, 0x0f, 0x0f, 0x1f, }; vdkbuilder2-2.4.0/vdkbuilder/vdkb.cc0000644000000000000000000013412310022114073012743 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #define VERBOSE 0 #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include // #define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #endif #include #include #include #include #include #include #include #include #include #include #include #include #include "./pixmaps/help.xpm" #include "./pixmaps/options.xpm" ////////////////////////////// #include "./pixmaps/vdkb.xpm" #include "./pixmaps/quit.xpm" #include "./pixmaps/convert.xpm" #include "./pixmaps/project16.xpm" #include "./pixmaps/debug.xpm" //////// ide defaults /////////////// /* emacs support */ extern bool EmacsServerStarted(); extern int StartEmacs(char ** args); extern int EmacsPid(); // VDKBDefaults VDKBuilder::ideDefaults; VDKBuilder* TheApp = NULL; extern char *gear_xpm[]; char buff[512]; // non vdk modal window stuff static gboolean cmw_destroy_cb(GtkWidget *widget); static bool install_resources(char* home); // void create_nonvdk_modal_window (char* prompt); static GtkWidget *warning = NULL; static void make_message_dialog (GtkWidget **dialog, char* prompt, GtkMessageType type, GtkButtonsType buttons, gint default_response); // file to open passed trough gnome MIME-type char mime_file[256] = ""; ///////global operational state ////// OpState OperationalState = { op_ready, act_nope, tgt_no_target , NULL, NULL}; // global widget clipboard VDKBWidgetClipboard* WidgetClipboard = NULL; /* global DnD support */ enum { TARGET_STRING, TARGET_ROOTWIN, TARGET_URL }; static GtkTargetEntry target_table[] = { { "STRING",0, TARGET_STRING }, { "TEXT", 0, TARGET_STRING }, { "URL", 0, TARGET_URL }, { "application/x-rootwin-drop", 0, TARGET_ROOTWIN } }; static guint n_targets = sizeof(target_table) / sizeof(target_table[0]); VDKDnD *DragAndDrop = NULL; DnDBuilderList* DragAndDropTable = NULL; /* editor completions, code templates and hints */ TokenList* tokenlist; int tklist_size; HintBTree* hint_tree; /* a C interface with gtkeditor and al. */ extern "C" { int GetEditorTab(); int GetEditorExtAsciiSupport(); }; int GetEditorTab() { return atoi((char*) VDKBuilder::ideDefaults.editor.tab); } int GetEditorExtAsciiSupport() { char* extascii = VDKBuilder::ideDefaults.project.extascii; return !strcmp(extascii,CHECK_YES); } /* this code denies to run a second builder instance on the same user */ /* */ static bool create_lock_file(char* flock) { int lockFile; if((lockFile=open(flock,O_CREAT|O_EXCL|O_WRONLY,0600)) != -1) { pid_t mypid=getpid(); write(lockFile, (void*) &mypid, sizeof(pid_t)); close(lockFile); return true; } else return false; } /* */ static bool is_first_instance(char* flock) { if(!create_lock_file(flock)) { int lockFile; pid_t pid; lockFile = open(flock,O_RDONLY); read(lockFile, (void*) &pid, sizeof(pid_t)); close(lockFile); if( (kill(pid,0)!= 0) && (errno == ESRCH) ) { /*no process is holding the lock*/ remove(flock); return create_lock_file(flock); } else /*another process is holding the lock*/ return false; } else return true; } ////////////////////////////////////////////////////// /* */ int AskUserToSaveFile(char* name) { if( !TheApp) return VDK_IDNO; char local[256]; VDKString Yes = CHECK_YES; if(VDKBuilder::ideDefaults.project.autosave == Yes) return VDK_IDYES; sprintf(local,"%s\n%s",name, _(user_messages[user_request_save]) ); return TheApp->VDKMessageBox(APPNAME, local, VDK_ICONQUESTION|VDK_YESNO, _(user_messages[user_ok]), _(user_messages[user_no]) ); } ///////////////////////// // VDKBUILDER ///////////////////////// VDKBuilder::VDKBuilder(int* argc, char** argv, char* rc): #if HAVE_GNOME VDKGnomeApplication("vdkb","vdkb",argc,argv) #else VDKApplication(argc,argv,rc) #endif { #if USE_XDB theXdb = new VDKXDatabase; #endif } VDKBuilder:: ~VDKBuilder() { #if USE_XDB if(theXdb) delete theXdb; #endif } ///////////////////////////////////// // VDK BUILDER ENTRY ///////////////////////////////// #ifdef HAVE_GNOME // static poptContext pctx; /* static struct poptOption options[] = { { NULL, '\0', 0, NULL, 0, NULL, NULL } }; */ #endif int LANG = 1; int main (int argc, char *argv[]) { char user_home[256]; struct stat info; // disabled and substitued with NLS // look for lang support // forced to be: LANG = ENGLISH; // localize // #ifdef VDKBDEBUG // char* i18n = NULL; // i18n = gtk_set_locale(); /* printf("\nLocalize to: %s",i18n ? i18n : "none"); fflush(stdout); */ // #else gtk_set_locale(); // #endif //---------------------------------------------------- // initialize gtk, safe since further inits do nothing //---------------------------------------------------- // FIX ME: // this need a vdk change #if 0 // HAVE_GNOME gnome_init_with_popt_table ("VDKBuilder", VERSION, argc, argv, options, 0, &pctx); #else gtk_init(&argc,&argv); #endif /* read first arg, load a global buffer. Project manager will read it and open corresponding project file */ if(argc == 2) strcpy(mime_file,argv[1]); else // set buffer to null *mime_file = '\0'; #if ENABLE_NLS bindtextdomain(PACKAGE,VDKB_LOCALE_DIR); textdomain(PACKAGE); #endif // store home and pwd // get HOME char* homedir = getenv("HOME"); if(!homedir) { make_message_dialog (&warning, ("No user home found,\nsorry i can't run VDKBuilder"), GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, GTK_RESPONSE_OK); /* create_nonvdk_modal_window (_("No user home found,\n\ sorry i can't run VDKBuilder")); */ exit(1); } else strcpy(user_home,homedir); //------------------------------------------------ // set resource file, so will be loaded and parsed //------------------------------------------------ sprintf(buff,"%s/.vdkb2/%s",user_home,VDKB_RESOURCE_FILE); if (stat(buff,&info) == -1) { //------------------------------------- // install local copy of resources file // into: /.vdkb2/res //------------------------------------ if(install_resources(homedir)) sprintf(buff, _("VDKBuilder has installed:\ \nvdkide.defaults\ \nvdkbrc\ \nplugins.db\ \ntokens.db\ \ninto your home: %s/.vdkb2/res"),homedir); else sprintf(buff,_("* WARNING * VDKBuilder couldn't install \ vdkbuilder resources into your home: %s"),homedir); make_message_dialog (&warning, buff, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, GTK_RESPONSE_OK); // create_nonvdk_modal_window (buff); sprintf(buff,"%s/.vdkb2/%s",user_home,VDKB_RESOURCE_FILE); } // something went wrong on installing resource files if (stat(buff,&info) == -1) { sprintf(buff, _("Local resource file:%s/.vdkb2/%s not found\nrevert to default one"), user_home,VDKB_RESOURCE_FILE); make_message_dialog (&warning, buff, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, GTK_RESPONSE_OK); // create_nonvdk_modal_window (buff); sprintf(buff,"%s/%s",VDKB_DATADIR,VDKB_RESOURCE_FILE); } else { // install tokens database for editor completions char command[256]; sprintf(command,"%s/.vdkb2/%s",user_home,VDKB_TOKENS_FILE); if(access(command,F_OK)) { sprintf(command,"cp %s/%s %s/.vdkb2/res", VDKB_DATADIR, VDKB_TOKENS_FILE, user_home); system(command); } // install hints database for editor sprintf(command,"%s/.vdkb2/%s",user_home,VDKB_HINT_FILE); if(access(command,F_OK)) { sprintf(command,"cp %s/%s %s/.vdkb2/res", VDKB_DATADIR, VDKB_HINT_FILE, user_home); system(command); } } //--------------------------------------------------------------- // check for a lock file (denies more than one instance per user) //--------------------------------------------------------------- char *local = new char[512]; sprintf(local,"%s/.vdkb2/%s",user_home,VDKB_LOCKFILE); if(!is_first_instance(local)) { sprintf(buff,_("Lock file:%s\ndetected another instance\n\ sorry i can't run VDKBuilder twice,\n\ either kill running instance or remove lock file"),local); make_message_dialog (&warning, buff, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, GTK_RESPONSE_OK); // create_nonvdk_modal_window (buff); delete[] local; exit(1); } else delete[] local; //------------------- // builds application // with VDKB_RESOURCE_FILE // and setting localization //------------------- VDKBuilder app(&argc, argv); // set global TheApp = &app; // sets home dir if(homedir) app.user_home = homedir; // gets and sets prg work dir char* cwd = getcwd(NULL,MAXPATHLEN); if(cwd) { app.user_cwd = cwd; free(cwd); } else app.user_cwd = app.user_home; //------------------ // load ide defaults //------------------ VDKBuilder::ideDefaults.LoadDefaults(app.user_home); VDKString Yes = CHECK_YES; // set resource file if requested if(VDKBuilder::ideDefaults.project.theme == Yes) app.SetResourceFile(buff); // change to HOME or to startup dir VDKString startupdir = VDKBuilder::ideDefaults.project.startupdir; VDKString Home = "home"; if(startupdir == Home) chdir((char*) app.user_home); else { if(chdir((char*) startupdir) < 0) { sprintf(buff,_("\nCould not change to dir:%s\nreverting to home"), (char*) startupdir); make_message_dialog (&warning, buff, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, GTK_RESPONSE_OK); // create_nonvdk_modal_window (buff); chdir((char*) app.user_home); } } //------------- // load plugins //------------- // FIX ME: sprintf(buff,"%s/.vdkb2/%s",(char*) app.user_home,VDKB_PLUGIN_FILE); if (stat(buff,&info) == -1) { char local[256]; sprintf(local,_("\nUser file:%s\nnot found, using default"),buff); make_message_dialog (&warning, buff, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, GTK_RESPONSE_OK); // create_nonvdk_modal_window (local); sprintf(buff,"%s/%s",VDKB_DATADIR,VDKB_PLUGIN_FILE); } if(!app.PluginList().Load(buff)) { // deactivated warning sprintf(buff,_("\nError during loading plugins.db")); make_message_dialog (&warning, buff, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, GTK_RESPONSE_OK); // create_nonvdk_modal_window (buff); } else if(! app.PluginList().DlOpen()) { sprintf(buff,_("\nError during opening plugins")); make_message_dialog (&warning, buff, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, GTK_RESPONSE_OK); // create_nonvdk_modal_window (buff); } //------------- // builder runs //------------- app.Run(); //--------------- // builder quiets //--------------- /* this trick avoid to segfault if plugins are disconnected before main form deleting. Otherwise garbage collection finds corrupted object pointers. So before delete MainForm and after disconnect plugins. */ delete app.MainForm; // this must be done otherwise mainForm will be deleted twice. // by app destructor app.MainForm = NULL; // closes plugins if(!app.PluginList().DlClose()) { sprintf(buff,_("\nError during closing plugins")); make_message_dialog (&warning, buff, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, GTK_RESPONSE_OK); // create_nonvdk_modal_window (buff); } // destroy lock file sprintf(buff,"%s/.vdkb2/%s", (char*) app.user_home, VDKB_LOCKFILE); remove(buff); // change to current cwd chdir((char*) app.user_cwd); return 0; } //////////////////////////////// // VDKBUILDER MAIN FORM CLASS //////////////////////////////// /* */ bool VDKBMainForm::About(VDKObject*) { VDKBAboutForm *about = new VDKBAboutForm(this); about->Setup(); about->ShowModal(); return true; } /* */ bool VDKBMainForm::Quit(VDKObject*) { Close(); return true; } /* Constructor */ VDKBMainForm::VDKBMainForm( VDKApplication* app, gchar* title): VDKForm(app,title) { // set subsystem pointers to NULL editor = NULL; prjman = NULL; maker = NULL; lrumanager = NULL; formlistform = NULL; // global widget clipboard WidgetClipboard = new VDKBWidgetClipboard; // global drag and drop // temporarly disabled due to a gtk+ bug DragAndDrop = new VDKDnD(this, target_table,n_targets); DragAndDropTable = new DnDBuilderList; } /* Destructor */ VDKBMainForm::~VDKBMainForm() { if(WidgetClipboard) delete WidgetClipboard; if(DragAndDropTable) delete DragAndDropTable; if(lrumanager) delete lrumanager; } /* Save words completions list to file */ bool VDKBMainForm::SaveTokens() { FILE* fp = (FILE*) NULL; sprintf(buff,"%s/.vdkb2/%s",(char*) TheApp->user_home,VDKB_TOKENS_FILE); fp = fopen(buff,"w+"); if(fp) { for(TokenListIterator li(*tokenlist);li;li++) fprintf(fp,"%s\n",(char*) li.current()); fclose(fp); } return fp != (FILE*) NULL; } /* Load words completions list from file */ bool VDKBMainForm::LoadTokens() { FILE* fp; sprintf(buff,"%s/.vdkb2/%s",(char*) TheApp->user_home,VDKB_TOKENS_FILE); if(access(buff,F_OK)) { TheApp->VDKMessageBox(APPNAME, _("User file for completions not found\n\ reverting to default one"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]) ); sprintf(buff,"%s/%s",VDKB_DATADIR,VDKB_TOKENS_FILE); } fp = fopen(buff,"r"); if(fp) { char token[256]; while(fgets(token,256,fp)) { token[strlen(token)-1] = '\0'; VDKString tk = token; tokenlist->add(tk); } fclose(fp); return true; } else return false; } /* Load hints from file */ #define HINT (char*) "HINT{" #define HINT_END (char*) "}" #define HINT_KEY (char*) "KEY[" #define TEXT_KEY (char*) "TEXT[" #define KEY_END (char*) "]" bool VDKBMainForm::LoadHints() { FILE* fp; sprintf(buff,"%s/.vdkb2/%s", (char*) TheApp->user_home, VDKB_HINT_FILE); if ( !(fp = fopen(buff,"r")) ) return false; else { char* buffer,*p,*section; int c; struct stat info; stat(buff,&info); unsigned int size = info.st_size; buffer = p = new char[size+1]; while( (c = fgetc(fp)) != EOF) *p++ = (char) c; *p ='\0'; fclose(fp); // parse buffer p = buffer; while( ( section = ExtractSection(p,HINT,HINT_END)) ) { char key[128]; char text[512]; if(ExtractWord(p,key,HINT_KEY,KEY_END) && ExtractWord(p,text,TEXT_KEY,KEY_END) ) { VDKHint hint(key,text); hint_tree->add(hint); // + 1 for a new line that should separate hints p += strlen(HINT)+strlen(HINT_END)+strlen(section)+1; delete[] section; } else { delete[] section; break; } } delete[] buffer; return true; } } /* Setup */ void VDKBMainForm::Setup() { logo = new VDKBLogo(this); logo->Setup(); logo->Show(); // load token list from file tokenlist = new TokenList; if(!LoadTokens()) TheApp->VDKMessageBox(APPNAME, _("Completion list not loaded\ncompletion won't be available"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 3000 ); else tklist_size = tokenlist->size(); // load hints tree for text editor hint_tree = new HintBTree; if(!LoadHints()) TheApp->VDKMessageBox(APPNAME, _("Hints tree not loaded\neditor hints won't be available"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]) ); // setup for Mozilla mozpid = 0; SignalConnect("KillMozillaSignal",&VDKBMainForm::MozillaMourn, false); struct sigaction *sac = new struct sigaction; sigemptyset(&(sac->sa_mask)); sac->sa_flags=0; sac->sa_handler = VDKBMainForm::MozillaReaper; sigaction(SIGCHLD, sac, NULL); } /* Manages child closing */ void VDKBMainForm::OnChildClosing(VDKForm* child) { if(child == logo) { logo = NULL; ContinueSetup(NULL); Visible = true; } else if(child == editor) { Automa(automa_editor_off); editor = NULL; } else if(child == prjman) { Automa(automa_prjman_off); prjman = NULL; } else if(child == maker) { if(! maker->IsModal()) { // load editor with errors VDKBStringList* list = maker->ErrorList(); if(list) { sprintf(buff,_("VDKBuilder maker terminated %s"), list->size() ? _("with errors or messages") : _("successfully")); Application()->VDKMessageBox(APPNAME,buff, VDK_OK| VDK_ICONINFORMATION, _(user_messages[user_ok]), NULL, 1500); // if list size == 0 then no erros, so // we add an happy message if(! list->size()) { VDKString s = _("Compilation successfull"); list->add(s); } // in vdkb_acsupport.cc LoadEditorWithErrors(list); delete list; } } maker = NULL; } else if(child == formlistform) { formlistform = NULL; } } /* Finishes main form set up */ /* NLS translation tables */ extern char* folder_widget_titles[]; bool VDKBMainForm::ContinueSetup(VDKObject*) { SetIcon(new VDKRawPixmap(this,vdkb_xpm)); SetIconName(APPNAME); MakeMainMenu(); VDKBox* hbox = new VDKBox(this,h_box); hbox->Add(MakeToolBox(),FALSE,FALSE,0); hbox->Add(new VDKSeparator(this,v_separator),FALSE,FALSE,0); VDKBox* vbox = new VDKBox(this); widget_folder = new VDKNotebook(this); vbox->Add(widget_folder); hbox->Add(vbox); Add(hbox); widget_folder->AddPage(MakeContainerWidgetFolder(), _(folder_widget_titles[1]) ); widget_folder->AddPage(MakeButtonsWidgetFolder(), _(folder_widget_titles[0]) ); widget_folder->AddPage(MakeMiscWidgetFolder(), _(folder_widget_titles[3]) ); widget_folder->AddPage(MakeTextWidgetFolder(), _(folder_widget_titles[4]) ); widget_folder->AddPage(MakePluginWidgetFolder(), _(folder_widget_titles[5]) ); #if HAVE_GNOME widget_folder->AddPage(MakeGnomeWidgetFolder(), _(folder_widget_titles[6]) ); #endif #if USE_XDB widget_folder->AddPage(MakeXdbWidgetFolder(), _(folder_widget_titles[7]) ); #endif //_defSize = VDKPoint((gdk_screen_width()*9)/10,-1/*100*/); _defSize = VDKPoint(gdk_screen_width()-10,-1); SetSize(_defSize.x,_defSize.y); // does not allow to shrink or grow gtk_window_set_policy(GTK_WINDOW(Window()),false,false,true); return true; } /* */ void VDKBMainForm::OnShow(VDKForm* ) { // set main form position near to upper right // screen corner Position = VDKPoint(30,30); // set automa initial state Automa(automa_init); // make and open project manager if(!prjman) { prjman = new VDKBProjectManager(this); prjman->Setup(); prjman->Visible = true; } } /* Intercepts moving */ void VDKBMainForm::OnMove(VDKForm* ) { } /* intercepts activate */ void VDKBMainForm::OnFormActivate(VDKForm* sender, bool in_out) { /* disabled since unuseful and somewhat confusing if(! in_out) return; // raises main form childs ChildListIterator li(Childs()); for(;li;li++) { if(! li.current()->Iconized) li.current()->Raise(); } // raises also gui editors if any if(prjman) { GuiFormListIterator li(*(prjman->FormList())); for(;li;li++) { if(! li.current()->Iconized) li.current()->Raise(); } if(prjman->objInspector && ! prjman->objInspector->Iconized) prjman->objInspector->Raise(); } */ } /* Intercepts resizing, forcing to default size Changed: 30.12.98 mm using gtk_window_set_policy() that's better */ void VDKBMainForm::OnResize(VDKForm* ,VDKPoint& ) { /* if(_defSize != p) SetFormSize(_defSize); */ } ////////////////////////////////////////// // Makes main form interface // all pixmaps, prompts, menus // loaded from locale ////////////////////////////////////////// /* Makes VDKBuilder ManForm main menu */ /* NLS translation tables */ extern char* main_menu_prompts[]; void VDKBMainForm::MakeMainMenu() { menubar = new VDKMenubar(this); // file menu file_menu = new VDKMenuItem(menubar, _(main_menu_prompts[0]) ); VDKMenu *menuf = new VDKMenu(this); new_item = new VDKMenuItem(menuf, _(main_menu_prompts[1]) ); VDKMenu *newmenu = new VDKMenu(this); newprj_item = new VDKMenuItem(newmenu, _(main_menu_prompts[2]), main_menu_pixmaps[0]); newunit_item = new VDKMenuItem(newmenu, _(main_menu_prompts[3]), main_menu_pixmaps[1]); newform_item = new VDKMenuItem(newmenu, _(main_menu_prompts[4]), main_menu_pixmaps[2]); newformmenu = new VDKMenu(this); newformdefault_item = new VDKMenuItem(newformmenu, _(main_menu_prompts[5]), main_menu_pixmaps[2]); newform_item->Add(newformmenu); new_item->Add(newmenu); open_item = new VDKMenuItem(menuf, _(main_menu_prompts[8]) ); VDKMenu *openmenu = new VDKMenu(this); openprj_item = new VDKMenuItem(openmenu, _(main_menu_prompts[9]), main_menu_pixmaps[3]); openfile_item = new VDKMenuItem(openmenu, _(main_menu_prompts[10]), main_menu_pixmaps[4]); open_item->Add(openmenu); // reopening menu reopen_item = new VDKMenuItem(menuf, _(main_menu_prompts[49])); reopenmenu = new VDKMenu(this); /* Creates a lru manager LRUManager::Init() fills a list with lru projects name */ lrumanager = new LRUManager(); lrumanager->Init(); // update reopenmenu adding subitems and connecting them // to a single response function UpdateLRU(); reopen_item->Add(reopenmenu); save_item = new VDKMenuItem(menuf, _(main_menu_prompts[11]), main_menu_pixmaps[5]); saveall_item = new VDKMenuItem(menuf, _(main_menu_prompts[12]), main_menu_pixmaps[6]); menuf->Separator(); quit_item = new VDKMenuItem(menuf, _(main_menu_prompts[13]) ); file_menu->Add(menuf); // Search menu search_menu = new VDKMenuItem(menubar, _(main_menu_prompts[15]) ); VDKMenu *searchv = new VDKMenu(this); search_item = new VDKMenuItem(searchv, _(main_menu_prompts[30]), main_menu_pixmaps[11]); repeat_search_item = new VDKMenuItem(searchv, _(main_menu_prompts[31]) /*, main_menu_pixmaps[xx]*/ ); replace_item = new VDKMenuItem(searchv, _(main_menu_prompts[32]) /*, main_menu_pixmaps[yy]*/ ); search_menu->Add(searchv); // View menu view_menu = new VDKMenuItem(menubar, _(main_menu_prompts[16]) ); VDKMenu *menuv = new VDKMenu(this); viewunits_item = new VDKMenuItem(menuv, _(main_menu_prompts[17]), main_menu_pixmaps[7]); viewforms_item = new VDKMenuItem(menuv, _(main_menu_prompts[18]), main_menu_pixmaps[8]); view_menu->Add(menuv); // Project menu prj_menu = new VDKMenuItem(menubar, _(main_menu_prompts[19]), project16_xpm ); VDKMenu *menup = new VDKMenu(this); prjmake_item = new VDKMenuItem(menup, _(main_menu_prompts[27]), // stolen to project manager gear_xpm); prjmakeclean_item = new VDKMenuItem(menup, _(main_menu_prompts[29]), NULL); prjdebug_item = new VDKMenuItem(menup, _(main_menu_prompts[36]), debug_xpm); menup->Separator(); prjoptions_item = new VDKMenuItem(menup, _(main_menu_prompts[28]), options_xpm ); #if USE_XDB xdb_opentables = new VDKMenuItem(menup, _(main_menu_prompts[47]), NULL); #endif prj_menu->Add(menup); // Component menu compo_menu = new VDKMenuItem(menubar, _(main_menu_prompts[22]), convert_xpm); // Tools menu tools_menu = new VDKMenuItem(menubar, _(main_menu_prompts[23]),options_xpm ); VDKMenu* menut = new VDKMenu(this); // environment setup envset_item = new VDKMenuItem(menut, _(main_menu_prompts[37]), options_xpm); edhint_item = new VDKMenuItem(menut, _(main_menu_prompts[50]), NULL); // grep exec_item = new VDKMenuItem(menut, _(main_menu_prompts[38]), NULL); exec_item->Enabled = false; tools_menu->Add(menut); // automake/autoconf support ac_menu = new VDKMenuItem(menubar, _(main_menu_prompts[39]), main_menu_pixmaps[12]); VDKMenu *menuac = new VDKMenu(this); ac_autogen = new VDKMenuItem(menuac, _(main_menu_prompts[40]), NULL); ac_make = new VDKMenuItem(menuac, _(main_menu_prompts[41]), NULL); ac_makeclean = new VDKMenuItem(menuac, _(main_menu_prompts[42]), NULL); ac_makedist = new VDKMenuItem(menuac, _(main_menu_prompts[43]), NULL); ac_makedistclean = new VDKMenuItem(menuac, _(main_menu_prompts[44]), NULL); ac_menu->Add(menuac); ac_menu->Enabled = false; // help menu help_menu = new VDKMenuItem(menubar, _(main_menu_prompts[24]), help_xpm, r_justify); VDKMenu *menuh = new VDKMenu(this); // tutorial removed /* help_index = new VDKMenuItem(menuh, _(main_menu_prompts[25]) ); */ help_vdk = new VDKMenuItem(menuh, _(main_menu_prompts[45]) ); menuh->Separator(); help_about = new VDKMenuItem(menuh, _(main_menu_prompts[26]) ); help_menu->Add(menuh); Add(menubar,FALSE,FALSE,0); } /* lru list visited to add menu sub-items and connect them to a single response, load an array of menu items adrresses as well. Array will be parsed by response function to retrieve which item has been activated. */ void VDKBMainForm::UpdateLRU() { int t = 0; // removes menu items from menu for(;t < lru_items.size();t++) { lru_items[t]->Visible = false; gtk_container_remove (GTK_CONTAINER (reopenmenu->WrappedWidget()), lru_items[t]->WrappedWidget()); } // readd new items if(lrumanager->ItemList().size() > 0) { t = 0; // resize menu item array lru_items.resize(lrumanager->ItemList().size()); VDKMenuItem* menu_item; LRUItemsIterator li(lrumanager->ItemList()); for(;li;li++,t++) { // retrieves project name from list item const char* prompt = li.current().Name(); // makes menu items without accelerator // to avoid be confusing by file names with underscores menu_item = new VDKMenuItem(reopenmenu, prompt, NULL, // no pixmap GDK_VoidSymbol, GDK_MOD1_MASK, false); lru_items[t] = menu_item; SignalConnect(menu_item,"activate", &VDKBMainForm::OnReopenMenu); } reopen_item->Enabled = true; } else // lru list was empty so disable reopen menu reopen_item->Enabled = false; return; } /* NLS translation tables */ extern char *main_toolbar_tips[]; extern char *main_toolbar1_tips[]; VDKBox* VDKBMainForm::MakeToolBox() { int t; VDKBox* vbox = new VDKBox(this,v_box); VDKFrame* frame = new VDKFrame(this,NULL,h_box,shadow_etched_in); VDKFrame* frame1 = new VDKFrame(this,NULL,h_box,shadow_etched_in); VDKBox *tbar = new VDKBox(this,h_box); newprj_nb = nb_array[0] = new VDKHLButton(this,(const char**)main_toolbar_pixmaps[0]); newprj_nb->SetTip(_(main_toolbar_tips[0])); newunit_nb = nb_array[1] = new VDKHLButton(this,(const char**)main_toolbar_pixmaps[1]); newunit_nb->SetTip(_(main_toolbar_tips[1])); newform_nb = nb_array[2] = new VDKHLButton(this,(const char**)main_toolbar_pixmaps[2]); newform_nb->SetTip(_(main_toolbar_tips[2])); loadprj_nb = nb_array[3] = new VDKHLButton(this,(const char**)main_toolbar_pixmaps[3]); loadprj_nb->SetTip(_(main_toolbar_tips[3])); loadfile_nb = nb_array[4] = new VDKHLButton(this,(const char**)main_toolbar_pixmaps[4]); loadfile_nb->SetTip(_(main_toolbar_tips[4])); saveprj_nb = nb_array[5] = new VDKHLButton(this,(const char**)main_toolbar_pixmaps[5]); saveprj_nb->SetTip(_(main_toolbar_tips[5])); savefile_nb = nb_array[6] = new VDKHLButton(this,(const char**)main_toolbar_pixmaps[6]); savefile_nb->SetTip(_(main_toolbar_tips[6])); nb_array[7] = NULL; for( t=0; nb_array[t]; t++) tbar->Add(nb_array[t],l_justify,false,false,0); frame->Add(tbar,l_justify,false,false,0); //vbox->Add(tbar); vbox->Add(frame,l_justify,false,false,0); /* toolbar = new VDKToolbar(this); for( t=0; main_toolbar_pixmaps[t]; t++) { toolbar->AddButton(main_toolbar_pixmaps[t], _(main_toolbar_tips[t]), NULL); } vbox->Add(toolbar); */ // vbox->Add(new VDKSeparator(this,h_separator),FALSE,FALSE,0); VDKBox *tbar1 = new VDKBox(this,h_box); //toolbar1 = new VDKToolbar(this); // toolbar->Borderless = true; /* toolbar1->AddButton(main_menu_pixmaps[7], _(main_menu_prompts[17]), NULL); */ unitlist_nb = nb_array1[0] = new VDKHLButton(this,(const char**) main_menu_pixmaps[7]); unitlist_nb->SetTip(_(main_menu_prompts[17])); tbar1->Add(unitlist_nb,l_justify,false,false,0); /* toolbar1->AddButton(main_toolbar1_pixmaps[0], _(main_toolbar1_tips[0]), NULL); */ toggle_nb = nb_array1[1] = new VDKHLButton(this,(const char**) main_toolbar1_pixmaps[0]); toggle_nb->SetTip(_(main_toolbar1_tips[0])); tbar1->Add(toggle_nb,l_justify,false,false,0); /* toolbar1->AddButton(main_menu_pixmaps[8], _(main_menu_prompts[18]), NULL); */ formlist_nb = nb_array1[2] = new VDKHLButton(this,(const char**) main_menu_pixmaps[8]); formlist_nb->SetTip(_(main_menu_prompts[18])); tbar1->Add(formlist_nb,l_justify,false,false,0); /* toolbar1->AddButton(main_toolbar1_pixmaps[1], _(main_toolbar1_tips[1]), NULL); */ runprj_nb = nb_array1[3] = new VDKHLButton(this,(const char**) main_toolbar1_pixmaps[1]); runprj_nb->SetTip(_(main_toolbar1_tips[1])); tbar1->Add(runprj_nb,l_justify,false,false,0); // ends array nb_array1[4] = NULL; // reset = new VDKCustomButton(this,(const char**) main_toolbar1_pixmaps[2],NULL); reset = new VDKHLButton(this,(const char**) main_toolbar1_pixmaps[2],NULL); reset->SetTip(_(main_toolbar1_tips[2])); // reset->Relief = GTK_RELIEF_NONE; reset->Enabled = false; // toolbar1->AddWidget(reset); tbar1->Add(reset,l_justify,false,false,0); // emacs = new VDKCustomButton(this, (const char**) main_toolbar1_pixmaps[3],NULL); emacs = new VDKHLButton(this, (const char**) main_toolbar1_pixmaps[3],NULL); emacs->SetTip(_(main_toolbar1_tips[3])); // emacs->Relief = GTK_RELIEF_NONE; // toolbar1->AddWidget(emacs); tbar1->Add(emacs,l_justify,false,false,0); emacs->Visible = !strcmp((char*) VDKBuilder::ideDefaults.project.emacs,CHECK_YES); VDKHLButton* quit_nb = new VDKHLButton(this,(const char**) quit_xpm); quit_nb->SetTip(_("Quit VDKBuilder")); tbar1->Add(quit_nb,l_justify,false,false,0); SignalConnect(quit_nb,"clicked",&VDKBMainForm::Quit,false); frame1->Add(tbar1,l_justify,false,false,0); //vbox->Add(tbar); vbox->Add(frame1,l_justify,false,false,0); // vbox->Add(toolbar1); // vbox->Add(tbar1); return vbox; } /* NLS translation tables */ extern char *container_widgets_tips[]; /* */ //VDKToolbar* VDKHLButtonBar* VDKBMainForm::MakeContainerWidgetFolder() { int t = 0; // containers_widgets_bar = new VDKToolbar(this); containers_widgets_bar = new VDKHLButtonBar(this,h_box,shadow_etched_in); for(; t < CONTAINER_WIDGETS_TIPS; t++) { containers_widgets_bar->AddButton((const char**) container_widgets_pixmaps[t], _(container_widgets_tips[t]), NULL); // containers_widgets_bar->AddSpace(); // add toolbar buttons to dnd support if(DragAndDrop) { DragAndDrop->AddSource((*containers_widgets_bar)[t]); DragAndDrop->SetIcon((*containers_widgets_bar)[t], new VDKRawPixmap(this, container_widgets_pixmaps[t])); // load builder dnd table DnDBuilderEntry entry((*containers_widgets_bar)[t], CONTAINERS_TOOL_BEGIN+t); DragAndDropTable->add(entry); } } // containers_widgets_bar->Borderless = true; SignalConnect(containers_widgets_bar,"clicked",&VDKBMainForm::HandleAllWidgetsBar,false); return containers_widgets_bar; } /* NLS translation tables */ extern char * button_widgets_tips[]; /* */ //VDKToolbar* VDKHLButtonBar* VDKBMainForm::MakeButtonsWidgetFolder() { int t = 0; // button_widgets_bar = new VDKToolbar(this); button_widgets_bar = new VDKHLButtonBar(this); for(; t < BUTTON_WIDGETS_TIPS; t++) { button_widgets_bar->AddButton((const char**) button_widgets_pixmaps[t], _(button_widgets_tips[t]), NULL); // button_widgets_bar->AddSpace(); // add toolbar buttons to dnd support if(DragAndDrop) { DragAndDrop->AddSource((*button_widgets_bar)[t]); DragAndDrop->SetIcon((*button_widgets_bar)[t], new VDKRawPixmap(this,button_widgets_pixmaps[t])); // load builder dnd table DnDBuilderEntry entry((*button_widgets_bar)[t], BUTTON_TOOL_BEGIN+t); DragAndDropTable->add(entry); } } // button_widgets_bar->Borderless = true; SignalConnect(button_widgets_bar,"clicked",&VDKBMainForm::HandleAllWidgetsBar,false); return button_widgets_bar; } /* NLS translation tables */ extern char * text_widgets_tips[]; //VDKToolbar* VDKHLButtonBar* VDKBMainForm::MakeTextWidgetFolder() { int t = 0; // text_widgets_bar = new VDKToolbar(this); text_widgets_bar = new VDKHLButtonBar(this); for(; t < TEXT_WIDGETS_TIPS; t++) { text_widgets_bar->AddButton((const char**)text_widgets_pixmaps[t], _(text_widgets_tips[t]), NULL); // text_widgets_bar->AddSpace(); // add toolbar buttons to dnd support if(DragAndDrop) { DragAndDrop->AddSource((*text_widgets_bar)[t]); DragAndDrop->SetIcon((*text_widgets_bar)[t], new VDKRawPixmap(this, text_widgets_pixmaps[t])); // load builder dnd table DnDBuilderEntry entry((*text_widgets_bar)[t], TEXT_TOOL_BEGIN+t); DragAndDropTable->add(entry); } } // text_widgets_bar->Borderless = true; SignalConnect(text_widgets_bar,"clicked",&VDKBMainForm::HandleAllWidgetsBar,false); return text_widgets_bar; } /* */ //VDKToolbar* VDKHLButtonBar* VDKBMainForm::MakePluginWidgetFolder() { int t = 0; // plugin_widgets_bar = new VDKToolbar(this); plugin_widgets_bar = new VDKHLButtonBar(this); // scanning plugin table // add plugin tool icon and tip VDKBPluginListIterator li(TheApp->PluginList()); for(;li;li++,t++) { if(li.current().IsValid()) { VDKBAbstractComponentInterface* interface = li.current().Interface(); if(interface) { plugin_widgets_bar->AddButton((const char**) interface->Icon(), (char*) interface->Tip(), NULL); /// plugin_widgets_bar->AddSpace(); // add toolbar buttons to dnd support if(DragAndDrop) { DragAndDrop->AddSource((*plugin_widgets_bar)[t]); DragAndDrop->SetIcon((*plugin_widgets_bar)[t], new VDKRawPixmap(this, (char**) interface->Icon())); // load builder dnd table DnDBuilderEntry entry((*plugin_widgets_bar)[t], PLUGIN_TOOL_BEGIN+t); DragAndDropTable->add(entry); } } } } // plugin_widgets_bar->Borderless = true; SignalConnect(plugin_widgets_bar,"clicked",&VDKBMainForm::HandleAllWidgetsBar,false); return plugin_widgets_bar; } /* NLS translation tables */ extern char * misc_widgets_tips[]; //VDKToolbar* VDKHLButtonBar* VDKBMainForm::MakeMiscWidgetFolder() { int t = 0; // misc_widgets_bar = new VDKToolbar(this); misc_widgets_bar = new VDKHLButtonBar(this); for(; t < MISC_WIDGETS_TIPS; t++) { misc_widgets_bar->AddButton((const char**)misc_widgets_pixmaps[t], _(misc_widgets_tips[t]), NULL); // misc_widgets_bar->AddSpace(); // add toolbar buttons to dnd support if(DragAndDrop) { DragAndDrop->AddSource((*misc_widgets_bar)[t]); DragAndDrop->SetIcon((*misc_widgets_bar)[t], new VDKRawPixmap(this, misc_widgets_pixmaps[t])); // load builder dnd table DnDBuilderEntry entry((*misc_widgets_bar)[t], MISC_TOOL_BEGIN+t); DragAndDropTable->add(entry); } } // disables timer widget (*misc_widgets_bar)[6]->Enabled = false; // temporary disables grid widget, waiting for Feiguin.. // (*misc_widgets_bar)[12]->Enabled = false; // // misc_widgets_bar->Borderless = true; SignalConnect(misc_widgets_bar,"clicked",&VDKBMainForm::HandleAllWidgetsBar,false); return misc_widgets_bar; } #if HAVE_GNOME /* NLS translation tables */ // extern char * gnome_widgets_tips[]; //VDKToolbar* VDKHLButtonBar* VDKBMainForm::MakeGnomeWidgetFolder() { int t = 0; // gnome_widgets_bar = new VDKToolbar(this); gnome_widgets_bar = new VDKHLButtonBar(this); for(; t < GNOME_WIDGETS_TIPS; t++) { gnome_widgets_bar->AddButton((const char**)gnome_widgets_pixmaps[t], _(gnome_widgets_tips[t]), NULL); // gnome_widgets_bar->AddSpace(); // add toolbar buttons to dnd support if(DragAndDrop) { DragAndDrop->AddSource((*gnome_widgets_bar)[t]); DragAndDrop->SetIcon((*gnome_widgets_bar)[t], new VDKRawPixmap(this, gnome_widgets_pixmaps[t])); // load builder dnd table DnDBuilderEntry entry((*gnome_widgets_bar)[t], GNOME_TOOL_BEGIN+t); DragAndDropTable->add(entry); } } // gnome_widgets_bar->Borderless = true; SignalConnect(gnome_widgets_bar,"clicked",&VDKBMainForm::HandleAllWidgetsBar,false); return gnome_widgets_bar; } /* */ void VDKBMainForm::EnableGnomeWidgets(bool flag) { for(int t = 0; t < GNOME_WIDGETS_TIPS; t++) (*gnome_widgets_bar)[t]->Enabled = flag; } #endif #if USE_XDB /* NLS translation tables */ //extern char * xdb_widgets_tips[]; //VDKToolbar* VDKHLButtonBar* VDKBMainForm::MakeXdbWidgetFolder() { int t = 0; // xdb_widgets_bar = new VDKToolbar(this); xdb_widgets_bar = new VDKHLButtonBar(this); for(; xdb_widgets_tips[t]; t++) { xdb_widgets_bar->AddButton((const char**)xdb_widgets_pixmaps[t], _(xdb_widgets_tips[t]), NULL); // xdb_widgets_bar->AddSpace(); // add toolbar buttons to dnd support if(DragAndDrop) { DragAndDrop->AddSource((*xdb_widgets_bar)[t]); DragAndDrop->SetIcon((*xdb_widgets_bar)[t], new VDKRawPixmap(this, xdb_widgets_pixmaps[t])); // load builder dnd table DnDBuilderEntry entry((*xdb_widgets_bar)[t], XDB_TOOL_BEGIN+t); DragAndDropTable->add(entry); } } // xdb_widgets_bar->Borderless = true; SignalConnect(xdb_widgets_bar,"clicked",&VDKBMainForm::HandleAllWidgetsBar,false); return xdb_widgets_bar; } #endif //////////////// INTERFACE COMPLETE ///////////////////// /* makes editor */ VDKBEditor* VDKBMainForm::MakeEditor() { if(!editor) { editor = new VDKBEditor(this); editor->Setup(); editor->Visible = ! EmacsServerStarted(); } else if(!editor->Visible) editor->Visible = ! EmacsServerStarted(); else if(editor->Iconized ) editor->Iconized = EmacsServerStarted(); // anyways raise else if(!EmacsServerStarted()) editor->Raise(); if(editor) { Automa(automa_editor_on); editor->EnableMaker(prj_menu->Enabled); } return editor; } /* manages main form and VDKBuilder termination */ VDKPoint mainformLastPosition; bool VDKBMainForm::CanClose() { int answer = Application()->VDKMessageBox( APPNAME, _(user_messages[user_can_close]), VDK_YESNO| VDK_ICONQUESTION, _(user_messages[user_ok]), _(user_messages[user_no]), 6000); /* after 6 seconds without answer closes with IDNO */ // closes project manager,editor // and mozilla (if activated) if(answer == VDK_IDYES) { // saves last position that will be used // by project manager on SaveLastSession() mainformLastPosition = Position; if(prjman) prjman->ForceToClose = true; if(editor) { // editor->ForceToClose = true; /* by mm - version 2.0.2 due to a not investigated bug better close it as first action avoiding a weird sigsgev. However editor won't be closed at this point (since editor->ForceToClose remain false) just hidden and files updated */ editor->Close(); } if(mozpid) kill(mozpid, SIGTERM); if(hint_tree) delete hint_tree; // delete words completions list if(tokenlist) { if( tklist_size != tokenlist->size() ) { sprintf(buff,_("Completion list has been changed\n Save it ?")); if (TheApp->VDKMessageBox(APPNAME, buff, VDK_ICONQUESTION|VDK_YESNO, _(user_messages[user_ok]), _(user_messages[user_no])) == VDK_IDYES) { SaveTokens(); } } delete tokenlist; } // kill emacs server if any if(EmacsServerStarted()) kill(EmacsPid(),SIGTERM); } return answer == VDK_IDYES; } /* */ void VDKBMainForm::EnableToggleFormUnit(bool active, char* file) { //(*toolbar1)[1]->Enabled = active; nb_array1[1]->Enabled = active; ToBeToggled = file; } //////////////////////////////// // Application class /////////////////////////////// void VDKBuilder::Setup() { // install auto timed gc SetGarbageCollection(2000); sprintf(buff,"%s/bin/vdkb2",VDKB_PREFIX); if(!access(buff,F_OK)) { struct stat info; stat(buff,&info); time_t t = info.st_mtime; sprintf(buff,"%s - %s",VDKBVERSION,ctime(&t)); buff[strlen(buff)-1] = '\0'; MainForm = new VDKBMainForm(this,buff); } else MainForm = new VDKBMainForm(this,VDKBVERSION); MainForm->Setup(); } /* ========================================= NON VDK STUFF used to install vdkbuilder resource files ========================================= */ /* install resources */ static bool install_resources(char* home) { char* cwd; char command1[256],command2[256],command3[256]; int result = -1; // makes .vdkb dir cwd = getcwd(NULL,MAXPATHLEN); if(!cwd) return false; if(chdir(home) < 0) { free(cwd); return false; } sprintf(command1,"cp %s/%s .vdkb2/res",VDKB_DATADIR,DEFAULTS_FILE); sprintf(command2,"cp %s/%s .vdkb2/res",VDKB_DATADIR,VDKB_RESOURCE_FILE); sprintf(command3,"cp %s/%s .vdkb2/res",VDKB_DATADIR,VDKB_PLUGIN_FILE); result = system("mkdir .vdkb2"); if( result != 127 && result >= 0) { result = system("mkdir .vdkb2/res"); if( result != 127 && result >= 0) { result = system(command1); if( result != 127 && result >= 0) { result = system(command2); if( result != 127 && result >= 0) { result = system(command3); } } } } chdir(cwd); free(cwd); return result != 127 && result >= 0; } static void make_message_dialog (GtkWidget **dialog, char* prompt, GtkMessageType type, GtkButtonsType buttons, gint default_response) { *dialog = gtk_message_dialog_new (NULL, (GtkDialogFlags) 0, type, buttons,prompt); gtk_signal_connect_object (GTK_OBJECT (*dialog), "response", GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (*dialog)); gtk_signal_connect (GTK_OBJECT (*dialog), "destroy", GTK_SIGNAL_FUNC (cmw_destroy_cb), dialog); gtk_dialog_set_default_response (GTK_DIALOG (*dialog), default_response); gtk_widget_show (*dialog); gtk_main(); } /* destroy */ static gboolean cmw_destroy_cb(GtkWidget *widget) { // This is needed to get out of gtk_main gtk_main_quit (); return FALSE; } /* void create_nonvdk_modal_window (char* prompt) { GtkWidget *window = NULL; GtkWidget *box1,*box2,*box3; GtkWidget *label; GtkWidget *btnOk = NULL; // Create modal window window=gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW(window),"VDKBuilder"); // Set window as modal gtk_window_set_modal (GTK_WINDOW(window),TRUE); // Create widgets box1 = gtk_vbox_new (FALSE,5); box2 = gtk_vbox_new (TRUE,5); box3 = gtk_hbox_new (TRUE,5); btnOk = gtk_button_new_with_label ("Ok"); label = gtk_label_new(prompt); // Init widgets gtk_container_set_border_width (GTK_CONTAINER(box1),3); gtk_container_set_border_width (GTK_CONTAINER(box2),3); // Pack widgets gtk_container_add (GTK_CONTAINER (window), box1); gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 4); gtk_box_pack_start (GTK_BOX (box2), label, FALSE, FALSE, 4); gtk_box_pack_start (GTK_BOX (box3), btnOk, FALSE, FALSE, 4); gtk_box_pack_start (GTK_BOX (box1), gtk_hseparator_new (), FALSE, FALSE, 4); gtk_box_pack_start (GTK_BOX (box1), box3, FALSE, FALSE, 4); // connect signals gtk_signal_connect_object (GTK_OBJECT (btnOk), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (window)); gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (cmw_destroy_cb),NULL); // Show widgets gtk_window_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); gtk_widget_show_all(window); // wait until dialog get destroyed gtk_main(); } */ vdkbuilder2-2.4.0/vdkbuilder/vdkb_about.cc0000644000000000000000000001444107661777465014200 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #include #include #include "pixmaps/stock_button_ok.xpm" #ifdef HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #endif static char buff[512]; static char version[256]; static char* authors = "The VDK team:\ Mario Motta (Italy) \ Ionutz Borcoman (Romania) \ Tim Lorenz (Germany) \ George Boutwell (USA) \ Pierre-Louis Malatray (France) \ Mile Lazarovski (Macedonia)"; static int canvasLength = 0; static int counter = 0; static VDKFont* canvas0_font = NULL; static int showed_textW = 0; static int fontH = 0; static char* showed_text = authors; static char* cpuinfo = NULL; /* defining signal static table */ DEFINE_SIGNAL_MAP(VDKBAboutForm,VDKForm) ON_SIGNAL(custombutton0,clicked_signal,Oncustombutton0Click), ON_SIGNAL(timer,timer_tick_signal,OnTimer) END_SIGNAL_MAP // just an exercise on cpu info DEFINE_EVENT_LIST(VDKBAboutForm,VDKForm); bool VDKBAboutForm::OnCanvas0ButtonPress(VDKObject*, GdkEvent*) { showed_text = showed_text == cpuinfo ? authors : cpuinfo; VDKFont* font = canvas0->Font; if(font) showed_textW = font->Width(showed_text); return true; } /* main form gui setup */ void VDKBAboutForm::GUISetup(void) { struct stat info; VDKBuilder* app = dynamic_cast(Application()); if(!app) return; Title = "VDKBuilder"; Box()->BorderWidth(0); VDKFrame* frame = new VDKFrame(this); frame->BorderWidth(0); frame->Shadow = shadow_out;// shadow_none;// shadow_etched_out; vbox = new VDKBox(this,v_box); frame->Add(vbox,0,0,0,0); Add(frame); VDKFrame* frame1 = new VDKFrame(this); frame1->BorderWidth(0); frame1->Shadow = shadow_in; canvas0 = new VDKCanvas(this); canvas0->SetSize(294,20); // canvas0->SetTip(_("Click to toggle")); frame1->Add(canvas0,0,0,0,0); vbox->Add(frame1,0,0,0,0); separator1 = new VDKSeparator(this,h_separator); vbox->Add(separator1,0,0,0,0); // sprintf(buff,"%s/%s",VDKB_DATADIR,VDKB_LOGO); sprintf(buff,"%s/.vdkb2/%s",(char*) app->user_home,VDKB_LOGO); if (stat(buff,&info) == -1) sprintf(buff,"%s/%s",VDKB_DATADIR,VDKB_LOGO); pixmap0 = new VDKImage(this,buff); vbox->Add(pixmap0,0,0,0,0); separator0 = new VDKSeparator(this,h_separator); vbox->Add(separator0,0,0,0,0); hbox2 = new VDKBox(this,h_box); vbox->Add(hbox2,0,1,1,0); hbox2->BorderWidth(0); /* custombutton0 = new VDKCustomButton(this, (const char**) stock_button_ok_xpm,"Ok",16,(GtkPositionType) 1); */ custombutton0 = new VDKHLButton(this, (const char**) stock_button_ok_xpm); custombutton0->SetTip(_("that's all folk !")); // custombutton0->SetSize(90,-1); hbox2->Add(custombutton0,0,0,0,3); label0 = new VDKLabel(this," "); // label0->SetSize(150,-1); label0->Justify = (GtkJustification) 2; hbox2->Add(label0,0,1,1,0); gtk_window_position(GTK_WINDOW(Window()),GTK_WIN_POS_CENTER); EventConnect(canvas0,"button_press_event", &VDKBAboutForm::OnCanvas0ButtonPress); } /* main form setup */ void VDKBAboutForm::Setup(void) { GUISetup(); // put your code below here sprintf(version,"VDK %d.%d.%d - Gtk+ %d.%d.%d - glib %d.%d.%d", VDK_VERSION_MAJOR, VDK_VERSION_MINOR, VDK_REVISION, gtk_major_version, gtk_minor_version, gtk_micro_version, glib_major_version, glib_minor_version, glib_micro_version); label0->Caption = version; // canvas settings canvas0->NormalBackground = clIvory; canvas0->Foreground = VDKRgb("navyblue"); canvas0_font = new VDKFont(this,"helvetica bold 10"); if((GdkFont*) *canvas0_font) { canvas0->Font = canvas0_font; showed_textW = canvas0_font->Width(showed_text); fontH = canvas0_font->Height("ABCDEFGHI"); } else canvas0_font = NULL; // timer settings (does not start here - last arg = false) timer = new VDKTimer(this,200,false); // load cpu info /* cpuinfo = new char[4096]; FILE* fp; fp = popen("cat /proc/cpuinfo","r"); if( fp != NULL) { memset(cpuinfo,'\0',4096); fread(cpuinfo,sizeof(char),4096,fp); pclose(fp); char* p = cpuinfo; for(;*p;p++) if(*p == '\n') *p = ' '; printf("\n%s",cpuinfo); fflush(stdout); } */ } /* main form constructor */ VDKBAboutForm::VDKBAboutForm(VDKForm* owner, char* title): VDKForm(owner,title,v_box,GTK_WINDOW_POPUP) { } /* main form destructor */ VDKBAboutForm::~VDKBAboutForm() { } /* */ bool VDKBAboutForm::OnTimer(VDKObject*) { int x = canvasLength-counter*6; canvas0->Clear(); canvas0->DrawString(x,canvas0_font ? fontH : 16, showed_text); canvas0->Redraw(); if(abs(x) >= showed_textW) counter = 0; else counter++; return true; } /* */ bool VDKBAboutForm::Oncustombutton0Click(VDKObject* sender) { Close(); return true; } /* */ void VDKBAboutForm::OnShow(VDKForm* sender) { VDKPoint cs = canvas0->Usize; canvasLength = cs.x; timer->Start(); return; } /* */ bool VDKBAboutForm::CanClose(void) { counter = 0; timer->Stop(); if(cpuinfo) { delete[] cpuinfo; cpuinfo = NULL; } return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_acsupport.cc0000644000000000000000000003015110022114073015037 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.4 * August 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include static char *making[] = { NULL, NULL, NULL, NULL ,NULL, NULL, NULL, NULL,NULL,NULL }; static char buff[512]; // below this index does not overwrites #define DO_NOT_OVERWRITE 6 static char *tobecopied[] = { "AUTHORS","COPYING","ChangeLog", "INSTALL", "NEWS ", "README", "autogen.sh", "aclocal.m4",0 }; bool VDKBMainForm::AcAutogen(VDKObject* sender) { int t; VDKString tgtPath; VDKBProject* project = PrjManager()->Project(); if(!project) return true; tgtPath = project->Path; // request user confirmation sprintf(buff, _("Autoconf/Automake support will\ \n\t* generate (or overwrite):\ \n\t\t - acconfig.h\n\ \n\t\t - configure.in\ \n\t\t - Makefile.am\ \n\t* copy all required files into %s\ \n\t* invoke ./autogen.sh\ \n\nDo you want apply Automake/Autoconf support ?"), (char*) tgtPath); if(Application()->VDKMessageBox(APPNAME, buff, VDK_ICONQUESTION|VDK_YESNO, _(user_messages[user_ok]), _(user_messages[user_no])) == VDK_IDNO) return true; /* copies all default files from vdkbuilder data dir to project path */ for(t = 0; tobecopied[t]; t++) { /* does not overwrites : AUTHORS,COPYING,ChangeLog, INSTALL, NEWS, and README */ if( (t < DO_NOT_OVERWRITE) && !access(tobecopied[t],F_OK) ) ; else { sprintf(buff,"cp -a %s/res/%s %s/", VDKB_DATADIR, tobecopied[t], (char*) tgtPath); system(buff); } } sprintf(buff,"chmod +x %s/autogen.sh",(char*) tgtPath); system(buff); // if configure.in exists ask to user wheter save and // unlink configure.in and Makefile.am. sprintf(buff,"%s/acconfig.h",(char*) tgtPath); bool regenerate = false; if(!access(buff,F_OK)) { if(Application()->VDKMessageBox(APPNAME, "acconfig.h, configure.in and Makefile.am already exist.\n\ Do you want regenerate them ? If you answer yes\n\ they will be regenerated and the old copy saved as\n\ acconfig.h.old,configure.in.old and Makefile.am.old,\n\ otherwise actual copies will be used by autogen", VDK_ICONQUESTION|VDK_YESNO, _(user_messages[user_ok]), _(user_messages[user_no])) == VDK_IDYES) { char local[512]; sprintf(buff,"%s/acconfig.h",(char*) tgtPath); sprintf(local,"cp %s %s.old",buff,buff); system(local); sprintf(buff,"%s/configure.in",(char*) tgtPath); sprintf(local,"cp %s %s.old",buff,buff); system(local); sprintf(buff,"%s/Makefile.am",(char*) tgtPath); sprintf(local,"cp %s %s.old",buff,buff); system(local); regenerate = true; } } /* writes acconfig.h */ FILE* fp = NULL; char* defines = NULL; char* token = NULL; sprintf(buff,"%s/acconfig.h",(char*) tgtPath); if(regenerate || (access(buff,F_OK))) { fp = fopen(buff,"w+"); if(! fp) return true; fprintf(fp,"/* acconfig.h. Generated automatically from configure.in by autoheader. */\n"); defines = (char*) project->Options()->defines; strcpy(buff,defines); token = strtok(buff,"-"); while(token) { token++; fprintf(fp,"\n#undef %s\n",token); token = strtok(NULL,"-"); } fclose(fp); } /* writes configure.in */ VDKString prname; sprintf(buff,"%s/configure.in",(char*) tgtPath); if(regenerate || (access(buff,F_OK))) { fp = fopen(buff,"w+"); if(! fp) return true; fprintf(fp, "# ****************************************\n\ # Copyright Mario Motta \n\ # ****************************************\n\ # VDKBuilder autoconf/automake support\n\ # ** WARNING ** overwritten by builder\n\n"); char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; prname = project->Name; char* p = get_extension((char*) prname); if(p) *p = '\0'; fprintf(fp,"AC_INIT(%s.%s)\n\n",(char*) prname,cc_ext); char* version = (char*) project->Options()->version; fprintf(fp,"VERSION=%s\n",version); if(strlen( (char*) project->Options()->package)) prname = project->Options()->package; fprintf(fp,"PACKAGE=%s\n\n", (char*) prname); fprintf(fp, "# Initialize automake stuff\n\ AM_INIT_AUTOMAKE($PACKAGE, $VERSION)\n\ AC_CANONICAL_HOST\n\ \n\ # with this line you check libvdk version and set 3 variables for\n\ # your Makefile.am:\n\ # VDK_LIBS: every libs you need\n\ # VDK_CFLAGS: every include dir you need\n\ # VDK_CONFIG: the absolute path to vdk-config-2\n\ AM_PATH_VDK_2(`vdk-config-2 --version`,,AC_MSG_ERROR(Correct version of VDK is not installed))\n\ \n\ # check for C++ compiler, C++ pre-processor flag\n\ AC_PROG_CXX\n\ AC_PROG_CXXCPP\n\ AC_LANG_CPLUSPLUS\n\ \n"); char* c_flags = (char*) project->Options()->c_flags; fprintf(fp,"CXXFLAGS=\"%s\"\n",c_flags); fprintf(fp,"AC_SUBST(CXXFLAGS)\n\n"); // defines strcpy(buff,defines); token = strtok(buff,"-"); while(token) { token++; fprintf(fp,"\nAC_DEFINE(%s)\n",token); token = strtok(NULL,"-"); } // almost done fprintf(fp,"# create a config.h header\n\ AM_CONFIG_HEADER(config.h)\n\ \n\ AC_OUTPUT(Makefile)\n\n"); fclose(fp); } /* writes Makefile.am */ sprintf(buff,"%s/Makefile.am",(char*) tgtPath); if(regenerate || (access(buff,F_OK))) { fp = fopen(buff,"w+"); if(! fp) return true; fprintf(fp, "# Copyright Mario Motta \n\ # VDKBuilder autoconf/automake support\n\ # written by builder\n\n"); fprintf(fp, "#To make any subdir just give SUBDIRS variables\n\n\ #instead of .\n\nSUBDIRS = .\n\n"); fprintf(fp,"bin_PROGRAMS = %s\n\n",(char*) prname); fprintf(fp,"%s_SOURCES = ",(char*) prname); project->WriteSourcesForAutomake(fp); char* includes = (char*) project->Options()->includes; fprintf(fp,"\nINCLUDES = %s\n\n",includes); char* libs = (char*) project->Options()->libs; fprintf(fp,"%s_LDFLAGS = %s\n\n",(char*) prname,libs); fprintf(fp, "#In EXTRA_DIST variable you must put every file which is not used\n\ #to be compiled.\nEXTRA_DIST = \\\n\tautogen.sh"); // search for if(!access("extra_dist.am",F_OK)) { char local[512]; FILE* extra; fprintf(fp,"\\\n\textra_dist.am"); extra = fopen("extra_dist.am","r"); if(extra) { while(fgets(local,512,extra)) { local[strlen(local)-1] = '\0'; fprintf(fp,"\\\n\t%s",local); } fclose(extra); } } // am_include.am is copied verbatim into Makefile.am if it exists. // So, if it exists, it must be included in EXTRA_DIST, then copied. // am_include.am can be used automake features not yet supported directly // by vdkbuilder, like for example check_PROGRAMS if(!access("am_include.am",F_OK)) { // adding to (and terminating) EXTRA_DIST fprintf(fp,"\\\n\tam_include.am\n\n"); // verbatim copying char local[512]; FILE* am_include; am_include = fopen("am_include.am","r"); if(am_include) { fprintf(fp,"# The contents of am_include.am are copied verbatim below\n"); while(fgets(local,512,am_include)) { fprintf(fp,"%s",local); } fclose(am_include); } } fclose(fp); } // save changed files if(editor && editor->Visible) editor->UpdateFiles(); // writes gui files PrjManager()->WriteGuiFiles(); // writes makefile VDKString path = project->Path; char* file = new char[strlen((char*) path)+16]; strcpy(file, (char*) path); strcat(file,"/vdkbMakefile"); fp = fopen(file,"w+"); if(fp) { project->WriteMakefile(fp); fclose(fp); } else { delete[] file; return true; // FIX ME: with user warning !!!! } delete[] file; /* save project */ project->Save(); /* invloke vdkbmaker && runs autogen.sh */ making[0] = "./autogen.sh"; making[1] = NULL; CallMaker(making,(char*) tgtPath,0); bool have_config = !access("./configure",F_OK); ac_make->Enabled = have_config; ac_makeclean->Enabled = have_config; ac_makedist->Enabled = have_config; ac_makedistclean->Enabled = have_config; return true; } /* */ bool VDKBMainForm:: AcMake(VDKObject* sender) { VDKString tgtPath; VDKBProject* project = PrjManager()->Project(); if(!project) return true; tgtPath = project->Path; making[0] = "make"; making[1] = NULL; // save changed files, if(editor && editor->Visible) editor->UpdateFiles(); CallMaker(making,(char*) tgtPath,0); return true; } /* */ bool VDKBMainForm::AcMakeClean(VDKObject* sender) { VDKString tgtPath; VDKBProject* project = PrjManager()->Project(); if(!project) return true; tgtPath = project->Path; making[0] = "make"; making[1] = "clean"; making[2] = NULL; CallMaker(making,(char*) tgtPath,0); return true; } /* */ bool VDKBMainForm::AcMakeDist(VDKObject* sender) { VDKString tgtPath; VDKBProject* project = PrjManager()->Project(); if(!project) return true; tgtPath = project->Path; making[0] = "make"; making[1] = "dist"; making[2] = NULL; CallMaker(making,(char*) tgtPath,0); return true; } /* */ bool VDKBMainForm::AcMakeDistclean(VDKObject* sender) { VDKString tgtPath; VDKBProject* project = PrjManager()->Project(); if(!project) return true; tgtPath = project->Path; making[0] = "make"; making[1] = "distclean"; making[2] = NULL; CallMaker(making,(char*) tgtPath,0); ac_make->Enabled = false; ac_makeclean->Enabled = false; ac_makedist->Enabled = false; ac_makedistclean->Enabled = false; return true; } /* output = 0 uses stderr, 1 stdout */ void VDKBMainForm::CallMaker(char * args[], char* pth,int output) { if(!maker) { if(editor) editor->ClearMessages(); chdir(pth); VDKBStringList* list = new VDKBStringList; maker = new VDKBMaker(this,args,list,false,output); maker->Setup(); maker->Show(); } else Application()->VDKMessageBox( APPNAME, _("A compilation process is already running"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 3000); } void VDKBMainForm::LoadEditorWithErrors(VDKBStringList* list) { if( (editor) && (editor->Visible) && (list->size() > 0)) { int t = 0; VDKBStringList slist; for(; t < list->size(); t++) { char* p; char* local = new char[strlen((char*) (*list)[t]) +1 ]; strcpy(local,(char*) (*list)[t]); // tokenize if( (p = strtok(local,"\n")) ) { VDKString s = p; slist.add(s); while( ( p = strtok(NULL,"\n")) ) { VDKString s = p; slist.add(s); } } else { VDKString s = local; slist.add(s); } delete[] local; } editor->FillMessages(&slist); } } vdkbuilder2-2.4.0/vdkbuilder/vdkb_bugfix.cc0000644000000000000000000000355307252425657014341 /* * =========================== * VDK Builder * Version 1.2 * November 2000 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ /* this file contains patches that fix bugs that can't be completely removed without break compatibility with older versions */ #include #include /* returns a new string where double slashes "//" are replaced with a singol one "/" into project full path names. This bug was introduced by project wizard and disseminate into project files so bug can't be removed without break compatibility with old or already uncorrect files. */ char* BugFix01(const char* where) { char* local = new char[strlen(where)+1]; char* local1 = new char[strlen(where)+1]; char* ret = NULL; strcpy(local,where); char* p = strstr(local,"//"); if(p) { *p ='\0'; strcpy(local1,local); strcat(local1,"/"); p += 2; strcat(local1,p); ret = local1; } delete[] local; if(!ret) delete[] local1; return ret; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_cbrowse.cc0000644000000000000000000001433507311201557014504 /* * =========================== * VDK Builder * Version 2.0 * March 2001 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include "pixmaps/stop.xpm" #include "pixmaps/stock_button_ok.xpm" static char buff[128]; /* main form constructor */ VDKBColorBrowser::VDKBColorBrowser(VDKForm* owner,VDKDefaultColor* color, char* title): VDKForm(owner,title), color (color) { } /* main form destructor */ VDKBColorBrowser::~VDKBColorBrowser() { } /* main form setup */ /* defining signal and events dynamics tables */ DEFINE_SIGNAL_LIST(VDKBColorBrowser,VDKForm); DEFINE_EVENT_LIST(VDKBColorBrowser,VDKForm); /* defining signal static table */ DEFINE_SIGNAL_MAP(VDKBColorBrowser,VDKForm) ON_SIGNAL(cancel,clicked_signal,OncancelClick), ON_SIGNAL(accept,clicked_signal,OnacceptClick) END_SIGNAL_MAP /* main form setup */ void VDKBColorBrowser::GUISetup(void) { SetSize(336,265); Title = _("VDKBuilder color browser"); vbox = new VDKBox(this,v_box); Add(vbox,0,1,1,0); evbox = new VDKEventBox(this,v_box); evbox->SetSize(266,223); vbox->Add(evbox,0,1,1,0); evbox->BorderWidth(0); scrolled = new VDKScrolled(this); evbox->Add(scrolled,0,1,1,0); separator0 = new VDKSeparator(this,h_separator); vbox->Add(separator0,0,0,0,0); hbox4 = new VDKBox(this,h_box); hbox4->SetSize(334,30); vbox->Add(hbox4,0,0,0,0); hbox4->BorderWidth(0); label = new VDKLabel(this," "); hbox4->Add(label,0,1,1,0); accept = new VDKCustomButton(this, (const char**) stock_button_ok_xpm,_("_Accept"),16,(GtkPositionType) 1); hbox4->Add(accept,0,0,0,0); cancel = new VDKCustomButton(this, (const char**) stop_xpm,_("_Cancel"),16,(GtkPositionType) 1); hbox4->Add(cancel,0,0,0,0); } void VDKBColorBrowser::Setup(void) { GUISetup(); selectedCanvas = -1; evbox->SetTip (_("Pick a color")); int column = 16; int row = 0; int remind = 0; ReadRGB (); row = colorList.size ()/column; remind = (colorList.size())%column; row = remind ? row+1 : row; if (row) { int c, r, t = 0; VDKTable *table = new VDKTable (this,row, column, true); ColorListIterator li (colorList); canvasArray.resize (colorList.size ()); for (r = 0; r < row; r++) for (c = 0; c < column; c++, t++, li++) { if (t < colorList.size ()) { VDKDefaultColor color = li.current (); VDKRgb rgb (color.red, color.green, color.blue) ; canvasArray[t] = new VDKCanvas (this, 15, 15); canvasArray[t]->NormalBackground = rgb; table->AddToCell (canvasArray[t], r, c); EventConnect (canvasArray[t], "button_press_event", &VDKBColorBrowser::OnCanvasClick); } else break; } scrolled->Add (table); } } bool VDKBColorBrowser::OnCanvasClick (VDKObject* sender, GdkEvent*) { int t = 0; for (; t < canvasArray.size (); t++) if (sender == canvasArray[t]) break; if (t < colorList.size ()) { if (selectedCanvas >= 0) { canvasArray[selectedCanvas]->Clear (); canvasArray[selectedCanvas]->Redraw (); } selectedCanvas = t; VDKRgb rgb = DefaultColorsColorRgb (t); sprintf (buff, "\"%s\"\nVDKRgb (%d,%d,%d)", DefaultColorsName (t), rgb.red, rgb.green, rgb.blue); label->Caption = buff; } else selectedCanvas = -1; return true; } //signal response method bool VDKBColorBrowser::OnacceptClick(VDKObject* sender) { if (selectedCanvas >= 0) *color = colorList[selectedCanvas]; Close (); return true; } //asks user before closing void VDKBColorBrowser::OnExpose(VDKForm* sender, GdkRectangle area) { if (selectedCanvas >= 0) { GtkWidget* widget = canvasArray[selectedCanvas]->Widget (); int w = widget->allocation.width; int h = widget->allocation.height; canvasArray[selectedCanvas]->DrawRect (false, 0, 0, w-1, h-1); canvasArray[selectedCanvas]->Redraw (); } return; } //signal response method bool VDKBColorBrowser::OncancelClick(VDKObject* sender) { Close (); return true; } bool VDKBColorBrowser::ReadRGB() { int red,green,blue; char colorname[64]; FILE* fp = NULL; sprintf(buff,"%s/res/%s",VDKB_DATADIR,VDKB_RGB); if(!access(buff,F_OK)) fp = fopen(buff,"r"); if(!fp) return false; colorList.flush(); // jump first line fgets(buff,sizeof(buff),fp); while(fgets(buff,sizeof(buff),fp)) { char* p; buff[strlen(buff)-1] = '\0'; sscanf(buff,"%d %d %d",&red,&green,&blue); // find first alpha for(p = buff; *p && (!isalpha(*p)); p++); if(*p) strcpy(colorname,p); else strcpy(colorname,"black"); VDKDefaultColor color(colorname,red,green,blue); colorList.add(color); } fclose(fp); return true; } /* */ VDKRgb VDKBColorBrowser::DefaultColorsColorRgb (int t) { VDKDefaultColor color = colorList[t]; return VDKRgb (color.red, color.green, color.blue); } /* */ char* VDKBColorBrowser::DefaultColorsName (int t) { return (char*) colorList[t].name; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_cbuttdlg.cc0000644000000000000000000001215307257645360014661 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include DEFINE_SIGNAL_MAP(VDKBComboButtonDlg,VDKForm) ON_SIGNAL(acceptButton,clicked_signal,OnacceptButtonClick), ON_SIGNAL(defaultButton,clicked_signal,OndefaultButtonClick) END_SIGNAL_MAP /* main form setup */ static char *label_position[] = { "GTK_POS_LEFT", "GTK_POS_RIGHT", "GTK_POS_TOP", "GTK_POS_BOTTOM", 0 }; void VDKBComboButtonDlg::GUISetup(void) { SetSize(223,138); Title = _("VDKCustomButton Dialog"); frame0 = new VDKFrame(this, _("VDKCustomButton options"), v_box,shadow_etched_in); Add(frame0,0,1,1,0); vbox1 = new VDKBox(this,v_box); frame0->Add(vbox1,l_justify,1,1,0); vbox1->BorderWidth(0); table1 = new VDKTable(this,3,2,false); table1->RowSpacing = 2; table1->ColSpacing = 2; vbox1->Add(table1,0,1,1,0); vbox10 = new VDKBox(this,v_box); table1->AddToCell(vbox10,0,0); pixmapCb = new VDKCheckButton(this,_("pixmapped")); vbox10->Add(pixmapCb,0,1,1,0); vbox11 = new VDKBox(this,v_box); table1->AddToCell(vbox11,0,1); label0 = new VDKLabel(this,_("Label position")); vbox11->Add(label0,0,1,1,0); labelPosCombo = new VDKCombo(this); labelPosCombo->SetSize(100,22); vbox11->Add(labelPosCombo,0,1,1,0); vbox12 = new VDKBox(this,v_box); table1->AddToCell(vbox12,1,0); VRadioButtonGroup16 = new VDKRadioButtonGroup(this,v_box); vbox12->Add(VRadioButtonGroup16,0,1,1,0); radiobutton4 = new VDKRadioButton(this,_("untoggled")); VRadioButtonGroup16->Add(radiobutton4,0,1,1,0); radiobutton6 = new VDKRadioButton(this,_("toggled")); VRadioButtonGroup16->Add(radiobutton6,0,1,1,0); vbox13 = new VDKBox(this,v_box); table1->AddToCell(vbox13,1,1); VRadioButtonGroup17 = new VDKRadioButtonGroup(this,v_box); vbox13->Add(VRadioButtonGroup17,0,1,1,0); radiobutton8 = new VDKRadioButton(this,_("normal")); VRadioButtonGroup17->Add(radiobutton8,0,1,1,0); radiobutton10 = new VDKRadioButton(this,_("Combo button")); VRadioButtonGroup17->Add(radiobutton10,0,1,1,0); vbox14 = new VDKBox(this,v_box); table1->AddToCell(vbox14,2,0); acceptButton = new VDKCustomButton(this,_("Accept")); vbox14->Add(acceptButton,0,1,1,0); vbox15 = new VDKBox(this,v_box); table1->AddToCell(vbox15,2,1); defaultButton = new VDKCustomButton(this,_("Defaults")); vbox15->Add(defaultButton,0,1,1,0); } /* main form constructor */ VDKBComboButtonDlg::VDKBComboButtonDlg(VDKForm* owner, char* title, int* pixmapped, unsigned int* type, GtkPositionType* label_pos): VDKForm(owner,title),pixmapped(pixmapped),type(type),label_pos(label_pos) { // set defaults; *pixmapped = 0; *type = VDK_CBUTTON_UNTOGGLED | VDK_CBUTTON_NORMAL; *label_pos = GTK_POS_RIGHT; } /* main form destructor */ VDKBComboButtonDlg::~VDKBComboButtonDlg() { } /* main form setup */ void VDKBComboButtonDlg::Setup(void) { StringList s; int t; GUISetup(); // vdkb gui setup // put your code below here for(t = 0 ;label_position[t];t++) s.add(VDKString(label_position[t])); labelPosCombo->PopdownStrings = s; labelPosCombo->SelectItem((int) GTK_POS_RIGHT); } // signal response method bool VDKBComboButtonDlg::OnacceptButtonClick(VDKObject* sender) { int sel; *pixmapped = (pixmapCb->Checked == true) ? 1 : 0; unsigned int toggled = (VRadioButtonGroup16->Selected == 0) ? VDK_CBUTTON_UNTOGGLED : VDK_CBUTTON_TOGGLED; unsigned int mode = (VRadioButtonGroup17->Selected) == 0 ? VDK_CBUTTON_NORMAL : VDK_CBUTTON_COMBO; *type = toggled | mode; sel = labelPosCombo->Selected; if(sel < 0) *label_pos = GTK_POS_RIGHT; else *label_pos = (GtkPositionType) sel; Close(); return true; } // signal response method bool VDKBComboButtonDlg::OndefaultButtonClick(VDKObject* sender) { Close(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_checkbutton.cc0000644000000000000000000002517607477070602015366 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include // #define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBCheckButton // put here vdk class name string #define VDK_CLASS "VDKCheckButton" // put here vdk class name #define VDK_ANCESTOR VDKCheckButton // put here here the widget will be named // (name+counter) #define VDK_WIDGET "checkbutton" #include "./pixmaps/caption.xpm" //================================================================= extern char *wi_widget_prompts[]; static char buff[128]; // used to autogenerate default int CLASS::Counter = 0; /* properties,signals and nicknames */ char* vdkcheckbutton_props[] = { CAPTION,CAPTIONWRAP,0 }; char* vdkcheckbutton_signals[] = { SIGNAL_TOGGLED,0 }; char* vdkcheckbutton_nicknames[] = { NICK_TOGGLED,0 }; ////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); ////////////////////////////////////// int OnCheckButtonMotionEvent(GtkWidget *w, GdkEvent* event, void* o) { printf("\nOnCheckButtonMotionEvent()"); fflush(stdout); g_return_val_if_fail(o != NULL, FALSE); g_return_val_if_fail(w != NULL, FALSE); CLASS* obj = reinterpret_cast(o); obj->OnMouseMove(obj->ObjectFromVDK(), event); return FALSE; } /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner, char* label, char* tip): VDKCheckButton(owner,label,tip),VDKBObject(name) { int t; // newly constructed widget counter is incremented Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties list for(t=0; vdkcheckbutton_props[t]; t++) proplist.add(VDKBProperty(vdkcheckbutton_props[t])); // add to VDKBObject signal list for(t=0; vdkcheckbutton_signals[t]; t++) siglist.add(VDKBSignal(vdkcheckbutton_signals[t], this, vdkcheckbutton_nicknames[t])); // connects common events. CONNECT_COMMON_EVENTS; gtk_widget_set_events(WrappedWidget(),GDK_POINTER_MOTION_MASK); // EventConnect("motion_notify_event",&VDKBObject::OnMouseMove); gtk_signal_connect(GTK_OBJECT(WrappedWidget()),"motion_notify_event", GTK_SIGNAL_FUNC(::OnCheckButtonMotionEvent), reinterpret_cast(this)); // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); // if(label) SetPropValue( CAPTION,label); } ///////////////////////////////////// // // WRITE TO .FRM FILE // ///////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); //============================ // USER STUFF BEGINS HERE // writes specific properties fprintf(fp,"\n\t%s\"%s\";",PROP_CAPTION,(char*) GetProp( CAPTION)); fprintf(fp,"\n\t%s%s;",PROP_CAPTIONWRAP,(char*) GetProp( CAPTIONWRAP)); } //////////////////////////////////////// // // PREPARE GUI WIDGETS // //////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable counter // to ensure unicity CLASS* button; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // actually makes widget button = new CLASS(buff,owner,buff); // add widget to form return owner->AddToSelf(button,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char obj_caption[128]; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; bool nls_support = parser.CheckNLSSupport(); source = new char[4096]; if(!parser.GetParam(obj_caption,buffer,PROP_CAPTION)) strcpy(obj_caption,"none"); if(nls_support) sprintf(tmp,"\n%s = new %s(this,_(\"%s\"));", obj_name, VDK_CLASS, obj_caption); else sprintf(tmp,"\n%s = new %s(this,\"%s\");", obj_name, VDK_CLASS, obj_caption); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // set widget specific properties // get label button props if(parser.GetParam(arg,buffer,PROP_CAPTIONWRAP) && strcmp(arg,NIHIL_PROP) ) { sprintf(tmp,"\n%s->%s = %s;",obj_name,CAPTIONWRAP,arg); strcat(source,tmp); } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char obj_caption[256]; char arg[64]; CLASS* button; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; // get caption if(!parser.GetParam(obj_caption,buffer,PROP_CAPTION)) strcpy(obj_caption,"none"); VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { button = new CLASS(obj_name,owner,obj_caption); if( parser.GetParam(arg,buffer,PROP_CAPTIONWRAP) && strcmp(arg,NIHIL_PROP) ) { button->CaptionWrap = !strcmp(arg,CHECK_TRUE); button->SetPropValue(CAPTIONWRAP,arg); } // pack widget to container return owner->PackToSelf(button, container, buffer, parser); } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); VDKTable* table = new VDKTable(inspector,1,2,true); VDKBox* box1 = new VDKBox(inspector,h_box); VDKCustomButton* button = new VDKCustomButton(inspector,(const char**) caption_xpm,NULL); button->SetTip(_(wi_widget_prompts[0])); button->Relief = (GtkReliefStyle) 2; box1->Add(button,l_justify,false,false,0); button->Parent(this); SignalConnect(button,"clicked",&CLASS::OnSetCaption); caption = new VDKEntry(inspector,0,(char*) GetProp(CAPTION)); caption->SetSize(80,-1); box1->Add(caption,l_justify,false,false,0); caption->Parent(this); SignalConnect(caption,"activate",&CLASS::OnSetCaption); table->AddToCell(box1,0,0); /* VDKCustomButton* button = new VDKCustomButton(inspector,_(wi_widget_prompts[0])); table->AddToCell(button,0,0); button->Parent(this); SignalConnect(button,"clicked",&CLASS::OnSetCaption); caption = new VDKEntry(inspector,0,(char*) GetProp(CAPTION)); caption->SetSize(100,-1); table->AddToCell(caption,0,1); caption->Parent(this); SignalConnect(caption,"activate",&CLASS::OnSetCaption); */ wrap = new VDKCheckButton(inspector,_(wi_widget_prompts[1])); table->AddToCell(wrap,0,1); wrap->Parent(this); SignalConnect(wrap,"toggled",&CLASS::OnSetCaptionWrap); bframe->Add(table,l_justify,false,false,false); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnSetCaptionWrap(VDKObject*) { SetPropValue(CAPTIONWRAP, wrap->Checked ? CHECK_TRUE : CHECK_FALSE); CaptionWrap = wrap->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetCaption(VDKObject*) { if(strlen(caption->Text)>0) { sprintf(buff,"%s",(char*) caption->Text); SetPropValue(CAPTION,buff); Caption = caption->Text; inspector->FormNeedToBeChanged(); } return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_clistdlg.cc0000644000000000000000000000231607252425664014654 /* vdkb_clistdlg Form implementation file:vdkb_clistdlg.cc */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include // Vdkb_clistdlg FORM CLASS /* form constructor */ Vdkb_clistdlgForm::Vdkb_clistdlgForm(VDKForm* owner, char* title, int* colnum): VDKForm(owner,_("VDKCustomList Dialog")), colnum(colnum) { } /* form destructor */ Vdkb_clistdlgForm::~Vdkb_clistdlgForm() { } /* form setup */ void Vdkb_clistdlgForm::Setup(void) { GUISetup(); // vdkb gui setup // put your code below here gtk_window_position(GTK_WINDOW(Window()),GTK_WIN_POS_MOUSE); } // signal response method bool Vdkb_clistdlgForm::OnokClick(VDKObject* sender) { *colnum = atoi(columns->Text); Close(); return true; } // signal response method bool Vdkb_clistdlgForm::OncancelClick(VDKObject* sender) { *colnum = 0; Close(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_clistdlg_gui.cc0000644000000000000000000000277607257645357015542 #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include DEFINE_SIGNAL_MAP(Vdkb_clistdlgForm,VDKForm) ON_SIGNAL(ok,clicked_signal,OnokClick), ON_SIGNAL(cancel,clicked_signal,OncancelClick) END_SIGNAL_MAP /* main form setup */ void Vdkb_clistdlgForm::GUISetup(void) { SetSize(264,40); Hbox4 = new VDKBox(this,h_box); Add(Hbox4,l_justify,true,true,true); Hbox5 = new VDKBox(this,h_box); Hbox4->Add(Hbox5,l_justify,true,true,true); Vbox7 = new VDKBox(this,v_box); Hbox5->Add(Vbox7,l_justify,true,true,true); Label1 = new VDKLabel(this,_("Enter columns number")); Label1->SetSize(130,16); Vbox7->Add(Label1,l_justify,false,false,true); Label2 = new VDKLabel(this,_("(defaults to 1)")); Vbox7->Add(Label2,l_justify,false,false,true); Hbox6 = new VDKBox(this,h_box); Hbox4->Add(Hbox6,l_justify,true,true,true); columns = new VDKEntry(this,0,"1"); columns->SetSize(40,32); columns->Editable = true; Hbox6->Add(columns,l_justify,true,true,false); ok = new VDKCustomButton(this,_("Ok")); ok->SetSize(32,32); Hbox6->Add(ok,l_justify,false,false,true); cancel = new VDKCustomButton(this,_("Cancel")); cancel->SetSize(58,32); Hbox6->Add(cancel,l_justify,false,false,false); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_clipdlg.cc0000644000000000000000000000776007252425665014476 /* * =========================== * VDK Builder * Version 1.0.3 * November 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include DEFINE_SIGNAL_MAP(VDKBWidgetClipboardDialog,VDKForm) ON_SIGNAL(pasteBtn,clicked_signal,OnPasteBtnClick), ON_SIGNAL(cancelBtn,clicked_signal,OncancelBtnClick) END_SIGNAL_MAP /* main form setup */ void VDKBWidgetClipboardDialog::GUISetup(void) { SetSize(150,210); Title = _("Widgets clipboard"); vbox1 = new VDKBox(this,v_box); Add(vbox1,0,1,1,0); char* widgetListTitles[] = { N_("Widget stack") }; widgetList = new VDKCustomList(this,1,widgetListTitles, (GtkSelectionMode) GTK_SELECTION_EXTENDED); widgetList->SetSize(138,173); widgetList->BorderShadow = (GtkShadowType) shadow_in; vbox1->Add(widgetList,0,1,1,0); separator0 = new VDKSeparator(this,h_separator); separator0->Enabled = false; vbox1->Add(separator0,0,0,0,0); separator0->Visible = false; hbox2 = new VDKBox(this,h_box); vbox1->Add(hbox2,0,1,1,0); hbox2->BorderWidth(0); pasteBtn = new VDKCustomButton(this,(char*) NULL, _("_Paste"),16,(GtkPositionType) 0); pasteBtn->SetTip( _("Select a widget, new widget will be pasted in selected container")); hbox2->Add(pasteBtn,0,1,1,0); cancelBtn = new VDKCustomButton(this,(char*) NULL, _("_Cancel"),16,(GtkPositionType) 0); hbox2->Add(cancelBtn,0,1,1,0); } /* form constructor */ VDKBWidgetClipboardDialog::VDKBWidgetClipboardDialog(VDKForm* owner, VDKBWidgetClipboardArray* cliparray, char* title): VDKForm(owner,title),cliparray(cliparray) { } /* form destructor */ VDKBWidgetClipboardDialog::~VDKBWidgetClipboardDialog() { } /* form setup */ void VDKBWidgetClipboardDialog::Setup(void) { GUISetup(); // vdkb gui setup // put your code below here VDKBWidgetClipboardIterator li(*WidgetClipboard); for(;li;li++) { VDKBWidgetClipboardItem item = li.current(); char* widgetName = (char*) item.object->Name(); widgetList->AddRow(&widgetName); } } // signal response method bool VDKBWidgetClipboardDialog::OnPasteBtnClick(VDKObject* sender) { int many = widgetList->Selections().size(); int j = 0; if(many > 0) { cliparray->resize(many); int t; for( t = 0; t < many; t++) { int row = widgetList->Selections()[t]; VDKBWidgetClipboardItem item = (*WidgetClipboard)[row]; (*cliparray)[t] = item; } } else { j = widgetList->Selected.Row(); if(j >= 0) { cliparray->resize(1); VDKBWidgetClipboardItem item = (*WidgetClipboard)[j]; (*cliparray)[0] = item; } } Close(); return true; } // signal response method bool VDKBWidgetClipboardDialog::OncancelBtnClick(VDKObject* sender) { Close(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_combo.cc0000644000000000000000000002621607272557524014156 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBCombo // put vdk class name to corresponding widget #define VDK_ANCESTOR VDKCombo // put here vdk class name string #define VDK_CLASS "VDKCombo" // put here here the widget will be named // (name+counter) #define VDK_WIDGET "combo" extern char *wi_widget_prompts[]; static char buff[128]; // used to autogenerate default int CLASS::Counter = 0; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// /* properties names */ char* vdkcombo_props[] = { EDITABLE,SORTED,HIDDEN,CASESENSITIVE,0 }; /* entry widget signal names && nicknames Default response method name will be made by: On. For instance if object name = and nickname = default response method name will be: */ char* vdkcombo_signals[] = { SIGNAL_ACTIVATE,SIGNAL_CHANGED, SIGNAL_SELECTION_CHANGED ,SIGNAL_FOCUS_IN, SIGNAL_FOCUS_OUT,0 }; char* vdkcombo_nicknames[] = { NICK_ACTIVATE,NICK_CHANGED, NICK_SELECTION_CHANGED,NICK_FOCUS_IN, NICK_FOCUS_OUT,0 }; /* */ int EntryButtonPressed(GtkWidget * wid, GdkEvent * ev, gpointer p) { gtk_signal_emit_stop_by_name(GTK_OBJECT(wid), "button_press_event"); // proceed to upper level return false; } ////////////////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner): VDK_ANCESTOR(owner),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties for(t=0; vdkcombo_props[t]; t++) proplist.add(VDKBProperty(vdkcombo_props[t])); // add to VDKBObject signal list for(t=0; vdkcombo_signals[t]; t++) siglist.add(VDKBSignal(vdkcombo_signals[t], this, vdkcombo_nicknames[t])); // CONNECT_COMMON_EVENTS; gtk_signal_connect(GTK_OBJECT(GTK_COMBO(widget)->entry), "button_press_event", GTK_SIGNAL_FUNC(::EntryButtonPressed), (gpointer) this); // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s\"%s\";", PROP_EDITABLE, (char*) GetProp(EDITABLE)); fprintf(fp,"\n\t%s%s;", PROP_HIDDEN, (char*) GetProp(HIDDEN)); fprintf(fp,"\n\t%s%s;", PROP_SORTED, (char*) GetProp(SORTED)); fprintf(fp,"\n\t%s%s;", PROP_CASESENSITIVE, (char*) GetProp(CASESENSITIVE)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* combo; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // actually makes widget combo = new CLASS(buff,owner); // add widget to form return owner->AddToSelf(combo,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; sprintf(tmp,"\n%s = new %s(this);",obj_name,VDK_CLASS); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete props; } // set widget specific properties if(parser.GetParam(arg,buffer,PROP_EDITABLE) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;", obj_name, EDITABLE, arg); strcat(source,tmp); } if(parser.GetParam(arg,buffer, PROP_HIDDEN) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;",obj_name,HIDDEN,arg); strcat(source,tmp); } if(parser.GetParam(arg,buffer,PROP_SORTED) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;",obj_name,SORTED,arg); strcat(source,tmp); } // if(parser.GetParam(arg,buffer, PROP_CASESENSITIVE) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;",obj_name,CASESENSITIVE,arg); strcat(source,tmp); } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[64]; CLASS* combo; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { combo = new CLASS(obj_name,owner); if(parser.GetParam(arg,buffer,PROP_EDITABLE) && strcmp(arg,NIHIL_PROP)) combo->SetPropValue(EDITABLE,arg); if(parser.GetParam(arg,buffer,PROP_HIDDEN) && strcmp(arg,NIHIL_PROP)) combo->SetPropValue(HIDDEN,arg); if(parser.GetParam(arg,buffer,PROP_SORTED) && strcmp(arg,NIHIL_PROP)) combo->SetPropValue(SORTED,arg); if(parser.GetParam(arg,buffer,PROP_CASESENSITIVE) && strcmp(arg,NIHIL_PROP)) combo->SetPropValue(CASESENSITIVE,arg); // pack widget to container return owner->PackToSelf(combo, container, buffer, parser); } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); VDKTable *table = new VDKTable(inspector,2,2); table->SetSize(219,-1); editable = new VDKCheckButton(inspector,_(wi_widget_prompts[2])); table->AddToCell(editable,0,0); editable->Checked = GetProp(EDITABLE) == True; // this after (so no signal hang) editable->Parent(this); SignalConnect(editable,"toggled",&CLASS::OnSetEditable); sorted = new VDKCheckButton(inspector,_(wi_widget_prompts[3])); table->AddToCell(sorted,0,1); sorted->Checked = GetProp(SORTED) == True; // this after (so no signal hang) sorted->Parent(this); SignalConnect(editable,"toggled",&CLASS::OnSetSorted); hidden = new VDKCheckButton(inspector,_(wi_widget_prompts[4])); table->AddToCell(hidden,1,0); hidden->Checked = GetProp(HIDDEN) == True; // this after (so no signal hang) hidden->Parent(this); SignalConnect(hidden,"toggled",&CLASS::OnSetHidden); casesensitive = new VDKCheckButton(inspector,_(wi_widget_prompts[5])); table->AddToCell(casesensitive,1,1); casesensitive->Checked = GetProp(CASESENSITIVE) == True; // this after (so no signal hang) casesensitive->Parent(this); SignalConnect(casesensitive,"toggled",&CLASS::OnSetCaseSensitive); bframe->Add(table,l_justify,false,false,false); return bframe; } /* */ bool CLASS::OnSetEditable(VDKObject*) { SetPropValue(EDITABLE, editable->Checked ? CHECK_TRUE : CHECK_FALSE); Editable = editable->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetHidden(VDKObject*) { SetPropValue(HIDDEN, hidden->Checked ? CHECK_TRUE : CHECK_FALSE); Hidden = hidden->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetSorted(VDKObject*) { SetPropValue(SORTED, sorted->Checked ? CHECK_TRUE : CHECK_FALSE); Sorted = sorted->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetCaseSensitive(VDKObject*) { SetPropValue(CASESENSITIVE, casesensitive->Checked ? CHECK_TRUE : CHECK_FALSE); CaseSensitive = casesensitive->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_compodb.cc0000644000000000000000000002747010022114173014455 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include extern VDKBuilder* TheApp; static char buff[256]; DEFINE_SIGNAL_MAP(VDKBCompodbForm,VDKForm) ON_SIGNAL(closeButton,clicked_signal,OncloseButtonClick), ON_SIGNAL(compoList,realize_signal,OnRealizeCompoList), ON_SIGNAL(compoList,select_row_signal,OncompoListSelectRow), ON_SIGNAL(deleteButton,clicked_signal,OndeleteButtonClick), ON_SIGNAL(addButton,clicked_signal,OnaddButtonClick), ON_SIGNAL(modifyButton,clicked_signal,OnmodifyButtonClick), ON_SIGNAL(saveButton,clicked_signal,OnsaveButtonClick) END_SIGNAL_MAP // treeview model data enum { ICON = 0, LIBNAME, LIBPATH, LIBID, LIBVALID, COMPONAME, LIBERROR, MAX_COL }; static struct { char* title; int ordinal_number; GType gtype; } data_structure[] = { {N_("Compo"), ICON, GDK_TYPE_PIXBUF }, {N_("Library name"), LIBNAME, G_TYPE_STRING }, {N_("Library path"), LIBPATH, G_TYPE_STRING }, {N_(" Id "), LIBID, G_TYPE_INT }, {N_("Valid"), LIBVALID, G_TYPE_BOOLEAN }, {N_("Component name"), COMPONAME, G_TYPE_STRING }, {N_("Error"), LIBERROR, G_TYPE_STRING }, {NULL,-1,0} }; /* form constructor */ VDKBCompodbForm::VDKBCompodbForm(VDKForm* owner, char* title): VDKForm(owner,title) { } /* main form destructor */ VDKBCompodbForm::~VDKBCompodbForm() { } /* main form setup */ void VDKBCompodbForm::Setup(void) { GUISetup(); // vdkb gui setup // put your code below here Changed = false; } /* main form setup */ void VDKBCompodbForm::GUISetup(void) { SetSize(460,315); Title = _("VDKBuilder component database"); vbox1 = new VDKBox(this,v_box); Add(vbox1,0,1,1,0); VDKScrolled* scrolled = new VDKScrolled(this); compoList = new VDKTreeView(this,NULL,GTK_SELECTION_SINGLE); scrolled->AddWithoutViewport(compoList,l_justify,false,false,0); vbox1->Add(scrolled,0,1,1,3); separator0 = new VDKSeparator(this,h_separator); vbox1->Add(separator0,0,0,0,3); hbox2 = new VDKBox(this,h_box); hbox2->SetSize(400,25); vbox1->Add(hbox2,0,0,0,3); hbox2->BorderWidth(0); closeButton = new VDKCustomButton(this,_("Close")); closeButton->Relief = (GtkReliefStyle) 0; hbox2->Add(closeButton,0,1,1,3); deleteButton = new VDKCustomButton(this,_("Delete")); hbox2->Add(deleteButton,0,1,1,3); addButton = new VDKCustomButton(this,_("Add")); hbox2->Add(addButton,0,1,1,3); // modifyButton = new VDKCustomButton(this,_("Modify")); // hbox2->Add(modifyButton,0,1,1,3); // disabled for now // modifyButton->Enabled = false; saveButton = new VDKCustomButton(this,_("Save")); saveButton->Enabled = true; hbox2->Add(saveButton,0,1,1,3); statusbar0 = new VDKStatusbar(this); statusbar0->SetSize(391,25); vbox1->Add(statusbar0,l_justify,false,false,0); } // char *strnzcpy(char *trgt, const char *src, int n) //copies max (n-1) bytes from src to trgt and adds a zero, if neccessary { trgt[--n] = 0; return strncpy(trgt,src,n); } // bool VDKBCompodbForm::OnRealizeCompoList(VDKObject* sender) { // makes model int t; GType* types = new GType[MAX_COL]; VDKTreeViewModel *model = NULL; types[0] = GDK_TYPE_PIXBUF; for(t=1; data_structure[t].title; t++) types[t] = data_structure[t].gtype; compoList->Model = (model = new VDKTreeViewModel(types,MAX_COL)); delete[] types; if(model) { VDKTreeViewColumn* column = NULL; for(t=0; data_structure[t].title; t++) column = new VDKTreeViewColumn(compoList,data_structure[t].ordinal_number, _(data_structure[t].title)); LoadComponentDb(); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(compoList->WrappedWidget()), TRUE); GtkTreeIter iter; if(model->Root(&iter)) compoList->SelectNode(&iter); } return true; } void VDKBCompodbForm::LoadComponentDb() { # define MAX_MSG 256 char libname[MAX_MSG],libpath[MAX_MSG], name[MAX_MSG],error[MAX_MSG]; const char **icon; VDKTreeViewModel* model = compoList->Model; VDKBPluginListIterator li(TheApp->PluginList()); for(;li;li++) { GtkTreeIter iter; VDKBPlugin plugin = li.current(); strnzcpy(libname,plugin.LibName(),MAX_MSG); strnzcpy(libpath,plugin.PathName(),MAX_MSG); strnzcpy(name,plugin.IsValid() ? plugin.Interface()->VDKName(): (char*) _("invalid "),MAX_MSG); strnzcpy(error,plugin.Error() ? plugin.Error() : (char*) " ",MAX_MSG); icon = (const char**) plugin.Icon(); VDKPixbuf* pixbuf = NULL; if(icon) pixbuf = new VDKPixbuf(this,icon); model->AppendBlank(&iter); model->SetData(&iter, ICON , pixbuf ? pixbuf->AsGdkPixbuf(): NULL, LIBNAME, libname, LIBPATH,libpath, LIBID,plugin.Id(), LIBVALID,plugin.IsValid(), COMPONAME,name, LIBERROR,error, -1); } } // bool VDKBCompodbForm::SaveComponentDb() { sprintf(buff,"%s/.vdkb2/%s",(char*) TheApp->user_home,VDKB_PLUGIN_FILE); FILE* fp = fopen(buff,"w+"); if(!fp) return false; VDKBPluginListIterator li(TheApp->PluginList()); for(;li;li++) fprintf(fp,"%s,%s\n", (char*) li.current().PathName(), (char*) li.current().LibName()); fclose(fp); return true; } /* */ bool VDKBCompodbForm::CanClose() { if(Changed && (Application()->VDKMessageBox(APPNAME, _("Component database changed\nsave it ?"), VDK_ICONQUESTION|VDK_YESNO, _(user_messages[user_ok]), _(user_messages[user_no])) == VDK_IDYES)) OnsaveButtonClick(NULL); return true; } // signal response method bool VDKBCompodbForm::OncloseButtonClick(VDKObject* sender) { Close(); return true; } // signal response method bool VDKBCompodbForm::OncompoListSelectRow(VDKObject* sender) { return true; } // signal response method bool VDKBCompodbForm::OndeleteButtonClick(VDKObject* sender) { VDKTreeViewModel *model = compoList->Model; compoList->GetSelections(); if(compoList->Selections().size() == 1) { int t = 0; GtkTreeIter iter = compoList->Selections()[0]; char* name = (char*) model->GetCell(&iter,LIBNAME); VDKBPluginListIterator li(TheApp->PluginList()); for(;li;li++,t++) if(!strcmp(name, (char*) li.current().LibName())) { (TheApp->PluginList())[t].DlClose(); TheApp->PluginList().unlink(t); Changed = true; model->Remove(&iter); saveButton->Enabled = Changed; } compoList->Selections().flush(); delete[] name; } return true; } // signal response method bool VDKBCompodbForm::OnaddButtonClick(VDKObject* sender) { char libpath[MAX_MSG]; char libname[MAX_MSG]; char name[MAX_MSG],error[MAX_MSG]; const char ** icon; VDKTreeViewModel* model = compoList->Model; *libpath = *libname = '\0'; VDKBCompoInputForm* child = new VDKBCompoInputForm(this, libpath, libname); child->Setup(); child->ShowModal(GTK_WIN_POS_CENTER); if(*libpath && *libname) { VDKBPlugin plugin(libpath,libname); TheApp->PluginList().add(plugin); plugin.DlOpen(); strnzcpy(name,plugin.IsValid() ? plugin.Interface()->VDKName(): (char*) _("invalid "),MAX_MSG); icon = (const char**) plugin.Icon(); VDKPixbuf* pixbuf = NULL; if(icon) pixbuf = new VDKPixbuf(this,icon); GtkTreeIter iter ; model->AppendBlank(&iter); model->SetData(&iter, ICON , pixbuf ? pixbuf->AsGdkPixbuf(): NULL, LIBNAME, libname, LIBPATH, libpath, LIBID,plugin.Id(), LIBVALID,plugin.IsValid(), COMPONAME,name, LIBERROR,error, -1); Changed = true; } saveButton->Enabled = Changed; return true; } // signal response method bool VDKBCompodbForm::OnmodifyButtonClick(VDKObject* sender) { return true; } // signal response method bool VDKBCompodbForm::OnsaveButtonClick(VDKObject* sender) { if(!SaveComponentDb()) Application()->VDKMessageBox( APPNAME, _("Could not save component database"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 5000); Changed = false; return true; } //////////////////////////////////// // VDKBCompoInputForm CLASS /////////////////////////////////// DEFINE_SIGNAL_MAP(VDKBCompoInputForm,VDKForm) ON_SIGNAL(acceptButton,clicked_signal,OnacceptButtonClick), ON_SIGNAL(cancelButton,clicked_signal,OncancelButtonClick) END_SIGNAL_MAP /* form constructor */ VDKBCompoInputForm::VDKBCompoInputForm(VDKForm* owner, char* libpath, char* libname): VDKForm(owner,(char*) NULL),libpath(libpath),libname(libname) { } /* main form destructor */ VDKBCompoInputForm::~VDKBCompoInputForm() { } /* main form setup */ void VDKBCompoInputForm::GUISetup(void) { SetSize(321,100); Title = _("Component database dialog"); vbox1 = new VDKBox(this,v_box); Add(vbox1,0,1,1,0); vbox2 = new VDKBox(this,v_box); vbox1->Add(vbox2,0,1,1,0); vbox2->BorderWidth(0); hbox5 = new VDKBox(this,h_box); hbox5->SetSize(319,30); vbox2->Add(hbox5,0,1,1,0); hbox5->BorderWidth(0); label0 = new VDKLabel(this,_("Enter library path:")); hbox5->Add(label0,0,1,1,0); libpathEntry = new VDKEntry(this,0); libpathEntry->SetSize(195,25); hbox5->Add(libpathEntry,0,1,0,0); hbox6 = new VDKBox(this,h_box); hbox6->SetSize(319,30); vbox2->Add(hbox6,0,1,1,0); hbox6->BorderWidth(0); label1 = new VDKLabel(this,_("Enter library name:")); label1->SetSize(102,35); hbox6->Add(label1,0,1,1,0); libnameEntry = new VDKEntry(this,0); libnameEntry->SetSize(195,25); hbox6->Add(libnameEntry,0,1,0,0); separator1 = new VDKSeparator(this,h_separator); vbox1->Add(separator1,0,0,0,0); hbox10 = new VDKBox(this,h_box); vbox1->Add(hbox10,0,1,1,0); hbox10->BorderWidth(0); acceptButton = new VDKCustomButton(this,(char*) NULL, _("_Accept"), 16,(GtkPositionType) 0); hbox10->Add(acceptButton,0,1,0,0); cancelButton = new VDKCustomButton(this,(char*) NULL, _("_Cancel"), 16,(GtkPositionType) 0); hbox10->Add(cancelButton,0,1,0,0); } /* main form setup */ void VDKBCompoInputForm::Setup(void) { GUISetup(); // vdkb gui setup // put your code below here } // signal response method bool VDKBCompoInputForm::OnacceptButtonClick(VDKObject* sender) { if(strlen(libpathEntry->Text) > 0) strcpy(libpath,libpathEntry->Text); else *libpath = '\0'; if(strlen(libnameEntry->Text) > 0) strcpy(libname,libnameEntry->Text); else *libname = '\0'; Close(); return true; } // signal response method bool VDKBCompoInputForm::OncancelButtonClick(VDKObject* sender) { *libname = *libpath = '\0'; Close(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_createform.cc0000644000000000000000000000753507425625113015177 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #include #include #include #if HAVE_GNOME #include #endif /////////////////////////////////////////// VDKBGuiForm* GuiFormList::search(VDKString& name) { GuiFormListIterator li(*this); for(;li;li++) if(li.current()->Name() == name) return li.current(); return (VDKBGuiForm*) NULL; } /* */ void GuiFormList::Iconize() { GuiFormListIterator li(*this); for(;li;li++) if(li.current()->Visible && !li.current()->Iconized) li.current()->Iconized = true; } /* */ void GuiFormList::Restore() { GuiFormListIterator li(*this); for(;li;li++) if(li.current()->Visible && li.current()->Iconized) li.current()->Iconized = false; } /* */ void GuiFormList::Destroy() { GuiFormListIterator li(*this); for(;li;li++) li.current()->ForceToClose = true; li.restart(); for(;li;li++) li.current()->Close(); flush(); } /* */ void GuiFormList::Close() { GuiFormListIterator li(*this); for(;li;li++) li.current()->ForceToClose = true; } ////////////////////////////////////////// /* Create or raise a form, creates property browser as well. */ VDKBGuiForm* VDKBProjectManager::CreateForm(char* name) { // extract formname from name char* pstr = new char[strlen(name)+1]; strcpy(pstr,name); char* p = get_shortfilename(pstr); char* formname = p ? p : pstr; p = get_extension(formname); if(p) *p = '\0'; VDKString s = formname; VDKBGuiForm* form = formlist.search(s); if(!form) { VDKBParser parser(name); // get form class type int form_class_type = parser.ClassName(formname); switch (form_class_type) { case vdkbclass_form: // creates a form with form name and file name (.frm) form = new VDKBGuiForm(this,formname,name); break; #if HAVE_GNOME case vdkbclass_gnomeform: // create a gnome application form form = new VDKBGuiForm(this, formname, name, (char*) NULL, v_box, type_vdk_gnomeform); // if(form) ;//form->Add(new VDKGnomeAppBar(this),r_justify,false,false,0); break; #endif default: form = NULL; } if(form) { form->Setup(parser,formname); formlist.add(form); form->SetSize(form->DesignedSize.x,form->DesignedSize.y); // form->SetFormSize(form->DesignedSize); // form->SetDefaultSize(form->DesignedSize); form->Show(); // form->SetSize(0,0); } else ; // FIX ME: report an error delete[] pstr; } else { if(! form->Visible) { form->SetSize(form->DesignedSize.x,form->DesignedSize.y); // form->SetDefaultSize(form->DesignedSize); // form->SetFormSize(form->DesignedSize); form->Visible = true; // form->SetSize(0,0); } else if(form->Iconized) form->Iconized = false; else form->Raise(); } form->Changed = false; return form; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_custombutton.cc0000644000000000000000000005442707454572203015623 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include "./pixmaps/apple.xpm" #include "./pixmaps/copy.xpm" #include "./pixmaps/caption.xpm" #include "./pixmaps/relief.xpm" extern char* wi_widget_prompts[]; static char *default_xpm[] = { /* width height num_colors chars_per_pixel */ " 24 22 6 1", /* colors */ ". c #000000", "# c #828282", //"a c #c3c3c3", "a c #none", "b c #ffff00", "c c #0000ff", "d c #ffffff", /* pixels */ "a......................a", ".ddddddddddddddddddddd#.", ".daaaaaaaaaaaaaaaaaaa##.", ".daaaaaadddddaaaaaaaa##.", ".daaadddaaadddaaaaaaa##.", ".daaaaaaaa.ddd.daaaaa##.", ".daa#aaadd..dd..ddaaa##.", ".daab#aa.d#.#dd.dcaaa##.", ".daab#a..dd..dd.#ddaa##.", ".daabb#..dd..dd..ddda##.", ".daabb#..dd..dd..ddda##.", ".daab#a..d#.#dd.#ddaa##.", ".daab#aa.d..ddd.ddaaa##.", ".daa#aaaad.ddd.ddaaaa##.", ".daaaaaaaa.ddd.daaaaa##.", ".daaaaaaaaaaa..aaaaaa##.", ".daaaaaaaaaa..a.aaaaa##.", ".daaaaaaaaa..aaa.aaaa##.", ".daaaaaaaaaaaaaaaaaaa##.", ".d#####################.", ".######################.", "a......................a" }; /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBCustomButton // put here vdk class name string #define VDK_CLASS "VDKCustomButton" // put here vdk class name #define VDK_ANCESTOR VDKCustomButton // put here here the widget will be named // (name+counter) #define VDK_WIDGET "custombutton" static char buff[256]; // used to autogenerate default // labelbutton names and captions int CLASS::Counter = 0; /* label button properties names */ char* vdkcustombutton_props[] = { CAPTION,CAPTIONWRAP,RELIEF,GLYPH,GLYPH_BYDATA, PIXMAPPED_INTERNAL,CB_TYPE_INTERNAL, CB_POS_INTERNAL,0 }; /* label button signals names && nicknames Default response method name will be made by: On. For instance if object name = and nickname = default response method name will be: */ char* vdkcustombutton_signals[] = { SIGNAL_CLICKED,SIGNAL_ENTER,SIGNAL_LEAVE,0 }; char* vdkcustombutton_nicknames[] = { NICK_CLICKED,NICK_ENTER,NICK_LEAVE,0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); ////////////////////////////////////////////////////////////// int PassMotionNotifyEvent(GtkWidget *w, GdkEventMotion* event, void* o) { printf("\nPassMotionNotifyEvent()"); fflush(stdout); return FALSE; } /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner, char* pixfile, char* label, unsigned int type, GtkPositionType position): VDK_ANCESTOR(owner, pixfile , label, type, position), VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties list label button properties // names. (Others props are prepended by VDKBObject constructor) for(t=0; vdkcustombutton_props[t]; t++) proplist.add(VDKBProperty(vdkcustombutton_props[t])); if(label) SetPropValue(CAPTION,label); if(pixfile) SetPropValue(PIXMAPPED_INTERNAL,(char*) "true"); sprintf(buff,"%u",type); SetPropValue(CB_TYPE_INTERNAL,buff); sprintf(buff,"%u",position); SetPropValue(CB_POS_INTERNAL,buff); // add to VDKBObject signal list label button signals for(t=0; vdkcustombutton_signals[t]; t++) siglist.add(VDKBSignal(vdkcustombutton_signals[t], this, vdkcustombutton_nicknames[t])); // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); CONNECT_COMMON_EVENTS; gtk_widget_add_events(WrappedWidget(),GDK_POINTER_MOTION_MASK); EventConnect("motion_notify_event",&VDKBObject::OnMouseMove); } CLASS::CLASS(char* name, VDKForm* owner, char** pixdata, char* label, unsigned int type, GtkPositionType position): VDK_ANCESTOR(owner, (const char**) pixdata , label, type, position), VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties list label button properties // names. (Others props are prepended by VDKBObject constructor) for(t=0; vdkcustombutton_props[t]; t++) proplist.add(VDKBProperty(vdkcustombutton_props[t])); if(label) SetPropValue(CAPTION,label); if(pixdata) SetPropValue(PIXMAPPED_INTERNAL,(char*) "true"); sprintf(buff,"%u",type); SetPropValue(CB_TYPE_INTERNAL,buff); sprintf(buff,"%u",position); SetPropValue(CB_POS_INTERNAL,buff); // add to VDKBObject signal list label button signals for(t=0; vdkcustombutton_signals[t]; t++) siglist.add(VDKBSignal(vdkcustombutton_signals[t], this, vdkcustombutton_nicknames[t])); // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); CONNECT_COMMON_EVENTS; gtk_widget_set_events(WrappedWidget(),GDK_POINTER_MOTION_MASK); EventConnect("motion_notify_event",&VDKBObject::OnMouseMove); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s\"%s\";",PROP_CAPTION,(char*) GetProp(CAPTION)); fprintf(fp,"\n\t%s%s;",PROP_CAPTIONWRAP,(char*) GetProp(CAPTIONWRAP)); fprintf(fp,"\n\t%s%s;", PROP_RELIEF,(char*) GetProp(RELIEF)); fprintf(fp,"\n\t%s%s;",PROP_GLYPH,(char*) GetProp(GLYPH)); fprintf(fp,"\n\t%s%s;", PROP_GLYPH_BYDATA, (char*) GetProp(GLYPH_BYDATA)); fprintf(fp,"\n\t%s%s;",PROP_PIXMAPPED_INTERNAL, (char*) GetProp(PIXMAPPED_INTERNAL)); fprintf(fp,"\n\t%s%s;",PROP_CB_TYPE_INTERNAL, (char*) GetProp(CB_TYPE_INTERNAL)); fprintf(fp,"\n\t%s%s;",PROP_CB_POS_INTERNAL, (char*) GetProp(CB_POS_INTERNAL)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable button counter // to ensure unicity CLASS* button; int pixmapped; unsigned int type; GtkPositionType labelpos = GTK_POS_RIGHT; VDKBComboButtonDlg *dlg = new VDKBComboButtonDlg(owner, NULL, &pixmapped, &type, &labelpos); dlg->Setup(); dlg->ShowModal(); // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // actually makes widget button = new CLASS(buff, owner, pixmapped ? default_xpm : (char**) NULL, buff, type, labelpos); // add widget to form return owner->AddToSelf(button,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char obj_caption[128]; char obj_glyph[256]; char bydata[16]; unsigned int buttontype, labelpos; bool nls_support = parser.CheckNLSSupport(); // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; if(!parser.GetParam(obj_caption,buffer,PROP_CAPTION)) strcpy(obj_caption,"none"); if(parser.GetParam(obj_glyph,buffer, PROP_GLYPH) && strcmp(obj_glyph,NIHIL_PROP)) ; else *obj_glyph = '\0'; if(parser.GetParam(bydata,buffer,PROP_GLYPH_BYDATA) && strcmp(bydata,NIHIL_PROP)) ; else strcpy(bydata,""); if(parser.GetParam(arg,buffer, PROP_CB_TYPE_INTERNAL) && strcmp(arg,NIHIL_PROP)) buttontype = atoi(arg); else buttontype = VDK_CBUTTON_UNTOGGLED | VDK_CBUTTON_NORMAL; if(parser.GetParam(arg,buffer, PROP_CB_POS_INTERNAL) && strcmp(arg,NIHIL_PROP)) labelpos = atoi(arg); else labelpos = (unsigned int) GTK_POS_RIGHT; // some cases... if(*obj_glyph) { if(strcmp(bydata,CHECK_YES)) { if(nls_support) sprintf(tmp, "\n%s = new %s(this,%s%s%s,_(\"%s\"),%d,(GtkPositionType) %d);", obj_name, VDK_CLASS,"\"",obj_glyph,"\"", obj_caption, buttontype,(GtkPositionType) labelpos); else sprintf(tmp, "\n%s = new %s(this,%s%s%s,\"%s\",%d,(GtkPositionType) %d);", obj_name, VDK_CLASS,"\"",obj_glyph,"\"", obj_caption, buttontype,(GtkPositionType) labelpos); } else { int z = 0; char* local = new char[strlen(obj_glyph)+1], *p = NULL; strcpy(local,obj_glyph); sprintf(buff,"\n#include \"%s\"",local); // refuses to include twice same file VDKString symbol(local); if(parser.decSymbols.find(symbol)) { #if 0 printf("\nsymbol:%s already declared", (char*) symbol); fflush(stdout); #endif strcpy(tmp,""); } else { strcpy(tmp,buff); parser.decSymbols.add(symbol); } p = get_shortfilename(local); // changes . to _ if(!p) p = local; for(; p[z];z++) { if((p[z] == '.') || (p[z] == '-') ) p[z] = '_'; } if(nls_support) sprintf(buff, "\n%s = new %s(this,(const char**) %s,_(\"%s\"),%d,(GtkPositionType) %d);", obj_name, VDK_CLASS, p, obj_caption, buttontype, (GtkPositionType) labelpos); else sprintf(buff, "\n%s = new %s(this,(const char**) %s,\"%s\",%d,(GtkPositionType) %d);", obj_name, VDK_CLASS, p, obj_caption, buttontype, (GtkPositionType) labelpos); strcat(tmp,buff); delete [] local; } } else { if(nls_support) sprintf(tmp, "\n%s = new %s(this,%s%s%s,_(\"%s\"),%d,(GtkPositionType) %d);", obj_name, VDK_CLASS, *obj_glyph ? "\"" : "", *obj_glyph ? obj_glyph : "(const char*) NULL", *obj_glyph ? "\"" : "", obj_caption, buttontype, (GtkPositionType) labelpos); else sprintf(tmp, "\n%s = new %s(this,%s%s%s,\"%s\",%d,(GtkPositionType) %d);", obj_name, VDK_CLASS, *obj_glyph ? "\"" : "", *obj_glyph ? obj_glyph : "(const char*) NULL", *obj_glyph ? "\"" : "", obj_caption, buttontype, (GtkPositionType) labelpos); } strcpy(source,tmp); // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } /* this code is widget specific */ if( parser.GetParam(arg,buffer,PROP_CAPTIONWRAP) && strcmp(arg,NIHIL_PROP) ) { sprintf(tmp,"\n%s->%s = %s;", obj_name, CAPTIONWRAP, arg); strcat(source,tmp); } if( parser.GetParam(arg,buffer,PROP_RELIEF) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = (GtkReliefStyle) %s;", obj_name,RELIEF,arg); strcat(source,tmp); } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char obj_caption[256]; char arg[64]; char obj_glyph[256]; char bydata[16]; unsigned int buttontype; GtkPositionType labelpos; bool pixmapped; CLASS* button; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; // get caption,pixmapped,glyph,type if(!parser.GetParam(obj_caption,buffer, PROP_CAPTION)) strcpy(obj_caption,"none"); if(parser.GetParam(arg,buffer, PROP_PIXMAPPED_INTERNAL) && !strcmp(arg,"true")) pixmapped = true; else pixmapped = false; if(pixmapped && parser.GetParam(obj_glyph,buffer,PROP_GLYPH) && strcmp(obj_glyph,NIHIL_PROP)) ; else strcpy(obj_glyph,""); // get glyph by data if(parser.GetParam(bydata,buffer,PROP_GLYPH_BYDATA) && strcmp(bydata,NIHIL_PROP)) ; else strcpy(bydata,""); if(parser.GetParam(arg,buffer, PROP_CB_TYPE_INTERNAL) && strcmp(arg,NIHIL_PROP)) buttontype = atoi(arg); else buttontype = VDK_CBUTTON_UNTOGGLED | VDK_CBUTTON_NORMAL; if(parser.GetParam(arg,buffer, PROP_CB_POS_INTERNAL) && strcmp(arg,NIHIL_PROP)) labelpos = (GtkPositionType) atoi(arg); else labelpos = GTK_POS_RIGHT; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { if(*obj_glyph) button = new CLASS(obj_name,owner, obj_glyph, obj_caption, buttontype, labelpos); else button = new CLASS(obj_name, owner, pixmapped ? default_xpm : (char**) NULL, obj_caption, buttontype, labelpos); if(parser.GetParam(arg,buffer, PROP_CAPTIONWRAP) && strcmp(arg,NIHIL_PROP)) { button->CaptionWrap = !strcmp(arg,CHECK_TRUE); button->SetPropValue(CAPTIONWRAP,arg); } if(parser.GetParam(arg,buffer,PROP_RELIEF) && strcmp(arg,NIHIL_PROP)) { button->Relief = (GtkReliefStyle) atoi(arg); button->SetPropValue(RELIEF,arg); } if(*obj_glyph) button->SetPropValue(GLYPH,obj_glyph); // glyph by data if(*bydata) button->SetPropValue(GLYPH_BYDATA,bydata); if(parser.GetParam(arg,buffer,PROP_PIXMAPPED_INTERNAL) && strcmp(arg,NIHIL_PROP)) button->SetPropValue(PIXMAPPED_INTERNAL,arg); if(parser.GetParam(arg,buffer,PROP_CB_TYPE_INTERNAL) && strcmp(arg,NIHIL_PROP)) button->SetPropValue(CB_TYPE_INTERNAL,arg); if(parser.GetParam(arg,buffer, PROP_CB_POS_INTERNAL) && strcmp(arg,NIHIL_PROP)) button->SetPropValue(CB_POS_INTERNAL,arg); // pack widget to container return owner->PackToSelf(button, container, buffer, parser); } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ static char *reliefs[] = { "Normal","Half","None",0 }; /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); // FIX ME: lang support VDKTable* table = new VDKTable(inspector,3,2,true); VDKBox* box1 = new VDKBox(inspector,h_box); VDKCustomButton* button = new VDKCustomButton(inspector,(const char**) caption_xpm,NULL); button->SetTip(_(wi_widget_prompts[0])); button->Relief = (GtkReliefStyle) 2; box1->Add(button,l_justify,false,false,0); button->Parent(this); SignalConnect(button,"clicked",&CLASS::OnSetCaption); caption = new VDKEntry(inspector,0,(char*) GetProp(CAPTION)); caption->SetSize(80,-1); box1->Add(caption,l_justify,false,false,0); caption->Parent(this); SignalConnect(caption,"activate",&CLASS::OnSetCaption); table->AddToCell(box1,0,0); wrap = new VDKCheckButton(inspector,_(wi_widget_prompts[1])); wrap->Parent(this); SignalConnect(wrap,"toggled",&CLASS::OnSetCaptionWrap); table->AddToCell(wrap,0,1); VDKBox* box2 = new VDKBox(inspector,h_box); button = new VDKCustomButton(inspector,(const char**) relief_xpm,NULL); button->SetTip(_(wi_widget_prompts[6])); button->Relief = (GtkReliefStyle) 2; box2->Add(button,l_justify,false,false,0); button->Parent(this); SignalConnect(button,"clicked",&CLASS::OnSetRelief); int r = atoi(GetProp(RELIEF)); relief = new VDKCombo(inspector,NULL); relief->SetSize(80,-1); StringList sl; int t = 0; for(;reliefs[t];t++) sl.add(VDKString(reliefs[t])); relief->PopdownStrings = sl; relief->SelectItem(r); box2->Add(relief,l_justify,false,false,0); table->AddToCell(box2,1,0); // does not show glyph controls if the button isn't pixmapped bool isEnabled = !strcmp(GetProp(PIXMAPPED_INTERNAL),"true"); if(isEnabled) { VDKBox* bbox = new VDKBox(inspector,h_box); button = new VDKCustomButton(inspector,(const char**) apple_xpm, NULL); button->SetTip(_(wi_widget_prompts[7])); button->Relief = (GtkReliefStyle) 2; bbox->Add(button,l_justify,false,false,0); button->Parent(this); SignalConnect(button,"clicked",&CLASS::OnSetGlyph); VDKString s = GetProp(GLYPH); shortname = new VDKCustomButton(inspector,(const char**) copy_xpm,NULL); shortname->Relief = (GtkReliefStyle) 2; shortname->SetTip(_(wi_widget_prompts[9])); shortname->Enabled = strcmp((char*) s,NIHIL_PROP); bbox->Add(shortname,l_justify,false,false,0); shortname->Parent(this); SignalConnect(shortname,"clicked",&CLASS::OnSetShortName); table->AddToCell(bbox,2,0); pixfile = new VDKEntry(inspector,0, !strcmp((char*) s,NIHIL_PROP) ? NULL : (char*) s); table->AddToCell(pixfile,2,1); pixfile->SetSize(80,-1); pixfile->Editable = false; s = GetProp(GLYPH_BYDATA); bydata = new VDKCheckButton(inspector,_(wi_widget_prompts[58])); bydata->SetTip(_(wi_widget_prompts[59])); table->AddToCell(bydata,1,1); bydata->Checked = !strcmp((char*) s, CHECK_YES); bydata->Parent(this); SignalConnect(bydata,"toggled",&CLASS::OnToggleBydata); } bframe->Add(table,l_justify,false,false,false); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnToggleBydata(VDKObject*) { SetPropValue(GLYPH_BYDATA, bydata->Checked ? CHECK_YES : CHECK_NO); inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetCaptionWrap(VDKObject*) { SetPropValue(CAPTIONWRAP, wrap->Checked ? CHECK_TRUE : CHECK_FALSE); CaptionWrap = wrap->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetRelief(VDKObject*) { int sel = relief->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); int relief = atoi(buff); SetPropValue(RELIEF,buff); Relief = (GtkReliefStyle) relief; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetCaption(VDKObject*) { if(strlen(caption->Text)>0) { sprintf(buff,"%s",(char*) caption->Text); SetPropValue(CAPTION,buff); Caption = caption->Text; inspector->FormNeedToBeChanged(); } return true; } /* */ bool CLASS::OnSetGlyph(VDKObject* sender) { FileStringArray selections; VDKXpmBrowser *child = new VDKXpmBrowser(Owner(),&selections, _(file_dialog_prompts[0])); child->ShowModal(); if(selections.size() > 0) { VDKImage* pixmap = Pixmap; pixmap->SetImage((char*) selections[0]); pixfile->Text = (char*) selections[0]; SetPropValue(GLYPH,(char*) selections[0]); SetPropValue(PIXMAPPED_INTERNAL,"true"); inspector->FormNeedToBeChanged(); shortname->Enabled = true; } return true; } /* */ bool CLASS::OnSetShortName(VDKObject*) { VDKString s = GetProp(GLYPH); VDKString path; VDKBProject* project; VDKBProjectManager* prjman; if(!inspector) return true; prjman = dynamic_cast(inspector->Owner()); if(!prjman) return true; project = prjman->Project(); if(!project) return true; path = project->Path; sprintf(buff,"cp %s %s/",(char*) s, (char*) path); system(buff); char* p = get_shortfilename((char*) s); if(p) { VDKString short_name = p; pixfile->Text = (char*) short_name; SetPropValue(GLYPH,(char*) short_name); inspector->FormNeedToBeChanged(); } return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_customlist.cc0000644000000000000000000004150107275267313015254 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBCustomList // put here vdk class name string #define VDK_CLASS "VDKCustomList" // put here vdk class name #define VDK_ANCESTOR VDKCustomList // put here here the widget will be named // (name+counter) #define VDK_WIDGET "customlist" static char buff[128]; extern char* wi_widget_prompts[]; // used to autogenerate default // labelbutton names and captions int VDKBCustomList::Counter = 0; /* label properties names */ char* vdkclist_props[] = { VPOLICY,HPOLICY, BORDERSHADOW,ROWHEIGHT, AUTORESIZE,SELECTIONMODE,0 }; static char *shadows[] = { "shadow_none","shadow_in","shadow_out","shadow_etched_in", "shadow_etched_out",0 }; char* vdkclist_signals[] = { SIGNAL_SELECT_ROW,SIGNAL_UNSELECT_ROW, SIGNAL_CLICK_COLUMN,0 }; char* vdkclist_nicknames[] = { NICK_SELECT_ROW ,NICK_UNSELECT_ROW, NICK_CLICK_COLUMN,0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// /* */ bool CLASS::OnColumnClicked(VDKObject*) { if(ColumnClicked() < 0) return true; else if(inspector) { inspector->SetActive(this); columnTitle->Text = column_titles[ColumnClicked()]; columnTitle->Enabled = true; } return true; } /* */ int OnClistButtonEvent(GtkWidget *w, GdkEvent* event, void* o) { g_return_val_if_fail(o != NULL, FALSE); g_return_val_if_fail(w != NULL, FALSE); CLASS* obj = reinterpret_cast(o); obj->ButtonPressed(obj->ObjectFromVDK(), event); return FALSE; } ////////////////////////////////////////////////////////////// /* - constructor */ // default pixmap // defined in vdkb_local.cc extern char** default_pixmap; CLASS::CLASS(char* name, VDKForm* owner, int cols, char** titles, GtkSelectionMode mode): VDK_ANCESTOR(owner,cols,titles,mode),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties for(t=0; vdkclist_props[t]; t++) proplist.add(VDKBProperty(vdkclist_props[t])); // add to VDKBObject signal list signals for(t=0; vdkclist_signals[t]; t++) siglist.add(VDKBSignal(vdkclist_signals[t], this, vdkclist_nicknames[t])); // make and load colums title array column_titles = TitlesArray(cols); for(t = 0 ; t < cols; t++) column_titles[t] = VDKString(titles[t]); // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); // a reasonable size SetSize(100,100); SetPropValue(USIZE,"100,100"); // true by default SetPropValue(AUTORESIZE,CHECK_TRUE); CONNECT_COMMON_EVENTS; gtk_widget_add_events(CustomWidget(),GDK_POINTER_MOTION_MASK); EventConnect("motion_notify_event",&VDKBObject::OnMouseMove); SignalConnect("click_column",&CLASS::OnColumnClicked,false); gtk_signal_connect(GTK_OBJECT(CustomWidget()),"button_press_event", GTK_SIGNAL_FUNC(::OnClistButtonEvent), reinterpret_cast(this)); inspector = NULL; } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_SELECTIONMODE, (char*) GetProp(SELECTIONMODE)); fprintf(fp,"\n\t%s%s;", PROP_AUTORESIZE, (char*) GetProp(AUTORESIZE)); fprintf(fp,"\n\t%s%s;", PROP_BORDERSHADOW, (char*) GetProp(BORDERSHADOW)); // writes columns titles: fprintf(fp,"\n\t%s%d;",PROP_COLUMNS_INTERNAL,column_titles.size()); fprintf(fp,"\n\t%s\"",PROP_TITLES_INTERNAL); int t,last = column_titles.size(); for(t = 0; t < last-1 ; t++) fprintf(fp,"%s,", (char*) column_titles[t].isNull() ? NIHIL_PROP : (char*) column_titles[t]); fprintf(fp,"%s\";", (char*) column_titles[last-1].isNull() ? NIHIL_PROP : (char*) column_titles[last-1]); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ static void AddSomeRows(CLASS* clist, int columns) { int t,z; for(z = 0; z < 9; z++) { char** cells = new char*[columns]; for(t=0;tAddRow(cells); // free them for(t=0; t < columns; t++) delete cells[t]; delete[] cells; } } int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* clist; int columns = 0,t; // be sure target is a container (otherwise hangs -up ) if(!dynamic_cast(owner->Active)) return 2; // autogenerate first suitable pixmap counter // to ensure unicity if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; // columns should be asked to user Vdkb_clistdlgForm* dlg = new Vdkb_clistdlgForm(owner,NULL,&columns); dlg->Setup(); dlg->ShowModal(); columns = columns ? columns : 1; // autogenerates titles char **titles = new char*[columns]; for(t=0; t < columns;t++) { titles[t] = new char[32]; sprintf(titles[t],"Title#%d",t); } clist = new CLASS(buff, owner, columns, titles); // deletes titles for(t=0; t < columns; t++) delete[] titles[t]; delete[] titles; return owner->AddToSelf(clist,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ static void CreateTitles(char* source,char* obj_name,int obj_cols, char* obj_titles, bool nls_support) { char* p; char tmp[128]; int t = 0; sprintf(tmp,"\nchar* %sTitles[] = { ",obj_name); strcpy(source,tmp); p = strtok(obj_titles,","); while(p) { if(nls_support) sprintf(tmp,"\n_(\"%s\"),",strcmp(p,NIHIL_PROP) ? p : " "); else sprintf(tmp,"\n\"%s\",",strcmp(p,NIHIL_PROP) ? p : " "); t++; p = strtok(NULL,","); if(!p) // cut comma tmp[strlen(tmp)-1] = '\0'; strcat(source,tmp); } sprintf(tmp," };"); strcat(source,tmp); if( t!= obj_cols) ; // FIX ME: error to be noticed to user return; } char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char obj_titles[1024]; char obj_cols[32]; char selmode[16]; int smode = 0; // gets widget name, parent name, columns and titles if( (!parser.GetNameAndParent(buffer, obj_name, obj_parent)) || (!parser.GetParam(obj_cols,buffer,PROP_COLUMNS_INTERNAL)) || (!parser.GetParam(obj_titles,buffer,PROP_TITLES_INTERNAL)) ) return NULL; source = new char[4096]; if(parser.GetParam(selmode,buffer,PROP_SELECTIONMODE) && strcmp(arg,NIHIL_PROP)) { smode = atoi(selmode); } // create code for titles bool nls_support = parser.CheckNLSSupport(); CreateTitles(source,obj_name,atoi(obj_cols),obj_titles,nls_support); sprintf(tmp, "\n%s = new %s(this,%s,%sTitles,(GtkSelectionMode) %d);", obj_name,VDK_CLASS,obj_cols,obj_name,smode); strcat(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } /* this code is widget specific */ if(parser.GetParam(arg,buffer, PROP_AUTORESIZE) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;",obj_name,AUTORESIZE,arg); strcat(source,tmp); } // get shadow if(parser.GetParam(arg,buffer,PROP_BORDERSHADOW ) && strcmp(arg,NIHIL_PROP)) { int ndx = atoi(arg); ndx = (ndx >= 0) && (ndx <= 4) ? ndx : 0; sprintf(tmp,"\n%s->%s = (GtkShadowType) %s;", obj_name,BORDERSHADOW,shadows[ndx]); strcat(source,tmp); } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ static char ** GenerateTitles(int obj_cols, char* obj_titles) { char* p, **titles; int t = 0; // generates titles if(obj_cols <= 0) return (char**) NULL; titles = new char*[obj_cols]; p = strtok(obj_titles,","); while(p) { titles[t] = new char[strlen(p)+1]; if(strcmp(p,NIHIL_PROP)) strcpy(titles[t],p); else strcpy(titles[t]," "); t++; p = strtok(NULL,","); } return t == obj_cols ? titles : (char**) NULL; } /* */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { VDKString True = CHECK_TRUE; char obj_name[128]; char obj_parent[128]; char arg[64]; char obj_titles[1024]; char obj_cols[32]; char selmode[16]; int smode = 0; //char arg[64]; CLASS* clist; // get name, and parent if( (!parser.GetNameAndParent(buffer, obj_name, obj_parent)) || (!parser.GetParam(obj_cols,buffer,PROP_COLUMNS_INTERNAL)) || (!parser.GetParam(obj_titles,buffer,PROP_TITLES_INTERNAL)) ) return false; if(parser.GetParam(selmode,buffer, PROP_SELECTIONMODE) && strcmp(arg,NIHIL_PROP)) smode = atoi(selmode); VDKObject* cont = owner->ChildWithName(obj_parent); VDKBEventContainer* container = cont ? dynamic_cast(cont) : (VDKBEventContainer*) NULL; if(container) { char** tit = GenerateTitles(atoi(obj_cols),obj_titles); clist = new CLASS(obj_name,owner, atoi(obj_cols), tit, (GtkSelectionMode) smode); if(tit) { int t = 0; int z = atoi(obj_cols); for( ; t < z; t++) delete[] tit[t]; delete[] tit; } if(parser.GetParam(selmode,buffer, PROP_SELECTIONMODE) && strcmp(arg,NIHIL_PROP)) clist->SetPropValue(SELECTIONMODE,selmode); // shadow if(parser.GetParam(arg,buffer,PROP_AUTORESIZE) && strcmp(arg,NIHIL_PROP)) { clist->SetPropValue(AUTORESIZE,arg); clist->AutoResize = !strcmp(arg,CHECK_TRUE); } if(parser.GetParam(arg,buffer,PROP_BORDERSHADOW) && strcmp(arg,NIHIL_PROP)) { clist->SetPropValue(BORDERSHADOW,arg); int sh = atoi(arg); clist->BorderShadow = (GtkShadowType) sh; } bool result = owner->PackToSelf(clist, container, buffer, parser); // adding example rows get fixed moving/resizing crazy if(! dynamic_cast(container)) AddSomeRows(clist, atoi(obj_cols)); return result; } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* GTK_SELECTION_SINGLE, GTK_SELECTION_BROWSE, GTK_SELECTION_MULTIPLE, GTK_SELECTION_EXTENDED */ static char *selectionmodes[] = { "single","browse","multiple","extended",0 }; /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); VDKTable *table = new VDKTable(inspector,4,2); table->SetSize(219,-1); VDKCustomButton *setmode = new VDKCustomButton(inspector, _(wi_widget_prompts[10])); table->AddToCell(setmode,0,0); setmode->Parent(this); SignalConnect(setmode,"clicked",&CLASS::OnSetSelectionMode); selmode = new VDKCombo(inspector,NULL); selmode->SetSize(100,-1); StringList sm; int t = 0; for(;selectionmodes[t];t++) sm.add(VDKString(selectionmodes[t])); selmode->PopdownStrings = sm; table->AddToCell(selmode,0,1); int r = atoi(GetProp("SelectionMode")); selmode->SelectItem(r); table->AddToCell(new VDKLabel(inspector,_(wi_widget_prompts[11])),1,0); columnTitle = new VDKEntry(inspector,64); columnTitle->SetSize(100,-1); table->AddToCell(columnTitle,1,1); columnTitle->Parent(this); SignalConnect(columnTitle,"activate",&CLASS::OnSetColumnTitle); columnTitle->Enabled = false; autoresize = new VDKCheckButton(inspector, _(wi_widget_prompts[12])); table->AddToCell(autoresize,2,1); autoresize->Checked = GetProp(AUTORESIZE) == True; autoresize->Parent(this); SignalConnect(autoresize,"toggled",&CLASS::OnSetAutoResize); VDKCustomButton *set = new VDKCustomButton(inspector, _(wi_widget_prompts[13])); table->AddToCell(set,3,0); set->Parent(this); SignalConnect(set,"clicked",&CLASS::OnSetShadow); shadow = new VDKCombo(inspector,NULL); shadow->SetSize(100,-1); StringList sl; t = 0; for(;shadows[t];t++) sl.add(VDKString(shadows[t])); shadow->PopdownStrings = sl; table->AddToCell(shadow,3,1); r = atoi(GetProp(BORDERSHADOW)); shadow->SelectItem(r); bframe->Add(table,l_justify,false,false,false); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnSetColumnTitle(VDKObject*) { if(ColumnClicked() < 0) return true; else if(strlen(columnTitle->Text) <= 0) sprintf(buff,NIHIL_PROP); else sprintf(buff,"%s",(char*) columnTitle->Text); gtk_clist_set_column_title (GTK_CLIST(CustomWidget()), ColumnClicked(), strcmp(buff,NIHIL_PROP) ? buff : " "); column_titles[ColumnClicked()] = buff; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetAutoResize(VDKObject*) { SetPropValue(AUTORESIZE, autoresize->Checked ? CHECK_TRUE : CHECK_FALSE); AutoResize = autoresize->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetShadow(VDKObject*) { int sel = shadow->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); SetPropValue(BORDERSHADOW ,buff); int shd = atoi(buff); BorderShadow = (GtkShadowType) shd; inspector->FormNeedToBeChanged(); return true; } bool CLASS::OnSetSelectionMode(VDKObject*) { int sel = selmode->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); SetPropValue(SELECTIONMODE,buff); gtk_clist_set_selection_mode ( GTK_CLIST(CustomWidget()), (GtkSelectionMode) sel); inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_customtree.cc0000644000000000000000000004211007275270075015234 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBGuiCustomTree // put here vdk class name string #define VDK_CLASS "VDKCustomTree" // put here vdk class name #define VDK_ANCESTOR VDKCustomTree // put here here the widget will be named // (name+counter) #define VDK_WIDGET "customtree" static char buff[128]; extern char* wi_widget_prompts[]; // used to autogenerate default // labelbutton names and captions int CLASS::Counter = 0; /* label properties names */ char* vdkctree_props[] = { VPOLICY,HPOLICY, BORDERSHADOW,ROWHEIGHT, AUTORESIZE,SELECTIONMODE,0 }; static char *shadows[] = { "shadow_none","shadow_in","shadow_out","shadow_etched_in", "shadow_etched_out",0 }; char* vdkctree_signals[] = { SIGNAL_SELECT_NODE,SIGNAL_UNSELECT_NODE, SIGNAL_CLICK_COLUMN,0 }; char* vdkctree_nicknames[] = { NICK_SELECT_NODE,NICK_UNSELECT_NODE, NICK_CLICK_COLUMN,0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// /* */ bool CLASS::OnColumnClicked(VDKObject*) { if(ColumnClicked() < 0) return true; else if(inspector) { inspector->SetActive(this); columnTitle->Text = column_titles[ColumnClicked()]; columnTitle->Enabled = true; } return true; } /* */ int OnCtreeButtonEvent(GtkWidget *w, GdkEvent* event, void* o) { g_return_val_if_fail(o != NULL, FALSE); g_return_val_if_fail(w != NULL, FALSE); CLASS* obj = reinterpret_cast(o); obj->ButtonPressed(obj->ObjectFromVDK(), event); return FALSE; } ////////////////////////////////////////////////////////////// /* - constructor */ // default pixmap // defined in vdkb_local.cc extern char** default_pixmap; CLASS::CLASS(char* name, VDKForm* owner, int cols, char** titles, GtkSelectionMode mode, int tree_column): VDK_ANCESTOR(owner,cols,titles,mode,tree_column),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties for(t=0; vdkctree_props[t]; t++) proplist.add(VDKBProperty(vdkctree_props[t])); // add to VDKBObject signal list signals for(t=0; vdkctree_signals[t]; t++) siglist.add(VDKBSignal(vdkctree_signals[t], this, vdkctree_nicknames[t])); // make and load colums title array column_titles = TitlesArray(cols); for(t = 0 ; t < cols; t++) column_titles[t] = VDKString(titles[t]); // connects events. CONNECT_COMMON_EVENTS; gtk_widget_add_events(CustomWidget(),GDK_POINTER_MOTION_MASK); EventConnect("motion_notify_event",&VDKBObject::OnMouseMove); SignalConnect("click_column",&CLASS::OnColumnClicked,false); gtk_signal_connect(GTK_OBJECT(CustomWidget()),"button_press_event", GTK_SIGNAL_FUNC(::OnCtreeButtonEvent), reinterpret_cast(this)); // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); // FIX ME: to be rewied on all widgets ! SetSize(100,100); SetPropValue(USIZE,"100,100"); SignalConnect("click_column",&CLASS::OnColumnClicked,false); inspector = NULL; } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_SELECTIONMODE, (char*) GetProp(SELECTIONMODE)); fprintf(fp,"\n\t%s%s;", PROP_AUTORESIZE, (char*) GetProp(AUTORESIZE)); fprintf(fp,"\n\t%s%s;", PROP_BORDERSHADOW, (char*) GetProp(BORDERSHADOW)); // writes columns titles: fprintf(fp,"\n\t%s%d;",PROP_COLUMNS_INTERNAL,column_titles.size()); fprintf(fp,"\n\t%s\"",PROP_TITLES_INTERNAL); int t,last = column_titles.size(); for(t = 0; t < last-1 ; t++) fprintf(fp,"%s,", (char*) column_titles[t].isNull() ? NIHIL_PROP : (char*) column_titles[t]); fprintf(fp,"%s\";", (char*) column_titles[last-1].isNull() ? NIHIL_PROP : (char*) column_titles[last-1]); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container */ static void AddSomeNodes(CLASS* ctree, int columns) { int t,z; // add some nodes...just to see the tree VDKTreeNode node = NULL; for(z = 0; z < 9; z++) { char** cells = new char*[columns]; for(t=0;tAddNode(cells, !(z%3) ? NULL : node, true, (z%3) < 2 ? false : true); // free them for(t=0; t < columns; t++) delete[] cells[t]; delete[] cells; } } /* */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* ctree; int columns = 0,t; // be sure target is a container (otherwise hangs -up ) if(!dynamic_cast(owner->Active)) return 2; // autogenerate first suitable pixmap counter // to ensure unicity if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; // columns should be asked to user Vdkb_clistdlgForm* dlg = new Vdkb_clistdlgForm(owner,NULL,&columns); dlg->Setup(); dlg->ShowModal(); columns = columns ? columns : 1; // autogenerates titles char **titles = new char*[columns]; for(t=0; t < columns;t++) { titles[t] = new char[32]; sprintf(titles[t],"Title#%d",t); } ctree = new CLASS(buff, owner, columns, titles); // deletes titles for(t=0; t < columns; t++) delete[] titles[t]; delete[] titles; return owner->AddToSelf(ctree,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ static void CreateTitles(char* source,char* obj_name,int obj_cols, char* obj_titles, bool nls_support) { char* p; char tmp[128]; int t = 0; sprintf(tmp,"\nchar* %sTitles[] = { ",obj_name); strcpy(source,tmp); p = strtok(obj_titles,","); while(p) { if(nls_support) sprintf(tmp,"\n_(\"%s\"),",strcmp(p,NIHIL_PROP) ? p : " "); else sprintf(tmp,"\n\"%s\",",strcmp(p,NIHIL_PROP) ? p : " "); t++; p = strtok(NULL,","); if(!p) // cut comma tmp[strlen(tmp)-1] = '\0'; strcat(source,tmp); } sprintf(tmp," };"); strcat(source,tmp); if( t!= obj_cols) ; // FIX ME: error to be noticed to user return; } char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char obj_titles[1024]; char obj_cols[32]; char selmode[16]; int smode = 0; // gets widget name, parent name, columns and titles if( (!parser.GetNameAndParent(buffer, obj_name, obj_parent)) || (!parser.GetParam(obj_cols,buffer,PROP_COLUMNS_INTERNAL)) || (!parser.GetParam(obj_titles,buffer,PROP_TITLES_INTERNAL)) ) return NULL; source = new char[4096]; if(parser.GetParam(selmode,buffer,PROP_SELECTIONMODE) && strcmp(arg,NIHIL_PROP)) { smode = atoi(selmode); } // create code for titles bool nls_support = parser.CheckNLSSupport(); CreateTitles(source,obj_name,atoi(obj_cols),obj_titles,nls_support); sprintf(tmp, "\n%s = new %s(this,%s,%sTitles,(GtkSelectionMode) %d);", obj_name,VDK_CLASS,obj_cols,obj_name,smode); strcat(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } /* this code is widget specific */ if(parser.GetParam(arg,buffer, PROP_AUTORESIZE) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;",obj_name,AUTORESIZE,arg); strcat(source,tmp); } // get shadow if(parser.GetParam(arg,buffer,PROP_BORDERSHADOW ) && strcmp(arg,NIHIL_PROP)) { int ndx = atoi(arg); ndx = (ndx >= 0) && (ndx <= 4) ? ndx : 0; sprintf(tmp,"\n%s->%s = (GtkShadowType) %s;", obj_name,BORDERSHADOW,shadows[ndx]); strcat(source,tmp); } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ static char ** GenerateTitles(int obj_cols, char* obj_titles) { char* p, **titles; int t = 0; // generates titles if(obj_cols <= 0) return (char**) NULL; titles = new char*[obj_cols]; p = strtok(obj_titles,","); while(p) { titles[t] = new char[strlen(p)+1]; if(strcmp(p,NIHIL_PROP)) strcpy(titles[t],p); else strcpy(titles[t]," "); t++; p = strtok(NULL,","); } return t == obj_cols ? titles : (char**) NULL; } /* */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { VDKString True = CHECK_TRUE; char obj_name[128]; char obj_parent[128]; char arg[64]; char obj_titles[1024]; char obj_cols[32]; char selmode[16]; int smode = 0; //char arg[64]; CLASS* ctree; // get name, and parent if( (!parser.GetNameAndParent(buffer, obj_name, obj_parent)) || (!parser.GetParam(obj_cols,buffer,PROP_COLUMNS_INTERNAL)) || (!parser.GetParam(obj_titles,buffer,PROP_TITLES_INTERNAL)) ) return false; if(parser.GetParam(selmode,buffer,"SelectionMode:") && strcmp(arg,NIHIL_PROP)) smode = atoi(selmode); VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { char** tit = GenerateTitles(atoi(obj_cols),obj_titles); ctree = new CLASS(obj_name,owner, atoi(obj_cols), tit, (GtkSelectionMode) smode); if(tit) { int t = 0; int z = atoi(obj_cols); for( ; t < z; t++) delete[] tit[t]; delete[] tit; } if(parser.GetParam(selmode,buffer, PROP_SELECTIONMODE) && strcmp(arg,NIHIL_PROP)) ctree->SetPropValue(SELECTIONMODE,selmode); // shadow if(parser.GetParam(arg,buffer,PROP_AUTORESIZE) && strcmp(arg,NIHIL_PROP)) { ctree->SetPropValue(AUTORESIZE,arg); ctree->AutoResize = !strcmp(arg,CHECK_TRUE); } if(parser.GetParam(arg,buffer,PROP_BORDERSHADOW) && strcmp(arg,NIHIL_PROP)) { ctree->SetPropValue(BORDERSHADOW,arg); int sh = atoi(arg); ctree->BorderShadow = (GtkShadowType) sh; } bool result = owner->PackToSelf(ctree, container, buffer, parser); if(! dynamic_cast(container)) AddSomeNodes(ctree,atoi(obj_cols)); return result; } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* GTK_SELECTION_SINGLE, GTK_SELECTION_BROWSE, GTK_SELECTION_MULTIPLE, GTK_SELECTION_EXTENDED */ static char *selectionmodes[] = { "single","browse","multiple","extended",0 }; /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); VDKTable *table = new VDKTable(inspector,4,2); table->SetSize(219,-1); VDKCustomButton *setmode = new VDKCustomButton(inspector, _(wi_widget_prompts[10])); table->AddToCell(setmode,0,0); setmode->Parent(this); SignalConnect(setmode,"clicked",&CLASS::OnSetSelectionMode); selmode = new VDKCombo(inspector,NULL); selmode->SetSize(100,-1); StringList sm; int t = 0; for(;selectionmodes[t];t++) sm.add(VDKString(selectionmodes[t])); selmode->PopdownStrings = sm; table->AddToCell(selmode,0,1); int r = atoi(GetProp("SelectionMode")); selmode->SelectItem(r); table->AddToCell(new VDKLabel(inspector,_(wi_widget_prompts[11])),1,0); columnTitle = new VDKEntry(inspector,64); columnTitle->SetSize(100,-1); table->AddToCell(columnTitle,1,1); columnTitle->Parent(this); SignalConnect(columnTitle,"activate",&CLASS::OnSetColumnTitle); columnTitle->Enabled = false; autoresize = new VDKCheckButton(inspector,_(wi_widget_prompts[12])); table->AddToCell(autoresize,2,1); autoresize->Checked = GetProp("AutoResize") == True; autoresize->Parent(this); SignalConnect(autoresize,"toggled",&CLASS::OnSetAutoResize); VDKCustomButton *set = new VDKCustomButton(inspector,_(wi_widget_prompts[13])); table->AddToCell(set,3,0); set->Parent(this); SignalConnect(set,"clicked",&CLASS::OnSetShadow); shadow = new VDKCombo(inspector,NULL); shadow->SetSize(100,-1); StringList sl; t = 0; for(;shadows[t];t++) sl.add(VDKString(shadows[t])); shadow->PopdownStrings = sl; table->AddToCell(shadow,3,1); r = atoi(GetProp(BORDERSHADOW)); shadow->SelectItem(r); bframe->Add(table,l_justify,false,false,false); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnSetColumnTitle(VDKObject*) { if(ColumnClicked() < 0) return true; else if(strlen(columnTitle->Text) <= 0) sprintf(buff,NIHIL_PROP); else sprintf(buff,"%s",(char*) columnTitle->Text); gtk_clist_set_column_title (GTK_CLIST(CustomWidget()), ColumnClicked(), strcmp(buff,NIHIL_PROP) ? buff : " "); column_titles[ColumnClicked()] = buff; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetAutoResize(VDKObject*) { SetPropValue(AUTORESIZE, autoresize->Checked ? CHECK_TRUE : CHECK_FALSE); AutoResize = autoresize->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetShadow(VDKObject*) { int sel = shadow->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); SetPropValue(BORDERSHADOW,buff); int shd = atoi(buff); BorderShadow = (GtkShadowType) shd; inspector->FormNeedToBeChanged(); return true; } bool CLASS::OnSetSelectionMode(VDKObject*) { int sel = selmode->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); SetPropValue(SELECTIONMODE,buff); gtk_clist_set_selection_mode ( GTK_CLIST(CustomWidget()), (GtkSelectionMode) sel); inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_dedit.cc0000644000000000000000000002652307252425717014145 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_GNOME #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #endif #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBGnomeDateEdit // put here vdk class name string #define VDK_CLASS "VDKGnomeDateEdit" // put here vdk class name #define VDK_ANCESTOR VDKGnomeDateEdit // put here here the widget will be named // (name+counter) #define VDK_WIDGET "date_edit" //================================================================= static char buff[128]; extern char* wi_widget_prompts[]; // used to autogenerate default int CLASS::Counter = 0; /* properties,signals and nicknames */ char* vdkGnomeDateEdit_props[] = { SHOWTIME_INTERNAL, FORMAT24_INTERNAL, 0 }; char* vdkGnomeDateEdit_signals[] = { SIGNAL_ACTIVATE, SIGNAL_DATE_CHANGED, SIGNAL_TIME_CHANGED, SIGNAL_FOCUS_IN, SIGNAL_FOCUS_OUT, 0 }; char* vdkGnomeDateEdit_nicknames[] = { NICK_ACTIVATE, NICK_DATE_CHANGED, NICK_TIME_CHANGED, NICK_FOCUS_IN, NICK_FOCUS_OUT, 0 }; ////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); ////////////////////////////////////// int StopButtonPress(GtkWidget* w , GdkEvent* event, gpointer gp) { g_return_val_if_fail(gp != NULL,FALSE); g_return_val_if_fail(w != NULL,FALSE); CLASS* obj = reinterpret_cast(gp); gtk_signal_emit_stop_by_name(GTK_OBJECT(w), "button_press_event"); // redirect to VDKBObject // signal won't stop since there is no signal to stop here obj->ButtonPressed(obj->ObjectFromVDK(),event); return TRUE; } int StopButtonRelease(GtkWidget* w , GdkEvent* event, gpointer gp) { g_return_val_if_fail(gp != NULL,FALSE); g_return_val_if_fail(w != NULL,FALSE); CLASS* obj = reinterpret_cast(gp); gtk_signal_emit_stop_by_name(GTK_OBJECT(w), "button_release_event"); // redirect to VDKBObject // signal won't stop since there is no signal to stop here obj->ButtonReleased(obj->ObjectFromVDK(),event); return TRUE; } /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner): VDKGnomeDateEdit(owner, (time_t) NULL),VDKBObject(name) { int t; // newly constructed widget counter is incremented Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties list for(t=0; vdkGnomeDateEdit_props[t]; t++) proplist.add(VDKBProperty(vdkGnomeDateEdit_props[t])); // add to VDKBObject signal list for(t=0; vdkGnomeDateEdit_signals[t]; t++) siglist.add(VDKBSignal(vdkGnomeDateEdit_signals[t], this, vdkGnomeDateEdit_nicknames[t])); // connects events. // here we connect internal widgets to button_press/release // since they are treated internally instead processed // by VDKBObject::ButtonPressed()/ButtonReleased() GnomeDateEdit *dedit = GNOME_DATE_EDIT(ObjectFromVDK()->Widget()); GtkWidget *toBeStopped = GTK_WIDGET(dedit->date_entry); gtk_signal_connect(GTK_OBJECT(toBeStopped), "button_press_event", GTK_SIGNAL_FUNC(StopButtonPress), reinterpret_cast(this)); gtk_signal_connect(GTK_OBJECT(toBeStopped), "button_release_event", GTK_SIGNAL_FUNC(StopButtonRelease), reinterpret_cast(this)); toBeStopped = GTK_WIDGET(dedit->date_button); gtk_signal_connect(GTK_OBJECT(toBeStopped), "button_press_event", GTK_SIGNAL_FUNC(StopButtonPress), reinterpret_cast(this)); gtk_signal_connect(GTK_OBJECT(toBeStopped), "button_release_event", GTK_SIGNAL_FUNC(StopButtonRelease), reinterpret_cast(this)); EventConnect("enter_notify_event",&VDKBObject::OnEnter); EventConnect("leave_notify_event",&VDKBObject::OnLeave); EventConnect("motion_notify_event",&VDKBObject::OnMouseMove); // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); // } ///////////////////////////////////// // // WRITE TO .FRM FILE // ///////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); //============================ // USER STUFF BEGINS HERE // writes specific properties fprintf(fp,"\n\t%s%s;", PROP_SHOWTIME_INTERNAL, (char*) GetProp(SHOWTIME_INTERNAL)); fprintf(fp,"\n\t%s%s;", PROP_FORMAT24_INTERNAL, (char*) GetProp(FORMAT24_INTERNAL)); } //////////////////////////////////////// // // PREPARE GUI WIDGETS // //////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable counter // to ensure unicity CLASS* edit; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // actually makes widget edit = new CLASS(buff,owner); // add widget to form return owner->AddToSelf(edit,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; bool obj_showtime,obj_format24; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; if(parser.GetParam(arg,buffer,PROP_SHOWTIME_INTERNAL) && !strcmp(arg,CHECK_TRUE)) obj_showtime = true; else obj_showtime = false; if(parser.GetParam(arg,buffer,PROP_FORMAT24_INTERNAL) && !strcmp(arg,CHECK_TRUE)) obj_format24 = true; else obj_format24 = false; sprintf(tmp,"\n%s = new %s(this,(time_t) NULL,%s,%s);", obj_name, VDK_CLASS, obj_showtime ? CHECK_TRUE : CHECK_FALSE, obj_format24 ? CHECK_TRUE : CHECK_FALSE); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // set widget specific properties // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[64]; bool obj_showtime,obj_format24; CLASS* edit; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; // get constructor args if(parser.GetParam(arg,buffer,PROP_SHOWTIME_INTERNAL) && !strcmp(arg,CHECK_TRUE)) obj_showtime = true; else obj_showtime = false; if(parser.GetParam(arg,buffer,PROP_FORMAT24_INTERNAL) && !strcmp(arg,CHECK_TRUE)) obj_format24 = true; else obj_format24 = false; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { edit = new CLASS(obj_name,owner); // pack widget to container return owner->PackToSelf(edit, container, buffer, parser); } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { inspector = isp; VDKString True = CHECK_TRUE; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); // FIX ME: lang support VDKTable* table = new VDKTable(inspector,1,2,true); showtime = new VDKCheckButton(inspector, _(wi_widget_prompts[14])); showtime->Checked = GetProp(SHOWTIME_INTERNAL) == True; table->AddToCell(showtime,0,0); showtime->Parent(this); SignalConnect(showtime,"toggled",&CLASS::OnSetShowTime); format24 = new VDKCheckButton(inspector, _(wi_widget_prompts[15])); format24->Checked = GetProp(FORMAT24_INTERNAL) == True; table->AddToCell(format24,0,1); format24->Parent(this); SignalConnect(format24,"toggled",&CLASS::OnSetFormat24); bframe->Add(table,l_justify,false,false,false); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnSetShowTime(VDKObject*) { SetPropValue(SHOWTIME_INTERNAL, showtime->Checked ? CHECK_TRUE : CHECK_FALSE); inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetFormat24(VDKObject*) { SetPropValue(FORMAT24_INTERNAL, format24->Checked ? CHECK_TRUE : CHECK_FALSE); inspector->FormNeedToBeChanged(); return true; } #endif vdkbuilder2-2.4.0/vdkbuilder/vdkb_design.cc0000644000000000000000000004535110022114234014277 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include //#include #include #include #include #include #include #include #include #include #include #include #include // #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // #include // #include //#include #include #include #include #if HAVE_GNOME #include #include #include #endif #if USE_XDB #include #include #include #include #endif #include static char buff[256]; extern VDKBuilder* TheApp; extern char* source_prompts[]; /* Generic runtime new widget creation. Scans vdkclasstypes table and call static constructors mapped with class name. Newly constructed widget will be added directly to his parent (target). Target must be a container On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget */ // class id's - static constructors table struct { int action_target; int (*make_widget)(VDKBGuiForm* owner, GdkEvent* ev); char* widgetName; } vdkclasstypes[] = // button id conventions: // XXXX_TOOL_YYYY_ZZZZ // where XXXX is palette name // YYYY_ZZZZ widget class name // id's defined in vdkb_types.h { // containers { CONTAINERS_TOOL_VBOX, VDKBEventBox::MakeWidgetV, "VDKBox"}, { CONTAINERS_TOOL_HBOX, VDKBEventBox::MakeWidgetH, "VDKBox"}, { CONTAINERS_TOOL_FRAME, VDKBFrame::MakeWidget, "VDKFrame"}, { CONTAINERS_TOOL_SCROLLED, VDKBScrolled::MakeWidget, "VDKScrolled"}, { CONTAINERS_TOOL_MENUBAR, VDKBMenubar::MakeWidget, "VDKMenubar"}, { CONTAINERS_TOOL_VPANED, VDKBPaned::MakeWidgetV, "VDKPaned"}, { CONTAINERS_TOOL_HPANED, VDKBPaned::MakeWidgetH, "VDKPaned"}, { CONTAINERS_TOOL_NBOOK, VDKBGuiNotebook::MakeWidget, "VDKNotebook"}, { CONTAINERS_TOOL_TOOLBAR,VDKBToolbar::MakeWidget, "VDKToolbar"}, { CONTAINERS_TOOL_TABLE, VDKBTable::MakeWidget, "VDKTable" }, { CONTAINERS_TOOL_VRADIOBG, VDKBRadioButtonGroup::MakeWidgetV, "VDKRadioButtonGroup" }, { CONTAINERS_TOOL_HRADIOBG, VDKBRadioButtonGroup::MakeWidgetH, "VDKRadioButtonGroup" }, { CONTAINERS_TOOL_HANDLE, VDKBHandleBox::MakeWidget, "VDKHandleBox" }, // { CONTAINERS_TOOL_PACKER, VDKBPacker::MakeWidget, "VDKPacker" }, { CONTAINERS_TOOL_FIXED, VDKBFixed::MakeWidget, "VDKFixed" }, // buttons // { BUTTON_TOOL_LABEL_BUTTON, VDKBLabelButton::MakeWidget, "VDKLabelButton"}, // { BUTTON_TOOL_PIXMAP_BUTTON,VDKBPixmapButton::MakeWidget, "VDKPixmapButton"}, { BUTTON_TOOL_CHECK_BUTTON, VDKBCheckButton::MakeWidget, "VDKCheckButton"}, { BUTTON_TOOL_RADIO_BUTTON,VDKBRadioButton::MakeWidget, "VDKRadioButton"}, { BUTTON_TOOL_SPIN_BUTTON,VDKBSpinButton::MakeWidget, "VDKSpinButton"}, { BUTTON_TOOL_CUSTOM_BUTTON,VDKBCustomButton::MakeWidget, "VDKCustomButton"}, // texts { TEXT_TOOL_LABEL, VDKBTextLabel::MakeWidget, "VDKLabel"}, { TEXT_TOOL_TEXT, VDKBTextWidget::MakeWidget, "VDKTextView"}, { TEXT_TOOL_ENTRY, VDKBEntry::MakeWidget, "VDKEntry"}, // misc { MISC_TOOL_CANVAS,VDKBGuiCanvas::MakeWidget, "VDKCanvas"}, { MISC_TOOL_PIXMAP, VDKBPixmap::MakeWidget, "VDKPixmap"}, { MISC_TOOL_IMAGE, VDKBImage::MakeWidget, "VDKImage"}, // { MISC_TOOL_MENU_ITEM, VDKBMenuItem::MakeWidget, "VDKMenuItem"}, { MISC_TOOL_CUSTOMLIST,VDKBCustomList::MakeWidget, "VDKCustomList"}, { MISC_TOOL_COMBOBOX,VDKBCombo::MakeWidget, "VDKCombo"}, { MISC_TOOL_CUSTOMTREE,VDKBGuiCustomTree::MakeWidget, "VDKCustomTree"}, { MISC_TOOL_HSEPARATOR,VDKBSeparator::MakeWidgetH, "VDKSeparator"}, { MISC_TOOL_VSEPARATOR,VDKBSeparator::MakeWidgetV, "VDKSeparator"}, { MISC_TOOL_PROGRESS,VDKBProgressBar::MakeWidget, "VDKProgressBar"}, { MISC_TOOL_STATUSBAR,VDKBStatusbar::MakeWidget, "VDKStatusbar"}, // { MISC_TOOL_GRID,VDKBGrid::MakeWidget, "VDKGrid"}, { MISC_TOOL_SLIDER,VDKBSlider::MakeWidget, "VDKSlider"}, { MISC_TOOL_PLACEHOLDER,VDKBPlaceHolder::MakeWidget, "VDKPlaceHolder"}, // { MISC_TOOL_TREEVIEW,VDKBTreeView::MakeWidget, "VDKTreeView"}, // gnome widgets #if HAVE_GNOME { GNOME_TOOL_STATUSBAR,VDKBGnomeAppBar::MakeWidget, "VDKGnomeAppBar"}, { GNOME_TOOL_DATEEDIT,VDKBGnomeDateEdit::MakeWidget, "VDKGnomeDateEdit"}, { GNOME_TOOL_ENTRY,VDKBGnomeEntry::MakeWidget, "VDKGnomeEntry"}, #endif // xdb support #if USE_XDB { XDB_TOOL_ENTRY,VDKBXEntry::MakeWidget, "VDKXEntry"}, { XDB_TOOL_CHECK_BUTTON,VDKBXCheckButton::MakeWidget, "VDKXCheckButton"}, { XDB_TOOL_MEMO,VDKBXMemo::MakeWidget, "VDKXMemo"}, { XDB_TOOL_CUSTOMLIST,VDKBXCustomList::MakeWidget, "VDKXCustomList"}, #endif // table end {-1,NULL,NULL} }; /* */ int MakeWidget(VDKBGuiForm* owner, int action_target, GdkEvent* ev) { int t; int result = 1; // unsupported widget for(t=0; vdkclasstypes[t].action_target != -1; t++) if(vdkclasstypes[t].action_target == action_target) { result = vdkclasstypes[t].make_widget(owner,ev); break; } // statically unsopported widget // try to seek it into plugins list if(result == 1) { VDKBAbstractComponentInterface* interface = TheApp->PluginList().Interface(action_target); if(interface) result = interface->MakeWidget(owner,ev); } return result; } /* given an widget class name returns widget id */ int WidgetClassId(char* class_name) { int t; int result = -1; // unsupported widget for(t=0; vdkclasstypes[t].action_target != -1; t++) if(!strcmp(vdkclasstypes[t].widgetName,class_name)) { result = vdkclasstypes[t].action_target; break; } return result; } /* given an widget id returns widget class name */ char* WidgetClassName(int action_target) { int t; char* result = NULL; // unsupported widget for(t=0; vdkclasstypes[t].action_target != -1; t++) if(vdkclasstypes[t].action_target == action_target) { result = vdkclasstypes[t].widgetName; break; } return result; } ////////////////////////////////////////////////////// /* obsolete, not more used. */ void VDKBProjectManager::ChildResized(VDKBGuiForm* child, VDKPoint& newsize) { // safe and safer if(!ActiveChild.child || ActiveChild.child != child) return; char match[32],replace[32],textname[256]; sprintf(match,"%s.Usize:",(char*) ActiveChild.name); sprintf(replace,"%s.Usize:%4d,%4d;", (char*) ActiveChild.name, newsize.X(),newsize.Y()); sprintf(textname,"%s.%s",(char*) ActiveChild.name,FORM_EXT); // replaces with in ReplaceAllMatches(match, replace, textname, /* forward offset, replace more chars than match, useful for changing args. If match = replace set offset to 0 */ strlen(replace)-strlen(match), false); // not all child->Changed = true; } /* */ void VDKBProjectManager::ReplaceAllMatches(char* match, char* replace, char* textname, int offset, bool all) { VDKBMainForm* mainform = (VDKBMainForm*) Owner(); VDKBEditor* editor = mainform->MakeEditor(); if(! editor) return; else if(! editor->Visible) editor->Visible = true; else if(editor->Iconized ) editor->Iconized = false; VDKBText* text = NULL; int t = -1; mainform->MakeEditor(); // look for editor page TextListIterator li(editor->textlist); for(;li;li++) { if(! strcmp(li.current()->ShortName(),textname)) { text = li.current(); break; } } if(! text) { ActivateEditor(textname,false,false); // find text page t = editor->nbook->ActivePage; if(t<0) return; else text = editor->textlist[t]; } // just for safe if(! text) return; // replace all occurrences int pos = 0; while(pos >= 0 && pos < (int) text->Length) { pos = text->Search(match, pos, true, false); // no bell if(pos >= 0) { text->Pointer = pos; text->ForwardDelete(strlen(match)+offset); text->Pointer = pos; text->TextInsert(replace); pos += strlen(replace); } if(! all) break; } text->Save(textname); text->Changed = false; } /* defines or jump to response method */ void VDKBProjectManager::DefineResponseMethod( char* textname, char* method) { VDKBMainForm* mainform = (VDKBMainForm*) Owner(); VDKBEditor* editor = mainform->MakeEditor(); if(! editor) return; else if(! editor->Visible) editor->Visible = true; else if(editor->Iconized ) editor->Iconized = false; VDKBText* text = NULL; int t = 0; // look for editor page TextListIterator li(editor->textlist); for(;li;li++,t++) { if(! strcmp(li.current()->ShortName(),textname)) { text = li.current(); break; } } if(text) editor->nbook->ActivePage = t; else { // open a new notebook page and set it as active page ActivateEditor(textname,true,true); // find text page address t = editor->nbook->ActivePage; if( t < 0) return; else text = editor->textlist[t]; } // just for safe if(! text) return; int pos = text->Search(method, 0, true, false); // no bell if(pos < 0) { char formname[64]; strcpy(formname,ActiveChild.name); formname[0] = toupper(formname[0]); text->Pointer = text->Length; pos = text->Search(SOURCE_END_MARK, 0, false, false); if(pos >= 0) text->Pointer = pos+strlen(SOURCE_END_MARK); else { pos = text->Length; text->Pointer = pos; } sprintf(buff, "\n//%s\nbool \n%sForm::%s(VDKObject* sender) \n{\n return true;\n }\n ", source_prompts[8], formname, method); text->TextInsert(buff); pos = text->Search(method, pos, true, false); } } /* defines or jump to response method */ /* */ FormEventHandlers evTableItems [] = { {{ "OnFormActivate","no" }, "OnFormActivate(VDKForm* sender, bool in_out)"}, {{ "OnChildClosing","no" }, "OnChildClosing(VDKForm* child)" }, {{ "OnConfigure","no" }, "OnConfigure(VDKForm* sender)"}, {{ "OnExpose","no" }, "OnExpose(VDKForm* sender, GdkRectangle area)"}, {{ "OnIconize","no" }, "OnIconize(VDKForm* sender)"}, {{ "OnMove","no" }, "OnMove(VDKForm* sender)"}, {{ "OnRealize","no" }, "OnRealize(VDKForm* sender)"}, {{ "OnResize","no" }, "OnResize(VDKForm* sender, VDKPoint& new_size)"}, {{ "OnRestore","no" }, "OnRestore(VDKForm* sender)"}, {{ "OnShow","no" }, "OnShow(VDKForm* sender)"}, {{ "CanClose","no" }, "CanClose(void)" }, {{ NULL, NULL }} }; const char* CANCLOSE = "CanClose"; /* */ void VDKBProjectManager::DefineFormEventHandler( char* textname, char* handler) { char* method = NULL; VDKBMainForm* mainform = (VDKBMainForm*) Owner(); VDKBEditor* editor = mainform->MakeEditor(); if(! editor) return; else if(! editor->Visible) editor->Visible = true; else if(editor->Iconized ) editor->Iconized = false; VDKBText* text = NULL; int t = 0; // look for editor page TextListIterator li(editor->textlist); for(;li;li++,t++) { if(! strcmp(li.current()->ShortName(),textname)) { text = li.current(); break; } } if(text) editor->nbook->ActivePage = t; else { // open a new notebook page and set it as active page ActivateEditor(textname,true,true); // find text page address t = editor->nbook->ActivePage; if( t < 0) return; else text = editor->textlist[t]; } // just for safe if(! text) return; // match handler/method int z = 0; for(z=0; evTableItems [z].items[0];z++) if(!strcmp(handler,evTableItems [z].items[0])) method = evTableItems [z].method; if(method) { int pos = text->Search(method, 0, true, false); // no bell if(pos < 0) { char formname[64]; strcpy(formname,ActiveChild.name); formname[0] = toupper(formname[0]); pos = text->Search(SOURCE_END_MARK, 0, false, false); if(pos >= 0) text->Pointer = pos+strlen(SOURCE_END_MARK); else text->Pointer = text->Length; // scans some exception here if(!strcmp(handler,CANCLOSE)) sprintf(buff, "\n//%s\nbool\n%sForm::%s\n{\nreturn true;\n}\n", source_prompts[9], formname,method); else sprintf(buff, "\n//%s\nvoid\n%sForm::%s\n{\nreturn;\n}\n", source_prompts[9], formname,method); // writes method code text->TextInsert(buff); text->Search(method, 0, true, false); } } } /* */ void VDKBProjectManager::ActivateChild(VDKBGuiForm* sender, bool active) { bool redundant = ActiveChild.child && (ActiveChild.child == sender); if(redundant && active) return; else if(active) { ActiveChild.child = sender; ActiveChild.name = sender->Name(); // VDKTreeNode node = tree->SelectedNode; if(node) tree->UnselectedNode = node; ActiveChild.child = sender; ActiveChild.name = sender->Name(); VDKTreeNodeList* list = tree->Find((char*) sender->FileName()); if(list->size() > 0) tree->SelectedNode = (*list)[0]; delete list; // no node selected so get away node = tree->SelectedNode; if(node) { gpointer p = gtk_ctree_node_get_row_data(GTK_CTREE(tree->CustomWidget()),node); (*toolbar)[OPEN_FILE_BUTTON]->Enabled = p == (gpointer) form_unit ? true : false; } if(objInspector) { objInspector->SetActive(NULL); objInspector->LoadTree(sender); } // // enables form/text toggle button on main toolbar VDKBMainForm* mainform = (VDKBMainForm*) Owner(); if(project) { sprintf(buff,"%s/%s.cc",(char*) project->Path, (char*) ActiveChild.name); mainform->EnableToggleFormUnit(active,buff); } } } /* */ void VDKBProjectManager::OnChildClosing(VDKForm* child) { GuiFormListIterator li(formlist); for(;li;li++) if(li.current() == child) break; // found and the only one on list if(li && (formlist.size() == 1)) { VDKBMainForm* mainform = (VDKBMainForm*) Owner(); mainform->Automa(automa_edit_form_off); } } /* */ bool VDKBProjectManager::IsFormChanged(char* name) { VDKString fname = name; fname += "."; fname += FORM_EXT; GuiFormListIterator li(formlist); for(;li;li++) { if(fname == li.current()->FileName()) { if(li.current()->Changed) return true; } } return false; } /* writes gui files if they do not exist or
.frm is changed */ void VDKBProjectManager::WriteGuiFiles(bool ask) { VDKTreeNodeList* list = tree->Select(".frm"); if(list->size()) { VDKTreeNodeListIterator li(*list); for(;li;li++) { char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; char *tmp, *local,*copy; tmp = new char[256]; local = new char[512]; copy = new char[256]; strcpy(tmp,tree->Key(li.current())); char* p = get_extension(tmp); if(p) *p = '\0'; sprintf(local,"%s_gui.%s",tmp,cc_ext); strcpy(copy,local); bool isChanged = IsFormChanged(tmp); if(access(local,F_OK) || isChanged)// || (!ask)) { // update .frm if(isChanged) { GuiFormListIterator lf(formlist); for(;lf;lf++) { VDKString fname = tmp; fname += "."; fname += FORM_EXT; if(fname == lf.current()->FileName()) { if( (!ask || AskSaveForm(fname)) ) { lf.current()->WriteFormFile(); lf.current()->Changed = false; break; } else lf.current()->Changed = isChanged = false; } } } // writes or update _gui .cc if(strcmp(local,copy)) { char *msg = new char[512]; sprintf(msg,"*** WARNING ***,\n\ attempt to overwrite <%s>\nwith <%s>\noperation aborted",local,copy); Application()->VDKMessageBox(APPNAME, msg, VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok])); delete[] msg; } else if(isChanged) { FILE* fp = fopen(local,"w+"); if(!fp) break; // FIX ME : warn user Project()->WriteGUISetupParsingFrm(fp, tree->Key(li.current())); // writes or update _gui .h sprintf(local,"%s_gui.%s",tmp,h_ext); fp = fopen(local,"w+"); if(!fp) break; // FIX ME : warn user Project()->WriteGuiHeaderParsingFrm(fp, tree->Key(li.current())); } } delete[] tmp; delete[] local; delete[] copy; } } delete list; } extern int AskUserToSaveFile(char* name); /* */ bool VDKBProjectManager::AskSaveForm(char* name) { return AskUserToSaveFile(name) == VDK_IDYES; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_dlgs.cc0000644000000000000000000000556507324454235014005 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifdef HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #endif #include #include #include #include static char buff[128]; DEFINE_SIGNAL_MAP(VDKBPropSizeDialog,VDKBPropDialog) ON_SIGNAL(hspin,value_changed_signal,OnChange), ON_SIGNAL(vspin,value_changed_signal,OnChange), ON_SIGNAL(reset,clicked_signal,OnReset) END_SIGNAL_MAP /* FIX ME: change VDK to have spin ValueAsFloat as read/write property. */ bool VDKBPropSizeDialog::OnChange(VDKObject* sender) { sprintf(buff,"%d,%d",(int) hspin->ValueAsInt, (int) vspin->ValueAsInt); active->SetPropValue(USIZE,buff); active->ObjectFromVDK()->SetSize(hspin->ValueAsInt,vspin->ValueAsInt); return true; } /* */ bool VDKBPropSizeDialog::OnReset(VDKObject* sender) { active->SetPropValue(USIZE,"nihil"); active->ObjectFromVDK()->SetSize(-1,-1); return true; } /* */ void VDKBPropSizeDialog::Setup() { VDKTable *table = new VDKTable(this,3,2); table->SetSize(180,80); if(active) { VDKPoint p = active->ObjectFromVDK()->Usize; table->AddToCell(new VDKLabel(this,_("Horizontal size")),0,0); table->AddToCell(hspin = new VDKSpinButton(this, p.X(), 0,1024,1,0),0,1); table->AddToCell(new VDKLabel(this,_("Vertical size")),1,0); table->AddToCell(vspin = new VDKSpinButton(this, p.Y(), 0,768,1,0),1,1); table->AddToCell(reset = new VDKCustomButton(this,_("_Reset to min size")),2,0); } Add(table); // set initial position gtk_window_position(GTK_WINDOW(Window()),GTK_WIN_POS_MOUSE); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_editor.cc0000644000000000000000000007734510022114317014326 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifdef HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #endif #include #include #include #include #include #include #include #include #include #include #include #include "pixmaps/undo.xpm" #include "pixmaps/redo.xpm" #include "pixmaps/togglech.xpm" #include "pixmaps/fileclose.xpm" #include "pixmaps/savefile.xpm" #include "pixmaps/filesaveas.xpm" #include "pixmaps/search.xpm" #include "pixmaps/repeatsearch.xpm" #include "pixmaps/togglesyntax.xpm" #include "pixmaps/showln.xpm" #include "pixmaps/showmsg.xpm" #include "pixmaps/dock.xpm" #include "pixmaps/jumpto.xpm" extern char *gear_xpm[]; extern char *run_xpm[]; #define TOOLB_TOGGLE_SRC_HDR 0 #define TOOLB_CLOSE_PAGE 1 #define TOOLB_SAVE_FILE 2 #define TOOLB_SAVE_FILE_AS 3 #define TOOLB_SEARCH 4 #define TOOLB_REP_SEARCH 5 #define TOOLB_UNDO 6 #define TOOLB_REDO 7 #define TOOLB_TOGGLE_SYNTAX 8 #define TOOLB_MAKE 9 #define TOOLB_RUN 10 #define TOOLB_SHOWLN 11 #define TOOLB_SHOWMSG 12 // a static dialog address static Vdkb_edhelpForm* edhelp = NULL; static char buff[512]; extern char* main_menu_prompts[]; extern char *main_toolbar1_tips[]; extern char* search_dialog_prompts[]; extern TokenList* tokenlist; /* search stuff */ static int last_pos = 0; static char* match = NULL; /* */ ///////////////// signal stuff ////////// DEFINE_SIGNAL_LIST(VDKBEditor,VDKForm); DEFINE_SIGNAL_MAP(VDKBEditor,VDKForm) ON_SIGNAL(nbook,switch_page_signal,OnPageChanged), ON_SIGNAL(messages,select_row_signal,JumpToError), ON_SIGNAL(closePage,activate_signal,OnClosePage), ON_SIGNAL(toggleHeader,activate_signal,OnToggleHeader), ON_SIGNAL(fileSave,activate_signal,FileSave), ON_SIGNAL(fileSaveAs,activate_signal,FileSaveAs), ON_SIGNAL(search,activate_signal,Search), ON_SIGNAL(repeatsearch,activate_signal,RepeatSearch), ON_SIGNAL(hilite,activate_signal,Hilite), ON_SIGNAL(undo,activate_signal,Undo), // ON_SIGNAL(toolbar,clicked_signal,HandleToolbar), ON_SIGNAL(handle,child_attached_signal,OnHandleAttach), ON_SIGNAL(handle,child_detached_signal,OnHandleDetach), ON_SIGNAL(shortcut,activate_signal,ShortCut) END_SIGNAL_MAP /* */ VDKBEditor::VDKBEditor(VDKForm* owner): VDKForm(owner) { // struct stat info; ForceToClose = false; } /* */ VDKBEditor::~VDKBEditor() { } /* */ bool VDKBEditor::ShortCut(VDKObject* sender) { if(!edhelp) { edhelp = new Vdkb_edhelpForm(this,NULL); edhelp->Setup(); edhelp->Show(GTK_WIN_POS_MOUSE); } else if(edhelp->Iconized) edhelp->Iconized = false; else if(edhelp->Visible) edhelp->Raise(); else // should never the case edhelp->Show(GTK_WIN_POS_MOUSE); return true; } /* */ void VDKBEditor::OnChildClosing(VDKForm* child) { if(child == edhelp) edhelp = NULL; } /* */ bool VDKBEditor::OnHandleAttach(VDKObject* sender) { VDKHandleBox* handle = dynamic_cast(sender); if(handle) { VDKObject* obj = handle->Child; VDKToolbar* tbar = dynamic_cast(obj); if(tbar) tbar->Orientation = GTK_ORIENTATION_HORIZONTAL; } return true; } /* */ bool VDKBEditor::OnHandleDetach(VDKObject* sender) { VDKHandleBox* handle = dynamic_cast(sender); if(handle) { VDKObject* obj = handle->Child; VDKToolbar* tbar = dynamic_cast(obj); if(tbar) tbar->Orientation = GTK_ORIENTATION_VERTICAL; } return true; } /* */ bool VDKBEditor::HandleToolbar(VDKObject* sender) { int button = toolbar->ButtonPressed; VDKBMainForm* owner = dynamic_cast(Owner()); switch (button) { case TOOLB_TOGGLE_SRC_HDR: OnToggleHeader(NULL); break; case TOOLB_CLOSE_PAGE: OnClosePage(NULL); break; case TOOLB_SAVE_FILE: FileSave(NULL); break; case TOOLB_SAVE_FILE_AS: FileSaveAs(NULL); break; case TOOLB_SEARCH: Search(NULL); break; case TOOLB_REP_SEARCH: RepeatSearch(NULL); break; case TOOLB_UNDO: Undo(NULL); break; case TOOLB_REDO: // not yet implemented break; case TOOLB_TOGGLE_SYNTAX: Hilite(NULL); break; case TOOLB_MAKE: if(owner) owner->Make(NULL); break; case TOOLB_RUN: if(owner) owner->RunExecutable(); break; case TOOLB_SHOWLN: { int activePage = nbook->ActivePage; if(activePage < 0 || activePage >= textlist.size()) ; else { bool flag = textlist[activePage]->ShowLineNumbers; textlist[activePage]->ShowLineNumbers = !flag; // a dirty trick to force expose VDKPoint size = Usize; size.x+=1; SetFormSize(size); size.x-=1; SetFormSize(size); } } break; case TOOLB_SHOWMSG: { bool flag = message_docker->Visible; message_docker->Visible = ! flag; } break; } return true; } /* */ bool VDKBEditor::HandleDockbar(VDKObject* sender) { int button = dockbar->ButtonPressed; bool flag; switch (button) { case 0: // docks/undocks message_docker->Docked = message_docker->Docked ? false : true; break; case 1: // hides/show message docker flag = message_docker->Visible; message_docker->Visible = ! flag; break; case 2: // saves messages into a log file LogMessages(); break; case 3: // jumps to error JumpToError(messages); break; } return true; } /* */ void VDKBEditor::LogMessages() { FILE* fp; FileStringArray selections; VDKFileSaveAsDialog *child = new VDKFileSaveAsDialog(this,&selections,_("saving message log")); child->Filter = "*.log"; child->ShowModal(); if(selections.size() <= 0) return; fp = fopen((char*) selections[0],"w+"); if(!fp) return; TupleListIterator li(messages->Tuples); for(;li;li++) { Tuple tuple = li.current(); char* p = (char*) tuple[0]; fprintf(fp,"%s\n",p); } fclose(fp); return; } /* */ bool VDKBEditor::MessageDocked(VDKObject* sender) { if(message_docker->Docked) { message_docker->DockForm()->SetSize(450,350); message_docker->DockForm()->SetTitle(_("Message list")); } (*dockbar)[1]->Enabled = !(message_docker->Docked); (*toolbar)[TOOLB_SHOWMSG]->Enabled = !(message_docker->Docked); return true; } /* */ void VDKBEditor::Setup() { Title = _(editor_prompts[0]); handle = new VDKHandleBox(this); handle->SetSize(-1,40); /* toolbar = new VDKToolbar(this); toolbar->Style = GTK_TOOLBAR_ICONS; */ toolbar = new VDKHLButtonBar(this); toolbar->AddButton((const char**)togglech_xpm,_(editor_prompts[3])); toolbar->AddButton((const char**)fileclose_xpm,_(editor_prompts[4])); toolbar->AddButton((const char**)savefile_xpm,_(editor_prompts[9])); toolbar->AddButton((const char**)filesaveas_xpm,_(editor_prompts[5])); toolbar->AddButton((const char**)search_xpm,_(main_menu_prompts[30])); sprintf(buff,"%s-(F3)", _(main_menu_prompts[31]) ); toolbar->AddButton((const char**)repeatsearch_xpm,buff); sprintf(buff,"%s-(Alt-Backspace)", _(main_menu_prompts[33]) ); toolbar->AddButton((const char**)undo_xpm,buff); sprintf(buff,"%s-(F5)", _(main_menu_prompts[34]) ); toolbar->AddButton((const char**)redo_xpm,buff); (*toolbar)[7]->Enabled = false; toolbar->AddButton((const char**)togglesyntax_xpm,_(main_menu_prompts[35])); toolbar->AddButton((const char**)gear_xpm,_(main_menu_prompts[41])); toolbar->AddButton((const char**)run_xpm,_(main_toolbar1_tips[1])); toolbar->AddButton((const char**)showln_xpm,_(editor_prompts[10])); toolbar->AddButton((const char**)showmsg_xpm,_(editor_prompts[11])); (*toolbar)[TOOLB_MAKE]->Enabled = false; (*toolbar)[TOOLB_RUN]->Enabled = false; handle->Add(toolbar,l_justify,false,false,0); SignalConnect(toolbar,"clicked",&VDKBEditor::HandleToolbar); Add(handle,l_justify,false,false,0); VDKPaned* paned = new VDKPaned(this); // **STUB nbook = new VDKBNotebook(this); paned->Pack(nbook,1,true,false); // **STUB VDKPoint size = VDKBuilder::ideDefaults.editor.size; nbook->SetSize(size.X(),size.Y()); // dockable message list message_docker = new VDKDockerBox(this); dockbar = new VDKHLButtonBar(this,h_box,shadow_etched_in); dockbar->AddButton((const char**)dock_xpm,_("docks/undocks messages list")); dockbar->AddButton((const char**)showmsg_xpm,_(editor_prompts[11])); dockbar->AddButton((const char**)savefile_xpm,_("Save messages into a log file")); dockbar->AddButton((const char**)jumpto_xpm, _("Jumps to error into editor\ncan be done also double clicking\non selected line")); message_docker->Add(dockbar,l_justify,false,false,0); SignalConnect(dockbar,"clicked",&VDKBEditor::HandleDockbar); messages = new VDKCustomList(this,1,NULL,GTK_SELECTION_EXTENDED); // cast white background to override some gtk-themes defaults // messages->NormalBackground = clWhite; message_docker->Add(messages); paned->Add(message_docker,2,true,true); // **STUB SignalConnect(message_docker,"docked",&VDKBEditor::MessageDocked,false); SignalConnect(message_docker,"undocked",&VDKBEditor::MessageDocked,false); message_docker->Visible=false; Add(paned); // **STUB bar = new VDKPanelbar(this,3); bar->Panels()[2]->Justify = GTK_JUSTIFY_RIGHT; Add(bar,r_justify,false,false,false); // makes a pop menu popmenu = new VDKMenu(this); toggleHeader = new VDKMenuItem(popmenu,_(editor_prompts[3])); closePage = new VDKMenuItem(popmenu,_(editor_prompts[4])); fileSave = new VDKMenuItem(popmenu,_(editor_prompts[9])); fileSaveAs = new VDKMenuItem(popmenu,_(editor_prompts[5])); popmenu->Separator(); search = new VDKMenuItem(popmenu, _(main_menu_prompts[30])); sprintf(buff,"%s-(F3)", _(main_menu_prompts[31]) ); repeatsearch = new VDKMenuItem(popmenu,buff); sprintf(buff,"%s-(Alt-Backspace)", _(main_menu_prompts[33]) ); undo = new VDKMenuItem(popmenu,buff); sprintf(buff,"%s-(F5)", _(main_menu_prompts[34]) ); redo = new VDKMenuItem(popmenu,buff); hilite = new VDKMenuItem(popmenu, _(main_menu_prompts[35])); shortcut = new VDKMenuItem(popmenu, _(main_menu_prompts[48])); // since redo capability isn't yet implemented, set as disabled redo->Enabled = false; /* since popmenu could never be popped better add it to form items even if VDKMenu::Popup() does the job. VDKList::add() will ensure won't be added twice and GC will detect it even if never popped. */ AddItem(popmenu); /* Signals will come up from one of VDKBText's contained into VDKBNotebook pages. Since these signals are not provided by gtk+ put arg as false, so will be dispatched by VDK */ SignalConnect(nbook,"text_changed",&VDKBEditor::OnTextChanged,false); SignalConnect(nbook,"line_changed",&VDKBEditor::OnLineChanged,false); SignalConnect(nbook,"pop_menu",&VDKBEditor::OnPopMenu,false); SignalConnect(nbook,"repeat_search_text",&VDKBEditor::RepeatSearch,false); SignalConnect(nbook,"no_more_undo",&VDKBEditor::NoMoreUndo,false); SignalConnect(nbook,"hilite_text",&VDKBEditor::Hilite,false); SignalConnect(nbook,"user_prompt",&VDKBEditor::UserPrompt,false); SignalConnect(nbook,"editor_help",&VDKBEditor::ShortCut,false); /* makes a timer for timed auto save */ unsigned int autosavetime = atoi((char*) VDKBuilder::ideDefaults.editor.timedsave); if(autosavetime > 0) { autosavetimer = new VDKTimer(this,5000); autosavetimer->Parent(this); SignalConnect(autosavetimer,"timer_tick_signal", &VDKBEditor::OnAutosaveTimer,false); } else autosavetimer = NULL; } /* */ void VDKBEditor::EnableMaker(bool flag) { (*toolbar)[TOOLB_MAKE]->Enabled = flag; (*toolbar)[TOOLB_RUN]->Enabled = flag; } /* */ void VDKBEditor::OnShow(VDKForm*) { VDKBMainForm* owner = dynamic_cast(Owner()); if(owner) { int w,h; VDKPoint ownerPos = owner->Position; VDKBProjectManager* prjman = owner->PrjManager(); VDKPoint prjmanPos = prjman->Position; gdk_window_get_size(GTK_WIDGET(prjman->Window())->window, &w, &h); VDKPoint prjmanSize(w,h); gdk_window_get_size(GTK_WIDGET(owner->Window())->window, &w, &h); VDKPoint ownerSize(w,h); VDKPoint p(ownerPos.X()+prjmanSize.X()+5 ,ownerPos.Y()+ownerSize.Y()+30); Position = p; } } /* */ bool VDKBEditor::NewForm(char* name) { char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; // gets name without extension char* p = get_extension(name); int result = false; if(p) *p = '\0'; // write .cc sprintf(buff,"%s.%s",name,cc_ext); FILE* fp = fopen(buff,"w+"); if(!fp) return false; else result = WriteFormCC(name,fp); if(result) AddText(buff,true,true); else return result; // write .h sprintf(buff,"%s.%s",name,h_ext); fp = fopen(buff,"w+"); if(!fp) return false; else result = WriteFormH(name,fp); if(result) AddText(buff,true,true); // write .frm sprintf(buff,"%s.%s",name,FORM_EXT); fp = fopen(buff,"w+"); if(!fp) return false; else result = WriteFrm(name,fp); VDKBMainForm* owner = dynamic_cast (Owner()); VDKBProjectManager* prjman = NULL; if(owner) prjman = owner->PrjManager(); if(prjman) { char local[256]; sprintf(local,"%s_gui.%s",name,h_ext); fp = fopen(local,"w+"); if(fp) prjman->Project()->WriteGuiHeaderParsingFrm(fp,buff); sprintf(local,"%s_gui.%s",name,cc_ext); fp = fopen(local,"w+"); if(fp) prjman->Project()->WriteGUISetupParsingFrm(fp,buff); } return result; } /* */ void VDKBEditor::AddNewUnit() { // read defaults char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; char* unit = (char*) VDKBuilder::ideDefaults.unit.def_name; int count = VDKBuilder::ideDefaults.unit.count; //VDKBText *text; // add .cc sprintf(buff,"%s%d.%s",unit,count,cc_ext); AddText(buff,true,true); // add .h sprintf(buff,"%s%d.%s",unit,count,h_ext); AddText(buff,true,true); // finished, update unit count VDKBuilder::ideDefaults.unit.count += 1; } /* */ extern "C" { int GetEditorTab(); }; extern bool EmacsServerStarted(); extern int StartEmacs(char ** args); extern int EmacsPid(); void VDKBEditor::AddText(char* text_name, bool editable,bool hilite) { ((VDKBMainForm*)Owner())->MakeEditor(); VDKBText *text = new VDKBText(this,editable,text_name); text->SetTokens(tokenlist); VDKString Yes = CHECK_YES; // add a text to textlist textlist.add(text); nbook->AddText(text,text->ShortName(),hilite); nbook->ActivePage = textlist.size()-1; // forward text request to emacs server if any if(EmacsServerStarted()) { char* args[3]; args[0] = "emacsclient"; args[1] = text_name; args[2] = NULL; StartEmacs(args); } (*toolbar)[8]->Enabled = hilite; } //////////////////////// signal process //////////////////// bool VDKBEditor::OnAutosaveTimer(VDKObject* sender) { static unsigned int elapsedSecs = 0; elapsedSecs += 5; unsigned int savetime = atoi((char*) VDKBuilder::ideDefaults.editor.timedsave); savetime *= 60; if(! (elapsedSecs%savetime)) FileSave(sender); else { char local[64]; sprintf(local,"%02u:%02u:%02u", elapsedSecs/3600, (elapsedSecs%3600)/60, elapsedSecs%60); bar->Panels()[1]->Caption = local; } return true; } /* */ bool VDKBEditor::JumpToError(VDKObject* ) { char *tokens = "$%"; int t,z; int row = messages->Selected.Row(); if(row < 0 || row >= messages->Tuples.size()) return true; VDKString errmess = messages->Tuples[row][0]; VDKString file; int line = 0; char* err = new char[strlen((char*) errmess)+1]; strcpy(err,(char*) errmess); // change first two ":" with tokens for(t = 0,z=0; err[t]; t++) { if( err[t] == ':') { err[t] = tokens[z++]; if(!tokens[z]) break; } } char * p; if( (p = ExtractWord(err,buff,"","$")) ) file = buff; if ( (p = ExtractWord(err,buff,"$","%")) ) line = atoi(buff); if((line == 0) || access((char*) file ,F_OK) || ( ! GoToLine(file,line,false,true)) ) // no enlight, shows bug { gdk_beep(); bar->Panels()[0]->Caption = _("no error to go"); } delete[] err; return true; } /* */ bool VDKBEditor::GoToLine(VDKString& file, int line, bool enlight, bool with_icon) { int t = 0; TextListIterator li(textlist); // activate or load a new text for(t = 0; li; li++,t++) { VDKString temp = li.current()->Filename(); if( temp == file) break; } // not found, so load a new text if(t >= textlist.size()) AddText((char*) file, true,true); nbook->ActivePage = t; // finally goes to line textlist[t]->GoToLine(line); // enlights putting an icon on the line if(with_icon) { textlist[t]->AddLineMark(line, "mark"); /* GtkTextIter iter; int startpos = textlist[t]->Pointer; gtk_text_buffer_get_iter_at_offset (GTK_TEXT_BUFFER(textlist[t]->Buffer()), &iter, startpos); int icon = gtk_text_iter_get_char (&iter); if(icon != 0xFFFC) { VDKPixbuf *mark = new VDKPixbuf(Owner(), mark_xpm); gtk_text_buffer_insert_pixbuf (GTK_TEXT_BUFFER(textlist[t]->Buffer()), &iter, mark->AsGdkPixbuf()); } */ } else if(enlight) { int startpos = textlist[t]->Pointer; textlist[t]->SelectText(startpos,startpos+1); } return true; } /* */ bool VDKBEditor::OnTextChanged(VDKObject* ) { // editor says that some text was changed // so let's user to know int activePage = nbook->ActivePage; char* p = textlist[activePage]->ShortName(); if(textlist[activePage]->Changed) { sprintf(buff,"%s%s",_(editor_prompts[1]),p); bar->Panels()[0]->Caption = buff; } int line = textlist[activePage]->CurrentLine; sprintf(buff,"%s%d",editor_prompts[2],line); bar->Panels()[2]->Caption = buff; return true; } /* */ bool VDKBEditor::OnPageChanged(VDKObject* sender) { char local[256]; int activePage; activePage = nbook->ActivePage; if(activePage < 0 || activePage >= textlist.size() ) return true; char* p = textlist[activePage]->ShortName(); if(textlist[activePage]->Changed) { sprintf(buff,"%s%s",_(editor_prompts[1]),p); bar->Panels()[0]->Caption = buff; } else bar->Panels()[0]->Caption = " "; int line = textlist[activePage]->CurrentLine; sprintf(buff,"%s%d",_(editor_prompts[2]),line); bar->Panels()[2]->Caption = buff; // set to 0 last pos in search. last_pos = 0; // enable/disable form/unit toggle strcpy(local,textlist[activePage]->Filename()); char* e = get_extension(local); if(e) { VDKBMainForm* owner = dynamic_cast(Owner()); *e = '\0'; sprintf(buff,"%s.frm",local); if(owner) owner->EnableToggleFormUnit(!access(buff,F_OK),buff); } // enable syntax button (*toolbar)[8]->Enabled = textlist[activePage]->Hilite; // FIXME: set focus to text widget // Owner()->FocusWidget = textlist[activePage]; return true; } /* */ bool VDKBEditor::OnLineChanged(VDKObject* ) { int activePage = nbook->ActivePage; if(activePage < 0 || activePage >= textlist.size()) return true; int line = textlist[activePage]->CurrentLine; sprintf(buff,"%s%d",_(editor_prompts[2]),line); bar->Panels()[2]->Caption = buff; return true; } /* */ bool VDKBEditor::CanClose() { UpdateFiles(); // can be closed via mainform only. if(ForceToClose) { if(autosavetimer) autosavetimer->Stop(); return true; } else { Visible = false; return false; } } /* */ extern int AskUserToSaveFile(char* name); void VDKBEditor::UpdateFiles() { TextListIterator li(textlist); for(;li;li++) { // has to be saved ? if(li.current()->Changed) { sprintf(buff,"%s",(char*) li.current()->Filename()); if(AskUserToSaveFile(buff) == VDK_IDYES) { // never saved // it's a new unit, changes sentinel in .h if(access(li.current()->Filename(),F_OK)) { // ask to user FileStringArray selections; VDKFileSaveAsDialog *child = new VDKFileSaveAsDialog(this,&selections, _(file_dialog_prompts[3])); child->ShowModal(); if(selections.size() > 0) { UpdateUnit(li.current(),selections[0]); li.current()->Save(selections[0]); } } // or unsaved ? else li.current()->Save((char*) li.current()->Filename()); li.current()->Changed = false; } else // user forced to be considered saved li.current()->Changed = false; } } } /* toggle between hide/show as necessary */ void VDKBEditor::ToggleMessages() { bool f = message_docker->Visible; message_docker->Visible = f ? false : true; } /* */ void VDKBEditor::FillMessages(VDKBStringList* list) { message_docker->Visible = true; messages->Clear(); messages->Freeze(); VDKBStringListIterator li(*list); for(;li;li++) { char* p = (char*) li.current(); messages->AddRow(&p); } messages->Thaw(); if(list->size() > 0) messages->SelectRow(0,0); } /* */ void VDKBEditor::ClearMessages() { // removes bug pixbuf from texts (if any) TextListIterator li(textlist); for(;li;li++) { li.current()->RemoveAllLineMarks(); li.current()->Changed = false; /* GtkTextIter iter; VDKBText* text = li.current(); gtk_text_buffer_get_iter_at_offset (GTK_TEXT_BUFFER(text->Buffer()),&iter,0); while(gtk_text_iter_forward_char(&iter)) { int bug = gtk_text_iter_get_char (&iter); if(bug == 0xFFFC) { GtkTextIter end; int pos = gtk_text_iter_get_offset(&iter); gtk_text_buffer_get_iter_at_offset (GTK_TEXT_BUFFER(text->Buffer()), &end, pos+1); gtk_text_buffer_delete (GTK_TEXT_BUFFER(text->Buffer()), &iter, &end); text->Changed = false; } } */ } messages->Clear(); } /* */ bool VDKBEditor::OnPopMenu(VDKObject* ) { VDKBText* text; int activePage = nbook->ActivePage; if(activePage < 0 || activePage >= textlist.size()) return true; else text = textlist[activePage]; toggleHeader->Enabled = true; fileSave->Enabled = true; undo->Enabled = true; repeatsearch->Enabled = match != NULL; hilite->Enabled = text->Hilite; // pops menu popmenu->Popup(); return TRUE; } /* */ bool VDKBEditor::OnClosePage(VDKObject* ) { int activePage = nbook->ActivePage; VDKBText* text; if(activePage < 0 || activePage >= textlist.size()) return true; else text = textlist[activePage]; // if(text->Changed) { sprintf(buff,"%s", (char*) text->Filename()); if(AskUserToSaveFile(buff) == VDK_IDYES) { // never saved if(access(text->Filename(),F_OK)) { // ask to user FileStringArray selections; VDKFileSaveAsDialog *child = new VDKFileSaveAsDialog(this,&selections, _(file_dialog_prompts[3])); child->ShowModal(); if(selections.size() > 0) { UpdateUnit(text,selections[0]); text->Save(selections[0]); } } // or unsaved ? else text->SaveToFile((char*) text->Filename()); text->Changed = false; } } if(textlist.unlink(activePage)) nbook->RemovePage(activePage); // hide editor if no more pages if(textlist.size() > 0) OnPageChanged(NULL); else Hide(); return true; } /* */ void VDKBEditor::UpdateUnit(VDKBText* text, VDKString& rep_s) { /* ======================== suspended since is buggy ======================== // char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; VDKString ext; VDKString name = text->ShortName(); VDKString replace; char *z = get_shortfilename(rep_s); if(z) replace = z; else return; if(!name.isNull()) { // extract name and extension char *p = get_extension((char*) name); if(p) { *p = '\0'; p++; ext = p; } else return; p = get_extension(replace); if(p) *p = '\0'; else return; } else return; // change sentinel if(!strcmp(ext,h_ext)) { sprintf(buff,"_%s_h",(char*) name); VDKString match = buff; sprintf(buff,"_%s_h",(char*) replace); replace = buff; int pos = text->Search(match, 0, true); if(pos>=0) { pos = Replace(text,pos,match,replace); pos = text->Search(match, pos, true); } if(pos>=0) pos = Replace(text,pos,match,replace); } */ } int VDKBEditor::Replace(VDKBText* text, int pos, char* match, char* replace) { text->Pointer = pos; text->ForwardDelete(strlen(match)); text->Pointer = pos; text->TextInsert(replace); return pos+strlen(replace); } /* */ bool VDKBEditor::OnToggleHeader(VDKObject* ) { char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; int activePage = nbook->ActivePage; VDKBText* text; if(activePage < 0 || activePage >= textlist.size()) return true; else text = textlist[activePage]; // look for that VDKString name = text->Filename(); VDKString ext; char* p = get_extension((char*) name); if(p) { *p++ = '\0'; ext = p; sprintf(buff,"%s.%s",(char*) name, (!strcmp(ext,cc_ext)) || (!strcmp(ext,"c")) ? h_ext : cc_ext); name = buff; } else return true; // search in list int t = 0; bool found = false; bool exists = !access(name,F_OK); TextListIterator li(textlist); for(;li;li++,t++) { if(! strcmp(li.current()->Filename(),name)) { found = true; break; } } if(found && exists) { nbook->ActivePage = t; return true; } else if(! found && exists) { AddText(name,true,true); nbook->ActivePage = textlist.size()-1; } else if(! exists) { FileStringArray selections; VDKFileDialog *child = new VDKFileDialog(this,&selections, _(file_dialog_prompts[0])); sprintf(buff,"*.%s", (!strcmp(ext,cc_ext)) || (!strcmp(ext,"c")) ? h_ext : cc_ext); child->Filter = buff; child->ShowModal(); if(selections.size() > 0) AddText(selections[0],true,true); } return true; } /* * Simple save the file and set it as unchanged */ bool VDKBEditor::FileSave(VDKObject* obj) { int activePage = nbook->ActivePage; //identify the active page if(activePage < 0 || activePage >= textlist.size()) // called with obj = NULL by main form main menu or toolbar return obj == NULL ? false : true; VDKBText* text = textlist[activePage]; // check if never saved if(access(text->Filename(),F_OK)) { // ask to user FileStringArray selections; VDKFileSaveAsDialog *child = new VDKFileSaveAsDialog(this,&selections, _(file_dialog_prompts[4])); child->ShowModal(); if(selections.size() > 0) { UpdateUnit(text,selections[0]); text->Filename(selections[0]); nbook->Pages[activePage]->TabLabel->Caption = text->ShortName(); } else { return true; } } if(text->Changed) { text->Save((char*) text->Filename()); //save text to file text->Changed = false; //set it as unchanged sprintf(buff,"%s:%s", _(editor_prompts[8]), (char*) text->Filename()); bar->Panels()[0]->Caption = buff; } return true; } /* */ bool VDKBEditor::FileSaveAs(VDKObject* ) { int activePage = nbook->ActivePage; FileStringArray selections; if(activePage < 0 || activePage >= textlist.size()) return true; VDKFileSaveAsDialog *child = new VDKFileSaveAsDialog(this,&selections, file_dialog_prompts[4]); child->ShowModal(); if(selections.size() <= 0) return true; VDKBText* text = textlist[activePage]; text->Filename(selections[0]); text->Save((char*) text->Filename()); text->Changed = false; sprintf(buff,"%s:%s", editor_prompts[8], (char*) text->Filename()); bar->Panels()[0]->Caption = buff; nbook->Pages[activePage]->TabLabel->Caption = text->ShortName(); return true; } /* */ bool VDKBEditor::Search(VDKObject*) { char* st = NULL; int activePage = nbook->ActivePage; if(activePage < 0 || activePage >= textlist.size()) return true; VDKBSearchForm *dlg = new VDKBSearchForm(this,&st); dlg->Setup(); dlg->ShowModal(); // dlg return st to search newly allocated (or NULL) if(st) { last_pos = 0; if(match) delete[] match; match = new char[strlen(st)+1]; strcpy(match,st); delete[] st; VDKBText* text; text = textlist[activePage]; last_pos = text->Search(match, last_pos, true); last_pos = last_pos > 0 ? last_pos + strlen(match): last_pos; } return true; } /* */ bool VDKBEditor::Undo(VDKObject*) { int activePage = nbook->ActivePage; if(activePage < 0 || activePage >= textlist.size()) return true; else if (!textlist[activePage]->Undo()) NoMoreUndo(NULL); return true; } /* */ bool VDKBEditor::UserPrompt(VDKObject*) { VDKBText* text; int activePage = nbook->ActivePage; if(activePage < 0 || activePage >= textlist.size()) return true; text = textlist[activePage]; // bar->Panels()[0]->Caption = (char*) text->UserBuffer; gdk_beep(); return true; } /* */ bool VDKBEditor::RepeatSearch(VDKObject*) { VDKBText* text; int activePage = nbook->ActivePage; if(! match || activePage < 0 || activePage >= textlist.size()) return true; text = textlist[activePage]; int pos = text->Search(match, last_pos, true); sprintf(buff,"%s\n%s", _(search_dialog_prompts[19]), _(search_dialog_prompts[20]) ); if(pos >= 0) last_pos = pos+strlen(match); else if(Application()->VDKMessageBox(APPNAME, buff, VDK_ICONQUESTION|VDK_YESNO, _(user_messages[user_ok]), _(user_messages[user_no])) == VDK_IDYES) { last_pos = 0; RepeatSearch(NULL); } return true; } /* */ bool VDKBEditor::NoMoreUndo(VDKObject*) { sprintf(buff,"%s",_(editor_prompts[6])); bar->Panels()[0]->Caption = buff; gdk_beep(); return true; } /* */ void VDKBEditor::ReplaceText(void) { VDKBText* text; int activePage = nbook->ActivePage; if(activePage < 0 || activePage >= textlist.size()) return ; else text = textlist[activePage]; VDKBReplaceForm *dlg = new VDKBReplaceForm(this,text); dlg->Setup(); dlg->ShowModal(); } bool VDKBEditor::Hilite(VDKObject* ) { VDKBText* text; int activePage = nbook->ActivePage; if(activePage < 0 || activePage >= textlist.size()) return true; else text = textlist[activePage]; text->Syntax = text->Syntax ? false : true; return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_edhelp.cc0000644000000000000000000000755507257645356014331 /* * ============ * VDK Builder * Version 1.2 * Revision 4 * October 2000 * ============ * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifdef HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #endif #include #include static struct { char *key,*action; } helps[] = { { N_("COPY, CUT & PASTE"),"" }, { N_(","),N_("copy selection" )}, { N_(","),N_("cut selection") }, { N_(","),N_("paste selection") }, { N_("MOVEMENTS"),"" }, { N_(","),N_("self explanatory") }, { N_(","),N_("self explanatory") }, { N_(""),N_("previous word") }, { N_(""),N_("next word") }, { N_("SELECTION"),"" }, { N_(""),N_("select and move") }, { N_("INDENTING"),"" }, { N_(""),N_("indent") }, { N_(""),N_("normal tab") }, { N_("OTHERS"),"" }, { N_(""),N_("word completion") }, { N_(""),N_("hints") }, { N_(""),N_("parenthesis matching") }, { NULL,NULL } }; /* defining signal static table */ DEFINE_SIGNAL_MAP(Vdkb_edhelpForm,VDKForm) ON_SIGNAL(close,clicked_signal,OncloseClick), ON_SIGNAL(helpList,realize_signal,OnhelpListRealize) END_SIGNAL_MAP // Vdkb_edhelp MAIN FORM CLASS /* main form constructor */ Vdkb_edhelpForm::Vdkb_edhelpForm(VDKForm* owner, char* title): VDKForm(owner,title) { color = NULL; } /* main form destructor */ Vdkb_edhelpForm::~Vdkb_edhelpForm() { } /* main form gui setup */ void Vdkb_edhelpForm::GUISetup(void) { SetSize(330,300); Title = _("VDKBuilder editor short cuts"); vbox1 = new VDKBox(this,v_box); Add(vbox1,0,1,1,0); vbox2 = new VDKBox(this,v_box); vbox2->SetSize(282,267); vbox1->Add(vbox2,0,1,1,0); vbox2->BorderWidth(0); char* helpListTitles[] = { N_("Keys"),N_("Actions") }; helpList = new VDKCustomList(this,2,helpListTitles,(GtkSelectionMode) 0); helpList->SetSize(100,100); helpList->AutoResize = true; helpList->BorderShadow = (GtkShadowType) shadow_in; vbox2->Add(helpList,0,1,1,0); hbox3 = new VDKBox(this,h_box); hbox3->SetSize(282,30); vbox1->Add(hbox3,0,1,1,0); hbox3->BorderWidth(0); close = new VDKCustomButton(this,_("Close")); hbox3->Add(close,0,1,0,0); } /* main form setup */ void Vdkb_edhelpForm::Setup(void) { GUISetup(); // color = new VDKColor(this,clIvory); } //signal response method bool Vdkb_edhelpForm::OnhelpListRealize(VDKObject* sender) { int t = 0; for(; helps[t].key;t++) { char* keys[2]; keys[0] = _(helps[t].key); if(isupper(keys[0][0])) keys[1] = helps[t].action; else keys[1] = _(helps[t].action); helpList->AddRow(keys); } return true; } //signal response method bool Vdkb_edhelpForm::OncloseClick(VDKObject* sender) { Close(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_edhint.cc0000644000000000000000000002031210022113247014272 /* * ============ * VDK Builder * Version 1.2 * Revision 4 * November 2000 * ============ * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifdef HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #endif #include #include #include <./pixmaps/add.xpm> #include <./pixmaps/trash.xpm> #include <./pixmaps/edit.xpm> #include <./pixmaps/savefile.xpm> #include <./pixmaps/quit.xpm> static char buff[256]; extern HintBTree* hint_tree; extern VDKBuilder* TheApp; /* defining signal and events dynamics tables */ DEFINE_SIGNAL_LIST(VdkbEdHintForm,VDKForm); DEFINE_EVENT_LIST(VdkbEdHintForm,VDKForm); /* defining signal static table */ DEFINE_SIGNAL_MAP(VdkbEdHintForm,VDKForm) ON_SIGNAL(addButton,clicked_signal,OnaddButtonClick), ON_SIGNAL(removeButton,clicked_signal,OnremoveButtonClick), ON_SIGNAL(changeButton,clicked_signal,OnchangeButtonClick), ON_SIGNAL(closeandsaveButton,clicked_signal,OncloseandsaveButtonClick), ON_SIGNAL(quitButton,clicked_signal,OnquitButtonClick), ON_SIGNAL(customlist0,select_row_signal,Oncustomlist0SelectRow), ON_SIGNAL(text0,realize_signal,Ontext0Realize), ON_SIGNAL(key,changed_signal,OnKeyChanged) END_SIGNAL_MAP // VdkbEdHint MAIN FORM CLASS /* main form constructor */ VdkbEdHintForm::VdkbEdHintForm(VDKForm* owner, char* title): VDKForm(owner,title) { } /* main form destructor */ VdkbEdHintForm::~VdkbEdHintForm() { } /* main form setup */ void VdkbEdHintForm::Setup(void) { GUISetup(); // put your code below here // load keywords on custom list LoadList(); } void VdkbEdHintForm::LoadList(void) { if(hint_tree) { customlist0->Freeze(); customlist0->Clear(); HintBTree::Iterator bi(*hint_tree); for(;bi;bi++) { char* key = (char*) bi.current().key; customlist0->AddRow(&key); } customlist0->Thaw(); } } //signal response method bool VdkbEdHintForm::OnKeyChanged(VDKObject* sender) { addButton->Enabled = strlen(key->Text) > 0; return true; } //signal response method bool VdkbEdHintForm::Ontext0Realize(VDKObject* sender) { text0->Font = new VDKFont(this,"courier medium 11"); customlist0->SelectRow(0,0); return true; } //signal response method bool VdkbEdHintForm::Oncustomlist0SelectRow(VDKObject* sender) { int row = customlist0->Selected.Row(); if(row >= 0) { VDKString key = customlist0->Tuples[row][0]; VDKHint h((char*) key,""); VDKHint *hint = hint_tree->find(h); if(hint) { text0->Clear(); text0->TextInsert((char*) hint->hint); } } return true; } //signal response method bool VdkbEdHintForm::OnquitButtonClick(VDKObject* sender) { Close(); return true; } //signal response method bool VdkbEdHintForm::OncloseandsaveButtonClick(VDKObject* sender) { Save(); Close(); return true; } // pay attention defines duplicate from vdkb.cc #define HINT "HINT{" #define HINT_END "}" #define HINT_KEY "KEY[" #define TEXT_KEY "TEXT[" #define KEY_END "]" /* */ bool VdkbEdHintForm::Save(void) { FILE* fp; sprintf(buff,"%s/.vdkb2/%s", (char*) TheApp->user_home, VDKB_HINT_FILE); if ( !(fp = fopen(buff,"w+")) ) return false; if(hint_tree) { HintBTree::Iterator bi(*hint_tree); for(;bi;bi++) { fprintf(fp,"%s\n%s%s%s\n%s%s%s\n%s\n", HINT, HINT_KEY, (char*) bi.current().key, KEY_END, TEXT_KEY, (char*) bi.current().hint, KEY_END, HINT_END); } } fclose(fp); return true; } //signal response method bool VdkbEdHintForm::OnchangeButtonClick(VDKObject* sender) { int row = customlist0->Selected.Row(); if(row >= 0) { VDKString key = customlist0->Tuples[row][0]; VDKHint h((char*) key,""); VDKHint *hint = hint_tree->find(h); if(hint) { char* hint_text = text0->GetChars(0,-1); if(strlen(hint_text)) hint->hint = hint_text; g_free(hint_text); } } return true; } //signal response method bool VdkbEdHintForm::OnremoveButtonClick(VDKObject* sender) { int row = customlist0->Selected.Row(); if(row >= 0) { VDKString key = customlist0->Tuples[row][0]; VDKHint h((char*) key,""); VDKHint *hint = hint_tree->find(h); if(hint) hint_tree->unlink(*hint); LoadList(); customlist0->SelectRow(0,0); } return true; } //signal response method bool VdkbEdHintForm::OnaddButtonClick(VDKObject* sender) { char* key_text = key->Text; char* hint_text = text0->GetChars(0,-1); if(strlen(key_text) && strlen(hint_text)) { VDKHint h(key_text,hint_text); VDKHint* found = hint_tree->find(h); if(!found) { hint_tree->add(h); LoadList(); Select(key_text); key->Text = ""; } else TheApp->VDKMessageBox(APPNAME, _("Hint key already here"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 3000 ); } return true; } void VdkbEdHintForm::Select(const char* key_text) { int t = 0; VDKString s_key = VDKString(key_text); for(;customlist0->Tuples.size();t++) { if (customlist0->Tuples[t][0] == s_key) { customlist0->SelectRow(t,0); return; } } customlist0->SelectRow(0,0); } /* main form setup */ void VdkbEdHintForm::GUISetup(void) { SetSize(-1,350); Title = _("VDKBuilder Hints editor"); hbox4 = new VDKBox(this,h_box); Add(hbox4,0,1,1,0); hbox4->BorderWidth(2); char* customlist0Titles[] = { _("Keywords") }; customlist0 = new VDKCustomList(this,1, customlist0Titles,(GtkSelectionMode) 0); customlist0->SetSize(150,-1); customlist0->AutoResize = true; customlist0->BorderShadow = (GtkShadowType) shadow_in; hbox4->Add(customlist0,0,1,1,0); vbox2 = new VDKBox(this,v_box); hbox4->Add(vbox2,0,1,1,0); vbox2->BorderWidth(2); text0 = new VDKTextView(this); text0->SetSize(400,250); vbox2->Add(text0,0,1,1,0); table2 = new VDKTable(this,2,3,false); table2->RowSpacing = 2; table2->ColSpacing = 2; vbox2->Add(table2,0,1,1,0); table2->BorderWidth(2); vbox18 = new VDKBox(this,v_box); table2->AddToCell(vbox18,0,0); key = new VDKEntry(this); vbox18->Add(key,0,1,1,0); key->SetTip(_("Enter hint key here before add an hint")); vbox19 = new VDKBox(this,v_box); table2->AddToCell(vbox19,0,1); addButton = new VDKCustomButton(this,(const char**) add_xpm,_("_Add"),16,(GtkPositionType) 1); vbox19->Add(addButton,0,1,1,0); addButton->Enabled = false; vbox20 = new VDKBox(this,v_box); table2->AddToCell(vbox20,0,2); removeButton = new VDKCustomButton(this,(const char**) trash_xpm,_("_Remove"),16,(GtkPositionType) 1); vbox20->Add(removeButton,0,1,1,0); vbox21 = new VDKBox(this,v_box); table2->AddToCell(vbox21,1,0); changeButton = new VDKCustomButton(this,(const char**) edit_xpm, _("_Change"),16,(GtkPositionType) 1); vbox21->Add(changeButton,0,1,1,0); vbox22 = new VDKBox(this,v_box); table2->AddToCell(vbox22,1,1); closeandsaveButton = new VDKCustomButton(this,(const char**) savefile_xpm, _("_Save and quit"), 16,(GtkPositionType) 1); vbox22->Add(closeandsaveButton,0,1,1,0); vbox23 = new VDKBox(this,v_box); table2->AddToCell(vbox23,1,2); quitButton = new VDKCustomButton(this,(const char**) quit_xpm, _("_Quit"),16,(GtkPositionType) 1); vbox23->Add(quitButton,0,1,1,0); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_emacs.cc0000644000000000000000000001273507252425744014144 /* * =========================== * VDK Builder * Version 1.2 * Revision 0.3 * August 2000 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #define VERBOSE 0 #define EMACS_SERVER "emacsserver" #define EMACS_CLIENT "emacsclient" #define EMACS_GREP_SERVER "ps -e | grep emacsserver" static char buff[1024]; static int timerId = 0; static int HandleTimer(gpointer gp); static unsigned int timerTries = 0; static const unsigned int TIMER_TRIES = 10; bool EmacsServerStarted(); /* emacs server pid */ int emacsPid = 0; extern VDKBuilder* TheApp; /* */ static void sigchld_handler(int num) { sigset_t set, oldset; pid_t pid; int status, exitstatus; /* block other incoming SIGCHLD signals */ sigemptyset(&set); sigaddset(&set, SIGCHLD); sigprocmask(SIG_BLOCK, &set, &oldset); /* wait for child */ while((pid = waitpid((pid_t)-1, &status, WNOHANG)) > 0) { if(WIFEXITED(status)) { exitstatus = WEXITSTATUS(status); #if VERBOSE printf("\nParent: child exited, pid = %d, exit status = %d\n", (int) pid, exitstatus); fflush(stdout); #endif // emacs server terminated if(pid == emacsPid) { VDKBMainForm* mainform = NULL; emacsPid = 0; // wake up builder editor mainform = dynamic_cast(TheApp->MainForm); if(mainform) mainform->MakeEditor(); } } else if(WIFSIGNALED(status)) { exitstatus = WTERMSIG(status); #if VERBOSE printf( "\nParent: child terminated by signal %d, pid = %d\n", exitstatus, (int)pid); fflush(stdout); #endif } else if(WIFSTOPPED(status)) { exitstatus = WSTOPSIG(status); #if VERBOSE printf("\nParent: child stopped by signal %d, pid = %d\n", exitstatus, (int)pid); fflush(stdout); #endif } else { #if VERBOSE printf("\nParent: child exited magically, pid = %d\n", (int)pid); fflush(stdout); #endif } } /* re-install the signal handler (some systems need this) */ signal(SIGCHLD, sigchld_handler); /* and unblock it */ sigemptyset(&set); sigaddset(&set, SIGCHLD); sigprocmask(SIG_UNBLOCK, &set, &oldset); } int StartEmacs(char ** args) { // install a child signal catcher signal(SIGCHLD, sigchld_handler); pid_t pid; pid = fork(); if(pid == -1) return pid; else if(pid == 0) { /* child */ execvp(args[0],args); /* if exec() returns, there is something wrong */ return pid; } else { /* parent */ #if VERBOSE printf("\nParent: forked a child with pid = %d\n", (int) pid); fflush(stdout); #endif if(!strcmp(args[0],"emacs")) { // even if child was started well, unix socket isn't ready yet. // add a timeout, when timer expires // call HandleTimer that checks if emacs server // is on place. timerId = gtk_timeout_add(500,HandleTimer,NULL); emacsPid = (int) pid; } } return getpid(); } /* checks if emacs server is on place and start all clients retrieving filenames from builder editor list */ int HandleTimer(gpointer gp) { if(EmacsServerStarted()) { VDKBMainForm* mainform = (VDKBMainForm*) TheApp->MainForm; VDKBEditor* editor = mainform->MakeEditor(); // start emacs clients TextListIterator li(editor->textlist); for(;li;li++) { char* file = li.current()->Filename(); char* args[3]; args[0] = "emacsclient"; args[1] = file; args[2] = NULL; StartEmacs(args); } timerTries = 0; // return FALSE so timer will stop here return FALSE; } else { timerTries = (timerTries < TIMER_TRIES) ? timerTries+1 : 0; return (timerTries > 0); } } /* */ bool EmacsServerStarted() { bool result = false; FILE* fp; fp = popen(EMACS_GREP_SERVER,"r"); if( fp != NULL) { memset(buff,'\0',sizeof(buff)); fread(buff,sizeof(char),sizeof(buff),fp); result = strstr(buff, EMACS_SERVER); pclose(fp); } return result; } /* */ int EmacsPid() { return emacsPid; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_entry.cc0000644000000000000000000003137207454575210014211 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ /* ================================ symbolic constants to templatize a bit ================================ */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include // for methods and other stuff #define CLASS VDKBEntry // put here vdk class name string #define VDK_CLASS "VDKEntry" // put here vdk class name #define VDK_ANCESTOR VDKEntry // put here here the widget will be named // (name+counter) #define VDK_WIDGET "entry" static char buff[128]; extern char* wi_widget_prompts[]; // used to autogenerate default // labelbutton names and captions int CLASS::Counter = 0; /* label properties names */ char* vdkentry_props[] = { TEXT,EDITABLE,HIDDEN,MAXCHARS,0 }; /* entry widget signal names && nicknames Default response method name will be made by: On. For instance if object name = and nickname = default response method name will be: */ char* vdkentry_signals[] = { SIGNAL_ACTIVATE,SIGNAL_CHANGED, SIGNAL_FOCUS_IN,SIGNAL_FOCUS_OUT,0 }; char* vdkentry_nicknames[] = { NICK_ACTIVATE,NICK_CHANGED , NICK_FOCUS_IN,NICK_FOCUS_OUT,0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); ////////////////////////////////////////////////// /* overridden ButtonPressed used in substitution of VDKBObject::ButtonPress */ bool VDKBEntry::OverriddenButtonPressed(VDKObject* sender, GdkEvent* ev) { VDKBEventContainer* container; gtk_signal_emit_stop_by_name(GTK_OBJECT(sender->WrappedWidget()), "button_press_event"); container = dynamic_cast(sender->Parent()); if(container) // we pass instead // otherwise entry widget selection // is lost (don'y ask me why !) container->OnButtonPressed(this,ev); return true; } ////////////////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner, char* def): VDK_ANCESTOR(owner, 0, def),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties list label button properties // names. (Others props are prepended by VDKBObject constructor) for(t=0; vdkentry_props[t]; t++) proplist.add(VDKBProperty(vdkentry_props[t])); // add to VDKBObject signal list signals for(t=0; vdkentry_signals[t]; t++) siglist.add(VDKBSignal(vdkentry_signals[t], this, vdkentry_nicknames[t])); //SetPropValue(TEXT,name); SetPropValue(MAXCHARS,"0"); SetPropValue(EDITABLE,"true"); // connects events. // an exception here EventConnect("button_press_event",&VDKBEntry::OverriddenButtonPressed); // others kept from ancestor EventConnect("button_release_event",&VDKBObject::ButtonReleased); EventConnect("enter_notify_event",&VDKBObject::OnEnter); EventConnect("leave_notify_event",&VDKBObject::OnLeave); // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { char* text = (char*) GetProp(TEXT); // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_EDITABLE, (char*) GetProp(EDITABLE)); fprintf(fp,"\n\t%s%s;", PROP_HIDDEN, (char*) GetProp(HIDDEN)); if(strcmp(text,NIHIL_PROP)) fprintf(fp,"\n\t%s\"%s\";", PROP_TEXT, text); else fprintf(fp,"\n\t%s%s;", PROP_TEXT, text); fprintf(fp,"\n\t%s%s;", PROP_MAXCHARS, (char*) GetProp(MAXCHARS)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* text; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // actually makes widget text = new CLASS(buff,owner); // add widget to form return owner->AddToSelf(text,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char obj_editable[16]; char obj_text[256]; char obj_maxchars[16]; char arg[64]; char tmp[256]; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; bool nls_support = parser.CheckNLSSupport(); // widget specifics if(parser.GetParam(obj_maxchars,buffer,PROP_MAXCHARS) && strcmp(obj_maxchars,NIHIL_PROP)) ; else strcpy(obj_maxchars,"0"); // if(parser.GetParam(obj_text,buffer,PROP_TEXT) && strcmp(obj_text,NIHIL_PROP)) ; else *obj_text = '\0'; if(*obj_text) { if(nls_support) sprintf(tmp,"\n%s = new %s(this,%s,_(\"%s\"));", obj_name, VDK_CLASS, obj_maxchars, obj_text); else sprintf(tmp,"\n%s = new %s(this,%s,\"%s\");", obj_name, VDK_CLASS, obj_maxchars, obj_text); } else sprintf(tmp,"\n%s = new %s(this,%s);", obj_name, VDK_CLASS, obj_maxchars); strcpy(source,tmp); // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // if(parser.GetParam(obj_editable,buffer,PROP_EDITABLE) && strcmp(obj_editable,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;", obj_name,EDITABLE,obj_editable); strcat(source,tmp); } // get label button props if(parser.GetParam(arg,buffer,PROP_HIDDEN) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;",obj_name,HIDDEN,arg); strcat(source,tmp); } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[256]; char obj_text[256]; CLASS* text; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; if(parser.GetParam(obj_text,buffer,PROP_TEXT) && strcmp(obj_text,NIHIL_PROP)) ; else *obj_text = '\0'; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { text = new CLASS(obj_name,owner, *obj_text ? obj_text : NULL); if(parser.GetParam(arg,buffer,PROP_EDITABLE) && strcmp(arg,NIHIL_PROP)) text->SetPropValue(EDITABLE,arg); if(parser.GetParam(arg,buffer,PROP_HIDDEN) && strcmp(arg,NIHIL_PROP)) text->SetPropValue(HIDDEN,arg); if(parser.GetParam(arg,buffer,PROP_MAXCHARS) && strcmp(arg,NIHIL_PROP)) text->SetPropValue(MAXCHARS,arg); if(parser.GetParam(arg,buffer,PROP_TEXT) && strcmp(arg,NIHIL_PROP)) text->SetPropValue(TEXT,arg); // pack widget to container return owner->PackToSelf(text, container, buffer, parser); } else return false; return true; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); VDKTable *table = new VDKTable(inspector,3,2); // table->SetSize(219,-1); hidden = new VDKCheckButton(inspector,_(wi_widget_prompts[16])); table->AddToCell(hidden,0,0); hidden->Checked = GetProp(HIDDEN) == True; // this after (so no signal hang) hidden->Parent(this); SignalConnect(hidden,"toggled",&CLASS::OnSetHidden); editable = new VDKCheckButton(inspector,_(wi_widget_prompts[2])); table->AddToCell(editable,0,1); editable->Checked = GetProp(EDITABLE) == True; // this after (so no signal hang) editable->Parent(this); SignalConnect(editable,"toggled",&CLASS::OnSetEditable); table->AddToCell(new VDKLabel(inspector,_(wi_widget_prompts[17])),1,0); text = new VDKEntry(inspector,0,GetProp("Text")); text->SetSize(100,-1); table->AddToCell(text,1,1); text->Parent(this); SignalConnect(text,"activate",&CLASS::OnSetEntryText); table->AddToCell(new VDKLabel(inspector,_(wi_widget_prompts[18])),2,0); int mc = atoi(GetProp(MAXCHARS)); maxchars = new VDKSpinButton(inspector,mc , 0, 255 , 1 ,0 ); maxchars->SetSize(100,-1); table->AddToCell(maxchars,2,1); maxchars->Parent(this); // note last arg as // is necessary since gtk+ "value_changed" // isn't treated by gtk+ SignalConnect(maxchars,"value_changed",&CLASS::OnSetMaxChars,false); bframe->Add(table,l_justify,false,false,false); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnSetHidden(VDKObject*) { SetPropValue(HIDDEN, hidden->Checked ? CHECK_TRUE : CHECK_FALSE); Hidden = hidden->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetEditable(VDKObject*) { SetPropValue(EDITABLE, editable->Checked ? CHECK_TRUE : CHECK_FALSE); Editable = editable->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetEntryText(VDKObject*) { sprintf(buff,"%s", strlen(text->Text) > 0 ? (char*) text->Text: NIHIL_PROP ); SetPropValue(TEXT,buff); Text = buff; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetMaxChars(VDKObject*) { sprintf(buff,"%d",(int) maxchars->ValueAsInt); SetPropValue(MAXCHARS,buff); inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_Env.cc0000644000000000000000000010457510022114072013562 /* * =========================== * VDK Builder * Version 2.0 * March 2001 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include "pixmaps/gnome-search.xpm" #include "pixmaps/stop.xpm" #include "pixmaps/stock_button_ok.xpm" extern void create_font_selection (void); extern char* selected_font; static char buff[256]; // Vdkb_Env MAIN FORM CLASS /* main form constructor */ Vdkb_EnvForm::Vdkb_EnvForm(VDKForm* owner, char* title): VDKForm(owner,title) { forceToClose = false; } /* main form destructor */ Vdkb_EnvForm::~Vdkb_EnvForm() { } /* main form setup */ char * tokens[] = { N_("Key words"),N_("GTK+/VDK words"),"Macro",N_("Preprocessor"), N_("Constants"), N_("Comments"), NULL }; void Vdkb_EnvForm::Setup(void) { int t = 0; char* p = NULL; GUISetup(); Changed = false; // locks 'changed' flag so even if a "changed" signal will be received // by widgets nothing happens. LockChanged = true; VDKString Yes = CHECK_YES; // page 1 - General IDE workdir->Text = (char*) VDKBuilder::ideDefaults.project.startupdir; float savetime = atof((char*) VDKBuilder::ideDefaults.editor.timedsave); savingtime->ValueAsFloat = savetime; p = (char*) VDKBuilder::ideDefaults.project.vdk_ref_path; vdk_ref_path->Text = p; p = (char*) VDKBuilder::ideDefaults.project.vdk_ref_browser; vdk_ref_browser->Text = p; hide_on_run->Checked = VDKBuilder::ideDefaults.project.hide_on_run == Yes; wi_resizeable->Checked = VDKBuilder::ideDefaults.project.wi_resizeable == Yes; int layout = atoi(VDKBuilder::ideDefaults.project.wi_layout); rgroup->Selected = layout; autosave->Checked = VDKBuilder::ideDefaults.project.autosave == Yes; backup->Checked = VDKBuilder::ideDefaults.editor.backup == Yes; run_modal->Checked = VDKBuilder::ideDefaults.project.run_modal == Yes; emacs->Checked = VDKBuilder::ideDefaults.project.emacs == Yes; save_session->Checked = VDKBuilder::ideDefaults.project.save_session == Yes; theme->Checked = VDKBuilder::ideDefaults.project.theme == Yes; enable_class_browser->Checked = VDKBuilder::ideDefaults.project.enable_class_browser == Yes; // page 2 - general editor cc_ext->Text = (char*) VDKBuilder::ideDefaults.unit.cc_ext; h_ext->Text = (char*) VDKBuilder::ideDefaults.unit.h_ext; editor_font->Text = (char*) VDKBuilder::ideDefaults.editor.font; editor_bg->Text = (char*) VDKBuilder::ideDefaults.editor.bg; editor_fg->Text = (char*) VDKBuilder::ideDefaults.editor.fg; editor_size_x->ValueAsFloat = float(VDKBuilder::ideDefaults.editor.size.x); editor_size_y->ValueAsFloat = float(VDKBuilder::ideDefaults.editor.size.y); float tabNo = atof((char*) VDKBuilder::ideDefaults.editor.tab); editortab->ValueAsFloat = float(tabNo); code_autoindent->Checked = VDKBuilder::ideDefaults.project.code_autoindent == Yes; showln->Checked = VDKBuilder::ideDefaults.project.showln == Yes; // page 3 - syntax colors // load tokens type into tokens list box for(; tokens[t];t++) { char* p = _(tokens[t]); tokenlistbox->AddRow(&p); } // select first token type tokenlistbox->SelectRow(0,0); /* VDKFont* font = new VDKFont(this,(char*) VDKBuilder::ideDefaults.editor.key_font); syntfont->Font = font; */ syntfont->Text = (char*) VDKBuilder::ideDefaults.editor.key_font; // unlocks 'changed' flag LockChanged = false; } //signal response method bool Vdkb_EnvForm::OnshowlnToggled(VDKObject* sender) { VDKBuilder::ideDefaults.project.showln = showln->Checked ? CHECK_YES : CHECK_NO; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::Oncode_autoindentToggled(VDKObject* sender) { VDKBuilder::ideDefaults.project.code_autoindent = code_autoindent->Checked ? CHECK_YES : CHECK_NO; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::Oneditor_size_yValueChanged(VDKObject* sender) { int y = editor_size_y->ValueAsInt; int x = VDKBuilder::ideDefaults.editor.size.x; if(y > 0 ) VDKBuilder::ideDefaults.editor.size = VDKPoint(x,y); if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::Oneditor_size_xValueChanged(VDKObject* sender) { int x = editor_size_x->ValueAsInt; int y = VDKBuilder::ideDefaults.editor.size.y; if(x > 0 ) VDKBuilder::ideDefaults.editor.size = VDKPoint(x,y); if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::OneditortabValueChanged(VDKObject* sender) { int tab = editortab->ValueAsInt; sprintf(buff,"%d",tab); VDKBuilder::ideDefaults.editor.tab = buff; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::Onh_extChanged(VDKObject* sender) { if(strlen(h_ext->Text) > 0) { VDKBuilder::ideDefaults.unit.h_ext = h_ext->Text; if(!LockChanged) OnOptionChanged (); } return true; } //signal response method bool Vdkb_EnvForm::Oncc_extChanged(VDKObject* sender) { if(strlen(cc_ext->Text) > 0) { VDKBuilder::ideDefaults.unit.cc_ext = cc_ext->Text; if(!LockChanged) OnOptionChanged (); } return true; } //signal response method bool Vdkb_EnvForm::Onvdk_ref_pathChanged(VDKObject* sender) { char* path = vdk_ref_path->Text; if(strlen(path)) VDKBuilder::ideDefaults.project.vdk_ref_path = path; else VDKBuilder::ideDefaults.project.vdk_ref_path = PROJECT_VDK_REF_PATH; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::Onvdk_ref_browserChanged(VDKObject* sender) { char* browser = vdk_ref_browser->Text; if(strlen(browser)) VDKBuilder::ideDefaults.project.vdk_ref_browser = browser; else VDKBuilder::ideDefaults.project.vdk_ref_browser = PROJECT_VDK_REF_BROWSER; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::OnsavingtimeValueChanged(VDKObject* sender) { int value = savingtime->ValueAsInt; sprintf(buff,"%d",value); VDKBuilder::ideDefaults.editor.timedsave = buff; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::OnworkdirChanged(VDKObject* sender) { if(strlen(workdir->Text) > 0) { VDKBuilder::ideDefaults.project.startupdir = workdir->Text; if(!LockChanged) OnOptionChanged (); } return true; } //signal response method bool Vdkb_EnvForm::Onsave_sessionToggled(VDKObject* sender) { VDKBuilder::ideDefaults.project.save_session = save_session->Checked ? CHECK_YES : CHECK_NO; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::OnemacsToggled(VDKObject* sender) { VDKBuilder::ideDefaults.project.emacs = emacs->Checked ? CHECK_YES : CHECK_NO; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::Onrun_modalToggled(VDKObject* sender) { VDKBuilder::ideDefaults.project.run_modal = run_modal->Checked ? CHECK_YES : CHECK_NO; // disables hide on run (probably user wants see editors to // make appropriate changes during runs) if(!(run_modal->Checked)) hide_on_run->Checked = false; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::OnbackupToggled(VDKObject* sender) { VDKBuilder::ideDefaults.editor.backup = backup->Checked ? CHECK_YES : CHECK_NO; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::OnautosaveToggled(VDKObject* sender) { VDKBuilder::ideDefaults.project.autosave = autosave->Checked ? CHECK_YES : CHECK_NO; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::Onwi_resizeableToggled(VDKObject* sender) { VDKBuilder::ideDefaults.project.wi_resizeable = wi_resizeable->Checked ? CHECK_YES : CHECK_NO; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::OnRgroupToggled(VDKObject* sender) { char local[16]; sprintf(local,"%d", int(rgroup->Selected)); VDKBuilder::ideDefaults.project.wi_layout = local; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::OnthemeToggled(VDKObject* sender) { VDKBuilder::ideDefaults.project.theme = theme->Checked ? CHECK_YES : CHECK_NO; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::Onenable_class_browserToggled(VDKObject* sender) { VDKBuilder::ideDefaults.project.enable_class_browser = enable_class_browser->Checked ? CHECK_YES : CHECK_NO; if(!LockChanged) OnOptionChanged (); return true; } //signal response method bool Vdkb_EnvForm::Onhide_on_runToggled(VDKObject* sender) { VDKBuilder::ideDefaults.project.hide_on_run = hide_on_run->Checked ? CHECK_YES : CHECK_NO; if(!LockChanged) OnOptionChanged (); return true; } //asks user before closing bool Vdkb_EnvForm::CanClose(void) { if (Changed && !forceToClose) { int result = Application ()->VDKMessageBox(APPNAME, _("Options changed, save ?"), VDK_ICONQUESTION|VDK_YESNO, NULL, NULL, 7000) == VDK_IDYES; // save changes if(result) SaveEnvironment(); } return true; } //signal response method void Vdkb_EnvForm::OnOptionChanged () { if(!Changed) { VDKRgb color = CHANGED_COLOR; done->Foreground = color; Changed = true; } } //signal response method static char *text_example = "/*\n\ this is a remark\n\ */\n\ #include \n\ #define AMACRO \"a macro\"\n\ int constant = 9;\n\ int main (int argc, char** argv)\n\ {\n\ // another remark\n\ gtk_verbose_call ();\n\ VDKMyApplication* app = new VDKMyApplication;\n\ }\n\ void MyClass::MyClass ()\n\ {\n\ }\ "; bool Vdkb_EnvForm::Oncode_exampleRealize(VDKObject* sender) { code_example->ShowLineNumbers = false; WriteSyntaxSampleText(); return true; } /* */ void Vdkb_EnvForm::WriteSyntaxSampleText() { char* font = (char*) VDKBuilder::ideDefaults.editor.font; code_example->Font = new VDKFont (this, font); code_example->Foreground = VDKRgb((char*) VDKBuilder::ideDefaults.editor.fg); code_example->NormalBackground = VDKRgb((char*) VDKBuilder::ideDefaults.editor.bg); VDKColor* key_color = new VDKColor(this, (char*) VDKBuilder::ideDefaults.editor.key_color); VDKFont* key_font = new VDKFont(this, (char*) VDKBuilder::ideDefaults.editor.key_font); VDKColor *gtk_color = new VDKColor(this, (char*) VDKBuilder::ideDefaults.editor.gtk_color); VDKFont *gtk_font = new VDKFont(this, (char*) VDKBuilder::ideDefaults.editor.gtk_font); VDKColor* macro_color = new VDKColor(this, (char*) VDKBuilder::ideDefaults.editor.macro_color); VDKFont* macro_font = new VDKFont(this, (char*) VDKBuilder::ideDefaults.editor.macro_font); VDKColor* preprocessor_color = new VDKColor(this, (char*) VDKBuilder::ideDefaults.editor.preprocess_color); VDKFont* preprocessor_font = new VDKFont(this, (char*) VDKBuilder::ideDefaults.editor.preprocess_font); VDKColor *const_color = new VDKColor(this, (char*) VDKBuilder::ideDefaults.editor.const_color); VDKFont *const_font = new VDKFont(this, (char*) VDKBuilder::ideDefaults.editor.const_font); VDKColor *comment_color = new VDKColor(this, (char*) VDKBuilder::ideDefaults.editor.comment_color); VDKFont *comment_font = new VDKFont(this, (char*) VDKBuilder::ideDefaults.editor.comment_font); // install syntax and patterns table code_example->InstallSyntaxTable ( key_color,key_font, // keywords gtk_color,gtk_font, // gtk+ names macro_color,macro_font, // macros preprocessor_color,preprocessor_font, // preprocessor directives const_color,const_font, // constants comment_color,comment_font); // remarks code_example->TextInsert (text_example); } //signal response method bool Vdkb_EnvForm::OnsyntcolorbuttonClick(VDKObject* sender) { int ndx = tokenlistbox->Selected.Row(); if(ndx >= 0) { VDKDefaultColor color; VDKBColorBrowser* dlg = new VDKBColorBrowser(this,&color); dlg->Setup(); dlg->ShowModal(GTK_WIN_POS_CENTER); // calls GC now CollectGarbage(); if(color.red >= 0) { switch(ndx) { case 0: // key words VDKBuilder::ideDefaults.editor.key_color = (char*) color.name; break; case 1: // gtk+/vdk words VDKBuilder::ideDefaults.editor.gtk_color = (char*) color.name; break; case 2: // macro VDKBuilder::ideDefaults.editor.macro_color = (char*) color.name; break; case 3: // preprocessor VDKBuilder::ideDefaults.editor.preprocess_color = (char*) color.name; break; case 4: // const VDKBuilder::ideDefaults.editor.const_color = (char*) color.name; break; case 5: // comments VDKBuilder::ideDefaults.editor.comment_color = (char*) color.name; } // code_example->ClearSyntaxTable(); code_example->Clear(); WriteSyntaxSampleText(); if(!LockChanged) OnOptionChanged (); } } return true; } //signal response method bool Vdkb_EnvForm::OnsyntfontbuttonClick(VDKObject* sender) { create_font_selection (); if(selected_font) { syntfont->Text = selected_font; OnsyntfontActivate (NULL); } return true; } //signal response method bool Vdkb_EnvForm::OnsyntfontActivate (VDKObject* sender) { int ndx = tokenlistbox->Selected.Row(); int len; if(ndx >= 0 && ( (len = strlen(syntfont->Text)) > 0 )) { VDKFont* newfont = NULL; GdkFont* gdkfont; char* font = new char[len+1]; strcpy(font,syntfont->Text); newfont = new VDKFont(this,font); if((gdkfont = newfont->AsGdkFont())) { // update entry font /* GtkRcStyle *rc_style; rc_style = gtk_rc_style_new (); rc_style->font_desc = pango_font_description_copy (newfont->AsPangoFontDescription()); gtk_widget_modify_style (syntfont->WrappedWidget(), rc_style); gtk_rc_style_unref (rc_style); gtk_widget_size_request (syntfont->WrappedWidget(), NULL); */ syntfont->Text = font; syntfont->Font = newfont; switch(ndx) { case 0: // key words VDKBuilder::ideDefaults.editor.key_font = font; break; case 1: // gtk+/vdk words VDKBuilder::ideDefaults.editor.gtk_font = font; break; case 2: // macro VDKBuilder::ideDefaults.editor.macro_font = font; break; case 3: // preprocessor VDKBuilder::ideDefaults.editor.preprocess_font = font; break; case 4: // const VDKBuilder::ideDefaults.editor.const_font = font; break; case 5: // comments VDKBuilder::ideDefaults.editor.comment_font = font; } code_example->Clear(); // code_example->ClearSyntaxTable(); WriteSyntaxSampleText(); if(!LockChanged) OnOptionChanged (); gdk_font_unref(gdkfont); } else { sprintf(buff,_("font:\"%s\" not available or mispelled"),font); Application()->VDKMessageBox( APPNAME, buff, VDK_ICONSTOP|VDK_OK, _(user_messages[user_ok]), NULL, 5000); } } return true; } //signal response method bool Vdkb_EnvForm::OnfgbuttonClick(VDKObject* sender) { VDKDefaultColor color; VDKBColorBrowser* dlg = new VDKBColorBrowser(this,&color); dlg->Setup(); dlg->ShowModal(GTK_WIN_POS_CENTER); // calls GC now CollectGarbage(); if(color.red >= 0) { VDKBuilder::ideDefaults.editor.fg = color.name; editor_fg->Text = (char*) color.name; if(!LockChanged) OnOptionChanged (); } return true; } //signal response method bool Vdkb_EnvForm::OnbgbuttonClick(VDKObject* sender) { VDKDefaultColor color; VDKBColorBrowser* dlg = new VDKBColorBrowser(this,&color); dlg->Setup(); dlg->ShowModal(GTK_WIN_POS_CENTER); // calls GC now CollectGarbage(); if(color.red >= 0) { VDKBuilder::ideDefaults.editor.bg = color.name; editor_bg->Text = (char*) color.name; if(!LockChanged) OnOptionChanged (); } return true; } //signal response method bool Vdkb_EnvForm::OnfontbuttonClick(VDKObject* sender) { create_font_selection (); if(selected_font) { editor_font->Text = selected_font; VDKBuilder::ideDefaults.editor.font = selected_font; g_free(selected_font); if(!LockChanged) OnOptionChanged (); } return true; } //signal response method bool Vdkb_EnvForm::Oneditor_fontActivate (VDKObject* sender) { if(strlen(editor_font->Text) > 0) { char* font = editor_font->Text; VDKBuilder::ideDefaults.editor.font = font; if(!LockChanged) OnOptionChanged (); } return true; } //signal response method bool Vdkb_EnvForm::OncancelClick(VDKObject* sender) { forceToClose = true; Close (); return true; } //signal response method bool Vdkb_EnvForm::OndoneClick(VDKObject* sender) { Close (); return true; } //signal response method bool Vdkb_EnvForm::OntokenlistboxSelectRow (VDKObject* sender) { int ndx = tokenlistbox->Selected.Row(); if(ndx >= 0) { char* font = NULL; switch(ndx) { case 0: // key words font = VDKBuilder::ideDefaults.editor.key_font; break; case 1: // gtk+/vdk words font = VDKBuilder::ideDefaults.editor.gtk_font; break; case 2: // macro font = VDKBuilder::ideDefaults.editor.macro_font; break; case 3: // preprocessor font = VDKBuilder::ideDefaults.editor.preprocess_font; break; case 4: // const font = VDKBuilder::ideDefaults.editor.const_font; break; case 5: // comments font = VDKBuilder::ideDefaults.editor.comment_font; } if(font) { VDKFont* newfont = new VDKFont(this,font); GdkFont* gdkfont; if((gdkfont = newfont->AsGdkFont())) { syntfont->Text = font; syntfont->Font = newfont; newfont->Destroy(); } } } return true; } /* */ void Vdkb_EnvForm::SaveEnvironment() { char local[256]; FILE* fp; VDKString home = ((VDKBuilder*)Application())->user_home; VDKString rcfile = DEFAULTS_FILE; sprintf(local,"%s/.vdkb2/%s",(char*) home,(char*) rcfile); if(access(local,F_OK) < 0) { sprintf(buff, _("%s\ndoes not exists\ \ncreate %s/.vdkb/res/ and\ \ncopy %s there\ \n(operation aborted)"), local,(char*) home,(char*) rcfile); Application()->VDKMessageBox(APPNAME, buff, VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok])); return; } fp = fopen(local,"w+"); if(!fp) return; fprintf(fp, "=======================\ \nVDKBuilder\ \n=======================\ \nIDE defaults file\ \n- file is divided in sections\ \n- all text outside {} is a remark\ \n- case sensitive\ \n- be careful file parser is'nt protected\ \n against syntax errors !\ \n- section format:\ \nsection_name\ \n{\ \nkey: value ;\ \nkey: value ;\ \n,....\ \n}\ \n------------------\ \nSECTIONS BEGIN HERE\ \n------------------\ \nvdkb_units\ \n{\ \ncount: 1;\ \nname: unit;" ); fprintf(fp,"\ncc_ext:%s;", (char*)VDKBuilder::ideDefaults.unit.cc_ext); fprintf(fp,"\nh_ext:%s;", (char*)VDKBuilder::ideDefaults.unit.h_ext); fprintf(fp, "\nobj_ext: o;\n}"); fprintf(fp, "-----------------------\ \ndefaults for\ \nproject\ \nTIP:\ \ndo not change prj_ext\ \nmust be fixed to .prj\ \n----------------------\ \nvdkb_project\ \n{\ \ncount: 1;\ \nname: project;\ \nprj_ext: prj;\ "); fprintf(fp,"\nhide_on_run:%s;", (char*)VDKBuilder::ideDefaults.project.hide_on_run); fprintf(fp,"\nautosave:%s;", (char*)VDKBuilder::ideDefaults.project.autosave); fprintf(fp,"\nstartup_dir:%s;", (char*)VDKBuilder::ideDefaults.project.startupdir); fprintf(fp,"\nwi_resizeable:%s;", (char*)VDKBuilder::ideDefaults.project.wi_resizeable); fprintf(fp,"\nwi_layout:%s;", (char*)VDKBuilder::ideDefaults.project.wi_layout); fprintf(fp,"\nvdk_ref_path:%s;", (char*)VDKBuilder::ideDefaults.project.vdk_ref_path); fprintf(fp,"\nvdk_ref_browser:%s;", (char*)VDKBuilder::ideDefaults.project.vdk_ref_browser); fprintf(fp,"\nsave_session:%s;", (char*)VDKBuilder::ideDefaults.project.save_session); fprintf(fp,"\ncode_indent:%s;", (char*)VDKBuilder::ideDefaults.project.code_indent); fprintf(fp,"\ncode_autoindent:%s;", (char*)VDKBuilder::ideDefaults.project.code_autoindent); fprintf(fp,"\nrun_modal:%s;", (char*)VDKBuilder::ideDefaults.project.run_modal); fprintf(fp,"\nemacs:%s;", (char*)VDKBuilder::ideDefaults.project.emacs); fprintf(fp,"\nshow_line_numbers:%s;", (char*)VDKBuilder::ideDefaults.project.showln); fprintf(fp,"\next_ascii:%s;", (char*)VDKBuilder::ideDefaults.project.extascii); fprintf(fp,"\ntheme:%s;", (char*)VDKBuilder::ideDefaults.project.theme); fprintf(fp,"\nenable_class_browser:%s;", (char*)VDKBuilder::ideDefaults.project.enable_class_browser); fprintf(fp,"\n}"); fprintf(fp, "\n-------------------\ \ndefaults for editor\ \n-------------------\ \nfont keyword accepts pango description\ \nfg,bg accept standard X color names\ \n--------------------\ \nvdkb_editor\ \n{"); fprintf(fp,"\nfont:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.font); fprintf(fp,"\nfg:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.fg); fprintf(fp,"\nbg:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.bg); fprintf(fp,"\nh_size:%d;", VDKBuilder::ideDefaults.editor.size.X()); fprintf(fp,"\nv_size:%d;", VDKBuilder::ideDefaults.editor.size.Y()); fprintf(fp,"\nkey_font:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.key_font); fprintf(fp,"\nkey_color:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.key_color); fprintf(fp,"\ngtk_font:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.gtk_font); fprintf(fp,"\ngtk_color:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.gtk_color); fprintf(fp,"\nmacro_font:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.macro_font); fprintf(fp,"\nmacro_color:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.macro_color); fprintf(fp,"\npreprocess_font:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.preprocess_font); fprintf(fp,"\npreprocess_color:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.preprocess_color); fprintf(fp,"\nconst_font:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.const_font); fprintf(fp,"\nconst_color:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.const_color); fprintf(fp,"\ncomment_color:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.comment_color); fprintf(fp,"\ncomment_font:\"%s\";", (char*)VDKBuilder::ideDefaults.editor.comment_font); fprintf(fp,"\ntimed_save:%s;", (char*)VDKBuilder::ideDefaults.editor.timedsave); fprintf(fp,"\nbackup:%s;", (char*)VDKBuilder::ideDefaults.editor.backup); fprintf(fp,"\ntab:%s;", (char*)VDKBuilder::ideDefaults.editor.tab); fprintf(fp,"\n}"); fclose(fp); } /* defining signal and events dynamics tables */ DEFINE_SIGNAL_LIST(Vdkb_EnvForm,VDKForm); DEFINE_EVENT_LIST(Vdkb_EnvForm,VDKForm); /* defining signal static table */ DEFINE_SIGNAL_MAP(Vdkb_EnvForm,VDKForm) ON_SIGNAL(done,clicked_signal,OndoneClick), ON_SIGNAL(cancel,clicked_signal,OncancelClick), ON_SIGNAL(fontbutton,clicked_signal,OnfontbuttonClick), ON_SIGNAL(editor_font,activate_signal,Oneditor_fontActivate), ON_SIGNAL(syntfont,activate_signal,OnsyntfontActivate), ON_SIGNAL(bgbutton,clicked_signal,OnbgbuttonClick), ON_SIGNAL(fgbutton,clicked_signal,OnfgbuttonClick), ON_SIGNAL(syntfontbutton,clicked_signal,OnsyntfontbuttonClick), ON_SIGNAL(syntcolorbutton,clicked_signal,OnsyntcolorbuttonClick), ON_SIGNAL(code_example,realize_signal,Oncode_exampleRealize), ON_SIGNAL(hide_on_run,toggled_signal,Onhide_on_runToggled), ON_SIGNAL(wi_resizeable,toggled_signal,Onwi_resizeableToggled), ON_SIGNAL(autosave,toggled_signal,OnautosaveToggled), ON_SIGNAL(backup,toggled_signal,OnbackupToggled), ON_SIGNAL(run_modal,toggled_signal,Onrun_modalToggled), ON_SIGNAL(emacs,toggled_signal,OnemacsToggled), ON_SIGNAL(save_session,toggled_signal,Onsave_sessionToggled), ON_SIGNAL(theme,toggled_signal,OnthemeToggled), ON_SIGNAL(enable_class_browser,toggled_signal,Onenable_class_browserToggled), ON_SIGNAL(workdir,changed_signal,OnworkdirChanged), ON_SIGNAL(savingtime,value_changed_signal,OnsavingtimeValueChanged), ON_SIGNAL(vdk_ref_path,changed_signal,Onvdk_ref_pathChanged), ON_SIGNAL(vdk_ref_browser,changed_signal,Onvdk_ref_browserChanged), ON_SIGNAL(cc_ext,changed_signal,Oncc_extChanged), ON_SIGNAL(h_ext,changed_signal,Onh_extChanged), ON_SIGNAL(editor_size_x,value_changed_signal,Oneditor_size_xValueChanged), ON_SIGNAL(editor_size_y,value_changed_signal,Oneditor_size_yValueChanged), ON_SIGNAL(editortab,value_changed_signal,OneditortabValueChanged), ON_SIGNAL(code_autoindent,toggled_signal,Oncode_autoindentToggled), ON_SIGNAL(showln,toggled_signal,OnshowlnToggled), ON_SIGNAL(rgroup,toggled_signal,OnRgroupToggled), ON_SIGNAL(tokenlistbox,select_row_signal,OntokenlistboxSelectRow) END_SIGNAL_MAP /* main form setup */ void Vdkb_EnvForm::GUISetup(void) { SetSize(318,350); Title = _("VDKBuilder environment options"); vbox2 = new VDKBox(this,v_box); Add(vbox2,0,1,1,0); vbox3 = new VDKBox(this,v_box); vbox2->Add(vbox3,0,1,1,0); vbox3->BorderWidth(0); nbook = new VDKNotebook(this); vbox3->Add(nbook,0,1,1,0); Nbook0_Page0 = new VDKBox(this,v_box); nbook->AddPage(Nbook0_Page0,_("General IDE")); fixed0 = new VDKFixed(this); Nbook0_Page0->Add(fixed0,0,1,1,0); label0 = new VDKLabel(this,_("Default working\ndirectory")); label0->SetSize(96,32); fixed0->Add(label0,6,9,1,0); workdir = new VDKEntry(this,0); workdir->SetTip(_("Enter here default start up directory")); workdir->SetSize(168,20); workdir->Editable = true; fixed0->Add(workdir,121,16,1,0); hide_on_run = new VDKCheckButton(this,_("Hide VDKbuilder on run")); hide_on_run->SetTip(_("Hides VDKBuilder when running application")); hide_on_run->SetSize(280,20); fixed0->Add(hide_on_run,0,112,1,0); wi_resizeable = new VDKCheckButton(this,_("WI resizable")); wi_resizeable->SetTip(_("Makes Widget Inspector resizable")); wi_resizeable->SetSize(80,20); fixed0->Add(wi_resizeable,0,136,1,0); rgroup = new VDKRadioButtonGroup(this,h_box); VDKRadioButton* rb = new VDKRadioButton(rgroup,_("WI layout V")); rb->SetTip(_("WI shows a vertical layout")); rb = new VDKRadioButton(rgroup,_("WI layout H")); rb->SetTip(_("WI shows an horizontal layout")); fixed0->Add(rgroup,150,136,1,0); autosave = new VDKCheckButton(this,_("Auto save modified files")); autosave->SetTip(_("Autosave modified files without asking user")); fixed0->Add(autosave,0,160,1,0); label2 = new VDKLabel(this,_("Timed saving")); label2->SetSize(104,16); fixed0->Add(label2,8,51,1,0); savingtime = new VDKSpinButton(this,0.000000,0.000000,20.000000,1.000000,0.000000); savingtime->Digits = 0; savingtime->SetTip(_("Timed (in minutes) saving of source files (0 means no timed saving)")); fixed0->Add(savingtime,120,48,1,0); backup = new VDKCheckButton(this,_("Makes source backup files")); backup->SetTip(_("Makes a sources back-up file")); backup->SetSize(288,20); fixed0->Add(backup,0,184,1,0); label3 = new VDKLabel(this,_("VDK reference path")); label3->SetSize(99,15); fixed0->Add(label3,5,75,1,0); vdk_ref_path = new VDKEntry(this,0,"?"); vdk_ref_path->SetTip(_("Put here where_VDK_reference_is\ \nmost likely:/usr/src/vdk-2.x.y/doc/doxy/html")); vdk_ref_path->SetSize(168,20); vdk_ref_path->Editable = true; fixed0->Add(vdk_ref_path,120,72,1,0); label9 = new VDKLabel(this,_("VDK ref browser")); label9->SetSize(99,15); fixed0->Add(label9,6,95,1,0); vdk_ref_browser = new VDKEntry(this,0,"netscape"); vdk_ref_browser->SetTip(_("Put here your path to preferred html browser")); vdk_ref_browser->SetSize(160,20); vdk_ref_browser->Editable = true; fixed0->Add(vdk_ref_browser,120,94,1,0); run_modal = new VDKCheckButton(this,_("VDKMaker - Application modal")); run_modal->SetTip(_("Application runs modal, if unchecked allows\ncode/design modifications during application run")); run_modal->SetSize(288,20); fixed0->Add(run_modal,0,208,1,0); emacs = new VDKCheckButton(this,_("Supports Emacs")); emacs->SetTip(_("Supports Emacs as external editor\nall sources opened in builder editor\nwill be opened in emacs as well")); fixed0->Add(emacs,0,232,1,0); save_session = new VDKCheckButton(this,_("Saves last work session")); fixed0->Add(save_session,0,256,1,0); theme = new VDKCheckButton(this,_("Use vdkb theme")); theme->SetTip(_("Allows user to override default and\nuse a nice \"Air Force Blue\" theme")); fixed0->Add(theme,200,256,1,0); enable_class_browser = new VDKCheckButton(this,_("Enables class browser")); enable_class_browser->SetTip( _("Enabling class browser can slown down VDKBuilder\nduring loading of very big projects")); fixed0->Add(enable_class_browser,200,232,1,0); // comment to show checkbox enable_class_browser->Visible= false; nbook_page2 = new VDKBox(this,v_box); nbook->AddPage(nbook_page2,_("Sources editor")); fixed1 = new VDKFixed(this); nbook_page2->Add(fixed1,0,1,1,0); label4 = new VDKLabel(this,_("Default source files extension")); label4->SetSize(176,16); fixed1->Add(label4,0,7,1,0); label1 = new VDKLabel(this,_("Default header files extension")); label1->SetSize(176,16); fixed1->Add(label1,0,32,1,0); label5 = new VDKLabel(this,_("Default object files extension")); label5->SetSize(176,16); fixed1->Add(label5,0,59,1,0); cc_ext = new VDKEntry(this,0,"cc"); cc_ext->SetSize(64,20); cc_ext->Editable = true; fixed1->Add(cc_ext,184,2,1,0); h_ext = new VDKEntry(this,0,"h"); h_ext->SetSize(64,20); h_ext->Editable = true; fixed1->Add(h_ext,184,29,1,0); o_ext = new VDKEntry(this,0,"o"); o_ext->Enabled = false; o_ext->SetTip(_("Fixed to be 'o'")); o_ext->SetSize(64,20); o_ext->Editable = true; fixed1->Add(o_ext,184,56,1,0); editor_font = new VDKEntry(this,0); editor_font->SetTip(_("Enter here font name or use the Font... button")); //editor_font->Enabled = false; editor_font->SetSize(192,24); // editor_font->Editable = true; fixed1->Add(editor_font,112,80,1,0); fontbutton = new VDKCustomButton(this,(const char**) gnome_search_xpm,"_Font...",16,(GtkPositionType) 1); fontbutton->SetTip("Changes default font"); fontbutton->SetSize(104,22); fixed1->Add(fontbutton,0,80,1,0); bgbutton = new VDKCustomButton(this,(const char**) gnome_search_xpm,_("_Background"),16,(GtkPositionType) 1); bgbutton->SetTip(_("Changes background color")); bgbutton->SetSize(104,22); fixed1->Add(bgbutton,0,104,1,0); editor_bg = new VDKEntry(this,0); editor_bg->Enabled = false; editor_bg->SetSize(192,22); editor_bg->Editable = true; fixed1->Add(editor_bg,112,104,1,0); fgbutton = new VDKCustomButton(this,(const char**) gnome_search_xpm,("F_oreground"),16,(GtkPositionType) 1); fgbutton->SetTip(_("Changes foreground color")); fgbutton->SetSize(104,22); fixed1->Add(fgbutton,0,128,1,0); editor_fg = new VDKEntry(this,0); editor_fg->Enabled = false; editor_fg->SetSize(192,22); editor_fg->Editable = true; fixed1->Add(editor_fg,112,128,1,0); label6 = new VDKLabel(this,_("Minimum width")); label6->SetSize(88,16); fixed1->Add(label6,0,160,1,0); editor_size_x = new VDKSpinButton(this,400.000000,100.000000,1000.000000,10.000000,0.000000); editor_size_x->Digits = 0; editor_size_x->SetSize(64,20); fixed1->Add(editor_size_x,88,156,1,0); label7 = new VDKLabel(this,_("Minimum height")); label7->SetSize(88,16); fixed1->Add(label7,1,184,1,0); editor_size_y = new VDKSpinButton(this,400.000000,100.000000,1000.000000,10.000000,0.000000); editor_size_y->Digits = 0; editor_size_y->SetSize(64,20); fixed1->Add(editor_size_y,88,181,1,0); code_autoindent = new VDKCheckButton(this,_("code auto indent")); code_autoindent->SetSize(144,20); fixed1->Add(code_autoindent,162,157,1,0); showln = new VDKCheckButton(this,_("shows lines number")); showln->SetSize(144,20); fixed1->Add(showln,162,181,1,0); editortab = new VDKSpinButton(this,2.000000,2.000000,10.000000,1.000000,0.000000); editortab->Digits = 0; editortab->SetSize(64,20); fixed1->Add(editortab,88,208,1,0); label8 = new VDKLabel(this,_("Editor tabs")); label8->SetSize(88,16); fixed1->Add(label8,1,211,1,0); nbook_page3 = new VDKBox(this,v_box); nbook->AddPage(nbook_page3,_("Syntax colors")); fixed2 = new VDKFixed(this); nbook_page3->Add(fixed2,0,1,1,0); syntfontbutton = new VDKCustomButton(this,(const char**) gnome_search_xpm,"_Font...",16,(GtkPositionType) 1); syntfontbutton->SetTip(_("Changes default font")); syntfontbutton->SetSize(80,22); fixed2->Add(syntfontbutton,132,168,1,0); syntcolorbutton = new VDKCustomButton(this,(const char**) gnome_search_xpm,_("_Color..."),16,(GtkPositionType) 1); syntcolorbutton->SetTip(_("Changes foreground color")); syntcolorbutton->SetSize(80,22); fixed2->Add(syntcolorbutton,218,168,1,0); syntfont = new VDKEntry(this,0); syntfont->SetSize(165,22); fixed2->Add(syntfont,132,200,1,0); frame0 = new VDKFrame(this,_("Code example"),v_box,shadow_etched_in); frame0->Shadow = shadow_etched_in; frame0->Align = c_justify; frame0->SetSize(312,160); fixed2->Add(frame0,0,0,1,0); code_example = new VDKEditor(this); frame0->Add(code_example,0,1,1,0); char* tokenlistboxTitles[] = { _("tokens") }; tokenlistbox = new VDKCustomList(this,1,tokenlistboxTitles,(GtkSelectionMode) 0); tokenlistbox->SetSize(127,112); tokenlistbox->AutoResize = true; fixed2->Add(tokenlistbox,0,160,1,0); separator0 = new VDKSeparator(this,h_separator); vbox3->Add(separator0,0,0,0,0); hbox4 = new VDKBox(this,h_box); vbox2->Add(hbox4,0,0,0,0); hbox4->BorderWidth(0); done = new VDKCustomButton(this, (const char**) stock_button_ok_xpm,_("_Close and save"),16,(GtkPositionType) 1); hbox4->Add(done,0,1,0,0); cancel = new VDKCustomButton(this, (const char**) stop_xpm,_("_Cancel"),16,(GtkPositionType) 1); hbox4->Add(cancel,0,1,0,0); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_evbox.cc0000644000000000000000000006405310022113246014153 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include //#include #include #include #include #include #include #include #include #include #include #include #include #include static char buff[128]; extern char* wi_widget_prompts[]; int VDKBEventBox::Counter = 0; #define VERBOSE 0 /* properties */ char* vdkbox_props[] = { EVENTAWARE,DOCKABLE,0 }; DEFINE_EVENT_LIST(VDKBEventBox,VDKBEventContainer); DEFINE_SIGNAL_LIST(VDKBEventBox,VDKBEventContainer); /* */ bool VDKBEventBox:: DelBox(VDKObject* sender) { // not good OOP design here :-( // sorry. // box embedded can't be deleted bool cantDelete = (sender != NULL) && dynamic_cast(Parent()); if(! cantDelete) cantDelete = (sender != NULL) && dynamic_cast(Parent()); if(! cantDelete) cantDelete = (sender != NULL) && dynamic_cast(Parent()); if(! cantDelete) cantDelete = (sender != NULL) && dynamic_cast(Parent()); if(cantDelete) { //FIX ME: lang support Owner()->Application()->VDKMessageBox(APPNAME, _("Embedded boxes shouldn't be deleted"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok])); return true; } VDKBGuiForm* ownerform = dynamic_cast(Owner()); // call ancestor delete box VDKBEventContainer::DelBox(this); // notify to inspector that object was deleted if(ownerform) { VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) prjman->objInspector->SetActive(NULL); } return true; } /* */ bool VDKBEventBox::SetBoxSize(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { ownerform->SetBoxSize(NULL); } return true; } /* */ bool VDKBEventBox::Split(VDKObject* sender) { VDKBGuiForm* owner = dynamic_cast(Owner()); if(owner) { int mode = Mode(); for(sprintf(buff,"%cbox%d",mode == v_box ? 'v': 'h', VDKBEventBox::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"%cbox%d", mode == v_box ? 'v': 'h', VDKBEventBox::Counter); VDKBEventBox* newbox = new VDKBEventBox(buff,this,mode); Add(newbox); sprintf(buff,"%cbox%d", mode == v_box ? 'v': 'h', VDKBEventBox::Counter); newbox = new VDKBEventBox(buff,this,mode); Add(newbox); // owner->Changed = true; } return true; } /* */ bool VDKBEventBox::AddVBox(VDKObject* sender) { VDKBGuiForm* owner = dynamic_cast(Owner()); if(owner) { for(sprintf(buff,"vbox%d",VDKBEventBox::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"vbox%d",VDKBEventBox::Counter); VDKBEventBox* newbox = new VDKBEventBox(buff,this); Add(newbox); owner->Changed = true; } return true; } /* */ bool VDKBEventBox::AddHBox(VDKObject* sender) { VDKBGuiForm* owner = dynamic_cast(Owner()); if(owner) { for(sprintf(buff,"hbox%d",VDKBEventBox::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"hbox%d",VDKBEventBox::Counter); VDKBEventBox* newbox = new VDKBEventBox(buff,this,h_box); Add(newbox); owner->Changed = true; } return true; } /* ====================================================================== */ extern bool onDraggingAnObjectIntoAFixed; // plm patch // extern GtkWidget *grabbed_widget; extern "C" { GtkWidget* get_event_widget (GtkWidget *widget, GdkWindow *window, gint x, gint y, gint * x_return, gint * y_return); } bool VDKBEventBox::OnButtonPressed(VDKObject* sender, GdkEvent* ev) { // VDKBEventContainer* container = NULL; GdkEventButton* event = (GdkEventButton*) ev; gtk_signal_emit_stop_by_name(GTK_OBJECT(sender->WrappedWidget()), "button_press_event"); #if VERBOSE printf("\nVDKBEventBox::ButtonPressed"); fflush(stdout); #endif // pass to ancestor so widget will be marked // ** WARNING ** do not pass , // since this is the canvas when box // is empty and is destroyed // and replaced by an widget before HandleFixed // manages it VDKBEventContainer::OnButtonPressed(this,ev); // we allow only button 1 (3 is rerved for pop menu) if((event->button == 1) ) // if the box is contained into a fixed // allows moving/resizing job onDraggingAnObjectIntoAFixed = HandleFixed(this, event); return true; } /* overrides VDKObject::OnMouseMove to pass since normal sender is (boc place holder) */ bool VDKBEventBox::OnMouseMove(VDKObject* sender, GdkEvent* ev) { #if VERBOSE printf("\nVDKBEventBox::OnMouseMove"); fflush(stdout); #endif VDKBObject::OnMouseMove(this,ev); return true; } /* */ bool VDKBEventBox::OnButtonReleased(VDKObject* sender, GdkEvent* event) { #if VERBOSE printf("\nVDKBEventBox::OnButtonRelease"); fflush(stdout); #endif /* plm patch if(grabbed_widget) { gtk_grab_remove(grabbed_widget); grabbed_widget = NULL; } */ SetCursor(curDefault); gtk_signal_emit_stop_by_name(GTK_OBJECT(sender->WrappedWidget()), "button_release_event"); onDraggingAnObjectIntoAFixed = false; return true; } /////////////////////////////////////////////////////////////////////// /* Makes an insensitive empty box. (used by VDKBForm::Setup() */ VDKBEventBox::VDKBEventBox(char* name, VDKForm* owner,bool empty): VDKBEventContainer(name,owner) { Counter++; VDKBObject::object = this; VDKBEventContainer::mode = mode; AddBox(); } /* Makes a box thats is owned by a form */ VDKBEventBox::VDKBEventBox(char* name, VDKForm* owner, int mode, int w, int h): VDKBEventContainer(name,owner) { Counter++; VDKBObject::object = this; VDKBEventContainer::mode = mode; Init(w,h); } /* makes a box owned by another box */ VDKBEventBox::VDKBEventBox(char* name, VDKBEventContainer* outer, int mode, int w, int h): VDKBEventContainer(name,outer->Owner()) { VDKBObject::object = this; Counter++; outerbox = outer; VDKBEventContainer::mode = mode; Init(w,h); } /* */ void VDKBEventBox::Init(int w, int h) { int t; bool haveMenu = true; PreviewFlag = true; // add to VDKBox properties box properties // names. (Others props are prepended by VDKBObject constructor) for(t=0; vdkbox_props[t]; t++) proplist.add(VDKBProperty(vdkbox_props[t])); AddBox(); AddCanvas(w,h); // makes a pop menu, excluding embedded boxes into tables // that can't be splitted, swapped or removed // FIX ME: see if it is possible remove this limitation // if(outerbox != NULL) // haveMenu = (dynamic_cast(outerbox) == NULL); haveMenu = true; if(haveMenu) { popmenu = new VDKBContainerPopMenu(this); bool canDelete = true; // boxes embedded into a table, paned, frame // and notebook shouldn't be deleted if(outerbox) canDelete = (! dynamic_cast(outerbox)) && (! dynamic_cast(outerbox)) && (! dynamic_cast(outerbox)) && (! dynamic_cast(outerbox)) ; setsize = new VDKMenuItem(popmenu,_(wi_widget_prompts[19])); selectparent = new VDKMenuItem(popmenu,_(wi_widget_prompts[20])); SignalConnect(selectparent,"activate", &VDKBEventBox::SelectParentContainer); if(canDelete) { popmenu->Separator(); delBox = new VDKMenuItem(popmenu,_(wi_widget_prompts[21])); } else delBox = NULL; if(canDelete) SignalConnect(delBox,"activate",&VDKBEventBox::DelBox); SignalConnect(setsize,"activate",&VDKBEventBox::SetBoxSize); /* assign this as parent so this can receive signals */ popmenu->Parent(this); popmenu->Setup(); /* better add it to owner, so will be surely destroyed even if never popped */ Owner()->AddItem(popmenu); } else popmenu = NULL; // since box is created with a canvas inside // we connect the canvas if(canvas) { // these handlers ovverride VDKObject ones slot = EventConnect(canvas,"button_press_event", &VDKBEventBox::OnButtonPressed); EventConnect(canvas,"button_release_event", &VDKBObject::ButtonReleased); // others are inherited by VDKObject. EventConnect(canvas,"motion_notify_event", &VDKBEventBox::OnMouseMove); EventConnect("leave_notify_event",&VDKBObject::OnLeave); EventConnect("enter_notify_event",&VDKBObject::OnEnter); } // these handlers ovverride VDKObject ones EventConnect("button_press_event", &VDKBEventBox::OnButtonPressed); EventConnect("motion_notify_event",&VDKBEventBox::OnMouseMove); // others are inherited by VDKObject. EventConnect("button_release_event",&VDKBObject::ButtonReleased); EventConnect("enter_notify_event",&VDKBObject::OnEnter); EventConnect("leave_notify_event",&VDKBObject::OnLeave); } //////////////////////////////////////// /* */ void VDKBEventBox::AddBox() { switch(mode) { case v_box: container = gtk_vbox_new(FALSE,0); break; case h_box: container = gtk_hbox_new(FALSE,0); break; default: container = gtk_vbox_new(FALSE,0); } gtk_container_add(GTK_CONTAINER(widget),container); } /* */ void VDKBEventBox::AddCanvas(int w, int h) { canvas = new VDKBCanvas(Name(),Owner(),w,h); VDKRgb gray70("gray70"); if(gray70.IsValid()) canvas->NormalBackground = gray70; Add(canvas); } /* */ void VDKBEventBox::Add(VDKObject* obj, int justify, int expand, int fill , int padding) { // avoid to destroy himself if(canvas && canvas != obj) { boxlist.remove(canvas); if(slot) gtk_signal_disconnect(GTK_OBJECT(canvas->WrappedWidget()),slot); RemoveObject(canvas); canvas = NULL; VDKRgb gray70("gray70"); if(gray70.IsValid()) NormalBackground = gray70; } switch(justify) { case l_justify: gtk_box_pack_start(GTK_BOX(container), obj->Widget(),expand,fill,padding); break; case r_justify: gtk_box_pack_end(GTK_BOX(container), obj->Widget(),expand,fill,padding); break; default: gtk_box_pack_start(GTK_BOX(container), obj->Widget(),expand,fill,padding); } VDKRgb gray70("gray70"); if(gray70.IsValid()) obj->NormalBackground = gray70; gtk_widget_show(container); VDKBEventContainer::Add(obj,justify,expand,fill,padding); } /* */ void VDKBEventBox::AddWidget(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { // for now we use defaults: if(!forceArgs) { justify = l_justify; expand = PreviewFlag ? true : false; fill = PreviewFlag ? true : false; padding = PreviewFlag ? true : false; } if(canvas) { boxlist.remove(canvas); RemoveObject(canvas); canvas = NULL; VDKRgb gray70("gray70"); if(gray70.IsValid()) NormalBackground = gray70; } switch(justify) { case l_justify: gtk_box_pack_start(GTK_BOX(container), wid->Widget(),expand,fill,padding); break; case r_justify: gtk_box_pack_end(GTK_BOX(container), wid->Widget(),expand,fill,padding); break; default: gtk_box_pack_start(GTK_BOX(container), wid->Widget(),expand,fill,padding); } // adding a nested box set border width to 0 VDKBObject* vdkbobj = dynamic_cast(wid); if(vdkbobj) { VDKBEventBox* box = dynamic_cast(vdkbobj); if(box) { box->BorderWidth(0); box->SetPropValue(BORDERWIDTH,"0"); } } gtk_widget_show(container); VDKBEventContainer::Add(wid,l_justify,expand,fill,padding); } /* */ void VDKBEventBox::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { VDKBEventContainer::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\tmode:%s;", mode == v_box ? "v_box" : "h_box"); fprintf(fp,"\n\t%s%s;", PROP_EVENTAWARE,(char*) GetProp(EVENTAWARE)); fprintf(fp,"\n\t%s%s;", PROP_DOCKABLE,(char*) GetProp(DOCKABLE)); // not good oop design here :-( // store notebook page tab label if(dynamic_cast(Parent())) fprintf(fp,"\n\t%s\"%s\";",PROP_LABEL, (char*) GetProp(LABEL)); } char* VDKBEventBox::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_mode[16]; char obj_parent[128]; char temp[256]; char bw[16]; char arg[16]; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_mode,buffer,"mode:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return NULL; else source = new char[1024]; if(parser.GetParam(arg,buffer,PROP_EVENTAWARE) && !strcmp(arg,CHECK_TRUE)) sprintf(temp,"\n%s = new VDKEventBox(this,%s);",obj_name,obj_mode); else if(parser.GetParam(arg,buffer,PROP_DOCKABLE) && !strcmp(arg,CHECK_TRUE)) sprintf(temp,"\n%s = new VDKDockerBox(this,%s);",obj_name,obj_mode); else sprintf(temp,"\n%s = new VDKBox(this,%s);",obj_name,obj_mode); strcpy(source,temp); // get size VDKPoint size = parser.Size(buffer); if(size.X() > 0 || size.Y() > 0) { sprintf(temp,"\n%s->SetSize(%d,%d);",obj_name,size.X(),size.Y()); strcat(source,temp); } bool adjArg = true; // has parent if(strcmp(obj_parent,NIHIL_PROP)) { // bad OOP design here :-( // but in seek of semplicity.. // boxes embedded into notebooks act differently char* object = parser.GetWidget(obj_parent); char obj_class[32]; if(object) { // parent is a notebook if(parser.GetParam(obj_class,object,PARSER_CLASS) && !strcmp(obj_class,"VDKNotebook")) { bool nls_support = parser.CheckNLSSupport(); char label[128]; if(!parser.GetParam(label,buffer, PROP_LABEL)) *label = '\0'; if(nls_support) sprintf(temp,"\n%s->AddPage(%s,_(\"%s\"));", obj_parent, obj_name, *label ? label : obj_name); else sprintf(temp,"\n%s->AddPage(%s,\"%s\");", obj_parent, obj_name, *label ? label : obj_name); adjArg = false; } // other else if(parser.GetParam(obj_class,object,PARSER_CLASS) && !strcmp(obj_class,"VDKTable")) { int row,col; if(parser.GetParam(arg,buffer,PROP_TABLEROW) && strcmp(arg,NIHIL_PROP)) row = atoi(arg); else row = 0; if(parser.GetParam(arg,buffer,PROP_TABLECOL) && strcmp(arg,NIHIL_PROP)) col = atoi(arg); else col = 0; sprintf(temp,"\n%s->AddToCell(%s,%d,%d);", obj_parent,obj_name,row,col); adjArg = false; } else sprintf(temp,"\n%s->Add(%s",obj_parent,obj_name); delete[] object; } // other parents else sprintf(temp,"\n%s->Add(%s",obj_parent,obj_name); } else sprintf(temp,"\nAdd(%s",obj_name); strcat(source,temp); if(adjArg) { // prepares arguments for add widget to container char justify[16],expand[16],fill[16],padding[16]; if(parser.GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && parser.GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && parser.GetParam(fill,buffer,PROP_FILL_INTERNAL) && parser.GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(temp,",%s,%s,%s,%s);", justify,expand,fill,padding); strcat(source,temp); } else { sprintf(temp,");"); strcat(source,temp); } } if(parser.GetParam(bw,buffer,PROP_BORDERWIDTH) && strcmp(bw,NIHIL_PROP)) { sprintf(temp,"\n%s->BorderWidth(%s);",obj_name,bw); strcat(source,temp); } return source; } /* */ bool VDKBEventBox::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_mode[16]; char obj_parent[128]; VDKBEventBox* box; int mode; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_mode,buffer,"mode:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return false; // get mode and size mode = !strcmp(obj_mode,"h_box") ? h_box : v_box; VDKPoint size = parser.Size(buffer); // get packing args int justification = 0; int fill = 0,padding = 0; int expand = 0; int bw; // border width char arg[32]; if(parser.GetParam(arg,buffer,PROP_JUSTIFY_INTERNAL)) justification = atoi(arg); if(parser.GetParam(arg,buffer,PROP_EXPAND_INTERNAL)) expand = atoi(arg); if(parser.GetParam(arg,buffer,PROP_FILL_INTERNAL)) fill = atoi(arg); if(parser.GetParam(arg,buffer,PROP_PADDING_INTERNAL)) padding = atoi(arg); if(parser.GetParam(arg,buffer,PROP_BORDERWIDTH) && strcmp(arg,NIHIL_PROP)) bw = atoi(arg); else bw = -1; // no parent, widget will be added to owner form innerbox if(!strcmp(obj_parent,NIHIL_PROP)) { box = new VDKBEventBox(obj_name,owner->InnerBox(),mode); // call ancestor to set common properties VDKBObject::CreateWidget(box,buffer,parser); owner->AddWidget(box,justification,expand,fill,padding); if(size.X() > 0 || size.Y() > 0) box->ObjectFromVDK()->SetSize(size.X(),size.Y()); if(bw >= 0) { box->BorderWidth(bw); box->SetPropValue(BORDERWIDTH,arg); } if(parser.GetParam(arg,buffer,PROP_EVENTAWARE) && !strcmp(arg,CHECK_TRUE)) box->SetPropValue(EVENTAWARE,arg); } else // has a parent, will be added to parent. // Parent should be a container { // get parent container address VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { box = new VDKBEventBox(obj_name,container,mode); // bad OOP design here :-( // but in seek of semplicity.. // we use justification for row // and expand for col to add boxes char* object = parser.GetWidget(obj_parent); char obj_class[32]; if(object) { // parent is a table if(parser.GetParam(obj_class,object,PARSER_CLASS) && !strcmp(obj_class,"VDKTable")) { if(parser.GetParam(arg,buffer,PROP_TABLEROW) && strcmp(arg,NIHIL_PROP)) justification = atoi(arg); else justification = 0; if(parser.GetParam(arg,buffer,PROP_TABLECOL) && strcmp(arg,NIHIL_PROP)) expand = atoi(arg); else expand = 0; } } // call ancestor to set common properties VDKBObject::CreateWidget(box,buffer,parser); container->AddWidget(box,justification,expand,fill,padding,true); if(size.X() > 0 || size.Y() > 0) box->ObjectFromVDK()->SetSize(size.X(),size.Y()); box->outerbox = container; if(bw >= 0) { box->BorderWidth(bw); box->SetPropValue(BORDERWIDTH,arg); } if(parser.GetParam(arg,buffer,PROP_EVENTAWARE) && !strcmp(arg,CHECK_TRUE)) box->SetPropValue(EVENTAWARE,arg); if(parser.GetParam(arg,buffer,PROP_DOCKABLE) && !strcmp(arg,CHECK_TRUE)) box->SetPropValue(DOCKABLE,arg); } else return false; // FIX ME: user warning } return true; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ bool VDKBEventBox::OnSetEventBox(VDKObject*) { VDKString True = CHECK_TRUE; if(evboxCb->Checked && (GetProp(DOCKABLE) == True)) { Owner()->Application()->VDKMessageBox( APPNAME, _("Dockable and EventBox properties are\n\ mutually exclusive,\nEventBox won't be changed"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 5000); evboxCb->Checked = false; } else { SetPropValue(EVENTAWARE, evboxCb->Checked ? CHECK_TRUE : CHECK_FALSE); inspector->FormNeedToBeChanged(); } return true; } /* */ bool VDKBEventBox::OnSetDockable(VDKObject*) { VDKString True = CHECK_TRUE; if(dockCb->Checked &&(GetProp(EVENTAWARE) == True)) { Owner()->Application()->VDKMessageBox( APPNAME, _("Dockable and EventBox properties are\n\ mutually exclusive\nDockable won't be changed"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 5000); dockCb->Checked = false; } else { SetPropValue(DOCKABLE, dockCb->Checked ? CHECK_TRUE : CHECK_FALSE); inspector->FormNeedToBeChanged(); } return true; } /* This is called by object inspector when a widget is selected by user, thus to allow widget to set his own properties controls. */ VDKObjectContainer* VDKBEventBox::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; VDKBox* bframe = dynamic_cast(VDKBEventContainer::ExtraWidget(isp)); if(!bframe) return NULL; VDKTable *table = new VDKTable(inspector,1,2); evboxCb = new VDKCheckButton(inspector,"Event box"); evboxCb->SetTip(_("Make it a VDKEventBox")); table->AddToCell(evboxCb,0,0); evboxCb->Checked = GetProp(EVENTAWARE) == True; evboxCb->Parent(this); SignalConnect(evboxCb,"toggled",&VDKBEventBox::OnSetEventBox); dockCb = new VDKCheckButton(inspector,"Dockable"); dockCb->SetTip(_("Make it a VDKDockerBox")); table->AddToCell(dockCb,0,1); dockCb->Checked = GetProp(DOCKABLE) == True; dockCb->Parent(this); SignalConnect(dockCb,"toggled",&VDKBEventBox::OnSetDockable); bframe->Add(table,l_justify,false,false,false); return bframe; } /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget */ int VDKBEventBox::MakeWidgetV(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable box counter // to ensure unicity int result = 0; VDKBEventBox* box = NULL; if(owner->Active) { for(sprintf(buff,"vbox%d",VDKBEventBox::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"vbox%d",VDKBEventBox::Counter); box = new VDKBEventBox(buff,owner,v_box); VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { if(ev && dynamic_cast(container)) { GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); box->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); box->SetPropValue(EXPAND_INTERNAL,buff); sprintf(buff,"%d,%d",80,80); box->SetPropValue(USIZE,buff); box->SetSize(80,25); // others than justify and flag unuseful container->AddWidget(box,int(event->x), int(event->y), true,true,true); } else container->AddWidget(box); box->outerbox = container; } // target isn't a container else if(! owner->Active->AddToParent(box,ev)) result = 2; } else // no active widget result = 3; // 0 on success if(result && box) box->Destroy(); return result; } /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget */ int VDKBEventBox::MakeWidgetH(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable box counter // to ensure unicity int result = 0; VDKBEventBox* box = NULL; if(owner->Active) { for(sprintf(buff,"hbox%d",VDKBEventBox::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"hbox%d",VDKBEventBox::Counter); box = new VDKBEventBox(buff,owner,h_box); VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { if(ev && dynamic_cast(container)) { GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); box->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); box->SetPropValue(EXPAND_INTERNAL,buff); sprintf(buff,"%d,%d",80,80); box->SetPropValue(USIZE,buff); box->SetSize(80,25); // others than justify and flag unuseful container->AddWidget(box,int(event->x), int(event->y), true,true,true); } else container->AddWidget(box); box->outerbox = container; } // target isn't a container else if(! owner->Active->AddToParent(box,ev)) result = 2; } else // no active widget result = 3; // 0 on success if(result && box) box->Destroy(); return result; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_evcontain.cc0000644000000000000000000002670710022113246015022 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include #include #include "./pixmaps/border.xpm" extern OpState OperationalState; static char buff[256]; int VDKBCanvas::Counter = 0; int VDKBEventContainer::Counter = 0; /* properties */ char* vdkevcontainer_props[] = { BORDERWIDTH,0 }; DEFINE_EVENT_LIST(VDKBEventContainer,VDKObjectContainer); DEFINE_SIGNAL_LIST(VDKBEventContainer,VDKObjectContainer); /* */ VDKBEventContainer::VDKBEventContainer(char* name,VDKForm* owner): VDKObjectContainer(owner),VDKBObject(name) { int t; VDKBObject::object = this; widget = sigwid = gtk_event_box_new(); container = NULL; canvas = NULL; slot = 0; mode = -1; outerbox = NULL; popmenu = NULL; Counter++; EventConnect("expose_event",&VDKBEventContainer::OnExpose,true); for(t=0; vdkevcontainer_props[t]; t++) proplist.add(VDKBProperty(vdkevcontainer_props[t])); } /* checks if is a bin container and already contains a widget */ static char* prompt = N_("<%s> is a binary container,\n\ binary containers can contain only one widget.\n\ Remove the actual one before adding something else"); bool VDKBEventContainer::BinCheck(VDKObject* wid) { // scan an excpetion: scrolled window if(container && GTK_IS_BIN(container) && GTK_IS_SCROLLED_WINDOW(container) ) { GtkBin* bin = GTK_BIN(container); if(GTK_IS_VIEWPORT (bin->child) && GTK_BIN (bin->child)->child == NULL) return true; } // checks if is a bin with a child if(container && GTK_IS_BIN(container) && GTK_BIN(container)->child != NULL) { sprintf(buff,_(prompt),(char*) Name()); wid->Owner()->Application()->VDKMessageBox(APPNAME,buff, VDK_OK| VDK_ICONINFORMATION, _(user_messages[user_ok]), NULL, 8000); return false; } else if(container) return true; else return false; } /* */ extern VDKDnD *DragAndDrop ; void VDKBEventContainer::Add(VDKObject* obj, int justify, int expand, int fill, int padding) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) ownerform->Changed = true; boxlist.add(obj); VDKObjectContainer::Add(obj,justify,expand,fill,padding); VDKBEventContainer *box = dynamic_cast(obj); if(box && DragAndDrop) { // add to dnd support DragAndDrop->AddTarget(obj); // connect to drop ownerform->ConnectToDrop(obj); } #if 0 printf("\n************************"); fflush(stdout); // gtk_widget_set_size_request(obj->WrappedWidget(),50,30); #endif } /* */ VDKBEventContainer* VDKBEventContainer::Outerbox(VDKBEventContainer* b) { if(b) outerbox = b; return outerbox; } /* Removes active container and recursively remove parent boxes if empty. (disabled) With some exceptions: - boxes embedded in table,paned or notebook should not be removed - gui form inner box should not be removed */ bool VDKBEventContainer::DelBox(VDKObject* sender) { VDKBEventContainer* self = (VDKBEventContainer*) this; VDKBEventContainer* outer = self->outerbox; VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(! ownerform) return true; // paned,table,frame and notebook embedded boxes // cant be deleted if(outer && dynamic_cast(self)) { if( dynamic_cast(outer) || dynamic_cast(outer) || dynamic_cast(outer) || dynamic_cast(outer) ) return true; } // has a parent container if( outer ) { // removing the active one if ( ownerform->Active == self) ownerform->Active = NULL; outer->boxlist.remove(self); self->Visible = false; // this produce a strange bug // FIX ME: //outer->RemoveObject(self); // removes ancestor empty box if any // error prone :-( // recursive destroyng disabled // together with nested layouts // (see vdkb_evbox.cc) /* if( (outer != ownerform->InnerBox()) && (dynamic_cast(outer)) && (outer->boxlist.size() == 0) ) outer->DelBox(NULL); */ } // removing active one else if (ownerform->Active == self) ownerform->Active = NULL; ownerform->Changed = true; return true; } /* */ bool VDKBEventContainer::OnButtonPressed(VDKObject* sender, GdkEvent* event) { VDKBObject* prevActive = NULL; GdkEventButton* evbtn = (GdkEventButton*) event; VDKBObject* active = dynamic_cast(sender); VDKBGuiForm* ownerform = dynamic_cast(Owner()); // is still a valid widget ? if( ownerform->Active && GTK_IS_WIDGET (ownerform->Active->ObjectFromVDK()->Widget())) { ownerform->Active->ClearMark(); prevActive = ownerform->Active; } active->Mark(); ownerform->Active = active; switch(evbtn->button) { // STUB HERE case 1: if(OperationalState.state == op_stand_by && OperationalState.action == act_add_widget ) { // propagate to form OperationalState.source = NULL; ownerform->OnButtonPress(this,event); } // set active to object inspector else // propagate to form ownerform->OnButtonPress(sender,event); break; case 3: if(prevActive != active) ownerform->OnButtonPress(sender,event); active->PopMenu(); break; } return false;//true; } /* */ void VDKBEventContainer::ClearMark() { if(canvas) { canvas->Clear(); gtk_widget_draw(canvas->Widget(),NULL); } else VDKBObject::ClearMark(); } /* */ void VDKBEventContainer::Mark() { if(canvas) canvas->Mark(); else VDKBObject::Mark(); } /* */ bool VDKBEventContainer::OnExpose(VDKObject* sender, GdkEvent* ev) { VDKBGuiForm* ownerform = dynamic_cast(sender->Owner()); VDKBObject* self = dynamic_cast(sender); GdkEventExpose* event = (GdkEventExpose*) ev; if( ownerform && (ownerform->Active == self) && (event->count == 0) ) self->Mark(); return false; // true; } /* */ VDKObjectContainer* VDKBEventContainer::ExtraWidget(VDKBObjectInspector* isp) { inspector = isp; VDKBox* bframe = new VDKBox(inspector); VDKTable *table = new VDKTable(inspector,1,2); VDKBox* box = new VDKBox(inspector,h_box); VDKCustomButton* button = new VDKCustomButton(inspector,(const char**) border_xpm,NULL); button->SetTip(_("Set border width")); button->Relief = (GtkReliefStyle) 2; box->Add(button,l_justify,false,false,0); button->Parent(this); int bw = atoi( (char*) GetProp(BORDERWIDTH)); borderspin = new VDKSpinButton(inspector, bw, 0, 20 , 1 ,0 ); borderspin->SetSize(60,-1); box->Add(borderspin,l_justify,false,false,5); SignalConnect(button,"clicked",&VDKBEventContainer::OnBorderWidth); table->AddToCell(box,0,0); bframe->Add(table,l_justify,false,false,false); return bframe; } /* */ bool VDKBEventContainer::OnBorderWidth(VDKObject*) { sprintf(buff,"%d",(int) borderspin->ValueAsInt); SetPropValue(BORDERWIDTH,buff); BorderWidth((int) borderspin->ValueAsInt); inspector->FormNeedToBeChanged(); return true; } /* */ void VDKBEventContainer::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;",PROP_BORDERWIDTH,(char*) GetProp(BORDERWIDTH)); return; } /* */ bool VDKBEventContainer::SelectParentContainer(VDKObject*) { VDKBEventContainer* container = dynamic_cast(Parent()); if(container) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { ownerform->Active->ClearMark(); ownerform->Active = container; ownerform->Active->Mark(); VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) // prjman->objInspector->SetActive(container); prjman->objInspector->SelectWidgetByTree(container); } } return true; } ///////////////////////////////////////////////////// // ///////////////////////////////////////////////////// /* */ DEFINE_EVENT_LIST(VDKBCanvas,VDKCanvas); VDKBCanvas::VDKBCanvas(char* name,VDKForm* owner, int w, int h): VDKCanvas(owner,w,h),VDKBObject(name) { VDKBObject::object = this; Counter++; EventConnect("expose_event",&VDKBCanvas::OnExpose,true); } bool VDKBCanvas::OnExpose(VDKObject* sender, GdkEvent *ev) { GdkEventExpose* event = (GdkEventExpose*) ev; if(event->count > 0) return true; VDKPoint p = VDKPoint(Widget()->allocation.width, Widget()->allocation.height); // change line to dashed if(gc) { GdkGCValues gc_values; gdk_gc_get_values (gc, &gc_values); gdk_gc_set_line_attributes(gc, 1, GDK_LINE_ON_OFF_DASH, gc_values.cap_style, gc_values.join_style); } // set foreground to light gray VDKRgb light("gray90"); Foreground = light; // draw a rect around the box // first arg set to 0 means do not fill. DrawRect(0,0,0,p.x-1,p.y-1); Redraw(); return false;// true; } /* */ void VDKBCanvas::Mark() { VDKPoint p = VDKPoint(Widget()->allocation.width, Widget()->allocation.height); VDKRgb black("black"); Foreground = black; GdkRectangle brush; brush.width = 4; brush.height = 4; brush.x = 0; brush.y = 0; DrawRect(true,brush.x,brush.y,brush.width,brush.height); brush.x = 0; brush.y = p.Y()-brush.height; DrawRect(true,brush.x,brush.y,brush.width,brush.height); brush.x = p.X()-brush.width; brush.y = 0; DrawRect(true,brush.x,brush.y,brush.width,brush.height); brush.x = p.X()-brush.width; brush.y = p.Y()-brush.height; DrawRect(true,brush.x,brush.y,brush.width,brush.height); if(Parent() && Parent()->isA() == vdkbevbox_class) { VDKBEventBox* box = (VDKBEventBox*) Parent(); sprintf(buff,"%s",(char*) box->Name()); DrawString(10,20,buff); } Redraw(); } /* */ void VDKBCanvas::DrawUnfilledRect(int x, int y, int w, int h) { if(pixmap) gdk_draw_rectangle(pixmap, widget->style->fg_gc[GTK_WIDGET_STATE(widget)], FALSE, x,y,w,h); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_evlabel.cc0000644000000000000000000000267207305377011014455 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #include /* */ VDKBEvLabel::VDKBEvLabel(VDKForm* owner, const char* lbl, GtkJustification just): VDKEventBox(owner), Justify("Justify",this,just,&VDKBEvLabel::SetJustify), Caption ("Caption", this, lbl, &VDKBEvLabel::SetCaption, &VDKBEvLabel::GetCaption), CaptionWrap ("CaptionWrap", this, false, &VDKBEvLabel::SetCaptionWrap, &VDKBEvLabel::GetCaptionWrap) { if(lbl) { label = new VDKLabel(owner,(char*) lbl, just); Add(label,l_justify,false,false,false); } } vdkbuilder2-2.4.0/vdkbuilder/vdkb_evpbar.cc0000644000000000000000000000225107252425764014325 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #include /* */ VDKBEvProgressBar::VDKBEvProgressBar(VDKForm* owner, double min, double max): VDKEventBox(owner) { pbar = new VDKProgressBar(owner,min,max); Add(pbar,l_justify,false,false,false); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_evslider.cc0000644000000000000000000000220707252425764014664 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.3 * July 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #include /* */ VDKBEvSlider::VDKBEvSlider(VDKForm* owner): VDKEventBox(owner) { slider = new VDKSlider(owner,0.0,0.0,20.0,1.0,0.0); Add(slider,l_justify,false,false,false); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_fixed.cc0000644000000000000000000003635407454123426014152 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.5 * August 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include //#include #include #include #include #include #include #include #include #include #include #include #include "./pixmaps/grid.xpm" // for methods and other stuff #define CLASS VDKBFixed // put here vdk class name string #define VDK_CLASS "VDKFixed" // put here vdk class name #define VDK_ANCESTOR VDKFixed // put here here the widget will be named // (name+counter) #define VDK_WIDGET "fixed" static char buff[128]; extern char* wi_widget_prompts[]; int CLASS::Counter = 0; #define VERBOSE 0 /* properties */ char* vdkfixed_props[] = { HAVEGRID, GRIDHSPACE,GRIDVSPACE, 0 }; DEFINE_EVENT_LIST(CLASS,VDKBEventContainer); DEFINE_SIGNAL_LIST(CLASS,VDKBEventContainer); // into vdkb_widsel.c extern "C" void fixed_draw_grid (GtkWidget * widget, int grid_horz_spacing, int grid_vert_spacing, int grid_style); /* */ bool CLASS:: DelBox(VDKObject* sender) { // destroy inner gtk+ placeholder widget gtk_widget_destroy(container); // call ancestor delete box VDKBEventContainer::DelBox(sender); // notify to inspector that object was deleted VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) prjman->objInspector->SetActive(NULL); } return true; } /* */ bool CLASS::SetBoxSize(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { ownerform->SetBoxSize(NULL); } return true; } /* FIXED MOVING STUFF */ // plm patch // GtkWidget *grabbed_widget = NULL; bool CLASS::OnButtonPressed(VDKObject* sender, GdkEvent* event) { // pass to ancestor so widget will be marked gtk_signal_emit_stop_by_name(GTK_OBJECT(sender->WrappedWidget()), "button_press_event"); VDKBEventContainer::OnButtonPressed(this,event); OnExpose(NULL,NULL); /* plm patch if(grabbed_widget) { gtk_grab_remove(grabbed_widget); grabbed_widget = NULL; } */ return true; } /* */ bool CLASS::OnButtonReleased(VDKObject* sender, GdkEvent* event) { // pass to ancestor so widget will be marked gtk_signal_emit_stop_by_name(GTK_OBJECT(sender->WrappedWidget()), "button_release_event"); /* plm patch if(grabbed_widget) { gtk_grab_remove(grabbed_widget); grabbed_widget = NULL; } */ return true; } /* */ void CLASS::ClearMark() { VDKBObject::ClearMark(); OnExpose(NULL,NULL); } /* */ void CLASS::Mark() { VDKBObject::Mark(); OnExpose(NULL,NULL); } /* */ bool CLASS::OnExpose(VDKObject* sender, GdkEvent* ev) { // draw grid VDKString True = CHECK_TRUE; if(GetProp(HAVEGRID) == True) { int grid_horz_spacing = atoi((char*) GetProp(GRIDHSPACE)); int grid_vert_spacing = atoi((char*) GetProp(GRIDVSPACE)); grid_horz_spacing = grid_horz_spacing <= 0 ? 8: grid_horz_spacing; grid_vert_spacing = grid_vert_spacing <= 0 ? 8: grid_vert_spacing; fixed_draw_grid (container, grid_horz_spacing, grid_vert_spacing, 1); // dots } return true; } //=========================================== /* */ CLASS::CLASS(char* name, VDKForm* owner): VDKBEventContainer(name,owner) { Counter++; VDKBObject::object = this; VDKBEventContainer::mode = mode; Init(); } /* */ CLASS::CLASS(char* name,VDKBEventContainer* outer): VDKBEventContainer(name,outer->Owner()) { VDKBObject::object = this; Counter++; outerbox = outer; Init(); } /* */ void CLASS::Init() { int t; for(t=0; vdkfixed_props[t]; t++) proplist.add(VDKBProperty(vdkfixed_props[t])); SetPropValue(HAVEGRID,CHECK_TRUE); SetPropValue(GRIDHSPACE,"8"); SetPropValue(GRIDVSPACE,"8"); AddBox(); // makes a pop menu popmenu = new VDKBContainerPopMenu(this); setsize = new VDKMenuItem(popmenu,_(wi_widget_prompts[19])); selectparent = new VDKMenuItem(popmenu,_(wi_widget_prompts[20])); SignalConnect(selectparent,"activate", &CLASS::SelectParentContainer); delBox = new VDKMenuItem(popmenu,_(wi_widget_prompts[22])); SignalConnect(delBox,"activate",&CLASS::DelBox); SignalConnect(setsize,"activate",&CLASS::SetBoxSize); EventConnect("button_press_event", &CLASS::OnButtonPressed); EventConnect("button_release_event", &CLASS::OnButtonReleased); EventConnect("expose_event", &CLASS::OnExpose); EventConnect("motion_notify_event",&VDKBObject::OnMouseMove); /* assign this as parent so this can receive signals */ popmenu->Parent(this); popmenu->Setup(); /* better add it to owner, so will be surely destroyed even if never popped */ Owner()->AddItem(popmenu); } /* */ void CLASS::AddBox() { container = gtk_fixed_new(); gtk_container_add(GTK_CONTAINER(widget),container); gtk_widget_show(container); } /* extra args unused */ void CLASS::AddWidget(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { int x = justify; int y = expand; /* Calculate real position according to grid & snapping */ VDKString isTrue = CHECK_TRUE; // commented since always disregard fine positioning // Bug reported by John Coppens /* if(GetProp(HAVEGRID) == isTrue) { int horz_spacing = atoi((char*) GetProp(GRIDHSPACE)); int vert_spacing = atoi((char*) GetProp(GRIDVSPACE)); // snaps to grid x -= x % horz_spacing; y -= y % vert_spacing; } */ gtk_fixed_put(GTK_FIXED(container),wid->Widget(),x,y); VDKBEventContainer::Add(wid,l_justify,expand,fill,padding); } /* extra args used */ void CLASS::Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { AddWidget(wid,justify,expand,fill,padding,forceArgs); } /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable frame counter // to ensure unicity int result = 0; CLASS* fixed = NULL; if(owner->Active) { if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; fixed = new CLASS(buff,owner); VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { if(ev && dynamic_cast(container)) { GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); fixed->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); fixed->SetPropValue(EXPAND_INTERNAL,buff); // others than justify and flag unuseful container->AddWidget(fixed,int(event->x), int(event->y), true,true,true); } else container->AddWidget(fixed); fixed->outerbox = container; } else if(! owner->Active->AddToParent(fixed,ev)) // target isn't a container result = 2; } else // no active widget result = 3; // 0 on success if(result && fixed) fixed->Destroy(); return result; } //////////////////////////////////////////////////////////////////// /* */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { VDKBEventContainer::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_BORDERWIDTH,(char*) GetProp(BORDERWIDTH)); fprintf(fp,"\n\t%s%s;", PROP_HAVEGRID,(char*) GetProp(HAVEGRID)); fprintf(fp,"\n\t%s%s;", PROP_GRIDHSPACE,(char*) GetProp(GRIDHSPACE)); fprintf(fp,"\n\t%s%s;", PROP_GRIDVSPACE,(char*) GetProp(GRIDVSPACE)); } char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char temp[256]; char bw[16]; //char arg[128]; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,PARSER_THIS) || !parser.GetParam(obj_parent,buffer,PARSER_PARENT) ) return NULL; else source = new char[1024]; sprintf(temp,"\n%s = new %s(this);",obj_name,VDK_CLASS); strcpy(source,temp); // get size VDKPoint size = parser.Size(buffer); if(size.X() > 0 || size.Y() > 0) { sprintf(temp,"\n%s->SetSize(%d,%d);",obj_name,size.X(),size.Y()); strcat(source,temp); } if(strcmp(obj_parent,NIHIL_PROP)) sprintf(temp,"\n%s->%s(%s",obj_parent,STATEMENT_ADD,obj_name); else sprintf(temp,"\n%s(%s",STATEMENT_ADD,obj_name); strcat(source,temp); // prepares arguments for add widget to container char justify[16],expand[16],fill[16],padding[16]; if(parser.GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && parser.GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && parser.GetParam(fill,buffer,PROP_FILL_INTERNAL) && parser.GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(temp,",%s,%s,%s,%s);", justify,expand,fill,padding); strcat(source,temp); } else { sprintf(temp,");"); strcat(source,temp); } if(parser.GetParam(bw,buffer,PROP_BORDERWIDTH) && strcmp(bw,NIHIL_PROP)) { sprintf(temp,"\n%s->%s(%s);",obj_name,BORDERWIDTH,bw); strcat(source,temp); } return source; } /* */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; CLASS* box; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer, PARSER_THIS) || !parser.GetParam(obj_parent,buffer,PARSER_PARENT) ) return false; // get mode and size VDKPoint size = parser.Size(buffer); // get packing args int justification = l_justify; int expand=0,fill=0,padding=0; int bw; // border width char arg[32]; if(parser.GetParam(arg,buffer,PROP_JUSTIFY_INTERNAL)) justification = atoi(arg); if(parser.GetParam(arg,buffer,PROP_EXPAND_INTERNAL)) expand = atoi(arg); if(parser.GetParam(arg,buffer,PROP_FILL_INTERNAL)) fill = atoi(arg); if(parser.GetParam(arg,buffer,PROP_PADDING_INTERNAL)) padding = atoi(arg); if(parser.GetParam(arg,buffer,PROP_BORDERWIDTH) && strcmp(arg,NIHIL_PROP)) bw = atoi(arg); else bw = -1; // no parent, widget will be added to owner form innerbox if(!strcmp(obj_parent,NIHIL_PROP)) { box = new CLASS(obj_name,owner->InnerBox()); owner->AddWidget(box,justification,expand,fill,padding); } // get parent container address else { VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { box = new CLASS(obj_name,container); container->AddWidget(box,justification,expand,fill,padding,true); box->outerbox = container; } else // FIX ME: user warning return false; } // call ancestor to set common properties VDKBObject::CreateWidget(box,buffer,parser); if(size.X() > 0 || size.Y() > 0) box->ObjectFromVDK()->SetSize(size.X(),size.Y()); if(bw >= 0) { char local[16]; box->BorderWidth(bw); sprintf(local,"%d",bw); box->SetPropValue(BORDERWIDTH,local); } if(parser.GetParam(arg,buffer,PROP_HAVEGRID) && strcmp(arg,NIHIL_PROP)) box->SetPropValue(HAVEGRID,arg); if(parser.GetParam(arg,buffer,PROP_GRIDHSPACE) && strcmp(arg,NIHIL_PROP)) box->SetPropValue(GRIDHSPACE,arg); if(parser.GetParam(arg,buffer,PROP_GRIDVSPACE) && strcmp(arg,NIHIL_PROP)) box->SetPropValue(GRIDVSPACE,arg); return true; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { bool have_grid = false; int horz_spacing = 1,vert_spacing = 1; VDKString isTrue = CHECK_TRUE; have_grid = GetProp("have_grid") == isTrue; if(have_grid) { horz_spacing = atoi((char*) GetProp(GRIDHSPACE)); vert_spacing = atoi((char*) GetProp(GRIDVSPACE)); } VDKBox* bframe = dynamic_cast(VDKBEventContainer::ExtraWidget(isp)); if(!bframe) return NULL; VDKTable* table = new VDKTable(inspector,1,2,true); VDKBox* box = new VDKBox(inspector,h_box); setgrid = new VDKCustomButton(inspector,(const char**) grid_xpm,NULL); setgrid->SetTip(_(wi_widget_prompts[23])); setgrid->Relief = (GtkReliefStyle) 2; box->Add(setgrid,l_justify,false,false,0); setgrid->Parent(this); SignalConnect(setgrid,"clicked",&CLASS::OnSetGrid); gridcb = new VDKCheckButton(inspector,_(wi_widget_prompts[24])); gridcb->Checked = have_grid; box->Add(gridcb,l_justify,false,false,0); table->AddToCell(box,0,0); VDKBox* box1 = new VDKBox(inspector,h_box); vspace = new VDKSpinButton(inspector, vert_spacing, 1, 50 , 1 ,0 ); box1->Add(vspace,l_justify,false,false,0); hspace = new VDKSpinButton(inspector, horz_spacing, 1, 50 , 1 ,0 ); box1->Add(hspace,l_justify,false,false,0); table->AddToCell(box1,0,1); bframe->Add(table,l_justify,false,false,false); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnSetGrid(VDKObject*) { SetPropValue(HAVEGRID, gridcb->Checked ? CHECK_TRUE : CHECK_FALSE); sprintf(buff,"%d",(int) vspace->ValueAsInt); SetPropValue(GRIDVSPACE,buff); sprintf(buff,"%d",(int) hspace->ValueAsInt); SetPropValue(GRIDHSPACE,buff); inspector->FormNeedToBeChanged(); if(gridcb->Checked) fixed_draw_grid (Container(), (int) hspace->ValueAsInt, (int) vspace->ValueAsInt, 1); // dots return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_form.cc0000644000000000000000000015413710022113246013776 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include #include #include #if HAVE_GNOME #include #endif #include #include #define VERBOSE 0 #if HAVE_GNOME #include #include #endif extern OpState OperationalState; static char buff[256]; extern VDKDnD *DragAndDrop; extern DnDBuilderList* DragAndDropTable; extern char* wi_widget_prompts[]; /* yes agreed, this isn't a good c++ style, but believe me if you would have to fight with my new gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release) you have to invent some old dirty tricks */ VDKBConnection::VDKBConnection(char* sender, char* signal, char* slot, bool declare): sender(sender),signal(signal),slot(slot),declare(declare) { /* VDKBConnection::sender = sender; VDKBConnection::signal = signal; VDKBConnection::slot = slot; VDKBConnection::declare = declare; */ } /* */ bool VDKBConnection::operator==(VDKBConnection& c) { return sender == c.sender && signal == c.signal && slot == c.slot; } /* */ bool VDKBConnection::operator<(VDKBConnection& c) { return sender < c.sender; } //////////////////////////////////////// // /////////////////////////////////////// // in vdkb_design.cc extern FormEventHandlers evTableItems []; /* properties names */ char* vdkform_props[] = { TITLE, BACKPIX, FOCUSWIDGET, DISPLAY_TYPE, WINPOS, FREEZE_USIZE, 0 }; DEFINE_EVENT_LIST(VDKBGuiForm,VDKForm); DEFINE_SIGNAL_LIST(VDKBGuiForm,VDKForm); /* */ VDKObject* VDKBGuiForm::ChildWithName(char* name) { VDKString thisname = name; VDKObject *found = (VDKObject*) NULL; EventBoxListIterator li(innerbox->boxlist); for(;li;li++) { VDKObject* object = li.current(); VDKBObject* vdkobj = dynamic_cast(object); if(vdkobj && (vdkobj->Name() == thisname) ) { found = object;//vdkobj; if(found) break; } else if(vdkobj && dynamic_cast(vdkobj)) { VDKBEventContainer* box = (VDKBEventContainer*) vdkobj; found = RecursiveChildWithName(box->boxlist, name); if(found) break; } } return found; } /* */ VDKObject* VDKBGuiForm::RecursiveChildWithName(EventBoxList& list,char* name) { if(list.size() == 0) return NULL; VDKString thisname = name; EventBoxListIterator li(list); VDKObject *found = (VDKObject*) NULL; for(;li;li++) { VDKObject* object = li.current(); VDKBObject* vdkobj = dynamic_cast(object); if(vdkobj && (vdkobj->Name() == thisname) ) { found = object;//vdkobj; if(found) break; } else if(vdkobj && dynamic_cast(vdkobj)) { VDKBEventContainer* box = (VDKBEventContainer*) vdkobj; found = RecursiveChildWithName(box->boxlist,name); if(found) break; } else if(vdkobj && dynamic_cast(vdkobj)) { VDKBMenuItem* item = (VDKBMenuItem*) vdkobj; found = RecursiveChildWithName(item->boxlist,name); if(found) break; } } return found; } /* */ void VDKBGuiForm::AddWidget(VDKObject* obj, int justify, int expand, int fill , int padding, bool forceArgs) { if(innerbox) innerbox->Add(obj,justify, expand, fill, padding); Changed = true; } /* */ bool VDKBGuiForm::AddVBox(VDKObject*) { for(sprintf(buff,"vbox%d",VDKBEventBox::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"vbox%d",VDKBEventBox::Counter); VDKBEventBox *box = new VDKBEventBox(buff,innerbox); innerbox->Add(box); Changed = true; return true; } /* */ bool VDKBGuiForm::AddHBox(VDKObject*) { for(sprintf(buff,"hbox%d",VDKBEventBox::Counter); ChildWithName(buff)!= (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"hbox%d",VDKBEventBox::Counter); VDKBEventBox *box = new VDKBEventBox(buff,innerbox,h_box); innerbox->Add(box); // Changed = true; return true; } /* */ bool VDKBGuiForm::AddVFrame(VDKObject*) { for(sprintf(buff,"frame%d",VDKBFrame::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBFrame::Counter++) sprintf(buff,"frame%d",VDKBFrame::Counter); VDKBFrame *frame = new VDKBFrame(buff,innerbox); for(sprintf(buff,"vbox%d",VDKBEventBox::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"vbox%d",VDKBEventBox::Counter); VDKBEventBox *box1 = new VDKBEventBox(buff,frame); box1->SetPropValue(JUSTIFY_INTERNAL,"l_justify"); frame->AddWidget(box1,l_justify,true,true,true,true); innerbox->Add(frame); // Changed = true; return true; } /* */ bool VDKBGuiForm::AddToolbar(VDKObject*) { for(sprintf(buff,"toolbar%d",VDKBToolbar::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBToolbar::Counter++) sprintf(buff,"toolbar%d",VDKBToolbar::Counter); VDKBToolbar *tbar = new VDKBToolbar(buff,innerbox); innerbox->Add(tbar,l_justify,false,false,false); // Changed = true; return true; } /* */ bool VDKBGuiForm::AddHandleBox(VDKObject*) { for(sprintf(buff,"handlebox%d",VDKBHandleBox::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBHandleBox::Counter++) sprintf(buff,"handlebox%d",VDKBHandleBox::Counter); VDKBHandleBox *hb = new VDKBHandleBox(buff,innerbox); innerbox->Add(hb,l_justify,false,false,false); // Changed = true; return true; } /* bool VDKBGuiForm::AddPacker(VDKObject*) { for(sprintf(buff,"packer%d",VDKBPacker::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBPacker::Counter++) sprintf(buff,"packer%d",VDKBPacker::Counter); VDKBPacker *hb = new VDKBPacker(buff,innerbox); innerbox->Add(hb,l_justify,true,true,false); // Changed = true; return true; } */ /* */ bool VDKBGuiForm::AddFixed(VDKObject*) { for(sprintf(buff,"fixed%d",VDKBFixed::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBFixed::Counter++) sprintf(buff,"fixed%d",VDKBFixed::Counter); VDKBFixed *hb = new VDKBFixed(buff,innerbox); innerbox->Add(hb,l_justify,true,true,false); //Changed = true; return true; } /* */ bool VDKBGuiForm::AddScrolled(VDKObject*) { for(sprintf(buff,"scrolled%d",VDKBScrolled::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBScrolled::Counter++) sprintf(buff,"scrolled%d",VDKBScrolled::Counter); VDKBScrolled *scrolled = new VDKBScrolled(buff,innerbox); innerbox->Add(scrolled); // Changed = true; return true; } /* OBSOLETE usr is forced to add a table to another container */ bool VDKBGuiForm::AddTable(VDKObject*) { int rows = 3, cols = 3; for(sprintf(buff,"table%d",VDKBTable::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBTable::Counter++) sprintf(buff,"table%d",VDKBTable::Counter); VDKBTable *table = new VDKBTable(buff,innerbox,rows,cols,true); innerbox->Add(table); // Changed = true; return true; } /* */ bool VDKBGuiForm::AddMenubar(VDKObject*) { for(sprintf(buff,"Menubar%d",VDKBMenubar::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBMenubar::Counter++) sprintf(buff,"Menubar%d",VDKBMenubar::Counter); VDKBMenubar *menubar = new VDKBMenubar(buff,innerbox); innerbox->Add(menubar,l_justify,false,false,false); menubar->Parent(innerbox); // Changed = true; return true; } /* */ bool VDKBGuiForm::AddStatusbar(VDKObject*) { for(sprintf(buff,"statusbar%d",VDKBStatusbar::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBStatusbar::Counter++) sprintf(buff,"statusbar%d",VDKBStatusbar::Counter); VDKBStatusbar *statbar = new VDKBStatusbar(buff,this); innerbox->Add(statbar,r_justify,false,false,false); statbar->Parent(innerbox); return true; } #if HAVE_GNOME /* */ bool VDKBGuiForm::AddGnomeAppbar(VDKObject*) { for(sprintf(buff,"gnomeappbar%d",VDKBGnomeAppBar::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBGnomeAppBar::Counter++) sprintf(buff,"gnomeappbar%d",VDKBGnomeAppBar::Counter); VDKBGnomeAppBar *statbar = new VDKBGnomeAppBar(buff,this); innerbox->Add(statbar,r_justify,false,false,false); statbar->Parent(innerbox); return true; } #endif /* */ bool VDKBGuiForm::AddNotebook(VDKObject*) { char local[64]; for(sprintf(buff,"Nbook%d",VDKBGuiNotebook::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBGuiNotebook::Counter++) sprintf(buff,"Nbook%d",VDKBGuiNotebook::Counter); VDKBGuiNotebook *notebook = new VDKBGuiNotebook(buff,innerbox); innerbox->Add(notebook); sprintf(local,"%s_Page%d",buff,notebook->nbook->Pages.size()); VDKBEventBox *box = new VDKBEventBox(local,notebook); notebook->AddWidget(box); // Changed = true; return true; } /* */ bool VDKBGuiForm::AddHPaned(VDKObject*) { for(sprintf(buff,"HPaned%d",VDKBPaned::Counter); ChildWithName(buff)!= (VDKObject*) NULL; VDKBPaned::Counter++) sprintf(buff,"HPaned%d",VDKBPaned::Counter); VDKBPaned *paned = new VDKBPaned(buff,innerbox,h_box); // add two boxes to panes for(sprintf(buff,"Vbox%d",VDKBEventBox::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"Vbox%d",VDKBEventBox::Counter); VDKBEventBox *box1 = new VDKBEventBox(buff,paned); box1->SetPropValue(JUSTIFY_INTERNAL,"c_justify"); // to pane 1 paned->AddWidget(box1,c_justify); // for(sprintf(buff,"Vbox%d",VDKBEventBox::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"Vbox%d",VDKBEventBox::Counter); VDKBEventBox *box2 = new VDKBEventBox(buff,paned); box2->SetPropValue(JUSTIFY_INTERNAL,"r_justify"); // to pane 2 paned->AddWidget(box2,r_justify); // Changed = true; innerbox->Add(paned); return true; } /* */ bool VDKBGuiForm::AddVPaned(VDKObject*) { for(sprintf(buff,"VPaned%d",VDKBPaned::Counter); ChildWithName(buff)!= (VDKObject*) NULL; VDKBPaned::Counter++) sprintf(buff,"VPaned%d",VDKBPaned::Counter); VDKBPaned *paned = new VDKBPaned(buff,innerbox,v_box); // add two boxes to panes for(sprintf(buff,"Vbox%d",VDKBEventBox::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"Vbox%d",VDKBEventBox::Counter); VDKBEventBox *box1 = new VDKBEventBox(buff,paned); box1->SetPropValue(JUSTIFY_INTERNAL,"c_justify"); // to pane 1 paned->AddWidget(box1,c_justify); // for(sprintf(buff,"Vbox%d",VDKBEventBox::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"Vbox%d",VDKBEventBox::Counter); VDKBEventBox *box2 = new VDKBEventBox(buff,paned); box2->SetPropValue(JUSTIFY_INTERNAL,"r_justify"); // to pane 2 paned->AddWidget(box2,r_justify); // Changed = true; innerbox->Add(paned); return true; } /* */ bool VDKBGuiForm::AddVRadioBg(VDKObject*) { for(sprintf(buff,"VRadioButtonGroup%d",VDKBRadioButtonGroup::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBRadioButtonGroup::Counter++) sprintf(buff,"VRadioButtonGroup%d",VDKBRadioButtonGroup::Counter); VDKBRadioButtonGroup *box = new VDKBRadioButtonGroup(buff,innerbox); innerbox->Add(box); // Changed = true; return true; } /* */ bool VDKBGuiForm::AddHRadioBg(VDKObject*) { for(sprintf(buff,"HRadioButtonGroup%d",VDKBRadioButtonGroup::Counter); ChildWithName(buff) != (VDKObject*) NULL; VDKBRadioButtonGroup::Counter++) sprintf(buff,"HRadioButtonGroup%d",VDKBRadioButtonGroup::Counter); VDKBRadioButtonGroup *box = new VDKBRadioButtonGroup(buff,innerbox,h_box); innerbox->Add(box); // Changed = true; return true; } /* drag and drop support */ extern int MakeWidget(VDKBGuiForm* owner, int action_target, GdkEvent* ev = NULL); /* connect an container just added to form with dropping signal */ void VDKBGuiForm::ConnectToDrop(VDKObject* obj) { #if VERBOSE printf("\nVDKBGuiForm::ConnectToDrop(%p)",obj); fflush(stdout); #endif SignalConnect(obj,"dnd_dropped",&VDKBGuiForm::OnDropSignal,false); } /* */ bool VDKBGuiForm::OnDropSignal(VDKObject* sender) { VDKPoint point = DragAndDrop->DragPoint; VDKObject* source = DragAndDrop->DragSource; if(!source) return true; DnDBuilderEntry entry(source); // looks up on dnd table to find the source // and bind it with class id DnDBuilderEntry* found = DragAndDropTable->find(entry); if(found) { // properly sets operational state // so global MakeWidget() will work well. OperationalState.state = op_stand_by; OperationalState.action = act_add_widget; OperationalState.target = NULL; OperationalState.action_target = found->classid; // simulate a button press event // to trigger a "drop" sequence GdkEventButton event; event.button = 1; event.x = point.x; event.y = point.y; event.state = 0; // sets the sender as active widget on gui VDKBObject* active_sender = dynamic_cast(sender); if(active_sender) { Active = active_sender; // calls gui OnButtonPress() OnButtonPress(sender,(GdkEvent*) &event); } } return true; } /* this methods is the main entry point of all mouse clicking over gui editor. All widgets propagate click event until here. */ bool VDKBGuiForm::OnButtonPress(VDKObject* sender, GdkEvent* ev) { int result = 99; GdkEventButton *event = (GdkEventButton*) ev; bool isShift = event->state & GDK_SHIFT_MASK; switch(event->button) { // handle left-mouse button click case 1: // operational state shows that user has selected a widget // from tool palette if(OperationalState.state == op_stand_by && OperationalState.action == act_add_widget && OperationalState.target == NULL) { // change cursor shape to "repeat" mode if(isShift) Cursor = (VDKCursorType) GDK_DIAMOND_CROSS; // filters widget id's switch(OperationalState.action_target) { // these widgets goes into inner box directly case CONTAINERS_TOOL_MENUBAR: case MISC_TOOL_STATUSBAR: #if HAVE_GNOME case GNOME_TOOL_STATUSBAR: #endif result = 3; break; default: // jump to add widgets directly on inner form box if(!Active || (Active == this) || (Active == innerbox) ) result = 3; // normap procedure // call user selected tool // to make and add himself to nearest container else { // adding widgets to containers takes precedence if(sender) { VDKBObject* vdkbobj = dynamic_cast(sender); // adding widgets to a fixed container // makes mouse coordinates (ev) to // be passed to the borning widget if(vdkbobj && dynamic_cast(vdkbobj)) { result = MakeWidget(this, OperationalState. action_target,ev); } else // do not pass coordinates result = MakeWidget(this,OperationalState.action_target); } else // should never be the case result = 3; } break; } // adding unsuccessfull due to non active widget, // will be added to form inner box // if belongs to a container class // pr is a menu bar or status bar. if(result == 3) { switch(OperationalState.action_target) { case CONTAINERS_TOOL_VBOX: AddVBox(NULL); result = 0; break; case CONTAINERS_TOOL_HBOX: AddHBox(NULL); result = 0; break; case CONTAINERS_TOOL_FRAME: AddVFrame(NULL); result = 0; break; case CONTAINERS_TOOL_SCROLLED: AddScrolled(NULL); result = 0; break; case CONTAINERS_TOOL_MENUBAR: AddMenubar(NULL); result = 0; break; case CONTAINERS_TOOL_VPANED: AddVPaned(NULL); result = 0; break; case CONTAINERS_TOOL_HPANED: AddHPaned(NULL); result = 0; break; case CONTAINERS_TOOL_NBOOK: AddNotebook(NULL); result = 0; break; case CONTAINERS_TOOL_TOOLBAR: AddToolbar(NULL);result = 0; break; case CONTAINERS_TOOL_HANDLE: AddHandleBox(NULL);result = 0; break; case CONTAINERS_TOOL_VRADIOBG: AddVRadioBg(NULL);result = 0; break; case CONTAINERS_TOOL_HRADIOBG: AddHRadioBg(NULL);result = 0; break; /* case CONTAINERS_TOOL_PACKER: AddPacker(NULL);result = 0; break; */ case CONTAINERS_TOOL_FIXED: AddFixed(NULL);result = 0; break; case MISC_TOOL_STATUSBAR: AddStatusbar(NULL);result = 0; break; #if HAVE_GNOME case GNOME_TOOL_STATUSBAR: AddGnomeAppbar(NULL);result = 0; break; #endif default: result = 2; } } // parse result switch(result) { case 1: // unsupported widget sprintf(buff, _("Sorry, unsupported widget")); break; case 2: // unimplemented operation sprintf(buff, _("Sorry, unauthorized or unimplemented operation")); break; // obsolete case 4: // unuseful add a container to an empty container sprintf(buff, _("Sorry, nested layouts disabled")); break; default: sprintf(buff, _("Sorry, unknown editing error")); break; } // adding failed if(result) Application()->VDKMessageBox(APPNAME,buff, VDK_OK| VDK_ICONINFORMATION, (user_messages[user_ok]), NULL, 2000); // reset all selection at operation end // unless a shift-click is detected // useful to add multiple times equal widgets. if(!isShift) ((VDKBMainForm*)Application()->MainForm)->Reset(NULL); // load widget tree VDKBProjectManager* prjman = dynamic_cast(Owner()); if(prjman && prjman->objInspector) prjman->objInspector->LoadTree(this); } // from (if (OperationalState...) // normally processes a left click else if(sender && sender != innerbox) // try to activate an object inspector // refusing those coming from inner box { VDKBObject* vdkbobj = dynamic_cast(sender); VDKBProjectManager* prjman = dynamic_cast(Owner()); if(prjman && prjman->objInspector && vdkbobj) prjman->objInspector->SelectWidgetByTree(vdkbobj); } break; case 3: // handle right mouse click if(sender != innerbox) // try to activate an object inspector // refusing those coming from inner box { VDKBObject* vdkbobj = dynamic_cast(sender); VDKBProjectManager* prjman = dynamic_cast(Owner()); if(vdkbobj && prjman && prjman->objInspector ) prjman->objInspector->SelectWidgetByTree(vdkbobj); } break; // no others possibilities default: break; } return false;// true; } /* */ bool VDKBGuiForm::SetBoxSize(VDKObject* sender) { if(!dialog && Active) { sprintf(buff,_("Setting %s size"), (char*) Active->Name()); dialog = new VDKBPropSizeDialog(this,Active,buff); dialog->Setup(); dialog->ShowModal(); Changed = true; } return true; } ////////////////////////////////////////////////// // // ////////////////////////////////////////////////// VDKBGuiForm::VDKBGuiForm(VDKForm* owner, char* name, char* filename, char* title, int mode, int type, GtkWindowType display): VDKForm(owner,title,mode,display), VDKBObject(name), name(name),filename(filename) { form_type = type; ForceToClose = false; Active = NULL; dialog = NULL; innerbox = NULL; Changed = false; // assign this to VDKBObject member. object = this; int t; for(t=0; evTableItems[t].items[0]; t++) proplist.add(VDKBProperty(evTableItems[t].items[0])); for(t=0; vdkform_props[t]; t++) proplist.add(VDKBProperty(vdkform_props[t])); } /* */ void VDKBGuiForm::Setup(VDKBParser& parser, char* formname) { // avoid infinite recursion // make an empty innerbox true Add(innerbox = new VDKBEventBox(buff,this,true)); // setup default props SetupFormProperties(parser,name); // makes gui objects MakeGuiObjects(parser); // read signal file // and upload form SignalList ReadSignals(parser); // connect events EventConnect("focus_in_event",&VDKBGuiForm::OnFocusIn); EventConnect("focus_out_event",&VDKBGuiForm::OnFocusOut); EventConnect(innerbox,"button_press_event",&VDKBGuiForm::OnButtonPress); EventConnect("expose_event",&VDKBGuiForm::OnExpose); // connect form with key event // only for fixed moving/sizing EventConnect("key_press_event",&VDKBGuiForm::OnKey); // connect for key release (for cut & paste also) EventConnect("key_release_event",&VDKBGuiForm::OnKeyRelease); if(DragAndDrop) { // add inner box to dnd support DragAndDrop->AddTarget(innerbox); // connect to drop ConnectToDrop(innerbox); } // set initial position gtk_window_position(GTK_WINDOW(Window()),GTK_WIN_POS_NONE); } /* */ // in vdkb_parser.cc extern bool CreateWidget(VDKBGuiForm* owner, char* classname, char* buffer,VDKBParser& parser ); void VDKBGuiForm::MakeGuiObjects(VDKBParser& parser) { char arg[64]; char* object; char obj_name[128]; char obj_type[64]; char* p = parser.Buffer(); while( (p = strstr(p,"[object]")) ) { sprintf(arg,"[object]{"); object = ExtractSection(p,arg,"}"); if(object) { if(parser.GetObjectClass(object,obj_type) && parser.GetObjectName(object,obj_name) ) // create gui widget // using global scope resolution operator // to avoid ambiguity with VDKObject::CreateWidget() ::CreateWidget(this,obj_type,p,parser); p+=strlen(object); delete[] object; } } } /* */ void VDKBGuiForm::SetupFormProperties(VDKBParser& parser, char* formname) { char arg[128]; int t; char* object = parser.GetObject(formname); if(!object) return; DesignedSize = parser.Size(object); if(parser.GetParam(arg,object,PROP_TITLE)) { Title = arg; SetPropValue(TITLE,arg); } if(parser.GetParam(arg,object,PROP_BACKPIX) && strcmp(arg,NIHIL_PROP)) { VDKRawPixmap *pix = new VDKRawPixmap(this,arg); if(pix) BackgroundPixmap = pix; SetPropValue(BACKPIX,arg); } if(parser.GetParam(arg,object,PROP_FOCUSWIDGET) && strcmp(arg,NIHIL_PROP)) SetPropValue(FOCUSWIDGET,arg); if(parser.GetParam(arg,object,PROP_DISPLAY_TYPE) && strcmp(arg,NIHIL_PROP)) SetPropValue(DISPLAY_TYPE,arg); if(parser.GetParam(arg,object,PROP_WINPOS) && strcmp(arg,NIHIL_PROP)) SetPropValue(WINPOS,arg); if(parser.GetParam(arg,object,PROP_FREEZE_USIZE) && strcmp(arg,NIHIL_PROP)) SetPropValue(FREEZE_USIZE,arg); // others properties VDKBObject::CreateWidget(this, object, parser); // event handlers for(t=0; evTableItems[t].items[0];t++) { sprintf(buff,"%s:",evTableItems[t].items[0]); if(parser.GetParam(arg,object,buff)) SetPropValue(evTableItems[t].items[0],arg); } delete[] object; } /* */ void VDKBGuiForm::OnResize(VDKForm*, VDKPoint& newsize) { // gtk_widget_set_size_request(GTK_WIDGET(Window()),-1,-1); if( (newsize.X() > 20) && (newsize.Y() > 20) && (DesignedSize != newsize) ) { #if 0 printf("\nnew size:p(%d,%d)",newsize.x,newsize.y); fflush(stdout); #endif DesignedSize = newsize; Changed = true; if(Active) Active->Mark(); } } /* */ bool VDKBGuiForm::OnFocusIn(VDKObject*, GdkEvent*) { VDKBProjectManager* prjman = (VDKBProjectManager*) Owner(); // in vdkb_design.cc prjman->ActivateChild(this,true); return true; } /* */ bool VDKBGuiForm::OnExpose(VDKObject*, GdkEvent*) { if(Active) Active->Mark(); return true; } /* */ bool VDKBGuiForm::OnFocusOut(VDKObject*, GdkEvent*) { // VDKBProjectManager* prjman = (VDKBProjectManager*) Owner(); // in vdkb_design.cc // prjman->ActivateChild(this,false); return true; } /* */ bool VDKBGuiForm::CanClose() { if(! ForceToClose) { // simulates closing Visible = false; Owner()->OnChildClosing(this); return false; } else return true; } /* */ void VDKBGuiForm::OnChildClosing(VDKForm* child) { if(child == dialog) dialog = NULL; } void VDKBGuiForm::WriteFormFile() { FILE* fp = fopen(filename,"w+"); char* fname = (char*) Name(); if(!fp) return; // FIX ME user warning fprintf(fp,"[%s]\n{\n\tclass:%s;",fname, form_type == type_vdk_form ? "form" : "gnomeform"); fprintf(fp,"\n\t%s.this:%s;",fname,fname); fprintf(fp,"\n\t%s.%s%s;", fname, PROP_NORMALBACKGROUND, (char*) GetProp(NORMALBACKGROUND)); fprintf(fp,"\n\t%s.%s%s;", fname, PROP_FOREGROUND, (char*) GetProp(FOREGROUND)); fprintf(fp,"\n\t%s.%s\"%s\";", fname, PROP_FONT, (char*) GetProp( FONT)); fprintf(fp,"\n\t%s.%s%s;", fname, PROP_CURSOR, (char*) GetProp(CURSOR)); fprintf(fp,"\n\t%s.%s%s;", fname, PROP_BACKPIX, (char*) GetProp(BACKPIX)); fprintf(fp,"\n\t%s.%s%s;", fname, PROP_FOCUSWIDGET, (char*) GetProp(FOCUSWIDGET)); fprintf(fp,"\n\t%s.%s%s;", fname, PROP_DISPLAY_TYPE, (char*) GetProp(DISPLAY_TYPE)); fprintf(fp,"\n\t%s.%s%s;", fname, PROP_WINPOS, (char*) GetProp(WINPOS)); sprintf(buff,"%4d,%4d",DesignedSize.X(),DesignedSize.Y()); fprintf(fp,"\n\t%s.%s%s;",fname,PROP_USIZE,buff); fprintf(fp,"\n\t%s.%s%s;", fname, PROP_FREEZE_USIZE, (char*) GetProp(FREEZE_USIZE)); fprintf(fp,"\n\t%s.Title:\"%s\";",fname, (char*) GetProp("Title")); // event handlers int t; for(t=0; evTableItems[t].items[0];t++) { fprintf(fp,"\n\t%s.%s:%s;", fname, evTableItems[t].items[0], (char*) GetProp(evTableItems[t].items[0])); } fprintf(fp,"\n}"); // recursively writes boxes WriteBoxesOnFrm(fp); // writes signals WriteSignals(fp); fclose(fp); } /* */ void VDKBGuiForm::WriteBoxesOnFrm(FILE* fp) { EventBoxListIterator li(innerbox->boxlist); for(;li;li++) { VDKObject* object = li.current(); VDKBObject* vdkobj = dynamic_cast(object); if(vdkobj && vdkobj->isA() != vdkbcanvas_class) { // fp and parent (nihil in this case) vdkobj->WriteOnFrm(fp,NULL); vdkobj->WriteOnFrmEnd(fp); } if(vdkobj && dynamic_cast(vdkobj)) { VDKBEventContainer* box = (VDKBEventContainer*) vdkobj; RecursiveWriteBoxesOnFrm(vdkobj,box->boxlist,fp); } } } /* Don't be mangled with name, really boxes can contain any widget */ void VDKBGuiForm::RecursiveWriteBoxesOnFrm(VDKBObject* parentobj, EventBoxList& list, FILE* fp) { if(list.size() == 0) return; // iterates on boxes EventBoxListIterator li(list); for(;li;li++) { VDKObject* object = li.current(); VDKBObject* vdkobj = dynamic_cast(object); // gui widgets inner canvases must be neglected if(vdkobj && vdkobj->isA() != vdkbcanvas_class) { vdkobj->WriteOnFrm(fp,parentobj); vdkobj->WriteOnFrmEnd(fp); } // recurs on inner boxes or menu items (if any) if(vdkobj && dynamic_cast(vdkobj)) { VDKBEventContainer* box = (VDKBEventContainer*) vdkobj; RecursiveWriteBoxesOnFrm(vdkobj,box->boxlist,fp); } else if(vdkobj && dynamic_cast(vdkobj)) { VDKBMenuItem* item = (VDKBMenuItem*) vdkobj; if(item) RecursiveWriteBoxesOnFrm(vdkobj,item->boxlist,fp); } } } /* */ void VDKBGuiForm::WriteSignals(FILE* fp) { VDKBConnectionListIterator li(SignalList); for(;li;li++) { fprintf(fp,"\n[connect]{"); fprintf(fp,"\n\tsender:%s;",(char*) li.current().sender); fprintf(fp,"\n\tsignal:%s;",(char*) li.current().signal); fprintf(fp,"\n\tslot:%s;",(char*) li.current().slot); fprintf(fp,"\n\tdeclare:%s;", li.current().declare ? "1" : "0"); fprintf(fp,"}"); } } /* This is called by WidgetPopmenu::DelWidget(VDKObject*) when an object is removed. */ void VDKBGuiForm::DisconnectWidget(VDKBObject* wid) { g_return_if_fail(wid != NULL); VDKString sender = wid->Name(); VDKBConnectionList list; VDKBConnectionListIterator li(SignalList); // make a collection of all matching names for(;li;li++) { if(li.current().sender == sender) list.add(li.current()); } if(list.size() <= 0) return; // delete collection in original list VDKBConnectionListIterator ld(list); for(;ld;ld++) { int ndx = SignalList.at(ld.current()); if(ndx>=0) SignalList.unlink(ndx); } } /* */ void VDKBGuiForm::ChangeConnectionSenderName(VDKString& newname, VDKString& oldname) { VDKBConnectionListIterator li(SignalList); for(;li;li++) { if(li.current().sender == oldname) li.current().sender = newname; } } /* autogenerate first suitable widget counter to ensure unicity */ bool VDKBGuiForm::GenerateWidgetName(char* target, const char* class_prefix, int* widget_counter) { const int counter_limit = 2000; // safer int t = 0; for( sprintf(target,"%s%d",class_prefix,*widget_counter); (ChildWithName(target) != (VDKObject*) NULL) && (t < counter_limit); (*widget_counter)++,t++ ) sprintf(target,"%s%d",class_prefix,*widget_counter); if(t >= counter_limit) return false; else return true; } /* add a widget to self -------------------------------------------------- 1. look at active widget. if active is a container add widget to active 2. if active isn't a container try to add widget to active parent (a container) 3. if no active widget returns code 3 (add to an empty form) ----------------------------------------------------------- Returns: 0 - successfull 1 - unsupported widget 2 - unauthorized operation 3 - no parent (form is empty) */ int VDKBGuiForm::AddToSelf(VDKBObject* widget,GdkEvent* ev) { VDKObject *object = dynamic_cast(widget); char* p = (char*) widget->GetProp(VISIBLE); bool hidden = (p && !strcmp(p,CHECK_FALSE)); if(object && Active) { VDKBEventContainer* container = dynamic_cast(Active); if(container) { bool flag = false; VDKBProjectManager* prjman = dynamic_cast(Owner()); if(prjman && prjman->objInspector) flag = prjman->objInspector->preview->Checked; if(ev && dynamic_cast(container)) { GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); widget->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); widget->SetPropValue(EXPAND_INTERNAL,buff); container->AddWidget(object,int(event->x), int(event->y), flag,0,true); if(hidden) object->Visible = false; } else { container->AddWidget(object, l_justify, flag,flag,true,flag); if(hidden) object->Visible = false; } } else if(!Active->AddToParent(object,ev)) return 2; } else return 3; return 0; } /* */ int VDKBGuiForm::AddContainerToSelf(VDKBEventContainer* widget,GdkEvent* ev) { VDKObject *object = dynamic_cast(widget); char* p = (char*) widget->GetProp(VISIBLE); bool hidden = (p && !strcmp(p,CHECK_FALSE)); if(object && Active) { VDKBEventContainer* container = dynamic_cast(Active); if(container) { if(ev && dynamic_cast(container)) { GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); widget->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); widget->SetPropValue(EXPAND_INTERNAL,buff); // others than justify and flag unuseful container->AddWidget(widget, int(event->x), int(event->y), true,true,true); if(hidden) object->Visible = false; } else { container->AddWidget(widget); if(hidden) object->Visible = false; } widget->Outerbox(container); } else if(! Active->AddToParent(widget,ev)) // target isn't a container return 2; } else return 3; return 0; } /* */ bool VDKBGuiForm::PackToSelf(VDKBObject* widget, VDKBEventContainer* container, char* buffer, VDKBParser& parser, char* obj_parent) { int justification = l_justify; int expand=0,fill=0,padding=0; VDKObject *object = dynamic_cast(widget); if(!object) return false; ///////////////////////////////////////// // call ancestor to set common properties VDKBObject::CreateWidget(widget,buffer,parser); // prepares packing args based on those loaded by char* p = (char*) widget->GetProp(JUSTIFY_INTERNAL); justification = atoi(p); p = (char*) widget->GetProp(EXPAND_INTERNAL); expand = atoi(p); p = (char*) widget->GetProp(FILL_INTERNAL); fill = atoi(p); p = (char*) widget->GetProp(PADDING_INTERNAL); padding = atoi(p); p = (char*) widget->GetProp(VISIBLE); bool hidden = (p &&!strcmp(p,CHECK_FALSE)); // if has a parent name and is nihil // widget will be packed into form inner box // (used to pack menubar and status bar directly) if(obj_parent && !strcmp(obj_parent,NIHIL_PROP)) AddWidget(object,justification,expand,fill,padding); else // last arg forces AddWidget() to use packing args. container->AddWidget(object,justification,expand,fill,padding,true); if(hidden) object->Visible = false; return true; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ static char* form_display_types[] = { "GTK_WINDOW_TOPLEVEL", "GTK_WINDOW_POPUP", 0 }; static char* win_positions[] = { "GTK_WIN_POS_NONE", "GTK_WIN_POS_CENTER", "GTK_WIN_POS_MOUSE", "GTK_WIN_POS_CENTER_ALWAYS", 0 }; VDKObjectContainer* VDKBGuiForm::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); bframe->SetSize(280,-1); // FIX ME: lang support VDKTable* table = new VDKTable(inspector,6,2,false); VDKCustomButton* button = new VDKCustomButton(inspector,_(wi_widget_prompts[27])); table->AddToCell(button,0,0); button->Parent(this); SignalConnect(button,"clicked",&VDKBGuiForm::OnSetFormTitle); title = new VDKEntry(inspector,0,(char*) GetProp(TITLE)); title->SetSize(100,-1); table->AddToCell(title,0,1); button = new VDKCustomButton(inspector,_(wi_widget_prompts[28])); table->AddToCell(button,1,0); button->Parent(this); SignalConnect(button,"clicked",&VDKBGuiForm::OnSetGlyph); VDKString s = GetProp(BACKPIX); pixfile = new VDKEntry(inspector,0, !strcmp((char*) s,NIHIL_PROP) ? NULL : (char*) s); pixfile->SetSize(100,-1); table->AddToCell(pixfile,1,1); pixfile->Editable = true; pixfile->Parent(this); pixfile->SetTip(_("Enter \"nihil\" to reset assigned pixmap")); SignalConnect(pixfile,"activate",&VDKBGuiForm::OnSetGlyph); free_usize = new VDKCheckButton(inspector,_(wi_widget_prompts[62])); free_usize->SetTip(_(wi_widget_prompts[63])); table->AddToCell(free_usize,2,0); free_usize->Parent(this); SignalConnect(free_usize,"toggled",&VDKBGuiForm::OnSetFreeUsize); free_usize->Checked = !strcmp(GetProp(FREEZE_USIZE),CHECK_TRUE); // unfreeze minimum size if(! free_usize->Checked) SetSize(0,0); shortname = new VDKCustomButton(inspector,_(wi_widget_prompts[8])); shortname->SetTip(_(wi_widget_prompts[9])); table->AddToCell(shortname,2,1); shortname->Parent(this); SignalConnect(shortname,"clicked",&VDKBGuiForm::OnSetShortName); shortname->Enabled = false; focuswidget = new VDKEntry(inspector,0,(char*) GetProp(FOCUSWIDGET)); focuswidget->SetSize(100,-1); table->AddToCell(focuswidget,3,1); button = new VDKCustomButton(inspector,_(wi_widget_prompts[29])); table->AddToCell(button,3,0); button->Parent(this); SignalConnect(button,"clicked",&VDKBGuiForm::OnSetFocusWidget); set_dsp = new VDKCustomButton(inspector,_(wi_widget_prompts[60])); table->AddToCell(set_dsp,4,0); set_dsp->Parent(this); SignalConnect(set_dsp,"clicked",&VDKBGuiForm::OnSetDisplayType); display_type = new VDKCombo(inspector,NULL); display_type->SetSize(100,-1); table->AddToCell(display_type,4,1); display_type->Parent(this); StringList types = display_type->PopdownStrings; for(int t = 0;form_display_types[t]; t++) types.add(form_display_types[t]); display_type->PopdownStrings = types; int r = atoi(GetProp(DISPLAY_TYPE)); display_type->SelectItem(r); set_ip = new VDKCustomButton(inspector,_(wi_widget_prompts[61])); table->AddToCell(set_ip,5,0); set_ip->Parent(this); SignalConnect(set_ip,"clicked",&VDKBGuiForm::OnSetInitialPosition); winpos = new VDKCombo(inspector,NULL); winpos->SetSize(100,-1); table->AddToCell(winpos,5,1); winpos->Parent(this); StringList pos = winpos->PopdownStrings; for(int t = 0; win_positions[t]; t++) pos.add(win_positions[t]); winpos->PopdownStrings = pos; r = atoi(GetProp(WINPOS)); winpos->SelectItem(r); bframe->Add(table,l_justify,false,false,0); return bframe; } /* */ bool VDKBGuiForm::OnSetFreeUsize(VDKObject*) { bool checked = free_usize->Checked; if(!checked) { SetPropValue(FREEZE_USIZE,CHECK_FALSE); gtk_widget_set_size_request(GTK_WIDGET(WrappedWidget()),0,0); } else { int w = GTK_WIDGET(WrappedWidget())->allocation.width; int h = GTK_WIDGET(WrappedWidget())->allocation.height; SetSize(w,h); SetPropValue(FREEZE_USIZE,CHECK_TRUE); } inspector->FormNeedToBeChanged(); return true; } /* */ bool VDKBGuiForm::OnSetDisplayType(VDKObject*) { int selected = display_type->Selected; selected = (selected >= 0 && selected <= 1) ? selected : 0; sprintf(buff,"%d",selected); SetPropValue(DISPLAY_TYPE,buff); inspector->FormNeedToBeChanged(); return true; } /* */ bool VDKBGuiForm::OnSetInitialPosition(VDKObject*) { int selected = winpos->Selected; selected = (selected >= 0 && selected <= 3) ? selected : 0; sprintf(buff,"%d",selected); SetPropValue(WINPOS,buff); inspector->FormNeedToBeChanged(); return true; } /* */ bool VDKBGuiForm::OnSetFormTitle(VDKObject*) { if(strlen(title->Text)>0) sprintf(buff,"%s",(char*) title->Text); else sprintf(buff,"%s",NIHIL_PROP); SetPropValue(TITLE,buff); Title = VDKString(title->Text); inspector->FormNeedToBeChanged(); return true; } /* */ bool VDKBGuiForm::OnSetGlyph(VDKObject* sender) { char* pix = pixfile->Text; if(sender == pixfile) { if (!strcmp(pix,NIHIL_PROP)) { SetPropValue(BACKPIX,pix); BackgroundPixmap = NULL; gtk_widget_queue_draw(GTK_WIDGET(Window())); inspector->FormNeedToBeChanged(); } } else { FileStringArray selections; VDKXpmBrowser *child = new VDKXpmBrowser(Owner(),&selections, _(file_dialog_prompts[0])); child->ShowModal(); if(selections.size() > 0) { VDKRawPixmap *pix; pix = new VDKRawPixmap(this,(char*) selections[0]); if(pix) { BackgroundPixmap = pix; pixfile->Text = (char*) selections[0]; SetPropValue(BACKPIX,(char*) selections[0]); inspector->FormNeedToBeChanged(); shortname->Enabled = true; gtk_widget_queue_draw(GTK_WIDGET(Window())); } } } return true; } /* */ bool VDKBGuiForm::OnSetShortName(VDKObject*) { VDKString s = GetProp("BackgroundPixmap"); VDKString path; VDKBProject* project; VDKBProjectManager* prjman; if(!inspector) return true; prjman = dynamic_cast(inspector->Owner()); if(!prjman) return true; project = prjman->Project(); if(!project) return true; path = project->Path; sprintf(buff,"cp %s %s/",(char*) s, (char*) path); system(buff); char* p = get_shortfilename((char*) s); if(p) { VDKString short_name = p; pixfile->Text = (char*) short_name; SetPropValue(BACKPIX,(char*) short_name); shortname->Enabled = false; inspector->FormNeedToBeChanged(); } return true; } /* */ bool VDKBGuiForm::OnSetFocusWidget(VDKObject*) { if(strlen(focuswidget->Text)>0) sprintf(buff,"%s",(char*) focuswidget->Text); else sprintf(buff,"%s",NIHIL_PROP); SetPropValue(FOCUSWIDGET,buff); inspector->FormNeedToBeChanged(); return true; } /* ======================================================= Widgets cut & paste, minimum size, size and position management using keyboard ======================================================= */ /* here we manage moving - resizing for those widget contained into a fixed. left,up,right,down key : moving (fine tuning: 1 pixel) shif + key: moving to snap grid ctrl + left,up,right,down key: sizing (fine tuning: 1 pixel) ctrl + shift + key: sizing to snap grid */ extern "C" { void fixed_draw_grid (GtkWidget * widget, int grid_horz_spacing, int grid_vert_spacing, int grid_style); } static void snap_left(VDKPoint& new_position, int horz_spacing) { if(!(new_position.x%horz_spacing)) new_position.x -= horz_spacing; else { //snaps left new_position.x += horz_spacing / 2; new_position.x -= new_position.x % horz_spacing; new_position.x -= horz_spacing; } } static void snap_right(VDKPoint& new_position, int horz_spacing) { if(!(new_position.x%horz_spacing)) new_position.x += horz_spacing; else { //snaps right new_position.x += horz_spacing / 2; new_position.x -= new_position.x % horz_spacing; } } static void snap_top(VDKPoint& new_position, int vert_spacing) { if(!(new_position.y%vert_spacing)) new_position.y -= vert_spacing; else { //snaps top new_position.y += vert_spacing / 2; new_position.y -= new_position.y % vert_spacing; } } static void snap_bottom(VDKPoint& new_position, int vert_spacing) { if(!(new_position.y%vert_spacing)) new_position.y += vert_spacing; else { //snaps bottom new_position.y += vert_spacing / 2; new_position.y -= new_position.y % vert_spacing; } } SizeTipWin* sizetipwin = NULL; static VDKPoint minwsize; void SizeTipWin::Setup(void) { VDKEventBox *vbox = new VDKEventBox(this,v_box); Add(vbox,0,1,1,0); vbox->NormalBackground = VDKRgb(255,255,255); label = new VDKLabel(this,tip); vbox->Add(label,0,1,1,0); } void SizeTipWin::Update(VDKPoint p) { sprintf(buff,_("Min.size:%d,%d"),p.x,p.y); label->Caption = buff; } bool VDKBGuiForm::OnKey(VDKObject* sender, GdkEvent* ev) { g_return_val_if_fail (sender != NULL, FALSE); g_return_val_if_fail (ev != NULL, FALSE); gtk_signal_emit_stop_by_name(GTK_OBJECT(sender->Widget()), "key_press_event"); GdkEventKey* event = (GdkEventKey*) ev; if(!HandleCutAndPaste(sender,ev)) { if(!HandleOnKey(sender,event)) { bool isCtrl = (event->keyval == GDK_Control_L) || (event->keyval == GDK_Control_R); // first time control is pressed if(Active && isCtrl && (!sizetipwin)) { VDKPoint p = Active->ObjectFromVDK()->Usize; minwsize = p; } HandleMinSize(sender,ev); } } return true; } /* */ bool VDKBGuiForm::HandleMinSize(VDKObject* sender, GdkEvent* ev) { VDKBEventContainer* container = NULL; VDKBFixed* fixed = NULL; GdkEventKey* event = (GdkEventKey*) ev; bool isKey = false; bool isCtrl = event->state & GDK_CONTROL_MASK; // we check if: // - there is an active widget // - active widget has a parent container // - key hits (only arrow keys allowed) // - parent container is a non fixed (allows resizing) // if((!isCtrl) || (!Active)) return false; else { container = dynamic_cast(Active->ObjectFromVDK()->Parent()); isKey = (event->keyval == GDK_Up) || (event->keyval == GDK_Right) || (event->keyval == GDK_Down) || (event->keyval == GDK_Left); } // if((!isKey) || (!container) ) return false; else if((fixed = dynamic_cast(container))) return false; // manage min size switch(event->keyval) { case GDK_Up: minwsize.y = minwsize.y > 0 ? minwsize.y - 1 : minwsize.y; break; case GDK_Down: minwsize.y++; break; case GDK_Right: minwsize.x++; break; case GDK_Left: minwsize.x = minwsize.x > 0 ? minwsize.x - 1 : minwsize.x; break; } // set new size Active->ObjectFromVDK()->Usize = minwsize; sprintf(buff,"%d,%d",minwsize.x,minwsize.y); Active->SetPropValue(USIZE,buff); Changed = true; // update or create size tip win if(!sizetipwin) { sprintf(buff,_("Min.size:%d,%d"),minwsize.x,minwsize.y); int x, y; GtkWidget* wid = GTK_WIDGET(Active->ObjectFromVDK()->Widget()); gdk_window_get_deskrelative_origin(wid->window, &x,&y); sizetipwin = new SizeTipWin(Owner(),buff); sizetipwin->Setup(); sizetipwin->Position = VDKPoint(x,y); sizetipwin->Show(); } else if(sizetipwin) sizetipwin->Update(minwsize); return true; } bool VDKBGuiForm::HandleBeforeOnKeyRelease(VDKObject* sender, GdkEvent* ev) { OnKeyRelease(sender,ev); return true; } /* handles: - ctrl-x: cut widget - ctrl-v: paste widget - ctrl-c: copy widget */ bool VDKBGuiForm::HandleCutAndPaste(VDKObject* sender, GdkEvent* ev) { GdkEventKey* event = (GdkEventKey*) ev; bool isCtrl = event->state & GDK_CONTROL_MASK; bool isKey = (event->keyval == GDK_X) || (event->keyval == GDK_x) || (event->keyval == GDK_V) || (event->keyval == GDK_v) || (event->keyval == GDK_C) || (event->keyval == GDK_c); if(isCtrl && isKey) { switch(event->keyval) { case GDK_X: case GDK_x: if(isCtrl && Active) CutWidget(Active); break; case GDK_V: case GDK_v: if(isCtrl) PasteWidget(); break; case GDK_C: case GDK_c: if(isCtrl && Active) { // copying containers isn't allowed if(dynamic_cast(Active)) Application()->VDKMessageBox(APPNAME, _("Copying containers isn't allowed"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 3000 ); else WidgetClipboard->CopyWidget(Active->ObjectFromVDK()); } break; } return true; } else return false; } /* */ bool VDKBGuiForm::OnKeyRelease(VDKObject* sender, GdkEvent* ev) { VDKBEventContainer* container = NULL; VDKBFixed* fixed = NULL; g_return_val_if_fail (sender != NULL, FALSE); g_return_val_if_fail (ev != NULL, FALSE); GdkEventKey* event = (GdkEventKey*) ev; gtk_signal_emit_stop_by_name(GTK_OBJECT(sender->Widget()), "key_release_event"); // destroy sizetipwin if any bool isCtrl = (event->keyval == GDK_Control_L) || (event->keyval == GDK_Control_R); if(sizetipwin && isCtrl) { sizetipwin->Close(); sizetipwin->Destroy(); sizetipwin = NULL; minwsize = VDKPoint(0,0); } // we check if: // - there is an active widget // - active widget has a parent container // - parent container is a fixed // #if VERBOSE printf("\n VDKBGuiForm::OnKeyRelease - %s - keyval:%d", gtk_widget_get_name (sender->Widget()), event->keyval ); fflush(stdout); #endif if(!Active) return true; else { // mark object Active->Mark(); container = dynamic_cast(Active->ObjectFromVDK()->Parent()); } #if VERBOSE printf("\n VDKBGuiForm::OnKeyRelease - %s(2) - keyval:%d", gtk_widget_get_name (sender->Widget()), event->keyval ); fflush(stdout); #endif if(container && (fixed = dynamic_cast(container)) ) { bool have_grid = false; int horz_spacing = 1,vert_spacing = 1; VDKString isTrue = CHECK_TRUE; #if VERBOSE printf("\n VDKBGuiForm::OnKeyRelease - fixed: %s(3)- keyval:%d", gtk_widget_get_name (sender->Widget()), event->keyval ); fflush(stdout); #endif if(fixed && fixed->GetProp("have_grid") == isTrue) { have_grid = true; horz_spacing = atoi((char*) fixed->GetProp("h_grid_spacing")); vert_spacing = atoi((char*) fixed->GetProp("v_grid_spacing")); } if(have_grid) fixed_draw_grid (fixed->Container(), horz_spacing, vert_spacing, 1); // dots } return true; } bool VDKBGuiForm::HandleOnKey(VDKObject* sender, GdkEventKey* event) { bool canResize = true; bool canMove = false; bool isKey = false; VDKBEventContainer* container = NULL; VDKBFixed* fixed = NULL; // we check if: // - there is an active widget // - active widget has a parent container // - key hits (only arrow keys allowed) // - parent container is a fixed (allows both resizing and moving) // otherwise only resizing is allowed // if(!Active) return false; else { container = dynamic_cast(Active->ObjectFromVDK()->Parent()); isKey = (event->keyval == GDK_Up) || (event->keyval == GDK_Right) || (event->keyval == GDK_Down) || (event->keyval == GDK_Left); } // if((!isKey) || (!container) ) return false; else if(!(fixed = dynamic_cast(container))) return false; canMove = fixed != (VDKBFixed*) NULL; #if VERBOSE printf("\nVDKBGuiForm::OnKey(): - active:%s - parent:%s", (char*) Active->Name(), fixed ? (char*) fixed->Name() : (char*) container->Name() ); printf("\nkey val:%d - state:%d",event->keyval,event->state); printf("\nSHIFT:%s - CTRL:%s", event->state & GDK_SHIFT_MASK ? CHECK_YES : CHECK_NO, event->state & GDK_CONTROL_MASK ? CHECK_YES : CHECK_NO); fflush(stdout); #endif // check key modifiers bool isShift = event->state & GDK_SHIFT_MASK; bool isCtrl = event->state & GDK_CONTROL_MASK; bool isShiftCtrl = isShift && isCtrl; // unset isShift & isCtrl if(isShiftCtrl) isShift = isCtrl = false; VDKPoint old_position(Active->ObjectFromVDK()->Widget()->allocation.x, Active->ObjectFromVDK()->Widget()->allocation.y); VDKPoint new_position = old_position; VDKPoint old_size(Active->ObjectFromVDK()->Widget()->allocation.width, Active->ObjectFromVDK()->Widget()->allocation.height); VDKPoint new_size = old_size; // grid job bool have_grid = false; int horz_spacing = 1,vert_spacing = 1; VDKString isTrue = CHECK_TRUE; if(fixed && fixed->GetProp("have_grid") == isTrue) { have_grid = true; horz_spacing = atoi((char*) fixed->GetProp("h_grid_spacing")); vert_spacing = atoi((char*) fixed->GetProp("v_grid_spacing")); } switch(event->keyval) { case GDK_Left: if( have_grid && isShift) snap_left(new_position,horz_spacing); else if(isCtrl) new_size.x -= 1 ; else if(have_grid && isShiftCtrl) snap_left(new_size,horz_spacing); else new_position.x--; break; case GDK_Up: if(have_grid && isShift) snap_top(new_position,vert_spacing); else if(isCtrl) new_size.y -= 1 ; else if(have_grid && isShiftCtrl) snap_top(new_size,vert_spacing); else new_position.y -= 1; break; case GDK_Right: if(have_grid && isShift) snap_right(new_position,horz_spacing); else if(isCtrl) new_size.x += 1; else if(have_grid && isShiftCtrl) snap_right(new_size,horz_spacing); else new_position.x += 1; break; case GDK_Down: if(have_grid && isShift) snap_bottom(new_position,vert_spacing); else if(isCtrl) new_size.y += 1; else if(have_grid && isShiftCtrl) snap_bottom(new_size,vert_spacing); else new_position.y += 1; break; } if(canMove && (old_position != new_position)) { gtk_fixed_move(GTK_FIXED(fixed->Container()), Active->ObjectFromVDK()->Widget(), new_position.x, new_position.y); // corrects GTK+ bug. Some widgets do not move unless // you call gtk_widget_set_uposition() gtk_widget_set_uposition (Active->ObjectFromVDK()->Widget(), new_position.x, new_position.y); // update widget properties sprintf(buff,"%d",new_position.x); Active->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",new_position.y); Active->SetPropValue(EXPAND_INTERNAL,buff); Changed = true; } else if (canResize &&(new_size != old_size)) { Active->ObjectFromVDK()->Usize = new_size; sprintf(buff,"%d,%d",new_size.x,new_size.y); Active->SetPropValue(USIZE,buff); Changed = true; // show size tip win if(!sizetipwin) { sprintf(buff,_("Min.size:%d,%d"),new_size.x,new_size.y); int x, y; GtkWidget* wid = GTK_WIDGET(Active->ObjectFromVDK()->Widget()); gdk_window_get_deskrelative_origin(wid->window, &x,&y); sizetipwin = new SizeTipWin(Owner(),buff); sizetipwin->Setup(); sizetipwin->Position = VDKPoint(x,y); sizetipwin->Show(); } else sizetipwin->Update(new_size); } return false; } /* */ void VDKBGuiForm::CutWidget(VDKBObject* active) { if(active) WidgetClipboard->CutWidget(active->ObjectFromVDK()); } /* */ void VDKBGuiForm::PasteWidget() { // paste clipboard stack top if(Active) WidgetClipboard->PasteWidget(Active->ObjectFromVDK(),0); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_frame.cc0000644000000000000000000003752207453746361014153 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include //#include #include #include #include #include #include #include #include #include #include #include #include #include "./pixmaps/shadow.xpm" /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBFrame // put here vdk class name string #define VDK_CLASS "VDKFrame" // put here vdk class name #define VDK_ANCESTOR VDKFrame // put here here the widget will be named // (name+counter) #define VDK_WIDGET "frame" extern char* wi_widget_prompts[]; static char buff[128]; static char *shadows[] = { "shadow_none","shadow_in","shadow_out","shadow_etched_in", "shadow_etched_out",0 }; static char *aligns[] = { "l_justify","c_justify","r_justify",0 }; int CLASS::Counter = 0; /* properties */ char* vdkframe_props[] = { LABEL, SHADOW, ALIGN, 0 }; DEFINE_EVENT_LIST(CLASS,VDKBEventContainer); DEFINE_SIGNAL_LIST(CLASS,VDKBEventContainer); /* */ bool CLASS:: DelBox(VDKObject* sender) { // destroy inner gtk+ placeholder widget gtk_widget_destroy(container); // call ancestor delete box VDKBEventContainer::DelBox(sender); // notify to inspector that object was deleted VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) prjman->objInspector->SetActive(NULL); } return true; } /* */ bool CLASS::SetBoxSize(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { ownerform->SetBoxSize(NULL); } return true; } //=========================================== /* */ CLASS::CLASS(char* name, VDKForm* owner): VDKBEventContainer(name,owner) { Counter++; VDKBObject::object = this; VDKBEventContainer::mode = mode; Init(); } /* */ CLASS::CLASS(char* name,VDKBEventContainer* outer): VDKBEventContainer(name,outer->Owner()) { VDKBObject::object = this; Counter++; outerbox = outer; Init(); } /* */ void CLASS::Init() { int t; // add frame properties // names. (Others props are prepended by VDKBObject constructor) for(t=0; vdkframe_props[t]; t++) proplist.add(VDKBProperty(vdkframe_props[t])); if(name) SetPropValue(LABEL,name); AddBox(name); //AddCanvas(w,h); // makes a pop menu popmenu = new VDKBContainerPopMenu(this); setsize = new VDKMenuItem(popmenu,_(wi_widget_prompts[19])); selectparent = new VDKMenuItem(popmenu,_(wi_widget_prompts[20])); SignalConnect(selectparent,"activate", &CLASS::SelectParentContainer); delBox = new VDKMenuItem(popmenu,_(wi_widget_prompts[30])); SignalConnect(delBox,"activate",&CLASS::DelBox); SignalConnect(setsize,"activate",&CLASS::SetBoxSize); CONNECT_COMMON_EVENTS; /* assign this as parent so this can receive signals */ popmenu->Parent(this); popmenu->Setup(); /* better add it to owner, so will be surely destroyed even if never popped */ Owner()->AddItem(popmenu); // plm patch SetSize(100,100); } /* */ void CLASS::AddBox(char* name) { container = gtk_frame_new(NULL/*name*/); gtk_container_add(GTK_CONTAINER(widget),container); gtk_widget_show(container); } /* extra args unused */ void CLASS::AddWidget(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { if(BinCheck(wid)) { // adding a nested box set border width to 10 gtk_container_add(GTK_CONTAINER(container),wid->Widget()); VDKBObject* vdkbobj = dynamic_cast(wid); if(vdkbobj) { VDKBEventBox* box = dynamic_cast(vdkbobj); if(box) { box->BorderWidth(0); box->SetPropValue(BORDERWIDTH,"0"); } } VDKBEventContainer::Add(wid,l_justify,expand,fill,padding); } else wid->Destroy(); } /* extra args used */ void CLASS::Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { AddWidget(wid); } /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable frame counter // to ensure unicity int result = 0; CLASS* frame = NULL; VDKBEventBox *box1 = NULL; if(owner->Active) { for(sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; CLASS::Counter++) sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); frame = new CLASS(buff,owner); // add a box to frame for(sprintf(buff,"VBox%d",VDKBEventBox::Counter); owner->ChildWithName(buff) != (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"VBox%d",VDKBEventBox::Counter); box1 = new VDKBEventBox(buff,frame); box1->SetPropValue(JUSTIFY_INTERNAL,"l_justify"); frame->AddWidget(box1,l_justify,true,true,true,true); VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { if(ev && dynamic_cast(container)) { GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); frame->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); frame->SetPropValue(EXPAND_INTERNAL,buff); // others than justify and flag unuseful container->AddWidget(frame,int(event->x), int(event->y), true,true,true); } else container->AddWidget(frame); frame->outerbox = container; } else if(! owner->Active->AddToParent(frame,ev)) // target isn't a container result = 2; } else // no active widget result = 3; // 0 on success if(result && frame) frame->Destroy(); return result; } //////////////////////////////////////////////////////////////////// /* */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { VDKBEventContainer::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s\"%s\";",PROP_LABEL, (char*) GetProp(LABEL)); fprintf(fp,"\n\t%s%s;", PROP_SHADOW,(char*) GetProp(SHADOW)); fprintf(fp,"\n\t%s%s;", PROP_ALIGN,(char*) GetProp(ALIGN)); } char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char shadow[32]; char temp[256]; char bw[16]; char label[128]; char arg[128]; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return NULL; else source = new char[1024]; strcpy(shadow,"shadow_etched_in"); bool nls_support = parser.CheckNLSSupport(); // get label if(parser.GetParam(label,buffer, PROP_LABEL) && strcmp(label,NIHIL_PROP)) { if(nls_support) sprintf(temp,"\n%s = new %s(this,_(\"%s\"),v_box,%s);" ,obj_name,VDK_CLASS,label,shadow); else sprintf(temp,"\n%s = new %s(this,\"%s\",v_box,%s);" ,obj_name,VDK_CLASS,label,shadow); strcpy(source,temp); } else { sprintf(temp,"\n%s = new %s(this,NULL,v_box,%s);" ,obj_name,VDK_CLASS,shadow); strcpy(source,temp); } // get shadow if(parser.GetParam(arg,buffer,PROP_SHADOW) && strcmp(arg,NIHIL_PROP)) { int ndx = atoi(arg); ndx = (ndx >= 0) && (ndx <= 4) ? ndx : 0; sprintf(temp,"\n%s->Shadow = %s;", obj_name,shadows[ndx]); strcat(source,temp); } // get align if(parser.GetParam(arg,buffer,PROP_ALIGN) && strcmp(arg,NIHIL_PROP)) { int ndx = atoi(arg); ndx = (ndx >= 0) && (ndx <= 2) ? ndx : 0; sprintf(temp,"\n%s->Align = %s;", obj_name,aligns[ndx]); strcat(source,temp); } // get size VDKPoint size = parser.Size(buffer); if(size.X() > 0 || size.Y() > 0) { sprintf(temp,"\n%s->SetSize(%d,%d);",obj_name,size.X(),size.Y()); strcat(source,temp); } if(strcmp(obj_parent,NIHIL_PROP)) sprintf(temp,"\n%s->Add(%s",obj_parent,obj_name); else sprintf(temp,"\nAdd(%s",obj_name); strcat(source,temp); // prepares arguments for add widget to container char justify[16],expand[16],fill[16],padding[16]; if(parser.GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && parser.GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && parser.GetParam(fill,buffer,PROP_FILL_INTERNAL) && parser.GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(temp,",%s,%s,%s,%s);", justify,expand,fill,padding); strcat(source,temp); } else { sprintf(temp,");"); strcat(source,temp); } if(parser.GetParam(bw,buffer,PROP_BORDERWIDTH) && strcmp(bw,NIHIL_PROP)) { sprintf(temp,"\n%s->BorderWidth(%s);",obj_name,bw); strcat(source,temp); } return source; } /* */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; CLASS* box; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return false; // get mode and size VDKPoint size = parser.Size(buffer); // get packing args int justification = l_justify; int expand=0,fill=0,padding=0; int bw; // border width char arg[32]; if(parser.GetParam(arg,buffer,PROP_JUSTIFY_INTERNAL)) justification = atoi(arg); if(parser.GetParam(arg,buffer,PROP_EXPAND_INTERNAL)) expand = atoi(arg); if(parser.GetParam(arg,buffer,PROP_FILL_INTERNAL)) fill = atoi(arg); if(parser.GetParam(arg,buffer,PROP_PADDING_INTERNAL)) padding = atoi(arg); if(parser.GetParam(arg,buffer,PROP_BORDERWIDTH) && strcmp(arg,NIHIL_PROP)) bw = atoi(arg); else bw = -1; // no parent, widget will be added to owner form innerbox if(!strcmp(obj_parent,NIHIL_PROP)) { box = new CLASS(obj_name,owner->InnerBox()); owner->AddWidget(box,justification,expand,fill,padding); } // get parent container address else { VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { box = new CLASS(obj_name,container); container->AddWidget(box,justification,expand,fill,padding,true); box->outerbox = container; } else // FIX ME: user warning return false; } // call ancestor to set common properties VDKBObject::CreateWidget(box,buffer,parser); if(size.X() > 0 || size.Y() > 0) box->ObjectFromVDK()->SetSize(size.X(),size.Y()); // label if(parser.GetParam(arg,buffer, PROP_LABEL) && strcmp(arg,NIHIL_PROP) ) { box->SetPropValue(LABEL,arg); gtk_frame_set_label(GTK_FRAME(box->container),arg); } else { box->SetPropValue(LABEL,NIHIL_PROP); gtk_frame_set_label(GTK_FRAME(box->container),NULL); } // shadow if(parser.GetParam(arg,buffer,PROP_SHADOW) && strcmp(arg,NIHIL_PROP)) { box->SetPropValue(SHADOW,arg); int sh = atoi(arg); gtk_frame_set_shadow_type(GTK_FRAME(box->container), (GtkShadowType) sh); } // align if(parser.GetParam(arg,buffer,PROP_ALIGN) && strcmp(arg,NIHIL_PROP)) { box->SetPropValue(ALIGN,arg); int sh = atoi(arg); gtk_frame_set_label_align(GTK_FRAME(box->container), 0.0+0.5*sh,0.0); } if(bw >= 0) { char local[16]; box->BorderWidth(bw); sprintf(local,"%d",bw); box->SetPropValue(BORDERWIDTH,local); } return true; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* This is called by object inspector when a widget is selected by user, thus to allow widget to set his own property controls. */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKBox* tframe = dynamic_cast(VDKBEventContainer::ExtraWidget(isp)); if(!tframe) return NULL; VDKTable *table = new VDKTable(inspector,2,2); VDKBox* box = new VDKBox(inspector,h_box); set = new VDKCustomButton(inspector,(const char**) shadow_xpm,NULL); set->Relief = (GtkReliefStyle) 2; set->SetTip(_(wi_widget_prompts[33])); box->Add(set,l_justify,false,false,0); set->Parent(this); SignalConnect(set,"clicked",&CLASS::OnSetShadowAndAlign); box->Add(new VDKLabel(inspector,_(wi_widget_prompts[32]),GTK_JUSTIFY_RIGHT),l_justify,true,true,5); table->AddToCell(box,0,0); // label char* lbl = (char*) GetProp(LABEL); bool isNihil = !strcmp((char*) GetProp(LABEL),NIHIL_PROP); label = new VDKEntry(inspector,0,isNihil ? NULL : lbl); label->SetSize(80,-1); table->AddToCell(label,0,1); label->Parent(this); SignalConnect(label,"activate",&CLASS::OnSetLabel); // shadow shadow = new VDKCombo(inspector,NULL); shadow->SetSize(80,-1); StringList sl; int t = 0; for(;shadows[t];t++) sl.add(VDKString(shadows[t])); shadow->PopdownStrings = sl; table->AddToCell(shadow,1,0); int r = atoi(GetProp(SHADOW)); shadow->SelectItem(r); // align align = new VDKCombo(inspector,NULL); align->SetSize(80,-1); StringList sa; for(t=0;aligns[t];t++) sa.add(VDKString(aligns[t])); align->PopdownStrings = sa; r = atoi(GetProp("Align")); align->SelectItem(r); table->AddToCell(align,1,1); tframe->Add(table,l_justify,false,false,false); return tframe; } /* */ bool CLASS::OnSetLabel(VDKObject*) { if(strlen(label->Text)>0) { sprintf(buff,"%s",(char*) label->Text); gtk_frame_set_label(GTK_FRAME(container),buff); } else { sprintf(buff,NIHIL_PROP); gtk_frame_set_label(GTK_FRAME(container),""); } SetPropValue(LABEL,buff); inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS:: OnSetShadowAndAlign(VDKObject*) { int sel = shadow->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); SetPropValue(SHADOW,buff); int shd = atoi(buff); gtk_frame_set_shadow_type(GTK_FRAME(container),(GtkShadowType) shd); sel = align->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); SetPropValue(ALIGN,buff); int alg = atoi(buff); gtk_frame_set_label_align (GTK_FRAME(container),0.0+alg*0.5,0.0); inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_frmlist.cc0000644000000000000000000001473407464324435014535 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.6 * August 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include /* XPM */ static const char *form_xpm[] = { /* width height num_colors chars_per_pixel */ " 16 16 6 1", /* colors */ ". c #000000", "# c #000080", "a c #808080", "b c #c0c0c0", "c c #none", "w c #ffffff", /* pixels */ "cccccccccccccccc", "aaaaaaaaaaaaaaaa", "abbbbbbbbbbbbba.", "ab############a.", "ab######c.c.c.a.", "abaaaaaaaaaaaaa.", "abwwwwwwwwwwwwa.", "abwwwwwwwwwwwwa.", "abwwwwwwwwwwwwa.", "abwwwwwwwwwwwwa.", "abwwwwwwwwwwwwa.", "abwwwwwwwwwwwwa.", "abwwwwwwwwwwwwa.", "aaaaaaaaaaaaaaa.", "................", "cccccccccccccccc" }; // treeview model data enum { ICON = 0, FORMNAME, MAX_COL }; DEFINE_SIGNAL_MAP(VDKBFormListForm,VDKForm) ON_SIGNAL(formCustomList,select_row_signal,OnformCustomListSelectRow), ON_SIGNAL(formCustomList,realize_signal,OnformCustomListRealize), ON_SIGNAL(formCustomList,row_activated_signal,OnformCustomListSelectRow), ON_SIGNAL(selectButton,clicked_signal,OnformCustomListSelectRow), ON_SIGNAL(closeButton,clicked_signal,OncloseButtonClick) END_SIGNAL_MAP /* form constructor */ VDKBFormListForm::VDKBFormListForm(VDKForm* owner, VDKBProjectManager *prjman, char* title): VDKForm(owner,title),prjman(prjman) { } /* form destructor */ VDKBFormListForm::~VDKBFormListForm() { } void VDKBFormListForm::GUISetup(void) { SetSize(222,295); Title = _("VDKBuilder"); vbox4 = new VDKBox(this,v_box); vbox4->SetSize(220,291); Add(vbox4,0,1,1,0); VDKScrolled* scrolled = new VDKScrolled(this); formCustomList = new VDKTreeView(this,NULL,GTK_SELECTION_MULTIPLE); scrolled->AddWithoutViewport(formCustomList,l_justify,false,false,0); vbox4->Add(scrolled,0,1,1,2); separator2 = new VDKSeparator(this,h_separator); separator2->SetSize(232,2); vbox4->Add(separator2,0,0,0,0); hbox5 = new VDKBox(this,h_box); hbox5->SetSize(229,27); vbox4->Add(hbox5,0,0,0,0); hbox5->BorderWidth(0); selectButton = new VDKCustomButton(this,_("Edit")); hbox5->Add(selectButton,0,1,1,0); closeButton = new VDKCustomButton(this,_("Close")); closeButton->Relief = (GtkReliefStyle) 0; hbox5->Add(closeButton,0,1,1,0); } /* */ bool VDKBFormListForm::OnformCustomListRealize(VDKObject* sender) { // makes model GType* types = new GType[MAX_COL]; VDKTreeViewModel *model = NULL; types[0] = GDK_TYPE_PIXBUF; types[1] = G_TYPE_STRING; formCustomList->Model = (model = new VDKTreeViewModel(types,MAX_COL)); delete[] types; if(model) { VDKTreeViewColumn* column = NULL; column = new VDKTreeViewColumn(formCustomList,ICON,NULL); column = new VDKTreeViewColumn(formCustomList,FORMNAME,_("Project forms list")); } else return true; // load list with project forms VDKBProject* project; if(prjman && (project = prjman->Project()) ) { // accesses to prj manager unit list UnitListIterator li(project->Units()); for(;li;li++) { char *name,*gui; VDKBUnit* unit = li.current(); name = (char*) unit->Name(); gui = unit->Gui(); if(!access(gui,F_OK)) { VDKPixbuf* pixbuf = new VDKPixbuf(this,form_xpm); GtkTreeIter iter; model->AppendBlank(&iter,NULL); model->SetData(&iter, ICON , pixbuf ? pixbuf->AsGdkPixbuf(): NULL, FORMNAME, name, -1); } } } gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(formCustomList->WrappedWidget()), TRUE); GtkTreeIter iter; if(model->Root(&iter)) formCustomList->SelectNode(&iter); return true; } /* form setup */ void VDKBFormListForm::Setup(void) { GUISetup(); // vdkb gui setup // put your code below here } // signal response method bool VDKBFormListForm::OnformCustomListSelectRow(VDKObject* sender) { VDKBProject* project; formCustomList->GetSelections(); if(formCustomList->Selections().size() != 1) return true; else if(prjman && (project = prjman->Project()) ) { VDKTreeViewModel *model = formCustomList->Model; char* cell = model->GetCell(&(formCustomList->Selections()[0]),FORMNAME); VDKString name = cell; name += "."; name += FORM_EXT; delete[] cell; if(!access((char*) name,F_OK)) { // create a form parsing .frm file (or raise) VDKBGuiForm* form = prjman->CreateForm((char*) name); // make inspector if(form) { if( !prjman->objInspector) { prjman->objInspector = new VDKBObjectInspector(prjman,NULL); prjman->objInspector->Setup(); prjman->objInspector->Show(); } else if(prjman->objInspector->Iconized) prjman->objInspector->Iconized = false; else prjman->objInspector->Raise(); prjman->objInspector->LoadTree(form); form->Raise(); } // set automa VDKBMainForm* mainform = dynamic_cast( Owner()); if(mainform) mainform->Automa(automa_edit_form_on); } formCustomList->Selections().flush(); Close(); } return true; } // signal response method bool VDKBFormListForm::OnselectButtonClick(VDKObject* sender) { return true; } // signal response method bool VDKBFormListForm::OncloseButtonClick(VDKObject* sender) { Close(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_gnomeappbar.cc0000644000000000000000000002247607272557523015355 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.3 * July 1999 * =========================== * * Copyright (C) 1998, 1999 Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_GNOME #if HAVE_CONFIG_H #include #endif #if ! ENABLE_NLS // #define _(str) str #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #endif #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBGnomeAppBar // put here vdk class name string #define VDK_CLASS "VDKGnomeAppBar" // put here vdk class name #define VDK_ANCESTOR VDKGnomeAppBar // put here here the widget will be named // (name+counter) #define VDK_WIDGET "gnomeappbar" //================================================================= extern char* wi_widget_prompts[]; static char buff[128]; /* properties */ char* vdkgnomeappbar_props[] = { STATUS_INTERNAL,PROGRESS_INTERNAL,0 }; int CLASS::Counter = 0; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDKBEvGnomeAppBar); DEFINE_EVENT_LIST(CLASS,VDKBEvGnomeAppBar); /////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner, bool has_progress, bool has_status): VDKBEvGnomeAppBar(owner, has_progress, has_status), VDKBObject(name) { // newly constructed widget counter is incremented // each time Counter++; int t; for(t=0; vdkgnomeappbar_props[t]; t++) proplist.add(VDKBProperty(vdkgnomeappbar_props[t])); SetPropValue(JUSTIFY_INTERNAL,"r_justify"); SetPropValue(EXPAND_INTERNAL,CHECK_FALSE); SetPropValue(FILL_INTERNAL,CHECK_FALSE); SetPropValue(STATUS_INTERNAL,CHECK_TRUE); SetPropValue(PROGRESS_INTERNAL, has_progress ? CHECK_TRUE : CHECK_FALSE); // assign this to VDKBObject member. object = this; // connects events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties // a weird patch, for an obscure reason bkg goes to grey // so we force it to nihil SetPropValue(NORMALBACKGROUND,NIHIL_PROP); VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_STATUS_INTERNAL, (char*) GetProp(STATUS_INTERNAL)); fprintf(fp,"\n\t%s%s;", PROP_PROGRESS_INTERNAL, (char*) GetProp(PROGRESS_INTERNAL)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* statusbar = NULL; // autogenerate first suitable button counter // to ensure unicity // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // actually makes widget { statusbar = new CLASS(buff,owner); statusbar->SetSize(30,20); } // add widget to form return owner->AddToSelf(statusbar,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; bool have_status = false,have_progress = false; // gets widget name and parent name if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return NULL; else source = new char[1024]; if(parser.GetParam(arg,buffer,PROP_PROGRESS_INTERNAL) && !strcmp(arg,CHECK_TRUE)) have_progress= true; sprintf(tmp,"\n%s = new VDKGnomeAppBar(this,%s,true);", obj_name, have_progress ? "true" : "false"); strcpy(source,tmp); // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // get code that adds widget to container if(strcmp(obj_parent,NIHIL_PROP)) sprintf(tmp,"\n%s->Add(%s",obj_parent,obj_name); else sprintf(tmp,"\nAdd(%s",obj_name); strcat(source,tmp); // prepares arguments for add widget to container char justify[16],expand[16],fill[16],padding[16]; if(parser.GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && parser.GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && parser.GetParam(fill,buffer,PROP_FILL_INTERNAL) && parser.GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(tmp,",%s,%s,%s,%s);", justify,expand,fill,padding); strcat(source,tmp); } else { sprintf(tmp,");"); strcat(source,tmp); } /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer, VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[32]; CLASS* statusbar; // get name and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return false; bool have_status = true,have_progress = false; if(parser.GetParam(arg,buffer,PROP_PROGRESS_INTERNAL) && !strcmp(arg,CHECK_TRUE)) have_progress= true; statusbar = new CLASS(obj_name,owner,have_progress,have_status); statusbar->SetSize(30,20); // no parent, widget will be added to owner form innerbox if(!strcmp(obj_parent,NIHIL_PROP)) owner->PackToSelf(statusbar, NULL, buffer, parser, obj_parent); else { VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; // container NULL causes bar to be added directly // to form inner box. if(container) owner->PackToSelf(statusbar, container, buffer, parser, NULL); else { statusbar->Destroy(); return false; } } return true; } /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; inspector = isp; VDKFrame* xframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); // shadow VDKTable *table = new VDKTable(inspector,1,2); table->SetSize(219,-1); has_progress = new VDKCheckButton(inspector,_(wi_widget_prompts[34])); has_progress->Checked = GetProp(PROGRESS_INTERNAL) == True; table->AddToCell(has_progress,0,1); has_progress->Parent(this); SignalConnect(has_progress,"toggled",&CLASS::OnSetProgress); xframe->Add(table,l_justify,false,false,false); return xframe; } bool CLASS:: OnSetProgress(VDKObject*) { GnomeAppBar* bar = GNOME_APPBAR(statusbar->Widget()); if(has_progress->Checked) gtk_widget_show(bar->progress); else gtk_widget_hide(bar->progress); SetPropValue(PROGRESS_INTERNAL, has_progress->Checked ? CHECK_TRUE : CHECK_FALSE); inspector->FormNeedToBeChanged(); return true; } #endif vdkbuilder2-2.4.0/vdkbuilder/vdkb_gnomeentry.cc0000644000000000000000000003160607272557522015243 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_GNOME #if HAVE_CONFIG_H #include #endif #if !ENABLE_NLS // #define _(str) str #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #endif #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBGnomeEntry // put vdk class name to corresponding widget #define VDK_ANCESTOR VDKGnomeEntry // put here vdk class name string #define VDK_CLASS "VDKGnomeEntry" // put here here the widget will be named // (name+counter) #define VDK_WIDGET "gnome_entry" static char buff[128]; extern char* wi_widget_prompts[]; // used to autogenerate default int CLASS::Counter = 0; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// /* properties names */ char* vdkgnome_entry_props[] = { EDITABLE,SORTED,HIDDEN,CASESENSITIVE, HISTORY_INTERNAL,MAXSAVED,0 }; /* entry widget signal names && nicknames Default response method name will be made by: On. For instance if object name = and nickname = default response method name will be: */ char* vdkgnome_entry_signals[] = { SIGNAL_ACTIVATE,SIGNAL_CHANGED, SIGNAL_SELECTION_CHANGED ,SIGNAL_FOCUS_IN, SIGNAL_FOCUS_OUT,0 }; char* vdkgnome_entry_nicknames[] = { NICK_ACTIVATE,NICK_CHANGED, NICK_SELECTION_CHANGED,NICK_FOCUS_IN, NICK_FOCUS_OUT,0 }; /* */ static int EntryButtonPressed(GtkWidget * wid, GdkEvent * ev, gpointer p) { gtk_signal_emit_stop_by_name(GTK_OBJECT(wid), "button_press_event"); // proceed to upper level return false; } ////////////////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner): VDK_ANCESTOR(owner),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties for(t=0; vdkgnome_entry_props[t]; t++) proplist.add(VDKBProperty(vdkgnome_entry_props[t])); // add to VDKBObject signal list for(t=0; vdkgnome_entry_signals[t]; t++) siglist.add(VDKBSignal(vdkgnome_entry_signals[t], this, vdkgnome_entry_nicknames[t])); SetPropValue(PROP_MAXSAVED,"10"); // CONNECT_COMMON_EVENTS; gtk_signal_connect(GTK_OBJECT(GTK_COMBO(widget)->entry), "button_press_event", GTK_SIGNAL_FUNC(::EntryButtonPressed), (gpointer) this); // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s\"%s\";", PROP_EDITABLE, (char*) GetProp(EDITABLE)); fprintf(fp,"\n\t%s%s;", PROP_HIDDEN, (char*) GetProp(HIDDEN)); fprintf(fp,"\n\t%s%s;", PROP_SORTED, (char*) GetProp(SORTED)); fprintf(fp,"\n\t%s%s;", PROP_CASESENSITIVE, (char*) GetProp(CASESENSITIVE)); fprintf(fp,"\n\t%s%s;", PROP_HISTORY_INTERNAL, (char*) GetProp(HISTORY_INTERNAL)); fprintf(fp,"\n\t%s%s;", PROP_MAXSAVED, (char*) GetProp(MAXSAVED)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* gnome_entry; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // actually makes widget gnome_entry = new CLASS(buff,owner); // add widget to form return owner->AddToSelf(gnome_entry,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char history[128]; unsigned int maxsaved; char arg[64]; char tmp[256]; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; if(parser.GetParam(arg,buffer,PROP_HISTORY_INTERNAL) && strcmp(arg,NIHIL_PROP)) sprintf(history,"\"%s\"",arg); else *history = '\0'; sprintf(tmp,"\n%s = new %s(this,(char*) NULL,%s);", obj_name, VDK_CLASS, *history? history : "(char*) NULL"); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // set widget specific properties if(parser.GetParam(arg,buffer,PROP_EDITABLE) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;", obj_name, EDITABLE, arg); strcat(source,tmp); } if(parser.GetParam(arg,buffer, PROP_HIDDEN) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;",obj_name,HIDDEN,arg); strcat(source,tmp); } if(parser.GetParam(arg,buffer,PROP_SORTED) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;",obj_name,SORTED,arg); strcat(source,tmp); } // if(parser.GetParam(arg,buffer, PROP_CASESENSITIVE) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;",obj_name,CASESENSITIVE,arg); strcat(source,tmp); } if(parser.GetParam(arg,buffer,PROP_MAXSAVED) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;",obj_name,MAXSAVED,arg); strcat(source,tmp); } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[64]; CLASS* gnome_entry; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { gnome_entry = new CLASS(obj_name,owner); if(parser.GetParam(arg,buffer,PROP_EDITABLE) && strcmp(arg,NIHIL_PROP)) gnome_entry->SetPropValue(EDITABLE,arg); if(parser.GetParam(arg,buffer,PROP_HIDDEN) && strcmp(arg,NIHIL_PROP)) gnome_entry->SetPropValue(HIDDEN,arg); if(parser.GetParam(arg,buffer,PROP_SORTED) && strcmp(arg,NIHIL_PROP)) gnome_entry->SetPropValue(SORTED,arg); if(parser.GetParam(arg,buffer,PROP_CASESENSITIVE) && strcmp(arg,NIHIL_PROP)) gnome_entry->SetPropValue(CASESENSITIVE,arg); // pack widget to container return owner->PackToSelf(gnome_entry, container, buffer, parser); } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); VDKTable *table = new VDKTable(inspector,4,2); table->SetSize(219,-1); editable = new VDKCheckButton(inspector,_(wi_widget_prompts[2])); table->AddToCell(editable,0,0); editable->Checked = GetProp(EDITABLE) == True; // this after (so no signal hang) editable->Parent(this); SignalConnect(editable,"toggled",&CLASS::OnSetEditable); sorted = new VDKCheckButton(inspector,_(wi_widget_prompts[3])); table->AddToCell(sorted,0,1); sorted->Checked = GetProp(SORTED) == True; // this after (so no signal hang) sorted->Parent(this); SignalConnect(editable,"toggled",&CLASS::OnSetSorted); hidden = new VDKCheckButton(inspector,_(wi_widget_prompts[4])); table->AddToCell(hidden,1,0); hidden->Checked = GetProp(HIDDEN) == True; // this after (so no signal hang) hidden->Parent(this); SignalConnect(hidden,"toggled",&CLASS::OnSetHidden); casesensitive = new VDKCheckButton(inspector,_(wi_widget_prompts[5])); table->AddToCell(casesensitive,1,1); casesensitive->Checked = GetProp(CASESENSITIVE) == True; // this after (so no signal hang) casesensitive->Parent(this); SignalConnect(casesensitive,"toggled",&CLASS::OnSetCaseSensitive); table->AddToCell(new VDKLabel(inspector,_(wi_widget_prompts[35])),2,0); history = new VDKEntry(inspector,0,(char*) GetProp(HISTORY_INTERNAL)); history->SetSize(100,-1); table->AddToCell(history,2,1); history->Parent(this); SignalConnect(history,"activate",&CLASS::OnSetHistory); table->AddToCell(new VDKLabel(inspector,_(wi_widget_prompts[36])),3,0); int mx = atoi( (char*) GetProp(MAXSAVED)); mx = mx ? mx : 10; max_saved = new VDKSpinButton(inspector, mx, 0, 50 , 1 ,0 ); max_saved->SetSize(60,-1); table->AddToCell(max_saved,3,1); max_saved->Parent(this); SignalConnect(max_saved,"value_changed",&CLASS::OnSetMaxSaved,false); bframe->Add(table,l_justify,false,false,false); return bframe; } /* */ bool CLASS::OnSetEditable(VDKObject*) { SetPropValue(EDITABLE, editable->Checked ? CHECK_TRUE : CHECK_FALSE); Editable = editable->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetHidden(VDKObject*) { SetPropValue(HIDDEN, hidden->Checked ? CHECK_TRUE : CHECK_FALSE); Hidden = hidden->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetSorted(VDKObject*) { SetPropValue(SORTED, sorted->Checked ? CHECK_TRUE : CHECK_FALSE); Sorted = sorted->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetCaseSensitive(VDKObject*) { SetPropValue(CASESENSITIVE, casesensitive->Checked ? CHECK_TRUE : CHECK_FALSE); CaseSensitive = casesensitive->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetHistory(VDKObject*) { if(strlen(history->Text) > 0 && strcmp(history->Text,NIHIL_PROP)) SetPropValue(HISTORY_INTERNAL, (char*) history->Text); else SetPropValue(HISTORY_INTERNAL, NIHIL_PROP); inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetMaxSaved(VDKObject*) { sprintf(buff,"%d",(int) max_saved->ValueAsInt); SetPropValue(MAXSAVED, buff); inspector->FormNeedToBeChanged(); return true; } #endif vdkbuilder2-2.4.0/vdkbuilder/vdkb_grep.cc0000644000000000000000000001215007257645354014006 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include extern "C" { #include } DEFINE_SIGNAL_MAP(VDKBGrepDlg,VDKForm) ON_SIGNAL(OkButton,clicked_signal,OnOkButtonClick), ON_SIGNAL(CancelButton,clicked_signal,OnCancelButtonClick), ON_SIGNAL(BrowseButton,clicked_signal,OnBrowseButtonClick), ON_SIGNAL(ClearFilesButton,clicked_signal,OnClearFilesButtonClick) END_SIGNAL_MAP /* form constructor */ VDKBGrepDlg::VDKBGrepDlg(VDKForm* owner, char* title, FileStringArray* selections, char* match): VDKForm(owner,title),selections(selections),match(match) { } /* form destructor */ VDKBGrepDlg::~VDKBGrepDlg() { } /* form setup */ void VDKBGrepDlg::Setup(void) { // Modified by plm 02/09/2000, for French translation // SetSize(295,105); SetSize(375,105); Title = _("VDKBuilder grep"); Vframe1 = new VDKFrame(this,"grep -n",v_box,shadow_etched_in); Vframe1->Shadow = shadow_in; Vframe1->Align = l_justify; Add(Vframe1,0,1,1,0); Vbox3 = new VDKBox(this,v_box); Vframe1->Add(Vbox3,l_justify,1,1,0); Vbox3->BorderWidth(0); Table1 = new VDKTable(this,3,2,false); Table1->RowSpacing = 2; Table1->ColSpacing = 2; Vbox3->Add(Table1,0,1,1,0); Vbox12 = new VDKBox(this,v_box); Table1->AddToCell(Vbox12,0,0); Label3 = new VDKLabel(this,_("Text to grep")); Label3->Justify = (GtkJustification) 2; Vbox12->Add(Label3,0,1,1,0); Vbox13 = new VDKBox(this,v_box); Table1->AddToCell(Vbox13,0,1); TextMatchEntry = new VDKEntry(this,0); Vbox13->Add(TextMatchEntry,0,1,1,0); Vbox14 = new VDKBox(this,v_box); Table1->AddToCell(Vbox14,1,0); Label2 = new VDKLabel(this,_("Files to grep")); Label2->Justify = (GtkJustification) 2; Vbox14->Add(Label2,0,1,1,0); Vbox15 = new VDKBox(this,v_box); Table1->AddToCell(Vbox15,1,1); Hbox18 = new VDKBox(this,h_box); Vbox15->Add(Hbox18,0,1,1,0); Hbox18->BorderWidth(0); FilesMatchEntry = new VDKEntry(this,0,""); FilesMatchEntry->Enabled = false; Hbox18->Add(FilesMatchEntry,0,1,1,0); BrowseButton = new VDKCustomButton(this,_("Browse..")); BrowseButton->SetSize(55,25); Hbox18->Add(BrowseButton,0,1,1,0); Vbox16 = new VDKBox(this,v_box); Table1->AddToCell(Vbox16,2,0); ClearFilesButton = new VDKCustomButton(this,_("Clear files")); Vbox16->Add(ClearFilesButton,0,1,1,0); Vbox17 = new VDKBox(this,v_box); Table1->AddToCell(Vbox17,2,1); Hbox20 = new VDKBox(this,h_box); Vbox17->Add(Hbox20,0,1,1,0); Hbox20->BorderWidth(0); OkButton = new VDKCustomButton(this,_("Ok")); OkButton->SetSize(50,25); Hbox20->Add(OkButton,0,1,0,0); CancelButton = new VDKCustomButton(this,_("Cancel")); CancelButton->SetSize(50,25); Hbox20->Add(CancelButton,0,1,0,0); } // signal response method bool VDKBGrepDlg::OnOkButtonClick(VDKObject* sender) { if(strlen(TextMatchEntry->Text) > 0) sprintf(match,"%s", (char*) TextMatchEntry->Text); else *match = '\0'; Close(); return true; } // signal response method bool VDKBGrepDlg::OnCancelButtonClick(VDKObject* sender) { *match = '\0'; Close(); return true; } // signal response method bool VDKBGrepDlg::OnBrowseButtonClick(VDKObject* sender) { VDKFileDialog *child = new VDKFileDialog(this,selections, _("Select files to grep")); child->Filter = "*.cc"; child->ShowModal(); if(selections->size() > 0) { int size = 0,t; char* local; for(t = 0; t < selections->size();t++) { size+= strlen((char*) (*selections)[t]); size+=1; } local = new char[size+1]; *local = '\0'; for(t = 0; t < selections->size();t++) { strcat(local,(char*) (*selections)[t]); strcat(local," "); } FilesMatchEntry->Text = local; delete[] local; } return true; } // signal response method bool VDKBGrepDlg::OnClearFilesButtonClick(VDKObject* sender) { return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_guicanvas.cc0000644000000000000000000001453007275754333015033 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBGuiCanvas // put here vdk class name string #define VDK_CLASS "VDKCanvas" // put here vdk class name #define VDK_ANCESTOR VDKCanvas // put here here the widget will be named // (name+counter) #define VDK_WIDGET "canvas" extern char* wi_widget_prompts[]; static char buff[128]; // used to autogenerate default // labelbutton names and captions int CLASS::Counter = 0; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner): VDK_ANCESTOR(owner),VDKBObject(name) { // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // connects events. CONNECT_COMMON_EVENTS; gtk_widget_add_events(WrappedWidget(),GDK_POINTER_MOTION_MASK); EventConnect("motion_notify_event",&VDKBObject::OnMouseMove); // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); // a reasonable size SetSize(100,100); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable label button counter // to ensure unicity CLASS* canvas; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // actually makes widget canvas = new CLASS(buff,owner); VDKRgb white("white"); if(white.IsValid()) canvas->NormalBackground = white; // add widget to form return owner->AddToSelf(canvas,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; sprintf(tmp,"\n%s = new %s(this);",obj_name,VDK_CLASS); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; //char arg[64]; CLASS* canvas; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { canvas = new CLASS(obj_name,owner); // pack widget to container return owner->PackToSelf(canvas, container, buffer, parser); } else return false; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_handlebox.cc0000644000000000000000000002502207335650173015007 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include //#include #include #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBHandleBox // put here vdk class name string #define VDK_CLASS "VDKHandleBox" // put here vdk class name #define VDK_ANCESTOR VDKHandleBox // put here here the widget will be named // (name+counter) #define VDK_WIDGET "handlebox" extern char* wi_widget_prompts[]; static char buff[256]; int CLASS::Counter = 0; static char* vdkhandlebox_signals[] = { "child_attached_signal", "child_detached_signal",0 }; static char* vdkhandlebox_nicknames[] = { "ChildAttached","ChildDetached",0 }; DEFINE_EVENT_LIST(CLASS,VDKBEventContainer); DEFINE_SIGNAL_LIST(CLASS,VDKBEventContainer); /* */ bool CLASS:: DelBox(VDKObject* sender) { // destroy inner gtk+ placeholder widget gtk_widget_destroy(container); // call ancestor delete box VDKBEventContainer::DelBox(sender); // notify to inspector that object was deleted VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) prjman->objInspector->SetActive(NULL); } return true; } /* */ bool CLASS::SetBoxSize(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { ownerform->SetBoxSize(NULL); } return true; } //=========================================== /* */ CLASS::CLASS(char* name, VDKForm* owner): VDKBEventContainer(name,owner) { Counter++; VDKBObject::object = this; VDKBEventContainer::mode = mode; Init(); } /* */ CLASS::CLASS(char* name,VDKBEventContainer* outer): VDKBEventContainer(name,outer->Owner()) { VDKBObject::object = this; Counter++; outerbox = outer; Init(); } /* */ void CLASS::Init() { int t; for(t=0; vdkhandlebox_signals[t]; t++) siglist.add(VDKBSignal(vdkhandlebox_signals[t], this, vdkhandlebox_nicknames[t])); AddBox(); // makes a pop menu popmenu = new VDKBContainerPopMenu(this); delBox = new VDKMenuItem(popmenu,_(wi_widget_prompts[39])); setsize = new VDKMenuItem(popmenu,_(wi_widget_prompts[19])); SignalConnect(delBox,"activate",&CLASS::DelBox); SignalConnect(setsize,"activate",&CLASS::SetBoxSize); CONNECT_COMMON_EVENTS; /* assign this as parent so this can receive signals */ popmenu->Parent(this); popmenu->Setup(); /* better add it to owner, so will be surely destroyed even if never popped */ Owner()->AddItem(popmenu); SetSize(100,-1); } /* */ void CLASS::AddBox() { container = gtk_handle_box_new(); gtk_widget_set_size_request(GTK_WIDGET(container),-1,30); gtk_container_add(GTK_CONTAINER(widget),container); gtk_widget_show(container); } /* extra args unused */ void CLASS::AddWidget(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { if(BinCheck(wid)) { gtk_container_add (GTK_CONTAINER(container),wid->Widget()); gtk_widget_show(wid->Widget()); VDKBEventContainer::Add(wid,l_justify,expand,fill,padding); } else wid->Destroy(); } /* extra args used */ void CLASS::Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { AddWidget(wid); } /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable frame counter // to ensure unicity int result = 0; for(sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; CLASS::Counter++) sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); CLASS* box = new CLASS(buff,owner); if(owner->Active) { VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { if(ev && dynamic_cast(container)) { GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); box->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); box->SetPropValue(EXPAND_INTERNAL,buff); // others than justify and flag unuseful container->AddWidget(box,int(event->x), int(event->y), true,true,true); } else container->AddWidget(box); box->outerbox = container; } else if(! owner->Active->AddToParent(box,ev)) // target isn't a container result = 2; } else // no active widget result = 3; // 0 on success if(result && box) box->Destroy(); return result; } //////////////////////////////////////////////////////////////////// /* */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { VDKBEventContainer::WriteOnFrm(fp,parentobj); } char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char temp[256]; char bw[16]; // char arg[128]; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,PARSER_THIS) || !parser.GetParam(obj_parent,buffer,PARSER_PARENT) ) return NULL; else source = new char[8192]; sprintf(temp,"\n%s = new %s(this);",obj_name,VDK_CLASS); strcpy(source,temp); // get size VDKPoint size = parser.Size(buffer); if(size.X() > 0 || size.Y() > 0) { sprintf(temp,"\n%s->SetSize(%d,%d);",obj_name,size.X(),size.Y()); strcat(source,temp); } if(strcmp(obj_parent,NIHIL_PROP)) sprintf(temp,"\n%s->Add(%s",obj_parent,obj_name); else sprintf(temp,"\nAdd(%s",obj_name); strcat(source,temp); // prepares arguments for add widget to container char justify[16],expand[16],fill[16],padding[16]; if(parser.GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && parser.GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && parser.GetParam(fill,buffer,PROP_FILL_INTERNAL) && parser.GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(temp,",%s,%s,%s,%s);", justify,expand,fill,padding); strcat(source,temp); } else { sprintf(temp,");"); strcat(source,temp); } if(parser.GetParam(bw,buffer,PROP_BORDERWIDTH) && strcmp(bw,NIHIL_PROP)) { sprintf(temp,"\n%s->BorderWidth(%s);",obj_name,bw); strcat(source,temp); } return source; } /* */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; CLASS* box; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return false; // get mode and size VDKPoint size = parser.Size(buffer); // get packing args int justification = l_justify; int expand=0,fill=0,padding=0; int bw; // border width // int space; // spacing char arg[32]; if(parser.GetParam(arg,buffer,PROP_JUSTIFY_INTERNAL)) justification = atoi(arg); if(parser.GetParam(arg,buffer,PROP_EXPAND_INTERNAL)) expand = atoi(arg); if(parser.GetParam(arg,buffer,PROP_FILL_INTERNAL)) fill = atoi(arg); if(parser.GetParam(arg,buffer,PROP_PADDING_INTERNAL)) padding = atoi(arg); if(parser.GetParam(arg,buffer,PROP_BORDERWIDTH) && strcmp(arg,NIHIL_PROP)) bw = atoi(arg); else bw = -1; // no parent, widget will be added to owner form innerbox if(!strcmp(obj_parent,NIHIL_PROP)) { box = new CLASS(obj_name,owner->InnerBox()); owner->AddWidget(box,justification,expand,fill,padding); } // get parent container address else { VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { box = new CLASS(obj_name,container); container->AddWidget(box,justification,expand,fill,padding,true); box->outerbox = container; } else // FIX ME: user warning return false; } // call ancestor to set common properties VDKBObject::CreateWidget(box,buffer,parser); if(size.X() > 0 || size.Y() > 0) box->ObjectFromVDK()->SetSize(size.X(),size.Y()); if(bw >= 0) { box->BorderWidth(bw); box->SetPropValue(BORDERWIDTH,arg); } return true; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* This is called by object inspector when a widget is selected by user, thus to allow widget to set his own property controls. */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { return VDKBEventContainer::ExtraWidget(isp); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_ide_def.cc0000644000000000000000000001720207475363100014417 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include extern char* ExtractWord(char* src,char* tgt,char* key1,char* key2); extern char * ExtractSection (char *buffer, char *section_begin, char* section_end); static char *avoid = "\"\r\n\t "; static char *avoid1 = "\"\r\n\t"; static char buffer[256]; /* */ VDKBDefaults::VDKBDefaults(char* resFile):editor(),unit() { rcFile = resFile ? resFile : DEFAULTS_FILE; } /* */ void VDKBDefaults::LoadDefaults(char* home) { char* buff,*p,*section; struct stat info; char* file; bool setflag = false; // look at user home sprintf(buffer,"%s/.vdkb2/%s",home,(char*) rcFile); if (stat(buffer,&info) == -1) // look at share dir sprintf(buffer,"%s/%s",VDKB_DATADIR,(char*) rcFile); file = buffer; if(stat(file,&info) == -1) { printf("%s",_(user_messages[user_nodefaults])); fflush(stdout); exit(1); } FILE* fp = fopen(file,"r"); if(fp) { int c; buff = p = new char[info.st_size+1]; while( (c = fgetc(fp)) != EOF) { if(c == '"') setflag = setflag ? false : true; if (!strchr (setflag ? avoid1 : avoid, c)) *p++ = (char) c; } /* */ *p = '\0'; fclose(fp); } else return; // load editor defaults if((section = ExtractSection(buff,EDITOR_SECTION,END_SECTION))) { editor.LoadDefaults(section); delete[] section; } // load unit defaults if((section = ExtractSection(buff,UNIT_SECTION,END_SECTION))) { unit.LoadDefaults(section); delete[] section; } // load project defaults if((section = ExtractSection(buff,PROJECT_SECTION,END_SECTION))) { project.LoadDefaults(section); delete[] section; } // finished delete[] buff; } /////////////////// Editor defaults class /////////// void VDKBEditorDefaults::LoadDefaults(char* section) { int hsize = 0; int vsize = 0; char *key = new char[128]; char* p; if((p = ExtractWord(section,key,FONT_KEY,END_KEY))) font = key; if((p = ExtractWord(section,key,FG_KEY,END_KEY))) fg = key; if((p = ExtractWord(section,key,BG_KEY,END_KEY))) bg = key; if((p = ExtractWord(section,key,EDITOR_HSIZE_KEY,END_KEY))) hsize = atoi(key); else hsize = 0; if((p = ExtractWord(section,key,EDITOR_VSIZE_KEY,END_KEY))) vsize = atoi(key); else vsize = 0; if( (hsize > 0) & (vsize > 0) ) size = VDKPoint(hsize,vsize); // syntax colors & fonts if((p = ExtractWord(section,key, EDITOR_KEY_FONT_KEY,END_KEY))) key_font = key; if((p = ExtractWord(section,key, EDITOR_KEY_COLOR_KEY,END_KEY))) key_color = key; if((p = ExtractWord(section,key, EDITOR_GTK_FONT_KEY,END_KEY))) gtk_font = key; if((p = ExtractWord(section,key, EDITOR_GTK_COLOR_KEY,END_KEY))) gtk_color = key; if((p = ExtractWord(section,key, EDITOR_MACRO_FONT_KEY,END_KEY))) macro_font = key; if((p = ExtractWord(section,key, EDITOR_MACRO_COLOR_KEY,END_KEY))) macro_color = key; if((p = ExtractWord(section,key, EDITOR_PREPROCESS_FONT_KEY,END_KEY))) preprocess_font = key; if((p = ExtractWord(section,key, EDITOR_PREPROCESS_COLOR_KEY,END_KEY))) preprocess_color = key; if((p = ExtractWord(section,key,EDITOR_CONST_FONT_KEY,END_KEY))) const_font = key; if((p = ExtractWord(section,key,EDITOR_CONST_COLOR_KEY,END_KEY))) const_color = key; if((p = ExtractWord(section,key,EDITOR_COMMENT_FONT_KEY,END_KEY))) comment_font = key; if((p = ExtractWord(section,key,EDITOR_COMMENT_COLOR_KEY,END_KEY))) comment_color = key; // timed saving if((p = ExtractWord(section,key, EDITOR_KEY_TIMEDSAVE,END_KEY))) timedsave = key; // file backup if((p = ExtractWord(section,key, EDITOR_KEY_BACKUP,END_KEY))) backup = key; // editor tab if((p = ExtractWord(section,key, EDITOR_KEY_TAB,END_KEY))) tab = key; // finished delete[] key; } /////////////////// Unit defaults class /////////// void VDKBUnitDefaults::LoadDefaults(char* section) { char *key = new char[128]; char* p; if((p = ExtractWord(section,key,UNIT_COUNT_KEY,END_KEY))) count = atoi(key); if((p = ExtractWord(section,key,UNIT_NAME_KEY,END_KEY))) def_name = key; if((p = ExtractWord(section,key,UNIT_CC_EXT_KEY,END_KEY))) cc_ext = key; if((p = ExtractWord(section,key,UNIT_H_EXT_KEY,END_KEY))) h_ext = key; // finished delete[] key; } /////////////////// Project defaults class /////////// void VDKBProjectDefaults::LoadDefaults(char* section) { char *key = new char[128]; char* p; if((p = ExtractWord(section,key,PROJECT_COUNT_KEY,END_KEY))) count = atoi(key); if((p = ExtractWord(section,key,PROJECT_NAME_KEY,END_KEY))) def_name = key; if((p = ExtractWord(section,key,PROJECT_PRJ_EXT_KEY,END_KEY))) prj_ext = key; if((p = ExtractWord(section,key,PROJECT_HIDE_ON_RUN_KEY,END_KEY))) hide_on_run = key; if((p = ExtractWord(section,key,PROJECT_AUTOSAVE_KEY,END_KEY))) autosave = key; if((p = ExtractWord(section,key,PROJECT_STARTUPDIR_KEY,END_KEY))) startupdir = key; if((p = ExtractWord(section,key,PROJECT_WI_RESIZEABLE_KEY,END_KEY))) wi_resizeable = key; if((p = ExtractWord(section,key,PROJECT_WI_LAYOUT_KEY,END_KEY))) wi_layout = key; if((p = ExtractWord(section,key,PROJECT_VDK_REF_PATH_KEY,END_KEY))) vdk_ref_path = key; if((p = ExtractWord(section,key,PROJECT_VDK_REF_BROWSER_KEY,END_KEY))) vdk_ref_browser = key; if((p = ExtractWord(section,key,PROJECT_SAVE_SESSION_KEY,END_KEY))) save_session = key; if((p = ExtractWord(section,key,PROJECT_CODE_INDENT_KEY,END_KEY))) code_indent = key; if((p = ExtractWord(section,key,PROJECT_RUN_MODAL_KEY,END_KEY))) run_modal = key; if((p = ExtractWord(section,key,PROJECT_EMACS_KEY,END_KEY))) emacs = key; if((p = ExtractWord(section,key,PROJECT_CODE_AUTOINDENT_KEY,END_KEY))) code_autoindent = key; if((p = ExtractWord(section,key,PROJECT_SHOWLN_KEY,END_KEY))) showln = key; if((p = ExtractWord(section,key,PROJECT_EXTASCII_KEY,END_KEY))) extascii = key; if((p = ExtractWord(section,key,PROJECT_THEME_KEY,END_KEY))) theme = key; if((p = ExtractWord(section,key,PROJECT_ENABLE_CLASS_BROWSER_KEY,END_KEY))) enable_class_browser = key; // finished delete[] key; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_image.cc0000644000000000000000000003116607454567040014135 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include #include "./pixmaps/apple.xpm" #include "./pixmaps/copy.xpm" /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBImage // put here vdk class name string #define VDK_CLASS "VDKImage" // put here vdk class name #define VDK_ANCESTOR VDKImage // put here here the widget will be named // (name+counter) #define VDK_WIDGET "image" extern char* wi_widget_prompts[]; static char buff[256]; // used to autogenerate default // labelbutton names and captions int CLASS::Counter = 0; /* label properties names */ char* vdkimage_props[] = { GLYPH,GLYPH_BYDATA, 0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// /* - constructor */ // default pixmap // defined in vdkb_local.cc extern char** default_pixmap; CLASS::CLASS(char* name, VDKForm* owner, char* pixfile): VDK_ANCESTOR(owner,pixfile,NULL,true),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties for(t=0; vdkimage_props[t]; t++) proplist.add(VDKBProperty(vdkimage_props[t])); // connects events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); SetSize(20,20); } CLASS::CLASS(char* name, VDKForm* owner, char** pixdata): VDK_ANCESTOR(owner,(const char**) pixdata,NULL,true),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties for(t=0; vdkimage_props[t]; t++) proplist.add(VDKBProperty(vdkimage_props[t])); // connects events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_GLYPH,(char*) GetProp(GLYPH)); fprintf(fp,"\n\t%s%s;", PROP_GLYPH_BYDATA, (char*) GetProp(GLYPH_BYDATA)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* pixmap = NULL; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // creates a default pixmap pixmap = new CLASS(buff,owner,default_pixmap); return owner->AddToSelf(pixmap,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char obj_glyph[128]; char bydata[16]; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; if(parser.GetParam(obj_glyph,buffer,PROP_GLYPH) && strcmp(obj_glyph,NIHIL_PROP)) ; else strcpy(obj_glyph,""); if(parser.GetParam(bydata,buffer,PROP_GLYPH_BYDATA) && strcmp(bydata,NIHIL_PROP)) ; else strcpy(bydata,""); // some cases... if(*obj_glyph) { if(strcmp(bydata,CHECK_YES)) sprintf(tmp,"\n%s = new %s(this,%s%s%s);", obj_name,VDK_CLASS,"\"", obj_glyph, "\""); else { int z = 0; char* local = new char[strlen(obj_glyph)+1], *p = NULL; strcpy(local,obj_glyph); sprintf(buff,"\n#include \"%s\"",local); // refuses to include twice same file VDKString symbol(local); if(parser.decSymbols.find(symbol)) { #if 0 printf("\nsymbol:%s already declared", (char*) symbol); fflush(stdout); #endif strcpy(tmp,""); } else { strcpy(tmp,buff); parser.decSymbols.add(symbol); } p = get_shortfilename(local); // changes <.-> to _ if(!p) p = local; for(; p[z];z++) { if((p[z] == '.') || (p[z] == '-') ) p[z] = '_'; } sprintf(buff,"\n%s = new %s(this,%s);",obj_name,VDK_CLASS, p); strcat(tmp,buff); delete [] local; } } else sprintf(tmp,"\n%s = new %s(this,%s);", obj_name, VDK_CLASS, "(char*) NULL"); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char obj_glyph[256]; char bydata[16]; //char arg[64]; CLASS* pixmap; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; // get glyph if(parser.GetParam(obj_glyph,buffer,PROP_GLYPH) && strcmp(obj_glyph,NIHIL_PROP)) ; else strcpy(obj_glyph,""); // get glyph by data if(parser.GetParam(bydata,buffer,PROP_GLYPH_BYDATA) && strcmp(bydata,NIHIL_PROP)) ; else strcpy(bydata,""); VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { if(*obj_glyph) pixmap = new CLASS(obj_name,owner,obj_glyph); else pixmap = new CLASS(obj_name,owner,default_pixmap); // glyph if(*obj_glyph) pixmap->SetPropValue(GLYPH,obj_glyph); // glyph by data if(*bydata) pixmap->SetPropValue(GLYPH_BYDATA,bydata); // pack widget to container return owner->PackToSelf(pixmap, container, buffer, parser); } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,h_box,shadow_etched_in); VDKTable *table = new VDKTable(inspector,2,2); // table->SetSize(219,-1); VDKBox* bbox = new VDKBox(inspector,h_box); VDKCustomButton* set = new VDKCustomButton(inspector,(const char**) apple_xpm, NULL); set->SetTip(_(wi_widget_prompts[7])); set->Relief = (GtkReliefStyle) 2; bbox->Add(set,l_justify,false,false,0); set->Parent(this); SignalConnect(set,"clicked",&CLASS::OnSetGlyph); VDKString s = GetProp(GLYPH); shortname = new VDKCustomButton(inspector,(const char**) copy_xpm,NULL); shortname->Relief = (GtkReliefStyle) 2; shortname->SetTip(_(wi_widget_prompts[9])); shortname->Enabled = strcmp((char*) s,NIHIL_PROP); bbox->Add(shortname,l_justify,false,false,0); shortname->Parent(this); SignalConnect(shortname,"clicked",&CLASS::OnSetShortName); table->AddToCell(bbox,0,0); pixfile = new VDKEntry(inspector,0, !strcmp((char*) s,NIHIL_PROP) ? NULL : (char*) s); pixfile->SetSize(120,-1); pixfile->Editable = true; table->AddToCell(pixfile,0,1); pixfile->Parent(this); pixfile->SetTip(_("Enter \"nihil\" to reset assigned pixmap")); SignalConnect(pixfile,"activate",&CLASS::OnSetGlyph); s = GetProp(GLYPH_BYDATA); bydata = new VDKCheckButton(inspector,_(wi_widget_prompts[58])); bydata->SetTip(_(wi_widget_prompts[59])); table->AddToCell(bydata,1,0); bydata->Checked = !strcmp((char*) s, CHECK_YES); bydata->Parent(this); SignalConnect(bydata,"toggled",&CLASS::OnToggleBydata); bframe->Add(table,l_justify,false,false,false); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnToggleBydata(VDKObject*) { SetPropValue(GLYPH_BYDATA, bydata->Checked ? CHECK_YES : CHECK_NO); inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetGlyph(VDKObject* sender) { char* pix = pixfile->Text; if(sender == pixfile) { if (!strcmp(pix,NIHIL_PROP)) { const char** file = (const char**) default_pixmap; SetPropValue(GLYPH,pix); SetImage(file); inspector->FormNeedToBeChanged(); shortname->Enabled = false; } } else { FileStringArray selections; VDKXpmBrowser *child = new VDKXpmBrowser(Owner(),&selections, _(file_dialog_prompts[0])); child->ShowModal(); if(selections.size() > 0) { SetImage((char*) selections[0]); pixfile->Text = (char*) selections[0]; SetPropValue(GLYPH,(char*) selections[0]); inspector->FormNeedToBeChanged(); shortname->Enabled = true; } } return true; } /* */ bool CLASS::OnSetShortName(VDKObject*) { VDKString s = GetProp(GLYPH); VDKString path; VDKBProject* project; VDKBProjectManager* prjman; if(!inspector) return true; prjman = dynamic_cast(inspector->Owner()); if(!prjman) return true; project = prjman->Project(); if(!project) return true; path = project->Path; sprintf(buff,"cp %s %s/",(char*) s, (char*) path); system(buff); char* p = get_shortfilename((char*) s); if(p) { VDKString short_name = p; pixfile->Text = (char*) short_name; SetPropValue(GLYPH,(char*) short_name); inspector->FormNeedToBeChanged(); } return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_locale.cc0000644000000000000000000001426007452607275014311 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #include #include #include #include "pixmaps/newprj.xpm" #include "pixmaps/newunit.xpm" #include "pixmaps/newform.xpm" #include "pixmaps/mininewform.xpm" #include "pixmaps/loadprj.xpm" #include "pixmaps/loadfile.xpm" #include "pixmaps/savefile.xpm" #include "pixmaps/saveprj.xpm" #include "pixmaps/viewunits.xpm" #include "pixmaps/viewforms.xpm" #include "pixmaps/addtoprj.xpm" #include "pixmaps/remfromprj.xpm" #include "pixmaps/toggleformunits.xpm" #include "pixmaps/run.xpm" #include "pixmaps/selector.xpm" #include "pixmaps/search.xpm" #include "pixmaps/acsupport.xpm" #include "pixmaps/emacs.xpm" // container widgets pixmaps #include "pixmaps/vbox.xpm" #include "pixmaps/hbox.xpm" #include "pixmaps/frame.xpm" #include "pixmaps/table.xpm" #include "pixmaps/vpaned.xpm" #include "pixmaps/hpaned.xpm" #include "pixmaps/notebook.xpm" #include "pixmaps/handlebox.xpm" #include "pixmaps/coolbar.xpm" #include "pixmaps/scrolledwindow.xpm" #include "pixmaps/menubar.xpm" #include "pixmaps/rbgroup.xpm" #include "pixmaps/hrbgroup.xpm" // #include "pixmaps/packer.xpm" #include "pixmaps/fixed.xpm" // button widgets pixmaps #include "pixmaps/button.xpm" #include "pixmaps/pixbutton.xpm" #include "pixmaps/spinbutton.xpm" #include "pixmaps/checkbutton.xpm" #include "pixmaps/radiobutton.xpm" // text widget pixmaps #include "pixmaps/label.xpm" #include "pixmaps/entry.xpm" #include "pixmaps/text.xpm" // misc widgets pixmaps #include "pixmaps/canvas.xpm" #include "pixmaps/pixmap.xpm" #include "pixmaps/apple.xpm" #include "pixmaps/progressbar.xpm" #include "pixmaps/scale.xpm" #include "pixmaps/statusbar.xpm" #include "pixmaps/timer.xpm" #include "pixmaps/list.xpm" #include "pixmaps/combo.xpm" #include "pixmaps/hseparator.xpm" #include "pixmaps/vseparator.xpm" #include "pixmaps/tree.xpm" #include "pixmaps/grid.xpm" #include "pixmaps/ghost.xpm" // gnome widgets pixmaps #include "pixmaps/gnomededit.xpm" #include "pixmaps/gnomeentry.xpm" // dialogs widgets pixmaps #include "pixmaps/openfiledlg.xpm" #include "pixmaps/savefiledlg.xpm" #include "pixmaps/colorseldialog.xpm" #include "pixmaps/fontseldialog.xpm" // prj man pixmaps #include "pixmaps/new_prj_big.xpm" #include "pixmaps/remove_big.xpm" #include "pixmaps/activate_big.xpm" #include "pixmaps/prj_node.xpm" #include "pixmaps/unit_node.xpm" #include "pixmaps/exec.xpm" #include "pixmaps/formprops.xpm" #include "pixmaps/edit.xpm" // class viewer pixmaps #include "pixmaps/addfunc.xpm" // about dialog xpm's #include "pixmaps/simpson1.xpm" #include "pixmaps/simpson2.xpm" // project wizard xpm's #include "pixmaps/app_wiz.xpm" #include "pixmaps/compo_wiz.xpm" #include "pixmaps/wizard_wiz.xpm" // maker pixmaps #include "pixmaps/maker.xpm" #include "pixmaps/makerkill.xpm" // static char buffer[256]; // extern void create_nonvdk_modal_window (char* prompt); //////////// INTERFACE PROMPTS AND PIXMAPS //////////// // main toolbar pixmaps (upper side) char ** main_toolbar_pixmaps[] = { newprj_xpm,newunit_xpm,newform_xpm, loadprj_xpm,loadfile_xpm,saveprj_xpm, savefile_xpm, 0 }; char ** main_toolbar1_pixmaps[] = { toggleformunits_xpm,run_xpm,selector_xpm,emacs_xpm, 0 }; // main menu pixmaps char **main_menu_pixmaps[] = { newprj_xpm,newunit_xpm,newform_xpm, //0 1 2 loadprj_xpm,loadfile_xpm, // 3 4 savefile_xpm,saveprj_xpm, // 5 6 viewunits_xpm,viewforms_xpm, // 7 8 addtoprj_xpm,remfromprj_xpm, // 9 10 search_xpm,acsupport_xpm, //11 12 0 }; // container widgets pixmaps char **container_widgets_pixmaps[] = { vbox_xpm,hbox_xpm,frame_xpm, // 0 1 2 table_xpm,vpaned_xpm,hpaned_xpm, // 3 4 5 notebook_xpm,handlebox_xpm,coolbar_xpm, // 6 7 8 scrolledwindow_xpm, menubar_xpm, rbgroup_xpm, // 9 10 11 hrbgroup_xpm, /*packer_xpm, */ fixed_xpm //12 13 }; // button widgets pixmaps char **button_widgets_pixmaps[] = { button_xpm,spinbutton_xpm,checkbutton_xpm, // 0 1 2 radiobutton_xpm // 3 }; // text widgets pixmaps char **text_widgets_pixmaps[] = { label_xpm,entry_xpm,text_xpm // 0 1 2 }; // misc widgtes pixmpas // used by VDKBPixmap gui object in vdkb_pixmap.cc char** default_pixmap = pixmap_xpm; char **misc_widgets_pixmaps[] = { canvas_xpm,pixmap_xpm,apple_xpm,progressbar_xpm, // 0 1 2 3 scale_xpm,statusbar_xpm,timer_xpm, // 4 5 6 list_xpm,combo_xpm,tree_xpm, // 7 8 9 hseparator_xpm, vseparator_xpm, // 10 11 ghost_xpm // grid_xpm, tree_xpm 12 }; // gnome widgets pixmaps char **gnome_widgets_pixmaps[] = { statusbar_xpm,gnomededit_xpm,gnomeentry_xpm // 0 1 2 }; // xdb widgets pixmaps char **xdb_widgets_pixmaps[] = { entry_xpm,list_xpm,checkbutton_xpm,text_xpm // 0 1 2 3 }; // dlg widgets pixmaps char **dlg_widgets_pixmaps[] = { openfiledlg_xpm,openfiledlg_xpm,savefiledlg_xpm, // 0 1 2 colorseldialog_xpm,fontseldialog_xpm // 3 4 }; //////////////////// PRJMAN ///////////////// char **prjman_pixmaps[] = { NULL,newprj_xpm,addtoprj_xpm, // 0 1 2 remfromprj_xpm,edit_xpm, // 3 4 form_props_xpm,addfunc_xpm, // 5 6 form_props_xpm,activate_big_xpm, // 7 8 -- needs images for cv maker_xpm // 9 }; /////////////////////////////////// // locale parser routines /////////////////////////////////// void LoadInternational(int language, char* home) { } /* */ void FreeInternational() { } vdkbuilder2-2.4.0/vdkbuilder/vdkb_logo.cc0000644000000000000000000000724107661776531014017 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include DEFINE_SIGNAL_MAP(VDKBLogo,VDKForm) ON_SIGNAL(timer,timer_tick_signal,OnTimer) END_SIGNAL_MAP static char buff[256]; /* */ VDKBLogo::VDKBLogo(VDKForm* owner): VDKForm(owner,NULL,v_box,GTK_WINDOW_POPUP) { } /* */ VDKBLogo::~VDKBLogo() {} /* */ void VDKBLogo::OnShow(VDKForm*) { /* struct stat info; char local[128]; */ /* this useful trick permits to process all pending events before entering into time-consuming operations such as one below (loading a big and higly coloured pixmap) */ /* sprintf(local,"%s %s\n%s",PACKAGE,VERSION,_("Loading logo pixmap..")); ShowMessage(local); while(gtk_events_pending()) gtk_main_iteration(); VDKBuilder* app = (VDKBuilder*) Application(); sprintf(buff,"%s/.vdkb2/%s",(char*) app->user_home,VDKB_LOGO); if (stat(buff,&info) == -1) sprintf(buff,"%s/%s",VDKB_DATADIR,VDKB_LOGO); //VDKRawPixmap *rawpixmap = new VDKRawPixmap(this,buff); VDKPixbuf *pixbuf = new VDKPixbuf(this,buff); VDKPoint size(pixbuf->Width(),pixbuf->Height()); Visible = false; SetFormSize(size); VDKImage *image = new VDKImage(this,(char*) NULL); // image->SetImage(pixbuf); frame->RemoveObject(label); frame ->Add(image); timer = new VDKTimer(this,4000,true); Show(GTK_WIN_POS_CENTER); pixbuf->Destroy(); */ } /* */ static char* authors = "The VDK Team:\nMario Motta\nIonutz Borcoman\nTim Lorenz\nGeorge Boutwell\nPierre L. Malatray\nMile Lazarovski"; void VDKBLogo::Setup() { struct stat info; VDKBuilder* app = dynamic_cast(Application()); if(!app) return; Box()->BorderWidth(0); NormalBackground = VDKRgb("navyblue"); gtk_window_position(GTK_WINDOW(Window()),GTK_WIN_POS_CENTER); VDKFrame* frame = new VDKFrame(this); frame->BorderWidth(2); frame->Shadow = shadow_out; sprintf(buff,"%s/.vdkb2/%s",(char*) app->user_home,VDKB_LOGO); if (stat(buff,&info) == -1) sprintf(buff,"%s/%s",VDKB_DATADIR,VDKB_LOGO); VDKImage *image = new VDKImage(this,(char*) buff,authors,true); frame ->Add(image); timer = new VDKTimer(this,4000,true); Add(frame); } /* */ bool VDKBLogo::OnTimer(VDKObject*) { Close(); return true; } /* */ void VDKBLogo::ShowMessage(char* msg) { label->Caption = msg; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_lru.cc0000644000000000000000000000773510022113245013635 /* * ============ * VDK Builder * Version 1.2 * Revision 4 * October 2000 * ============ * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifdef HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #endif #include #include #define MAX_LRU 10 extern VDKBuilder* TheApp; extern char* BugFix01(const char* where); static char buff[256]; #define LRUFILE ".vdkb2/res/lruprojects" LRUManager::LRUManager() { } LRUManager::~LRUManager() { Save(); } /* initializes LRU projects stuff loadin itemlist with lru project names */ void LRUManager::Init() { struct stat info; char* file; // look at user home sprintf(buff,"%s/%s",(char*) TheApp->user_home,LRUFILE); file = buff; // no lru projects here if(stat(file,&info) == -1) return; else if (! Load(buff)) TheApp->VDKMessageBox(APPNAME, _("Failed to load lru projects file"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 4000 ); return; } /* load item list reading lru file */ bool LRUManager::Load(const char* fn) { FILE* fp = fopen(fn,"r"); if(!fp) return false; else { itemlist.flush(); while(fgets(buff,sizeof(buff),fp) != NULL) { buff[strlen(buff)-1] = buff[strlen(buff)-1] == '\n' ? '\0': buff[strlen(buff)-1]; itemlist.add(LRUItem(buff)); } fclose(fp); return true; } } bool LRUManager::Save() { char* file; FILE* fp; // look at user home sprintf(buff,"%s/%s",(char*) TheApp->user_home,LRUFILE); file = buff; fp = fopen(file,"w+"); if(!fp) return false; // scans list and save items LRUItemsIterator li(itemlist); for(;li;li++) { // retrieves project name from list item const char* prompt = li.current().Name(); fputs(prompt,fp); fputc('\n',fp); } fclose(fp); return true; } /* update lru list */ bool LRUManager::Update(char* prj) { char* local = NULL; if(!prj) return false; else { // ugly patch to remove double "//" // inserted by old buggy projects wizard char* rep = NULL; local = new char[strlen(prj)+1]; strcpy(local,prj); rep = BugFix01(local); if(rep) { strcpy(local,rep); delete rep; } } LRUItem item(local); bool have_room = itemlist.size() < MAX_LRU; bool found = itemlist.find(item) != NULL; // project isn't into list if(!found) { // there is enough space if(have_room) // push item into list itemlist.push(item); else { // remove less recently used itemlist.unlink(itemlist.size()-1); // push item itemlist.push(item); } } // project is already into list else { // find ordinal position int ndx = itemlist.at(item); if(ndx >= 0) { // unlink it itemlist.unlink(ndx); // push itemlist.push(item); } } if(local) delete[] local; return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_main_automa.cc0000644000000000000000000001264507452602613015340 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #include #include #include extern bool CheckDebugger(char* exe); /* this state machine manages enabling/disabling menu/speedbar functions */ static char buff[256]; void VDKBMainForm::Automa(int state) { VDKString pname; char* q; int t; bool have_make; while (state != automa_end) { switch(state) { case automa_error: state = automa_end; break; case automa_init: // disable most of menu functions save_item->Enabled = false; saveall_item->Enabled = false; //edit_menu->Enabled = false; search_menu->Enabled = false; view_menu->Enabled = false; viewunits_item->Enabled = false; viewforms_item->Enabled = false; prj_menu->Enabled = false; newform_item->Enabled = true; tools_menu->Enabled = true; compo_menu->Enabled = true; // disable some speedbar buttons /* (*toolbar)[NEW_FORM_BUTTON]->Enabled = false; (*toolbar)[SAVE_PRJ_BUTTON]->Enabled = false; (*toolbar)[SAVE_FILE_BUTTON]->Enabled = false; */ nb_array[NEW_FORM_BUTTON]->Enabled = false; nb_array[SAVE_PRJ_BUTTON]->Enabled = false; nb_array[SAVE_FILE_BUTTON]->Enabled = false; for(t=0; t < 4; t++) // (*toolbar1)[t]->Enabled = false; nb_array1[t]->Enabled = false; // enables help on vdk ref help_vdk->Enabled = strcmp((char*) VDKBuilder::ideDefaults.project.vdk_ref_path,"?") != 0; state = automa_end; break; case automa_editor_on: // will be activated when gui cut&paste will be enabled. save_item->Enabled = true; saveall_item->Enabled = true; search_menu->Enabled = true; //(*toolbar)[SAVE_FILE_BUTTON]->Enabled = true; nb_array[SAVE_FILE_BUTTON]->Enabled = true; state = automa_end; break; case automa_editor_off: save_item->Enabled = false; saveall_item->Enabled = false; search_menu->Enabled = false; viewunits_item->Enabled = false; // disable some speedbar buttons // (*toolbar)[SAVE_PRJ_BUTTON]->Enabled = false; // (*toolbar)[SAVE_FILE_BUTTON]->Enabled = false; nb_array[SAVE_PRJ_BUTTON]->Enabled = false; nb_array[SAVE_FILE_BUTTON]->Enabled = false; state = automa_end; break; case automa_prjman_on: prj_menu->Enabled = true; // (*toolbar)[SAVE_PRJ_BUTTON]->Enabled = true; // (*toolbar)[NEW_FORM_BUTTON]->Enabled = true; nb_array[SAVE_PRJ_BUTTON]->Enabled = true; nb_array[NEW_FORM_BUTTON]->Enabled = true; exec_item->Enabled = true; view_menu->Enabled = true; viewforms_item->Enabled = true; ac_menu->Enabled = true; // (*toolbar1)[FORM_LIST]->Enabled = true; nb_array1[FORM_LIST]->Enabled = true; // enable others ac support sprintf(buff,"%s/Makefile",(char*) prjman->Project()->Path); have_make = !access(buff,F_OK); ac_make->Enabled = have_make; ac_makeclean->Enabled = have_make; ac_makedist->Enabled = have_make; ac_makedistclean->Enabled = have_make; // checks if executable exists pname = prjman->Project()->PathName; q = get_extension( (char*) pname); // another weird bug // for an obscure reason .prj could be gone away // april 6 ,99 // not so obscure now: // just a bad data hiding concept on using VDKString::(char*) // conversion operator, but it's late to correct it if(!q) { pname += ".prj"; q = get_extension( (char*) pname); *q = '\0'; } else *q = '\0'; { bool executable = true; // (*toolbar1)[RUN_PRJ_BUTTON]->Enabled = executable; nb_array1[RUN_PRJ_BUTTON]->Enabled = executable; // check if debugger option is empty or not bool isdebug = CheckDebugger((char*) prjman->Project()->Options()->debugger); // bool isdebug = !(prjman->Project()->Options()->debugger.isNull()); prjdebug_item->Enabled = executable && isdebug; } state = automa_end; break; case automa_prjman_off: prj_menu->Enabled = false; // (*toolbar)[SAVE_PRJ_BUTTON]->Enabled = false; // (*toolbar)[NEW_FORM_BUTTON]->Enabled = false; nb_array[SAVE_PRJ_BUTTON]->Enabled = false; nb_array[NEW_FORM_BUTTON]->Enabled = false; prjdebug_item->Enabled = false; ac_menu->Enabled = false; state = automa_end; break; case automa_edit_form_on: // enable boxes (*containers_widgets_bar)[0]->Enabled = true; (*containers_widgets_bar)[1]->Enabled = true; // reset->Enabled = true; state = automa_end; break; case automa_edit_form_off: // disable boxes (*containers_widgets_bar)[0]->Enabled = false; (*containers_widgets_bar)[1]->Enabled = false; // reset->Enabled = false; state = automa_end; break; default: state = automa_end; break; } } } vdkbuilder2-2.4.0/vdkbuilder/vdkb_main_sig.cc0000644000000000000000000006667510022114072014630 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include #include #if USE_XDB #include #endif #include // emacs support extern bool EmacsServerStarted(); extern int StartEmacs(char ** args); extern int EmacsPid(); //////////////////////////////////////////////////// DEFINE_SIGNAL_LIST(VDKBMainForm,VDKForm); DEFINE_SIGNAL_MAP(VDKBMainForm,VDKForm) /* in vdkb_acsupport.cc */ ON_SIGNAL(ac_autogen,activate_signal,AcAutogen), ON_SIGNAL(ac_make,activate_signal,AcMake), ON_SIGNAL(ac_makeclean,activate_signal,AcMakeClean), ON_SIGNAL(ac_makedist,activate_signal,AcMakeDist), ON_SIGNAL(ac_makedistclean,activate_signal,AcMakeDistclean), ON_SIGNAL(compo_menu,activate_signal,BrowseCompoDb), ON_SIGNAL(viewforms_item,activate_signal,ViewForms), ON_SIGNAL(help_about,activate_signal,About), // ON_SIGNAL(help_index,activate_signal,VDKBHelp), ON_SIGNAL(help_vdk,activate_signal,VDKBHelp), ON_SIGNAL(quit_item,activate_signal,Quit), // ON_SIGNAL(toolbar,clicked_signal,HandleToolbar), ON_SIGNAL(newprj_nb,clicked_signal,HandleToolbar), ON_SIGNAL(newunit_nb,clicked_signal,HandleToolbar), ON_SIGNAL(newform_nb,clicked_signal,HandleToolbar), ON_SIGNAL(loadprj_nb,clicked_signal,HandleToolbar), ON_SIGNAL(loadfile_nb,clicked_signal,HandleToolbar), ON_SIGNAL(saveprj_nb,clicked_signal,HandleToolbar), ON_SIGNAL(savefile_nb,clicked_signal,HandleToolbar), // ON_SIGNAL(toolbar1,clicked_signal,HandleToolbar1), ON_SIGNAL(unitlist_nb,clicked_signal,HandleToolbar1), ON_SIGNAL(toggle_nb,clicked_signal,HandleToolbar1), ON_SIGNAL(formlist_nb,clicked_signal,HandleToolbar1), ON_SIGNAL(runprj_nb,clicked_signal,HandleToolbar1), ON_SIGNAL(newunit_item,activate_signal,NewUnit), ON_SIGNAL(openfile_item,activate_signal,OpenFile), ON_SIGNAL(openprj_item,activate_signal,OpenProject), ON_SIGNAL(newprj_item,activate_signal,NewProject), ON_SIGNAL(prjmake_item,activate_signal,Make), ON_SIGNAL(prjmakeclean_item,activate_signal,Make), ON_SIGNAL(prjoptions_item,activate_signal,ProjectOptions), ON_SIGNAL(search_item,activate_signal,Search), ON_SIGNAL(repeat_search_item,activate_signal,RepeatSearch), ON_SIGNAL(replace_item,activate_signal,ReplaceText), ON_SIGNAL(prjdebug_item,activate_signal,RunDebugger), ON_SIGNAL(save_item,activate_signal,FileSave), ON_SIGNAL(saveall_item,activate_signal,SaveProject), /* ON_SIGNAL(containers_widgets_bar,clicked_signal,HandleAllWidgetsBar), ON_SIGNAL(button_widgets_bar,clicked_signal,HandleAllWidgetsBar), ON_SIGNAL(text_widgets_bar,clicked_signal,HandleAllWidgetsBar), ON_SIGNAL(misc_widgets_bar,clicked_signal,HandleAllWidgetsBar), */ #if HAVE_GNOME // ON_SIGNAL(gnome_widgets_bar,clicked_signal,HandleAllWidgetsBar), #endif #if USE_XDB ON_SIGNAL(xdb_opentables,activate_signal,OnOpenXdbTables), // ON_SIGNAL(xdb_widgets_bar,clicked_signal,HandleAllWidgetsBar), #endif // ON_SIGNAL(plugin_widgets_bar,clicked_signal,HandleAllWidgetsBar), ON_SIGNAL(reset,clicked_signal,Reset), ON_SIGNAL(emacs,clicked_signal,CallEmacsServer), ON_SIGNAL(newformdefault_item,activate_signal,NewForm), ON_SIGNAL(envset_item,activate_signal,SetBuilderEnvironment), ON_SIGNAL(edhint_item,activate_signal,OpenHintsEditor), ON_SIGNAL(exec_item,activate_signal,RunGrep) END_SIGNAL_MAP /////////////////////////////////////////////////// //static int laptime = 0; static char buff[256]; extern VDKBuilder* TheApp; /* iconize all childs FIX ME */ void VDKBMainForm::OnIconize(VDKForm*) { if(prjman) { GuiFormListIterator li(*(prjman->FormList())); for(;li;li++) li.current()->Iconized = true; if(prjman->objInspector) { // iconize wi childs if any ChildListIterator lw(prjman->objInspector->Childs()); for(;lw;lw++) lw.current()->Iconized = true; // iconize wi prjman->objInspector->Iconized = true; } } // iconize editor childs if any if(editor) { ChildListIterator le(editor->Childs()); for(;le;le++) le.current()->Iconized = true; } // iconize childs ChildListIterator li(Childs()); for(;li;li++) li.current()->Iconized = true; } /* restore all childs FIX ME */ void VDKBMainForm::OnRestore(VDKForm*) { if(prjman) { GuiFormListIterator li(*(prjman->FormList())); for(;li;li++) li.current()->Iconized = false; if(prjman->objInspector) { // wi childs if any ChildListIterator lw(prjman->objInspector->Childs()); for(;lw;lw++) lw.current()->Iconized = false; // wi prjman->objInspector->Iconized = false; } } // editor childs if any if(editor) { ChildListIterator le(editor->Childs()); for(;le;le++) le.current()->Iconized = false; } // childs ChildListIterator li(Childs()); for(;li;li++) li.current()->Iconized = false; } /* saves active file on editor */ /* */ bool VDKBMainForm::FileSave(VDKObject*) { if(editor) editor->FileSave(NULL); return true; } /* Open hints editor */ bool VDKBMainForm::OpenHintsEditor(VDKObject* sender) { VdkbEdHintForm* dlg = new VdkbEdHintForm(this,NULL); dlg->Setup(); dlg->Visible = true; return true; } /* view all project forms */ bool VDKBMainForm::ViewForms(VDKObject*) { if(!formlistform) { formlistform = new VDKBFormListForm(this, prjman, (char*) NULL); formlistform->Setup(); formlistform->Show(); } else if(formlistform->Iconized) formlistform->Iconized = false; else formlistform->Raise(); return true; } /* */ static char *making[] = { NULL, NULL, NULL, NULL ,NULL, NULL, NULL, NULL,NULL,NULL }; /* ============= MOZILLA STUFF ============= */ bool VDKBMainForm::VDKBHelp(VDKObject* sender) { VDKMenuItem* item = dynamic_cast(sender); // tutorial removed /* if(item == help_index) sprintf(buff,"file:%s/%s", VDKB_DATADIR,VDKB_HELP_INDEX); else if(item == help_vdk) */ if(item == help_vdk) sprintf(buff,"file:%s/%s", (char*) VDKBuilder::ideDefaults.project.vdk_ref_path, "index.html"); #if HAVE_GNOME if(item) gnome_help_goto(NULL,buff); #else if(item) RunMozilla(sender,buff); #endif return true; } /* */ bool VDKBMainForm::RunMozilla(VDKObject*, char* html) { if(mozpid == 0) { mozpid = fork(); switch(mozpid) { case 0: { char* argv[6]; char* browser = (char*) VDKBuilder::ideDefaults.project.vdk_ref_browser; argv[0] = browser; // "netscape"; if(!strcmp(browser,"netscape")) { argv[1] = "-no-session-management"; argv[2] = "-geometry"; argv[3] = "680x600+50+50"; argv[4] = html; argv[5] = NULL; } else { argv[1] = html; argv[2] = NULL; } execvp(argv[0], argv); } break; case -1: app->VDKMessageBox(APPNAME, _("Forking for browser unsuccessfull"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok])); break; default: // help_index->Enabled = false; help_vdk->Enabled = false; sprintf(buff, _("Started browser (pid %d)"), mozpid); Application()->VDKMessageBox(APPNAME, buff, VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]),NULL,3000); break; } } return true; } /* */ void VDKBMainForm::MozillaReaper(int) { int sts; int pid; pid = waitpid(-1, &sts, WNOHANG); if(pid == ((VDKBMainForm*) TheApp->MainForm)->MozillaPid()) { ((VDKBMainForm*) TheApp->MainForm)->MozillaStatus(sts); ((VDKBMainForm*) TheApp->MainForm)->SignalEmit("KillMozillaSignal"); } } /* */ bool VDKBMainForm::MozillaMourn(VDKObject *) { int ns = 0; int sts = MozillaStatus(); ns = sprintf(buff, _("Mozilla (pid %d) exited"), MozillaPid()); if(WIFEXITED(sts)) { ns += sprintf(buff+ns, _(", with exit status %d"), WEXITSTATUS(sts)); } if(WIFSIGNALED(sts)) { ns += sprintf(buff + ns, _(", by signal %d"), WTERMSIG(sts)); } *(buff+ns) = '\0'; printf("\n%s",buff); // help_index->Enabled = true; help_vdk->Enabled = strcmp((char*) VDKBuilder::ideDefaults.project.vdk_ref_path,"?") != 0; MozillaPid(0); MozillaStatus(0); return true; } /* */ bool VDKBMainForm::RunGrep(VDKObject* sender) { char* match = new char[512]; VDKString path = prjman->Project()->Path; VDKString cwd; VDKBGrepDlg *dlg = NULL; char **args = NULL,* p = NULL; int z = 0,j = 0; FileStringArray selections; // p = getcwd(NULL,MAXPATHLEN); if(p) { cwd = p; free(p); } // dlg = new VDKBGrepDlg(this,(char*) NULL,&selections,match); dlg->Setup(); dlg->ShowModal(GTK_WIN_POS_CENTER); if( (selections.size()) <= 0 || !(*match) ) return true; // load args args = new char*[selections.size() + 5]; args[0] = "grep"; args[1] = "-n"; args[2] = "-e"; args[3] = match; for(z = 0, j = 4; z < selections.size(); z++,j++) args[j] = (char*) selections[z]; args[j] = NULL; // calls maker p = getcwd(NULL,MAXPATHLEN); if(p) { cwd = p; free(p); } if(!maker) { chdir((char*) path); VDKBStringList list; if(editor) editor->ClearMessages(); maker = new VDKBMaker(this,args,&list,false,1); maker->Setup(); maker->ShowModal(); if((editor) && (editor->Visible) && (list.size() > 0)) { int t = 0; VDKBStringList slist; for(;t < list.size(); t++) { char* p; char* local = new char[strlen((char*) list[t])+1]; strcpy(local,(char*) list[t]); // tokenize if( (p = strtok(local,"\n")) ) { slist.add(p); while( ( p = strtok(NULL,"\n")) ) slist.add(p); } else slist.add(local); delete[] local; } if(editor) editor->FillMessages(&slist); } chdir( (char*) cwd); } else Application()->VDKMessageBox( APPNAME, _("A compilation process is already running"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 3000); delete[] args; delete[] match; return true; } /* */ bool VDKBMainForm::Make(VDKObject* sender) { char* file ; VDKBProject* project = prjman->Project(); if(! project) return true; // make it making[0] = "make"; making[1] = "-f"; making[2] = "vdkbMakefile"; if(sender == prjmakeclean_item) making[3] = "clean"; else making[3] = NULL; // save changed files, if(editor && editor->Visible) editor->UpdateFiles(); // writes gui files prjman->WriteGuiFiles(); // writes makefile VDKString path = project->Path; file = new char[strlen((char*) path)+16]; strcpy(file, (char*) path); strcat(file,"/vdkbMakefile"); FILE* fp = fopen(file,"w+"); if(fp) { project->WriteMakefile(fp); fclose(fp); } else { delete[] file; return true; // FIX ME: with user warning !!!! } // make Makefile CallMaker(making,path,0); // checks if executable exists // and allow to execute it // or invoke debugger Automa(automa_prjman_on); // finished delete[] file; return true; } /* */ void VDKBMainForm::RunExecutable() { char* file ; VDKString hide_it = CHECK_YES; bool hide_on_run = VDKBuilder::ideDefaults.project.hide_on_run == hide_it; bool run_modal = VDKBuilder::ideDefaults.project.run_modal == hide_it; VDKBProject* project = prjman->Project(); if(! project) return ; // make it making[0] = "make"; making[1] = "-f"; making[2] = "vdkbMakefile"; making[3] = "run"; making[4] = NULL; // save changed files, if(editor && editor->Visible) editor->UpdateFiles(); // writes gui files prjman->WriteGuiFiles(); // writes makefile VDKString path = project->Path; file = new char[strlen((char*) path)+16]; strcpy(file, (char*) path); strcat(file,"/vdkbMakefile"); FILE* fp = fopen(file,"w+"); // make Makefile if(fp) { project->WriteMakefile(fp); fclose(fp); } else { delete[] file; return ; // FIX ME: with user warning !!!! } // VDKString cwd; char* p = getcwd(NULL,MAXPATHLEN); if(p) { cwd = p; free(p); } // either run app in modal or non modal if(run_modal) { if(!maker) { chdir((char*) path); VDKBStringList list; if(editor) editor->ClearMessages(); maker = new VDKBMaker(this,making,&list,hide_on_run); maker->Setup(); maker->ShowModal(); if((editor) && (editor->Visible) && (list.size() > 0)) { int t = 0; VDKBStringList slist; for(;t < list.size(); t++) { char* p; char* local = new char[strlen((char*) list[t])+1]; strcpy(local,(char*) list[t]); // tokenize if( (p = strtok(local,"\n")) ) { slist.add(p); while( ( p = strtok(NULL,"\n")) ) slist.add(p); } else slist.add(local); delete[] local; } if(editor) editor->FillMessages(&slist); } chdir( (char*) cwd); } else Application()->VDKMessageBox( APPNAME, _("A compilation process is already running"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 3000); } // run non modal else CallMaker(making,path,0); Automa(automa_prjman_on); // finished delete[] file; return ; } /* */ bool VDKBMainForm::RunDebugger(VDKObject*) { VDKString hide_it = CHECK_YES; bool hide_on_run = VDKBuilder::ideDefaults.project.hide_on_run == hide_it; VDKString path = prjman->Project()->Path; VDKString name = prjman->Project()->Name; char* q = get_extension(name); if(q) *q = '\0'; VDKString cwd; char* p = getcwd(NULL,0); if(p) { cwd = p; free(p); } if(!maker) { making[0] = prjman->Project()->Options()->debugger; making[1] = (char*) name; making[2] = NULL; chdir((char*) path); VDKBStringList list; if(editor) editor->ClearMessages(); maker = new VDKBMaker(this,making,&list,hide_on_run); maker->Setup(); maker->ShowModal(); chdir( (char*) cwd); } else Application()->VDKMessageBox( APPNAME, _("A compilation process is already running"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 3000); return true; } /* */ bool VDKBMainForm::CallEmacsServer(VDKObject*) { char* args[4]; args[0] = "emacs"; args[1] = "-f"; args[2] = "server-start"; args[3] = NULL; if(!EmacsServerStarted()) { int pid = StartEmacs(args); if(pid <= 0) TheApp->VDKMessageBox(APPNAME, _("Emacs server failed"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 3000); else if(editor && editor->Visible) editor->Visible = false; } else TheApp->VDKMessageBox(APPNAME, _("Emacs server already running"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 3000); return true; } //////////////////////////////////////////////////////////////////// // // TOOLBARS HANDLING // /////////////////////////////////////////////////////////////////// /* */ bool VDKBMainForm::HandleToolbar(VDKObject* sender) { //int button = toolbar->ButtonPressed; int t = 0; for(;nb_array[t]; t++) if(nb_array[t] == sender) break; switch(t) { case NEW_PROJECT_BUTTON: NewProject(NULL); break; case NEW_FORM_BUTTON: NewForm(NULL); break; case NEW_UNIT_BUTTON: NewUnit(NULL); break; case OPEN_PRJ_BUTTON: OpenProject(NULL); break; case OPEN_FILE_BUTTON: OpenFile(NULL); break; case SAVE_PRJ_BUTTON: SaveProject(NULL); break; case SAVE_FILE_BUTTON: FileSave(NULL); break; } return true; } /* */ bool VDKBMainForm::HandleToolbar1(VDKObject* sender) { // int button = toolbar1->ButtonPressed; int t = 0; char* p; char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; for(;nb_array1[t]; t++) if(nb_array1[t] == sender) break; switch(t) { case RUN_PRJ_BUTTON: RunExecutable(); break; case TOGGLE_FORM_UNIT: // determines if activate a .cc or a .frm p = get_extension((char*) ToBeToggled); if(p) { p++; // activate text editor if(!strcmp(p,cc_ext)) { if(!access((char*)ToBeToggled,F_OK)) PrjManager()->ActivateEditor((char*) ToBeToggled,true,true); else // invoke file dialog { FileStringArray selections; VDKFileDialog *child = new VDKFileDialog(this,&selections, _(file_dialog_prompts[0])); child->Filter = buff; child->ShowModal(); if(selections.size() > 0) PrjManager()->ActivateEditor((char*) selections[0], true,true); } } else if(!strcmp(p,"frm")) // activate form editor { VDKBGuiForm* form = PrjManager()->CreateForm((char*)ToBeToggled); // make inspector if(form) { if(! PrjManager()->objInspector) { PrjManager()->objInspector = new VDKBObjectInspector(PrjManager(),NULL); PrjManager()->objInspector->Setup(); PrjManager()->objInspector->Show(); } else if(PrjManager()->objInspector->Iconized) PrjManager()->objInspector->Iconized = false; else PrjManager()->objInspector->Raise(); PrjManager()->objInspector->LoadTree(form); } // set automa Automa(automa_edit_form_on); } } break; case FORM_LIST: ViewForms(NULL); break; default: break; } return true; } /* bool VDKBMainForm::HandleContainersWidgetsBar(VDKObject*) { int button = containers_widgets_bar->ButtonPressed; // set op state OperationalState.state = op_stand_by; OperationalState.action = act_add_widget; OperationalState.action_target = CONTAINERS_TOOL_BEGIN+button; OperationalState.source = OperationalState.target = NULL; // set all child cursor if(PrjManager()) { GuiFormListIterator li(*PrjManager()->FormList()); for(;li;li++) li.current()->Cursor = curCrossHair; } return true; } bool VDKBMainForm::HandleButtonsWidgetsBar(VDKObject*) { int button = button_widgets_bar->ButtonPressed; // set op state OperationalState.state = op_stand_by; OperationalState.action = act_add_widget; OperationalState.action_target = BUTTON_TOOL_BEGIN+button; OperationalState.source = OperationalState.target = NULL; // set all child cursor if(PrjManager()) { GuiFormListIterator li(*PrjManager()->FormList()); for(;li;li++) li.current()->Cursor = curCrossHair; } return true; } bool VDKBMainForm::HandleTextWidgetsBar(VDKObject*) { int text = text_widgets_bar->ButtonPressed; // set op state OperationalState.state = op_stand_by; OperationalState.action = act_add_widget; OperationalState.action_target = TEXT_TOOL_BEGIN+text; OperationalState.source = OperationalState.target = NULL; // set all child cursor if(PrjManager()) { GuiFormListIterator li(*PrjManager()->FormList()); for(;li;li++) li.current()->Cursor = curCrossHair; } return true; } */ bool VDKBMainForm::HandleAllWidgetsBar(VDKObject* sender) { // VDKToolbar* tbar = dynamic_cast(sender); VDKHLButtonBar* tbar = dynamic_cast(sender); if(!tbar) return true; int pressed = tbar->ButtonPressed; // set op state OperationalState.state = op_stand_by; OperationalState.action = act_add_widget; OperationalState.source = OperationalState.target = NULL; if(tbar == containers_widgets_bar) OperationalState.action_target = CONTAINERS_TOOL_BEGIN + pressed; else if (tbar == button_widgets_bar) OperationalState.action_target = BUTTON_TOOL_BEGIN + pressed; else if (tbar == text_widgets_bar) OperationalState.action_target = TEXT_TOOL_BEGIN + pressed; else if(tbar == plugin_widgets_bar) OperationalState.action_target = PLUGIN_TOOL_BEGIN + pressed; #if HAVE_GNOME else if (tbar == gnome_widgets_bar) OperationalState.action_target = GNOME_TOOL_BEGIN + pressed; #endif else if(tbar == misc_widgets_bar) OperationalState.action_target = MISC_TOOL_BEGIN + pressed; #if USE_XDB else if (tbar == xdb_widgets_bar) OperationalState.action_target = XDB_TOOL_BEGIN + pressed; #endif // no match else return true; // set all child cursor // and objInspector too if(PrjManager()) { if(PrjManager()->objInspector) { PrjManager()->objInspector->Cursor = curCrossHair; reset->Enabled = true; } GuiFormListIterator li(*PrjManager()->FormList()); for(;li;li++) li.current()->Cursor = curCrossHair; } return true; } // GDK_DIAMOND_CROSS /* */ bool VDKBMainForm::Reset(VDKObject*) { // reset op state OperationalState.state = op_ready; OperationalState.action = act_nope; OperationalState.action_target = tgt_no_target; OperationalState.source = OperationalState.target = NULL; // reset all child cursor if(PrjManager()) { if(PrjManager()->objInspector) PrjManager()->objInspector->Cursor = curDefault; GuiFormListIterator li(*PrjManager()->FormList()); for(;li;li++) li.current()->Cursor = curDefault; if(PrjManager()->ActiveChild.child && PrjManager()->ActiveChild.child->Active) { PrjManager()->ActiveChild.child->Active->ClearMark(); PrjManager()->ActiveChild.child->Active = NULL; if(PrjManager()->objInspector) PrjManager()->objInspector->SetActive(NULL); } reset->Enabled = false; } return true; } bool VDKBMainForm::BrowseCompoDb(VDKObject* sender) { VDKBCompodbForm* dlg = new VDKBCompodbForm(this,NULL); dlg->Setup(); dlg->ShowModal(GTK_WIN_POS_CENTER); return true; } ///////////////////////////////// // // XDB SUPPORT // ///////////////////////////////// #if USE_XDB bool VDKBMainForm::OnOpenXdbTables(VDKObject* sender) { Vdkb_xtDlgForm* dlg = new Vdkb_xtDlgForm(this,NULL); dlg->Setup(); dlg->ShowModal(GTK_WIN_POS_MOUSE); return true; } #endif ///////////////////////////////////////// // // FILE/PROJECT HANDLING // ////////////////////////////////////////// /* */ bool VDKBMainForm::OpenFile(VDKObject*) { FileStringArray selections; char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; sprintf(buff,"*.%s",cc_ext); VDKFileDialog *child = new VDKFileDialog(this,&selections, _(file_dialog_prompts[1])); child->Filter = buff; child->ShowModal(); if(selections.size() <= 0) return true; else { MakeEditor(); // open just first selected file // check if it should be syntax-highlighted or not bool hilite = false; char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; char* c_ext = "c"; char* p = get_extension((char*) selections[0]); if(p) { p++; if((!strcmp(p,cc_ext)) || (!strcmp(p,h_ext)) || (!strcmp(p,c_ext)) ) hilite = true; } editor->AddText((char*) selections[0],true,hilite); return true; } return true; } /* */ bool VDKBMainForm::NewUnit(VDKObject*) { MakeEditor(); editor->AddNewUnit(); return true; } /* */ bool VDKBMainForm::NewForm(VDKObject*) { bool result; char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; sprintf(buff,"*.%s",cc_ext); FileStringArray selections; // FIX ME : adjust dialog title VDKFileSaveAsDialog *child = new VDKFileSaveAsDialog(this,&selections, _(file_dialog_prompts[4])); child->Filter = buff; child->ShowModal(); if(selections.size() <= 0) return true; else { MakeEditor(); result = editor->NewForm((char*) selections[0]); // FIX ME: user warning on false returned sprintf(buff,_("%s done.\nMay be you want add it to project."), (char*) selections[0]); Application()->VDKMessageBox(APPNAME, buff, VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL,5000); } return true; } /* */ bool VDKBMainForm::NewProject(VDKObject*) { VDKBNewProjectInfo info; Vdkb_PWizardForm* wiz = new Vdkb_PWizardForm(this,(char*) NULL,&info); wiz->Setup(); wiz->ShowModal(GTK_WIN_POS_CENTER); #if 0 printf("\ninfo.prjname:%s\ninfo.type:%d\ninfo.isValid:%d", (char*) info.prjname, info.type,info.isValid); fflush(stdout); #endif if(! prjman || (!info.isValid)) return true; if(!access((char*) info.prjname,F_OK)) { sprintf(buff,_("project: %s\nalready exists, overwrite it ?"), (char*) info.prjname); if(Application()->VDKMessageBox(APPNAME,buff, VDK_ICONQUESTION|VDK_YESNO) != VDK_IDYES) return true; } prjman->Raise(); prjman->AddNewProject((char*) info.prjname, info.type, (char*) info.author, (char*) info.email, info.gpld); Automa(automa_prjman_on); return true; } /* */ bool VDKBMainForm::SaveProject(VDKObject*) { if(prjman) prjman->Save(); return true; } /* */ bool VDKBMainForm::OpenProject(VDKObject*) { if(!prjman) return true; prjman->OpenProject(); return true; } /* scans menuitems array, when sender matches with one of array item open corresponding project name retrieved from menu item caption. */ bool VDKBMainForm::OnReopenMenu(VDKObject* sender) { if(lru_items.size() > 0) { int t = 0; for(; t < lru_items.size(); t++) { if(lru_items[t] == sender) { const char* caption = (const char*) lru_items[t]->Caption; prjman->OpenProject((char*) caption/*,false*/); break; } } } return true; } /* */ bool VDKBMainForm::ProjectOptions(VDKObject*) { if(!prjman) return true; VDKBProjectOptions *options = prjman->Project()->Options(); VDKBPrjPrefForm *dlg = new VDKBPrjPrefForm(this,options); dlg->Setup(); dlg->ShowModal(); return true; } /* */ bool VDKBMainForm::Search(VDKObject*) { if(editor) editor->Search(NULL); return true; } /* */ bool VDKBMainForm::RepeatSearch(VDKObject*) { if(editor) editor->RepeatSearch(NULL); return true; } /* */ bool VDKBMainForm::ReplaceText(VDKObject*) { if(editor) editor->ReplaceText(); return true; } /* */ bool VDKBMainForm::SetBuilderEnvironment(VDKObject*) { Vdkb_EnvForm *dlg = new Vdkb_EnvForm(this,NULL); dlg->Setup(); dlg->ShowModal(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_maker.cc0000644000000000000000000002125710022113245014125 #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #define IO_BUFF_SIZE 65536 extern char *gear_xpm[]; static char *maker_kill_xpm[] = { "16 14 4 1", "a c #7f7f7f", "b c #000000", ". c None", "# c #ff0000", "................", "...........#....", "...##a....###...", "....##a..#####..", ".....#######bb..", "......#####b....", "......####b.....", ".....######.....", ".....##b.###....", "....##b...###...", "....#b.....##a..", "...#b.......#b..", "...b.........b..", "................"}; VDKBMaker *VDKBMaker::self; // a little trick to make reaper works static char *buff; static char *line; ////////////////////////////////////////// DEFINE_SIGNAL_MAP(VDKBMaker,VDKForm) ON_SIGNAL(inp1,INP_SIGNAL,DoIO), ON_SIGNAL(inp2,INP_SIGNAL,DoIO), ON_SIGNAL(toolbar,clicked_signal,HandleToolbar), ON_SIGNAL(text,realize_signal,OnTextRealize), ON_SIGNAL(errtext,realize_signal,OnTextRealize) END_SIGNAL_MAP //////////////////// RESPONSE ///////////////////// /* cast white background to override some gtk-themes defaults */ bool VDKBMaker::OnTextRealize(VDKObject* sender) { VDKTextView *obj = dynamic_cast(sender); if(obj) obj->NormalBackground = clWhite; return true; } /* */ bool VDKBMaker::HandleToolbar(VDKObject*) { int button = toolbar->ButtonPressed; switch(button) { case 0: runcmd(); break; case 1: quit(); break; } return true; } /* reaper, called at sigaction SIGCHILD (child finished or stopped) */ void VDKBMaker::reaper(int) { int sts; int pid; // sigset_t set, oldset; VDKBMaker* form = (VDKBMaker*) VDKBMaker::self; pid = waitpid(-1, &sts, WNOHANG); if(pid == ((VDKBMaker*)self)->Pid()) { form->Pid(0); form->ChildStatus(sts); } #if 0 // If we have another pid or something else if(pid == form->Sib()) //... #endif /* re-install the signal handler (some systems need this) */ // signal(SIGCHLD, VDKBMaker::reaper); /* and unblock it */ // sigemptyset(&set); // sigaddset(&set, SIGCHLD); // sigprocmask(SIG_UNBLOCK, &set, &oldset); } /* This routine scrolls last line of text. */ static void Scroll(VDKTextView *text) { /* GtkTextView* logwin = GTK_TEXT(text->WrappedWidget()); GtkAdjustment *logadj = GTK_TEXT(text->WrappedWidget())->vadj; gint pos = gtk_text_get_length(logwin); gtk_text_freeze(logwin); gtk_editable_insert_text(GTK_EDITABLE(logwin), " ", 1, &pos); gtk_text_thaw(logwin); gtk_adjustment_set_value(logadj, logadj->upper - logadj->page_size); */ } /* */ bool VDKBMaker::DoIO (VDKObject *obj) { VDKBMainForm* ownerform; VDKInput *ip = static_cast(obj); int res; res = read (ip->getfd(), buff, IO_BUFF_SIZE); if(res > 0) { if(ip == inp1) // STDOUT { if(outlist == 1) // load messages from stdout { char *q; *(buff+res) = 0; // safety if((q = strchr(buff,'\n'))) { strcat(line,buff); // add error to errlist errlist->add(line); *line = '\0'; } else strcat(line,buff); } text->TextInsert(buff, res); // scroll to last line Scroll(text); } else //STDERR { if(outlist == 0) // load messages from stderr { char *q; *(buff+res) = 0; // safety if((q = strchr(buff,'\n'))) { strcat(line,buff); // add error to errlist errlist->add(line); *line = '\0'; } else strcat(line,buff); } errtext->TextInsert(buff); // scroll to last line Scroll(errtext); } } else // no more inputs { ip->release(); close(ip->getfd()); if(ip == inp1) // STDOUT io &= ~IO_STDOUT; else // STDERR io &= ~IO_STDERR; if(io == 0) // Closed both channnels { bool isIconized; time_t t; time(&t); ownerform = (VDKBMainForm*) Owner(); isIconized = ownerform->Iconized; if(isIconized) { ownerform->SetIconized(false); ChildListIterator li(ownerform->Childs()); for(;li;li++) if(li.current() != this) li.current()->SetIconized(false); } sprintf(buff,_("DONE with result %d, at %s\n"), status, ctime(&t)); text->TextInsert(buff); (*toolbar)[NEW_PROJECT_BUTTON]->Enabled = true; if(! IsModal()) Close(); } } return true; } ////////////////////////////////////////////////// VDKBMaker::VDKBMaker(VDKForm* owner, char **args,VDKBStringList* list, bool hide_on_run, int outlist): VDKForm(owner,"VDKBuilder Maker"), args(args), errlist(list), hide_on_run(hide_on_run),outlist(outlist) { buff = new char[IO_BUFF_SIZE]; line = new char[IO_BUFF_SIZE]; } void VDKBMaker::runcmd(void) { VDKBMainForm* ownerform; *line = '\0'; errlist->flush(); if(io == IO_NONE) { int ch1[2], ch2[2]; // creates pipe pairs pipe(ch1); pipe(ch2); // forks child pid = fork(); switch(pid) { case 0: close(0); dup2(ch1[1], 1); dup2(ch2[1], 2); execvp(args[0], args); break; case -1: break; default: text->Clear(); errtext->Clear(); close(ch1[1]); // Important! Close my end here close(ch2[1]); // Important! Close my end here // Set pipes none blocking, so we can read big buffers // in the callback without having to use FIONREAD // to make sure the callback doesn't block. int md; if((md = fcntl(ch1[0], F_GETFL)) != -1) fcntl(ch1[0], F_SETFL, O_NONBLOCK | md ); if((md = fcntl(ch2[0], F_GETFL)) != -1) fcntl(ch2[0], F_SETFL, O_NONBLOCK | md ); // VDKInput was modified to allow connecting to a new // stream, because the Destroy() method caused a GTK+ // error as the gtk+ widget was NULL. // bug fixed by mario now (01.10.1999) if(inp1) inp1->connect(ch1[0]); else inp1 = new VDKInput(this,ch1[0]); if(inp2) inp2->connect(ch2[0]); else inp2 = new VDKInput(this,ch2[0]); io |= (IO_STDERR|IO_STDOUT); // start owner timer ownerform = (VDKBMainForm*) Owner(); // disable "begin" (*toolbar)[0]->Enabled = false; // iconize builder (and all builder childs) if(hide_on_run) { ownerform->SetIconized(true); ChildListIterator li(ownerform->Childs()); for(;li;li++) if(li.current() != this) li.current()->SetIconized(true); } break; } } return ; } /* */ bool VDKBMaker::CanClose(void) { if(pid) { Application()->VDKMessageBox(APPNAME, _("A compilation process is running;\nkill it before close"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 3000); return false; } if(buff) delete[] buff; if(line) delete[] line; return true; } /* */ void VDKBMaker:: quit() { if(pid) kill(pid, SIGTERM); else Close(); } /* */ void VDKBMaker::Setup(void) { VDKBMaker::self = this; // inp1 = 0; inp2 = 0; pid = 0; io = IO_NONE; // struct sigaction *sac = new struct sigaction; sigemptyset(&(sac->sa_mask)); sac->sa_flags=0; sac->sa_handler = VDKBMaker::reaper; sigaction(SIGCHLD, sac, NULL); // signal(SIGCHLD, VDKBMaker::reaper); toolbar = new VDKToolbar(this); toolbar->Borderless = true; toolbar->Style = GTK_TOOLBAR_ICONS; // toolbar->Spacing = 20; toolbar->AddButton(gear_xpm, _(vdkbmaker_prompts[1]), _(vdkbmaker_prompts[0])); // toolbar->AddSpace(); toolbar->AddButton(maker_kill_xpm, _(vdkbmaker_prompts[3]), _(vdkbmaker_prompts[2]) ); toolbar->Borderless = true; Add(toolbar,l_justify,false,false,0); // a separator Add(new VDKSeparator(this,h_separator),false,false,2); // a pane that contains stdout and stderr VDKPaned* paned = new VDKPaned(this); // VDKBox* panedbox = new VDKBox(this); // displays stdout text = new VDKTextView(this); if(VDKRgb("navy blue").IsValid()) text->Foreground = VDKRgb("navy blue"); text->SetSize(450,200); paned->Add(text,1); // panedbox->Add(text); // displays stderr errtext = new VDKTextView(this); if(clSiena.IsValid()) errtext->Foreground = VDKRgb(clSiena); errtext->SetSize(450,50); paned->Add(errtext,2); // panedbox->Add(errtext); // Add(paned); // Add(panedbox); } void VDKBMaker::OnShow(VDKForm*) { // running command directly when form is showed // sometimes hangs on Async replay by x server // uncomment this if you have problems. runcmd(); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_menu.cc0000644000000000000000000003272007335650172014011 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include //#include #include #include #include #include #include #include #include #include #include #include #include static char buff[128]; extern char* wi_widget_prompts[]; int VDKBMenu::Counter = 0; DEFINE_EVENT_LIST(VDKBMenu,VDKBEventContainer); DEFINE_SIGNAL_LIST(VDKBMenu,VDKBEventContainer); /* */ bool VDKBMenu:: DelBox(VDKObject* sender) { // unlock menu if locked if(Locked) Locked = false; // destroy inner gtk+ placeholder widget gtk_widget_destroy(container); // remove menu from parent list VDKBMenuItem* p = dynamic_cast(Parent()); if(p) { p->RemoveItem(this); p->boxlist.flush(); } // notify to inspector that object was deleted VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { // set active widget to NULL ownerform->Active = NULL; VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) prjman->objInspector->SetActive(NULL); } return true; } /* */ bool VDKBMenu::SetBoxSize(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) ownerform->SetBoxSize(NULL); return true; } /* we use a little trick here: since VDKBMenuItem::MakeWidget(ownerform, GdkEvent* = NULL) we use (GdkEvent*) l_justify or r_justify or pos_justify+ in order to appen,prepend or inser a menu item into menubar. */ bool VDKBMenu::AddMenuItem(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { GdkEventButton event; event.state = l_justify; VDKBMenuItem::MakeWidget(ownerform, (GdkEvent*) &event); VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) { prjman->objInspector->LoadTree(ownerform); ownerform->Changed = true; } } return true; } bool VDKBMenu::PrependMenuItem(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { GdkEventButton event; event.state = r_justify; VDKBMenuItem::MakeWidget(ownerform, (GdkEvent*) &event); VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) { prjman->objInspector->LoadTree(ownerform); ownerform->Changed = true; } } return true; } bool VDKBMenu::InsertMenuItem(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { // widget reorder dialog will receive // boxlist address and an int* to fill // with inserting pos (answer < 0 if user cancelled) int pos = -1; Vdkb_reorderdlgForm* child = new Vdkb_reorderdlgForm(ownerform, &boxlist, &pos, NULL); child->Setup(); child->ShowModal(GTK_WIN_POS_MOUSE); if(pos > 0) { GdkEventButton event; event.state = pos_justify+pos; VDKBMenuItem::MakeWidget(ownerform,(GdkEvent*) &event); VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) { prjman->objInspector->LoadTree(ownerform); ownerform->Changed = true; } } } return true; } /* Adds a new menu item bool VDKBMenu::AddMenuItem(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) VDKBMenuItem::MakeWidget(ownerform); return true; } */ /* handle button press on menus. Dblclick toggles menu "Locked" status. When locked menu does not answer to signals. When not locked pass signal trough hierarchy to be anwsered by container parent. */ bool VDKBMenu::OnButtonPressed(VDKObject* sender, GdkEvent* ev) { GdkEventButton* event = (GdkEventButton*) ev; // pass to ancestor so widget will be marked if(event && event->type == GDK_2BUTTON_PRESS) Locked = Locked ? false : true; if(Locked) { gtk_signal_emit_stop_by_name(GTK_OBJECT(ObjectFromVDK()->WrappedWidget()), "button_press_event"); VDKBEventContainer::OnButtonPressed(sender/*this*/,ev); return true; } else ClearMark(); return false; } /* - */ bool VDKBMenu::OnButtonReleased(VDKObject* sender, GdkEvent* event) { /* When locked menu shouldn't react to events, signal is stopped here. */ if(Locked) gtk_signal_emit_stop_by_name(GTK_OBJECT(WrappedWidget()), "button_release_event"); return Locked; } /* - handle enter event */ bool VDKBMenu::OnEnter(VDKObject* sender, GdkEvent* ev) { if(Locked) gtk_signal_emit_stop_by_name(GTK_OBJECT(WrappedWidget()), "enter_notify_event"); return Locked; } /* - handle enter event */ bool VDKBMenu::OnLeave(VDKObject* sender, GdkEvent* ev) { if(Locked) gtk_signal_emit_stop_by_name(GTK_OBJECT(WrappedWidget()), "leave_notify_event"); return Locked; } //=========================================== /* */ VDKBMenu::VDKBMenu(char* name, VDKForm* owner): VDKBEventContainer(name,owner) { Counter++; VDKBObject::object = this; VDKBEventContainer::mode = mode; Init(); } /* */ VDKBMenu::VDKBMenu(char* name,VDKBEventContainer* outer): VDKBEventContainer(name,outer->Owner()) { VDKBObject::object = this; Counter++; outerbox = outer; Init(); } /* */ void VDKBMenu::Init() { // FIX ME: lang support // add frame properties // names. (Others props are prepended by VDKBObject constructor) Locked = false; AddBox(); // makes a pop menu popmenu = new VDKMenu(Owner()); VDKMenuItem* nope = new VDKMenuItem(popmenu,"Nop"); nope->Enabled = false; popmenu->Separator(); addmenuitem = new VDKMenuItem(popmenu,_("Append a menu item")); prependmenuitem = new VDKMenuItem(popmenu,_("Prepend a menu item")); insertmenuitem = new VDKMenuItem(popmenu,_("Insert a menu item")); popmenu->Separator(); setsize = new VDKMenuItem(popmenu,_(wi_widget_prompts[19])); popmenu->Separator(); delBox = new VDKMenuItem(popmenu,_("Remove menu")); SignalConnect(delBox,"activate",&VDKBMenu::DelBox); SignalConnect(setsize,"activate",&VDKBMenu::SetBoxSize); SignalConnect(addmenuitem,"activate",&VDKBMenu::AddMenuItem); SignalConnect(prependmenuitem,"activate",&VDKBMenu::PrependMenuItem); SignalConnect(insertmenuitem,"activate",&VDKBMenu::InsertMenuItem); EventConnect("button_press_event", &VDKBMenu::OnButtonPressed); EventConnect("button_release_event", &VDKBMenu::OnButtonReleased); EventConnect("enter_notify_event", &VDKBMenu::OnEnter); EventConnect("leave_notify_event", &VDKBMenu::OnLeave); /* assign this as parent so this can receive signals */ popmenu->Parent(this); /* better add it to owner, so will be surely destroyed even if never popped */ Owner()->AddItem(popmenu); } /* Assigns new menu to container */ void VDKBMenu::AddBox() { widget = sigwid = container = gtk_menu_new(); gtk_widget_set_size_request(widget,100,-1); gtk_widget_show(container); } /* Does not call VDKBObjectContainer since is not a VDKContainer. */ void VDKBMenu::AddWidget(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { VDKMenuItem* menuitem = dynamic_cast(wid); if(menuitem) { if(justify >= pos_justify) { gtk_menu_shell_insert(GTK_MENU_SHELL(container), wid->Widget(), justify-pos_justify); boxlist.insertAt(wid,justify-pos_justify); } else { switch(justify) { case r_justify: gtk_menu_shell_prepend(GTK_MENU_SHELL(container),wid->Widget()); boxlist.addH(wid); break; case l_justify: default: gtk_menu_shell_append(GTK_MENU_SHELL(container),wid->Widget()); boxlist.add(wid); } } VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) ownerform->Changed = true; items.add(wid); wid->Parent(this); gtk_widget_show(wid->Widget()); } else ; // FIX ME: warn user } /* extra args unused */ void VDKBMenu::Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { AddWidget(wid); } /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget 4 - unuseful call */ int VDKBMenu::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable frame counter // to ensure unicity int result = 0; for(sprintf(buff,"Menu%d",VDKBMenu::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; VDKBMenu::Counter++) sprintf(buff,"Menu%d",VDKBMenu::Counter); VDKBMenu* box = new VDKBMenu(buff,owner); if(owner->Active) { VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { if(ev && dynamic_cast(container)) result = 2; else container->AddWidget(box); box->outerbox = container; } else if(! owner->Active->AddToParent(box,ev)) // target isn't a container result = 2; } else // no active widget result = 3; // 0 on success if(result) box->Destroy(); return result; } //////////////////////////////////////////////////////////////////// /* */ void VDKBMenu::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { VDKBObject::WriteOnFrm(fp,parentobj); } char* VDKBMenu::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char temp[256]; // char arg[128]; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return NULL; else source = new char[1024]; sprintf(temp,"\n%s = new VDKMenu(this);" ,obj_name); strcpy(source,temp); // get size VDKPoint size = parser.Size(buffer); if(size.X() > 0 || size.Y() > 0) { sprintf(temp,"\n%s->SetSize(%d,%d);",obj_name,size.X(),size.Y()); strcat(source,temp); } if(strcmp(obj_parent,NIHIL_PROP)) sprintf(temp,"\n%s->Add(%s);",obj_parent,obj_name); else sprintf(temp,"\nAdd(%s);",obj_name); strcat(source,temp); return source; } /* */ bool VDKBMenu::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; VDKBMenu* box; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return false; // get mode and size VDKPoint size = parser.Size(buffer); // get packing args int justification = l_justify; int expand=0,fill=0,padding=0; char arg[32]; if(parser.GetParam(arg,buffer,PROP_JUSTIFY_INTERNAL)) justification = atoi(arg); if(parser.GetParam(arg,buffer,PROP_EXPAND_INTERNAL)) expand = atoi(arg); if(parser.GetParam(arg,buffer,PROP_FILL_INTERNAL)) fill = atoi(arg); if(parser.GetParam(arg,buffer,PROP_PADDING_INTERNAL)) padding = atoi(arg); // no parent, widget will be added to owner form innerbox if(!strcmp(obj_parent,NIHIL_PROP)) { box = new VDKBMenu(obj_name,owner->InnerBox()); owner->AddWidget(box,justification,expand,fill,padding); } // get parent container address else { VDKObject* p = owner->ChildWithName(obj_parent); VDKBMenuItem* container = p ? dynamic_cast(p) : (VDKBMenuItem*) NULL; if(container) { box = new VDKBMenu(obj_name,owner); container->AddWidget(box,justification,expand,fill,padding,true); //box->outerbox = container; } else // FIX ME: user warning return false; } // call ancestor to set common properties VDKBObject::CreateWidget(box,buffer,parser); if(size.X() > 0 || size.Y() > 0) box->ObjectFromVDK()->SetSize(size.X(),size.Y()); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_menubar.cc0000644000000000000000000003630307454111703014471 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include //#include #include #include #include #include #include #include #include #include #include #include #include extern char* wi_widget_prompts[]; static char buff[128]; int VDKBMenubar::Counter = 0; DEFINE_EVENT_LIST(VDKBMenubar,VDKBEventContainer); DEFINE_SIGNAL_LIST(VDKBMenubar,VDKBEventContainer); static char *shadows[] = { "shadow_none","shadow_in","shadow_out","shadow_etched_in", "shadow_etched_out",0 }; char* vdkmenubar_props[] = { SHADOW, 0 }; /* */ bool VDKBMenubar:: DelBox(VDKObject* sender) { // destroy inner gtk+ placeholder widget gtk_widget_destroy(container); // call ancestor delete box VDKBEventContainer::DelBox(sender); // notify to inspector that object was deleted VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) prjman->objInspector->SetActive(NULL); } return true; } /* */ bool VDKBMenubar::SetBoxSize(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) ownerform->SetBoxSize(NULL); return true; } /* we use a little trick here: since VDKBMenuItem::MakeWidget(ownerform, GdkEvent* = NULL) we use (GdkEvent*) l_justify or r_justify or pos_justify+ in order to appen,prepend or inser a menu item into menubar. */ bool VDKBMenubar::AddMenuItem(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { GdkEventButton event; event.state = l_justify; VDKBMenuItem::MakeWidget(ownerform, (GdkEvent*) &event); VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) { prjman->objInspector->LoadTree(ownerform); ownerform->Changed = true; } } return true; } bool VDKBMenubar::PrependMenuItem(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { GdkEventButton event; event.state = r_justify; VDKBMenuItem::MakeWidget(ownerform, (GdkEvent*) &event); VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) { prjman->objInspector->LoadTree(ownerform); ownerform->Changed = true; } } return true; } bool VDKBMenubar::InsertMenuItem(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { // widget reorder dialog will receive // boxlist address and an int* to fill // with inserting pos (answer < 0 if user cancelled) int pos = -1; Vdkb_reorderdlgForm* child = new Vdkb_reorderdlgForm(ownerform, &boxlist, &pos, NULL); child->Setup(); child->ShowModal(GTK_WIN_POS_MOUSE); if(pos > 0) { GdkEventButton event; event.state = pos_justify+pos; VDKBMenuItem::MakeWidget(ownerform,(GdkEvent*) &event); VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) { prjman->objInspector->LoadTree(ownerform); ownerform->Changed = true; } } } return true; } /* */ bool VDKBMenubar::OnButtonPressed(VDKObject* sender, GdkEvent* event) { // pass to ancestor so widget will be marked VDKBEventContainer::OnButtonPressed(this,event); return false;// true; } //=========================================== /* */ VDKBMenubar::VDKBMenubar(char* name, VDKForm* owner): VDKBEventContainer(name,owner) { Counter++; VDKBObject::object = this; Init(); } /* */ VDKBMenubar::VDKBMenubar(char* name,VDKBEventContainer* outer): VDKBEventContainer(name,outer->Owner()) { Counter++; VDKBObject::object = this; outerbox = outer; Init(); } /* */ void VDKBMenubar::Init() { int t; // FIX ME: lang support // add frame properties // names. (Others props are prepended by VDKBObject constructor) for(t=0; vdkmenubar_props[t]; t++) proplist.add(VDKBProperty(vdkmenubar_props[t])); AddBox(); // makes a pop menu popmenu = new VDKMenu(Owner()); VDKMenuItem* nope = new VDKMenuItem(popmenu,"Nop"); nope->Enabled = false; popmenu->Separator(); addmenuitem = new VDKMenuItem(popmenu,_("Append a menu item")); prependmenuitem = new VDKMenuItem(popmenu,_("Prepend a menu item")); insertmenuitem = new VDKMenuItem(popmenu,_("Insert a menu item")); popmenu->Separator(); setsize = new VDKMenuItem(popmenu,_(wi_widget_prompts[19])); popmenu->Separator(); delBox = new VDKMenuItem(popmenu,_("Remove menubar")); SignalConnect(delBox,"activate",&VDKBMenubar::DelBox); SignalConnect(setsize,"activate",&VDKBMenubar::SetBoxSize); SignalConnect(addmenuitem,"activate",&VDKBMenubar::AddMenuItem); SignalConnect(prependmenuitem,"activate",&VDKBMenubar::PrependMenuItem); SignalConnect(insertmenuitem,"activate",&VDKBMenubar::InsertMenuItem); EventConnect("button_press_event", &VDKBMenubar::OnButtonPressed/*,true*/); /* assign this as parent so this can receive signals */ popmenu->Parent(this); /* better add it to owner, so will be surely destroyed even if never popped */ Owner()->AddItem(popmenu); } /* */ void VDKBMenubar::AddBox() { widget = sigwid = container = gtk_menu_bar_new(); gtk_widget_set_size_request(widget,-1,30); gtk_widget_show(container); } /* this will be called only by menubar with wid==NULL Does not call VDKBObjectContainer since is not a VDKContainer. */ void VDKBMenubar::AddWidget(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { VDKMenuItem* menuitem = dynamic_cast(wid); if(menuitem) { if(justify >= pos_justify) { gtk_menu_shell_insert(GTK_MENU_SHELL(container), wid->Widget(), justify-pos_justify); boxlist.insertAt(wid,justify-pos_justify); } else { switch(justify) { case r_justify: gtk_menu_shell_prepend(GTK_MENU_SHELL(container),wid->Widget()); boxlist.addH(wid); break; case l_justify: default: gtk_menu_shell_append(GTK_MENU_SHELL(container),wid->Widget()); boxlist.add(wid); } } VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) ownerform->Changed = true; items.add(wid); wid->Parent(this); gtk_widget_show(wid->Widget()); } else ; // FIX ME: warn user } /* extra args used */ void VDKBMenubar::Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { AddWidget(wid); } /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget 4 - unuseful call */ int VDKBMenubar::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable frame counter // to ensure unicity int result = 0; for(sprintf(buff,"Menubar%d",VDKBMenubar::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; VDKBMenubar::Counter++) sprintf(buff,"Menubar%d",VDKBMenubar::Counter); VDKBMenubar* box = new VDKBMenubar(buff,owner); if(owner->Active) { VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { VDKBMenubar* parentbox = dynamic_cast(container); if(!parentbox) { // fixed not allowed to have menu if(ev && dynamic_cast(container)) result = 2; else container->AddWidget(box); box->outerbox = container; } else // unuseful call to put a container into an empty container; result = 4; } else // target isn't a container result = 2; } else // no active widget result = 3; // 0 on success if(result) box->Destroy(); return result; } //////////////////////////////////////////////////////////////////// /* */ void VDKBMenubar::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { VDKBEventContainer::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_SHADOW,(char*) GetProp(SHADOW)); } char* VDKBMenubar::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char temp[256]; char arg[128]; char bw[16]; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return NULL; else source = new char[1024]; sprintf(temp,"\n%s = new VDKMenubar(this);" ,obj_name); strcpy(source,temp); // get size VDKPoint size = parser.Size(buffer); if(size.X() > 0 || size.Y() > 0) { sprintf(temp,"\n%s->SetSize(%d,%d);",obj_name,size.X(),size.Y()); strcat(source,temp); } if(strcmp(obj_parent,NIHIL_PROP)) sprintf(temp,"\n%s->Add(%s",obj_parent,obj_name); else sprintf(temp,"\nAdd(%s",obj_name); strcat(source,temp); // prepares arguments for add widget to container char justify[16],expand[16],fill[16],padding[16]; if(parser.GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && parser.GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && parser.GetParam(fill,buffer,PROP_FILL_INTERNAL) && parser.GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(temp,",%s,%s,%s,%s);", justify,expand,fill,padding); strcat(source,temp); } else { sprintf(temp,");"); strcat(source,temp); } // get border if(parser.GetParam(bw,buffer,PROP_BORDERWIDTH) && strcmp(bw,NIHIL_PROP)) { sprintf(temp,"\n%s->BorderWidth(%s);",obj_name,bw); strcat(source,temp); } // get shadow if(parser.GetParam(arg,buffer,PROP_SHADOW) && strcmp(arg,NIHIL_PROP)) { int ndx = atoi(arg); ndx = (ndx >= 0) && (ndx <= 4) ? ndx : 0; sprintf(temp,"\n%s->Shadow = %s;", obj_name,shadows[ndx]); strcat(source,temp); } return source; } /* */ bool VDKBMenubar::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; int bw; // border width // packing args int justification = l_justify; int expand=0,fill=0,padding=0; char arg[32]; VDKBMenubar* box; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return false; // get mode and size VDKPoint size = parser.Size(buffer); if(parser.GetParam(arg,buffer,PROP_JUSTIFY_INTERNAL)) justification = atoi(arg); if(parser.GetParam(arg,buffer,PROP_EXPAND_INTERNAL)) expand = atoi(arg); if(parser.GetParam(arg,buffer,PROP_FILL_INTERNAL)) fill = atoi(arg); if(parser.GetParam(arg,buffer,PROP_PADDING_INTERNAL)) padding = atoi(arg); if(parser.GetParam(arg,buffer,PROP_BORDERWIDTH) && strcmp(arg,NIHIL_PROP)) bw = atoi(arg); else bw = -1; // no parent, widget will be added to owner form innerbox if(!strcmp(obj_parent,NIHIL_PROP)) { box = new VDKBMenubar(obj_name,owner->InnerBox()); owner->AddWidget(box,justification,expand,fill,padding); } // get parent container address else { VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { box = new VDKBMenubar(obj_name,container); container->AddWidget(box,justification,expand,fill,padding,true); box->outerbox = container; } else // FIX ME: user warning return false; } // call ancestor to set common properties VDKBObject::CreateWidget(box,buffer,parser); if(size.X() > 0 || size.Y() > 0) box->ObjectFromVDK()->SetSize(size.X(),size.Y()); if(bw >= 0) { char local[16]; box->BorderWidth(bw); sprintf(local,"%d",bw); box->SetPropValue(BORDERWIDTH,local); } // shadow if(parser.GetParam(arg,buffer,PROP_SHADOW) && strcmp(arg,NIHIL_PROP)) { box->SetPropValue(SHADOW,arg); // int sh = atoi(arg); /* gtk_menu_bar_set_shadow_type(GTK_MENU_BAR(box->container), (GtkShadowType) sh); */ } return true; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* This is called by object inspector when a widget is selected by user, thus to allow widget to set his own property controls. */ VDKObjectContainer* VDKBMenubar::ExtraWidget(VDKBObjectInspector* isp) { VDKBox* xframe = dynamic_cast(VDKBEventContainer::ExtraWidget(isp)); if(!xframe) return NULL; // shadow /* VDKTable *table = new VDKTable(inspector,1,2); table->SetSize(219,-1); set = new VDKCustomButton(inspector,_(wi_widget_prompts[40])); table->AddToCell(set,0,0); set->Parent(this); SignalConnect(set,"clicked",&VDKBMenubar::OnSetShadow); shadow = new VDKCombo(inspector,NULL); StringList sl; int t = 0; for(;shadows[t];t++) sl.add(VDKString(shadows[t])); shadow->PopdownStrings = sl; table->AddToCell(shadow,0,1); shadow->SetSize(100,-1); int r = atoi(GetProp(SHADOW)); shadow->SelectItem(r); xframe->Add(table,l_justify,false,false,false); */ else return xframe; } /* */ bool VDKBMenubar:: OnSetShadow(VDKObject*) { int sel = shadow->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); SetPropValue(SHADOW,buff); // int shd = atoi(buff); // gtk_menu_bar_set_shadow_type(GTK_MENU_BAR(container),(GtkShadowType) shd); inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_menuitem.cc0000644000000000000000000006262407454114727014701 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include "./pixmaps/apple.xpm" #include "./pixmaps/copy.xpm" extern char* wi_widget_prompts[]; static char buff[256]; // used to autogenerate default // labelbutton names and captions int VDKBMenuItem::Counter = 0; /* label properties names */ char* vdkmenuitem_props[] = { "Glyph","Caption","Checked",GLYPH_BYDATA,0 }; /* menu item signals names && nicknames Default response method name will be made by: On. */ char* vdkmenuitem_signals[] = { "activate_signal",0 }; char* vdkmenuitem_nicknames[] = { "Activate",0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(VDKBMenuItem,VDKMenuItem); DEFINE_EVENT_LIST(VDKBMenuItem,VDKMenuItem); /////////////////////////////////////////////////// typedef struct { VDKBMenuItem* vdkbmenuitem; VDKMenuItem* vdkmenuitem; } DelBoxInfo; static void GlobalDelBox(GtkWidget* widget, gpointer gp) { g_return_if_fail(widget != NULL); g_return_if_fail(gp != NULL); DelBoxInfo* info = reinterpret_cast(gp); printf("\nGlobalDelBox()"); fflush(stdout); info->vdkbmenuitem->DelBox(info->vdkmenuitem); } /* */ bool VDKBMenuItem:: DelBox(VDKObject* sender) { /* if(boxlist.size() > 0) boxlist[0]->Destroy(); */ VDKBEventContainer* container = dynamic_cast(Parent()); // if(container) { container->boxlist.remove(this); container->RemoveObject(this); // if we are deleting last menu item // we delete menu container as well if(container->boxlist.size() <=0 && dynamic_cast(container) ) ((VDKBMenu*) container)->DelBox(NULL); // notify to inspector that object was deleted // and set ownerform Active to NULL VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { ownerform->Active = NULL; VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) prjman->objInspector->SetActive(NULL); } } return true; } /* */ bool VDKBMenuItem::SetBoxSize(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) ownerform->SetBoxSize(NULL); return true; } /* - handle mouse button click */ bool VDKBMenuItem::ButtonPressed(VDKObject* sender, GdkEvent* ev) { VDKBProjectManager* prjman = NULL; GdkEventButton* event = (GdkEventButton*) ev; VDKBMenu* menu = dynamic_cast(Parent()); VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) prjman = dynamic_cast(ownerform->Owner()); // activates widget if(ownerform && ownerform->Active) ownerform->Active->ClearMark(); if(ownerform) ownerform->Active = this; Mark(); /* parse button pressed */ switch(event->button) { // right mouse button, as usual invokes inspector // and stops signal here case 3: /* if(prjman && prjman->objInspector) prjman->objInspector->SetActive(this); */ popmenu->Popup(); return true; // left mouse // if menu item does not contains a submenus // invokes inspector as usual and stop signal here. case 1: if(boxlist.size() <= 0) { if(prjman && prjman->objInspector) prjman->objInspector->SetActive(menu ? NULL : this); return true; } // otherwise set inspector inactive (will be called // as modal dialog with pop menu) else if( prjman && prjman->objInspector) prjman->objInspector->SetActive(NULL); // if parent menu is locked stop signal here // otherwise let it proceed to parent menu until gui form. return menu ? menu->Locked : false; } return false; } /* OBSOLETE */ bool VDKBMenuItem::UnlockMenu(VDKObject* sender) { if(boxlist.size() > 0) ((VDKBMenu*)boxlist[0])->Locked = false; return true; } /* OBSOLETE */ void VDKBMenuItem:: InvokeMenuItemInspector() { VDKBGuiForm* ownerform = dynamic_cast(Owner()); /* printf("\ninvoking, owner:%p",ownerform); fflush(stdout); */ if(ownerform) { VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) prjman->objInspector->SetActive(this); popmenu->Popup(); } } /* - handle enter event */ bool VDKBMenuItem::OnEnter(VDKObject* sender, GdkEvent* ev) { return false; } /* - handle enter event */ bool VDKBMenuItem::ButtonReleased(VDKObject* sender, GdkEvent* ev) { return false; } /* - handle leave event */ bool VDKBMenuItem::OnLeave(VDKObject* sender, GdkEvent* ev) { /* important !! leave: return true; here !! (obscure reason) */ return true; } /* A VDKBMenuItem can add only VDKBMenu (this submnenus) */ void VDKBMenuItem::AddWidget(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { VDKBMenu* menu = dynamic_cast(wid); if(menu) { gtk_menu_item_set_submenu(GTK_MENU_ITEM(ObjectFromVDK()->WrappedWidget()), wid->WrappedWidget()); boxlist.add(wid); items.add(wid); wid->Parent(this); wid->Setup(); gtk_widget_show(wid->Widget()); } else ; // FIX ME: warn user } /* */ bool VDKBMenuItem::AddMenu(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(ObjectFromVDK()->Owner()); if(!ownerform) return true; GtkMenu* thismenu = NULL; // boxlist on menu item can have just on item if(boxlist.size() <= 0) { for(sprintf(buff,"Menu%d",VDKBMenu::Counter); ownerform->ChildWithName(buff)!= (VDKObject*) NULL; VDKBMenu::Counter++) sprintf(buff,"Menu%d",VDKBMenu::Counter); VDKBMenu* menu = new VDKBMenu(buff,ownerform); gtk_menu_item_set_submenu(GTK_MENU_ITEM(ObjectFromVDK()->WrappedWidget()), menu->WrappedWidget()); ownerform->Changed = true; boxlist.add(menu); items.add(menu); menu->Parent(this); menu->Setup(); ownerform->Active = menu; // add first menu item by default MakeWidget(ownerform); thismenu = GTK_MENU(menu->ObjectFromVDK()->Widget()); ((VDKMenu*) menu->ObjectFromVDK())->Popup(); SetTip(_("Double click to lock/unlock menu")); } else ((VDKMenu*)boxlist[0])->Popup(); return true; } /* invokde modal object inspector */ bool VDKBMenuItem::SetProperties(VDKObject*) { VDKBProjectManager* prjman = NULL; VDKBGuiForm* ownerform = dynamic_cast(Owner()); prjman = dynamic_cast(ownerform->Owner()); if(prjman) { // hides main WI if(prjman->objInspector) prjman->objInspector->Visible = false; VDKBObjectInspector* dlg = new VDKBObjectInspector(prjman,NULL); dlg->Setup(); dlg->SetActive(this); dlg->ShowModal(); // shows main WI if(prjman->objInspector) prjman->objInspector->Visible = true; } return true; } ////////////////////////////////////////////////////////////// /* - constructor */ VDKBMenuItem::VDKBMenuItem(char* name, VDKForm* owner, char* prompt): VDKMenuItem(owner, prompt ? prompt : name),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties list label button properties // names. (Others props are prepended by VDKBObject constructor) for(t=0; vdkmenuitem_props[t]; t++) proplist.add(VDKBProperty(vdkmenuitem_props[t])); if(prompt) SetPropValue("Caption",prompt); SetPropValue("Checked",CHECK_FALSE); // add to signal list for(t=0; vdkmenuitem_signals[t]; t++) siglist.add(VDKBSignal(vdkmenuitem_signals[t], this, vdkmenuitem_nicknames[t])); // connects events. EventConnect("button_press_event",&VDKBMenuItem::ButtonPressed); // makes a pop menu popmenu = new VDKMenu(Owner()); VDKMenuItem* unlock = new VDKMenuItem(popmenu,"Nop"); unlock->Enabled = false; popmenu->Separator(); VDKMenuItem* addmenu = new VDKMenuItem(popmenu,_("Add a menu")); popmenu->Separator(); VDKMenuItem* setsize = new VDKMenuItem(popmenu,_(wi_widget_prompts[19])); popmenu->Separator(); VDKMenuItem* setprops = new VDKMenuItem(popmenu,_("Set properties")); VDKMenuItem* delBox = new VDKMenuItem(popmenu,_("Remove menu item")); /* DelBoxInfo info; info.vdkbmenuitem = this; info.vdkmenuitem = delBox; gtk_signal_connect(GTK_OBJECT(delBox->WrappedWidget()), "activate", GTK_SIGNAL_FUNC(GlobalDelBox), &info); */ SignalConnect(delBox,"activate",&VDKBMenuItem::DelBox); SignalConnect(setsize,"activate",&VDKBMenuItem::SetBoxSize); SignalConnect(addmenu,"activate",&VDKBMenuItem::AddMenu); SignalConnect(setprops,"activate",&VDKBMenuItem::SetProperties); /* assign this as parent so this can receive signals */ popmenu->Parent(this); /* better add it to owner, so will be surely destroyed even if never popped */ Owner()->AddItem(popmenu); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void VDKBMenuItem::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\tGlyph:%s;",(char*) GetProp("Glyph")); fprintf(fp,"\n\t%s%s;", PROP_GLYPH_BYDATA, (char*) GetProp(GLYPH_BYDATA)); fprintf(fp,"\n\tCaption:\"%s\";",(char*) GetProp("Caption")); fprintf(fp,"\n\tChecked:%s;",(char*) GetProp("Checked")); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container */ int VDKBMenuItem::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { for(sprintf(buff,"MenuItem%d",VDKBMenuItem::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; VDKBMenuItem::Counter++) sprintf(buff,"MenuItem%d",VDKBMenuItem::Counter); // a menu item can be added only to a menubar // or menu GdkEventButton* event = NULL; if(ev) event = (GdkEventButton*) ev; if(owner->Active) { VDKBMenubar* menubar = dynamic_cast(owner->Active); if(menubar) { VDKMenuItem* menuitem = new VDKBMenuItem(buff,owner); menubar->AddWidget(menuitem, event ? event->state : 0); return 0; } else { VDKBMenu* menu = dynamic_cast(owner->Active); if(menu) { VDKBMenuItem* menuitem = new VDKBMenuItem(buff,owner); menu->AddWidget(menuitem, event ? event->state : 0); return 0; } else return 2; } return 2; } return 3; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool VDKBMenuItem::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char obj_glyph[256]; char bydata[16]; char obj_caption[128]; char obj_checked[16]; VDKBMenuItem* menuitem; // get name, and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return false; // no parent widget , error if(!strcmp(obj_parent,NIHIL_PROP)) return false; // get glyph if(parser.GetParam(obj_glyph,buffer,"Glyph:") && strcmp(obj_glyph,NIHIL_PROP)) ; else strcpy(obj_glyph,""); if(parser.GetParam(bydata,buffer,PROP_GLYPH_BYDATA) && strcmp(bydata,NIHIL_PROP)) ; else strcpy(bydata,""); // get caption if(parser.GetParam(obj_caption,buffer,"Caption:") && strcmp(obj_caption,NIHIL_PROP)) ; else strcpy(obj_caption,""); // get checked if(parser.GetParam(obj_checked,buffer,"Checked:") && strcmp(obj_checked,NIHIL_PROP)) ; else strcpy(obj_checked,""); VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { menuitem = new VDKBMenuItem(obj_name,owner); if(*obj_glyph) { VDKRawPixmap* pix = new VDKRawPixmap(owner,obj_glyph); menuitem->SetPixmap(pix); } if(*obj_caption) { menuitem->SetPropValue("Caption",obj_caption); menuitem->Caption = obj_caption; } if(*obj_checked) { menuitem->SetPropValue("Checked",obj_checked); menuitem->Checked = !strcmp(obj_checked,CHECK_TRUE); } ///////////////////////////////////////// // call ancestor to set common properties VDKBObject::CreateWidget(menuitem,buffer,parser); // glyph if(*obj_glyph) menuitem->SetPropValue("Glyph",obj_glyph); // glyph by data if(*bydata) menuitem->SetPropValue(GLYPH_BYDATA,bydata); // prepares packing args based on those loaded by // VDKBObject::CreateWidget() int justification = l_justify; int expand=0,fill=0,padding=0; char* p = (char*) menuitem->GetProp(JUSTIFY_INTERNAL); justification = atoi(p); p = (char*) menuitem->GetProp(EXPAND_INTERNAL); expand = atoi(p); p = (char*) menuitem->GetProp("_Fill"); fill = atoi(p); p = (char*) menuitem->GetProp("_Padding"); padding = atoi(p); // last arg make AddWidget() to use packing args. // By default all new widgets are added to a form // with l_justify,false,false,false. // always append as l_justify since the order depends // on widget position into parent widget list container->AddWidget(menuitem, l_justify, /*justification*/ expand,fill,padding,true); if(justification == r_justify) gtk_menu_item_right_justify(GTK_MENU_ITEM(menuitem->Widget())); } else return false; return true; } /* */ char* VDKBMenuItem::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char obj_glyph[128]; char bydata[16]; char obj_caption[128]; char obj_checked[16]; *obj_glyph = '\0'; // get name, and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return NULL; // no parent widget , error if(!strcmp(obj_parent,NIHIL_PROP)) return NULL; source = new char[4096]; *source = '\0'; // check if it is a separator if(parser.GetParam(obj_caption,buffer,"Caption:") && !strcmp(obj_caption,"@sep")) { sprintf(source,"\n%s->Separator();",obj_parent); return source; } bool nls_support = parser.CheckNLSSupport(); sprintf(tmp,"\n%s = new VDKMenuItem(this,\"%s\",NULL);", obj_name,obj_name); strcpy(source,tmp); if(parser.GetParam(obj_glyph,buffer,PROP_GLYPH) && strcmp(obj_glyph,NIHIL_PROP)) ; else strcpy(obj_glyph,""); if(parser.GetParam(bydata,buffer,PROP_GLYPH_BYDATA) && strcmp(bydata,NIHIL_PROP)) ; else strcpy(bydata,""); // some cases... if(*obj_glyph) { if(strcmp(bydata,CHECK_YES)) sprintf(tmp, "\nVDKRawPixmap *%s_pix = new VDKRawPixmap(this,\"%s\");", obj_name,obj_glyph); else { int z = 0; char* local = new char[strlen(obj_glyph)+1], *p = NULL; strcpy(local,obj_glyph); sprintf(buff,"\n#include \"%s\"",local); // refuses to include twice same file VDKString symbol(local); if(parser.decSymbols.find(symbol)) { #if 0 printf("\nsymbol:%s already declared", (char*) symbol); fflush(stdout); #endif strcpy(tmp,""); } else { strcpy(tmp,buff); parser.decSymbols.add(symbol); } p = get_shortfilename(local); // changes <.-> to _ if(!p) p = local; for(; p[z];z++) { if((p[z] == '.') || (p[z] == '-') ) p[z] = '_'; } sprintf(buff, "\nVDKRawPixmap *%s_pix = new VDKRawPixmap(this,%s);", obj_name,p); strcat(tmp,buff); delete [] local; } strcat(source,tmp); sprintf(tmp,"\n%s->SetPixmap(%s_pix);",obj_name,obj_name); strcat(source,tmp); } /* // set glyph if(parser.GetParam(obj_glyph,buffer,"Glyph:") && strcmp(obj_glyph,NIHIL_PROP)) { sprintf(tmp, "\nVDKRawPixmap *%s_pix = new VDKRawPixmap(this,\"%s\");", obj_name,obj_glyph); strcat(source,tmp); sprintf(tmp,"\n%s->SetPixmap(%s_pix);",obj_name,obj_name); strcat(source,tmp); } */ // get caption if(parser.GetParam(obj_caption,buffer,"Caption:") && strcmp(obj_caption,NIHIL_PROP)) { if(nls_support) sprintf(tmp, "\n%s->Caption = _(\"%s\");", obj_name,obj_caption); else sprintf(tmp, "\n%s->Caption = \"%s\";", obj_name,obj_caption); strcat(source,tmp); } // get checked if(parser.GetParam(obj_checked,buffer,"Checked:") && strcmp(obj_checked,NIHIL_PROP)) { sprintf(tmp, "\n%s->Checked = %s;", obj_name,obj_checked); strcat(source,tmp); } /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete props; } // prepares arguments to add widget to container // always append as l_justify since the order depends // on widget position into parent widget list char justify[16],expand[16],fill[16],padding[16]; if(parser.GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && parser.GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && parser.GetParam(fill,buffer,PROP_FILL_INTERNAL) && parser.GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(tmp,"\n%s->Add(%s,%s,%s,%s,%s);", obj_parent,obj_name, "l_justify" /*justify*/, expand,fill,padding); strcat(source,tmp); // check if actually has to be right justified if(atoi(justify) == r_justify) { sprintf(tmp, "gtk_menu_item_right_justify(GTK_MENU_ITEM(%s->Widget()));", obj_name); strcat(source,tmp); } } else { sprintf(tmp,"\n%s->Add(%s);", obj_parent,obj_name); strcat(source,tmp); } // visible property must be wrote after adding it to a parent // container. That's the reason why is written here and not // in vdkb_object class as should be. // written only if == false if(parser.GetParam(arg,buffer,PROP_VISIBLE) && !strcmp(arg,CHECK_FALSE)) { sprintf(tmp,"\n%s->Visible = %s;",obj_name,arg); strcat(source,tmp); } return source; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ VDKObjectContainer* VDKBMenuItem::ExtraWidget(VDKBObjectInspector* isp) { // FIX ME: lang support VDKString True = CHECK_TRUE; inspector = isp; VDKFrame* vframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); VDKTable *table = new VDKTable(inspector,4,2); // table->SetSize(219,-1); VDKBox* hbox = new VDKBox(inspector,h_box); VDKCustomButton* set = new VDKCustomButton(inspector,(const char**) apple_xpm, NULL); set->Relief = (GtkReliefStyle) 2; set->SetTip(_(wi_widget_prompts[7])); hbox->Add(set,l_justify,false,false,0); set->Parent(this); SignalConnect(set,"clicked",&VDKBMenuItem::OnSetGlyph); shortname = new VDKCustomButton(inspector,(const char**) copy_xpm,NULL); shortname->Relief = (GtkReliefStyle) 2; shortname->SetTip(_(wi_widget_prompts[9])); VDKString s = GetProp("Glyph"); shortname->Enabled = strcmp((char*) s,NIHIL_PROP); hbox->Add(shortname,l_justify,false,false,0); shortname->Parent(this); SignalConnect(shortname,"clicked",&VDKBMenuItem::OnSetShortName); table->AddToCell(hbox,0,0); pixfile = new VDKEntry(inspector,0, !strcmp((char*) s,NIHIL_PROP) ? NULL : (char*) s); pixfile->SetSize(100,-1); pixfile->SetTip(_("Enter \"nihil\" to reset assigned pixmap")); table->AddToCell(pixfile,0,1); pixfile->Parent(this); SignalConnect(pixfile,"activate",&VDKBMenuItem::OnSetGlyph); s = GetProp(GLYPH_BYDATA); bydata = new VDKCheckButton(inspector,_(wi_widget_prompts[58])); bydata->SetTip(_(wi_widget_prompts[59])); table->AddToCell(bydata,1,0); bydata->Checked = !strcmp((char*) s, CHECK_YES); bydata->Parent(this); SignalConnect(bydata,"toggled",&VDKBMenuItem::OnToggleBydata); checked = new VDKCheckButton(inspector,_(wi_widget_prompts[41])); checked->Checked = GetProp("Checked") == True; table->AddToCell(checked,1,1); checked->Parent(this); SignalConnect(checked,"toggled",&VDKBMenuItem::OnSetChecked); VDKLabel* label = new VDKLabel(inspector,_(wi_widget_prompts[0])); label->Justify = GTK_JUSTIFY_RIGHT; table->AddToCell(label,2,0); caption = new VDKEntry(inspector,0,(char*) GetProp("Caption")); caption->SetSize(100,-1); SignalConnect(caption,"activate",&VDKBMenuItem::OnSetCaption); table->AddToCell(caption,2,1); caption->Parent(this); vframe->Add(table,l_justify,false,false,false); return vframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool VDKBMenuItem::OnToggleBydata(VDKObject*) { SetPropValue(GLYPH_BYDATA, bydata->Checked ? (char*) "yes" : (char*) "no"); inspector->FormNeedToBeChanged(); return true; } bool VDKBMenuItem::RepackWidget(VDKObject*) { /* printf("\nVDKBMenuItem::RepackWidget()"); fflush(stdout); */ return true; } /* */ bool VDKBMenuItem::OnSetChecked(VDKObject*) { bool flag = checked->Checked; SetPropValue("Checked",flag ? CHECK_TRUE : CHECK_FALSE); Checked = flag; inspector->FormNeedToBeChanged(); return true; } /* */ bool VDKBMenuItem::OnSetCaption(VDKObject*) { if(strlen(caption->Text)>0) { sprintf(buff,"%s",(char*) caption->Text); SetPropValue("Caption",buff); Caption = caption->Text; inspector->FormNeedToBeChanged(); } return true; } /* */ extern char** default_pixmap; bool VDKBMenuItem::OnSetGlyph(VDKObject* sender) { char* pix = pixfile->Text; if(sender == pixfile) { if (!strcmp(pix,NIHIL_PROP)) { SetPropValue(GLYPH,pix); SetPixmap(NULL); inspector->FormNeedToBeChanged(); } } else { FileStringArray selections; VDKXpmBrowser *child = new VDKXpmBrowser(Owner(),&selections, _(file_dialog_prompts[0])); child->ShowModal(); if(selections.size() > 0) { VDKRawPixmap *newpix = new VDKRawPixmap(this,(char*) selections[0]); SetPixmap(newpix); pixfile->Text = (char*) selections[0]; SetPropValue(GLYPH,(char*) selections[0]); inspector->FormNeedToBeChanged(); shortname->Enabled = true; } } return true; } /* */ bool VDKBMenuItem::OnSetShortName(VDKObject*) { VDKString s = GetProp(GLYPH); VDKString path; VDKBProject* project; VDKBProjectManager* prjman; if(!inspector) return true; prjman = dynamic_cast(inspector->Owner()); if(!prjman) return true; project = prjman->Project(); if(!project) return true; path = project->Path; sprintf(buff,"cp %s %s/",(char*) s, (char*) path); system(buff); char* p = get_shortfilename((char*) s); if(p) { VDKString short_name = p; pixfile->Text = (char*) short_name; SetPropValue(GLYPH,(char*) short_name); shortname->Enabled = false; inspector->FormNeedToBeChanged(); } return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_nbook.cc0000644000000000000000000000324607375577725014176 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * December 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #include #include //static char buff[256]; ///////////////////////// /* */ VDKBNotebook::VDKBNotebook(VDKForm* owner) : VDKNotebook(owner) { // Scrollable = true; } /* */ VDKBNotebook::~VDKBNotebook() { } /* #define vdkeCourier "-*-courier-medium-r-*-*-14-*-*-*-*-*-*-*" #define vdkeCourierBold "-*-courier-bold-r-*-*-14-*-*-*-*-*-*-*" #define vdkeCourierSlant "-*-courier-medium-o-*-*-14-*-*-*-*-*-*-*" */ /* */ void VDKBNotebook::AddText(VDKBText* text, char* text_name, bool hilite) { // set text hiliting #ifdef HAVE_SYNTAX text->Hilite = hilite; #else text->Hilite = false; #endif AddPage(text,text_name); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_nls.cc0000644000000000000000000003154407453574166013655 /* * =========================== * VDK Builder * Version 1 * Revision 0.2 * March 2000 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif /* NLS translation tables */ char* folder_widget_titles[] = { N_("Buttons"), N_("Containers"), N_("Dialogs"), N_("Misc"), N_("Text"),N_("Plugins"),N_("Gnome widgets"), N_("Xdb widgets"), 0 }; /* NLS translation tables */ char* main_menu_prompts[] = { N_("File"), // 0 N_("New.."), // 1 N_("_Project"), // 2 N_("_Unit"), // 3 N_("Form"), // 4 N_("Default"), // 5 N_("Scrolled"), // 6 N_("Paned"), // 7 N_("_Open.."), // 8 N_("Project"), // 9 N_("File"), // 10 N_("Save"), // 11 N_("Save All"), //12 N_("_Quit VDKBuilder"), // 13 N_("_Edit"), // 14 N_("_Search"), // 15 N_("_View"), // 16 N_("View Units"), // 17 N_("View Forms"), // 18 N_("Project"), // 19 N_("Add to project"), // 20 N_("Remove from project"), // 21 N_("Components"), // 22 N_("_Tools"), // 23 N_("_Help"), // 24 N_("Tutorial"), // 25 N_("About VDK Builder"), // 26 N_("_Make"), // 27 N_("Op_tions"), // 28 N_("Make clean"), // 29 N_("Search"), // 30 N_("Repeat Search"), // 31 N_("Replace"), // 32 N_("Undo"), // 33 N_("Redo"), // 34 N_("Syntax Hilight (F6)"), // 35 N_("Run debugger"), // 36 N_("Set Builder environment"), // 37 N_("Grep"), // 38 N_("Autoconf/Automake"), // 39 N_("Autogen"), // 40 N_("Make"), // 41 N_("Make clean"), // 42 N_("Make dist"), // 43 N_("Make distclean"), // 44 N_("VDK Reference Manual"), // 45 N_("XDatabase tools"), // 46 N_("XDB Support"), // 47 N_("Editor short cuts (F1)"), // 48 N_("Reopen"), // 49 N_("Hints editor"), // 50 0 }; /* NLS translation tables */ char *main_toolbar_tips[] = { N_("New Project"), N_("New Unit"), N_("New Form"), N_("Open project"), N_("Open File"), N_("Save project"), N_("Save File"), 0 }; char *main_toolbar1_tips[] = { N_("Toggle unit/form"), N_("Run"), N_("Cancel selection"), N_("Call emacs as external editor"),0 }; /* NLS translation tables */ char * container_widgets_tips[] = { N_("Vert box"), N_("Hor box"), N_("Frame"), N_("Table"), N_("Vert paned"), N_("Hor paned"), N_("Notebook"), N_("Handlebox"), N_("Toolbar"), N_("Scrolled"), N_("Menu bar"), N_("Vert Radio Button Group"), N_("Hor Radio Button Group"),N_("Fixed"), 0 }; /* NLS translation tables */ char * button_widgets_tips[] = { N_("VDKCustom Button"), N_("Spin button"), N_("Check button"), N_("Radio button"), 0 }; /* NLS translation tables */ char * text_widgets_tips[] = { N_("Label"), N_("Entry"), N_("Text"), 0 }; /* NLS translation tables */ char * misc_widgets_tips[] = { N_("Canvas"), N_("Pixmap"), N_("Image"),N_("Progress bar"), N_("Slider"), N_("Status bar"), N_("Timer"), N_("Custom list"), N_("Combo box"), N_("Custom tree"), N_("Hor separator"), N_("Vert separator"), N_("Grid"), N_("Place holder"),N_("Tree view"), 0 }; /* NLS translation tables */ char * gnome_widgets_tips[] = { N_("Gnome application bar"),N_("Gnome date Edit"), N_("Gnome entry"), 0 }; /* NLS translation tables */ char * xdb_widgets_tips[] = { N_("xdb entry"),N_("xdb list"), N_("xdb check button"), N_("xdb memo"), 0 }; /* NLS translation tables */ char * prjman_prompts[] = { N_("Project manager"), N_("New project"), N_("Add a unit"), N_("Remove a unit"), N_("Edit unit"), N_("Form attributes"), N_("Add Member"), N_("Declared"), N_("Defined"), // 6 7 8 9 for class viewer N_("Update"), 0 }; /* NLS translation tables */ char * user_messages[] = { N_("Quit VDKBuilder ?"), N_("Ok"), N_("No"), N_("Cancel"), N_("defaults file missing, aborting.."), N_("modified, has to be saved ?"), N_("Unknown unit type"), N_("unit can't be added"), N_("can't be closed"), N_("bad reading or unknown project file"), N_("incorrect project version"), N_("main unit can't be removed"), N_("unit already in project"), 0 }; /* NLS translation tables */ char * prj_status[] = { N_("Status: never saved"), N_("Status: unsaved"), N_("Status: saved"), 0 }; /* NLS translation tables */ char* file_dialog_prompts[] = { N_("Open a project"), N_("Open a file"), N_("Add a unit to project"), N_("Save project as.."), N_("Save file as.."), 0 }; /* NLS translation tables */ char* editor_prompts[] = { N_("VDKBuilder editor"), N_("Modified:"), N_("Line:"), // 0 1 2 N_("Toggle unit header/source"), N_("Close this page"), N_("Save as.."), // 3 4 5 N_("No more undo's"), N_("Fontifyng"), N_("done"), // 6 7 8 N_("Save"), N_("Shows/hides line numbers"), N_("Shows/hides messages list"), // 9 10 11 0 }; /* NLS translation tables */ char* source_prompts[] = { "\n// do not remove this mark: %s\n// end of file:%s_gui.%s\n", // 0 "\n// do not remove this mark: %s\n// end of file:%s.%s\n", // 1 "/*\n%s gui header\n*/", // 2 "\n/*\ndeclaring signal and events\ndynamics tables\n*/", // 3 "\n/*\ndefining signal and events\ndynamics tables\n*/", // 4 "\n/*\ndefining signal static table\n*/", // 5 "\n/*\nmain form setup\n*/", // 6 "\n/* default useless form */", // 7 "signal response method", // 8 "asks user before closing", // 9 "form event response method", // 10 "/*\n%s Console Application", // 11 "\nMain unit header file: %s.%s", // 12 "/*\n%s %s Application", // 13 "Plain VDK", // 14 "VDK Gnome compliant", // 15 "\n// gui object declarations", // 16 "\n// vdkbuilder reserved gui construction", // 17 "\n/*\n gui setup include", // 18 "\n do not patch below here\n*/", // 19 "\n/*\nform GUI setup\n*/", // 20 "\nimplementation file:%s.%s", // 21 "\n/*\nform constructor\n*/", // 22 "\n/*\nform destructor\n*/", // 23 "\n/*\nform setup\n*/", // 24 "\n// put your code below here", // 25 "\nheader file: %s.%s", // 26 "\nMain unit implementation file:%s.%s", // 27 "\n/*\nmain program\n*/", // 28 "\n/*\nmain form constructor\n*/", // 29 "\n/*\napplication constructor\n*/", // 30 "\n/*\napplication destructor\n*/", // 31 "/*\n%s ConsoleApplication", // 32 "\nMain unit implementation file:%s.%s", // 33 "\n/*\nAuthor:\t%s", // 34 "\nE-mail:\t%s\n*/", // 35 "\n/*\nLicense:\n\ \tThis program is free software; you can redistribute it and/or modify\n\ \tit under the terms of the GNU General Public License as published by\n\ \tthe Free Software Foundation; either version 2 of the License, or\n\ \tat your option any later version.\n*/\n", // 36 "\n/*\nCopyright %s - %d, all rights reserved\n*/\n", // 37 "\n/*\n** WARNING ** - File written by VDKBuilder, unuseful edit it\n*/\n", // 38 0 }; /* NLS translation tables */ char* wi_prompts[] = { N_("Connects form to selected event"), // 0 N_("Disconnects form to selected event"), // 1 N_("Drops a <%s> into %s"), // 2 N_("Duplicated connection"), // 3 N_("Connection not found"), // 4 N_("Duplicated response function"), // 5 N_("Duplicated name"), // 6 N_("Widget name can't be cancelled"), // 7 N_("WI: no object selected"), // 8 N_("Properties"), // 9 N_("Delete signal response"), // 10 N_("Common properties"), // 11 N_("Set name"), // 12 N_("Widget names must follow C++ naming rules"), // 13 N_("Widget state"), // 14 N_("Set color"), // 15 N_("Set font"), // 16 N_("Justification"), // 17 N_("Expand"), // 18 N_("Fill"), // 19 N_("Padding:"), // 20 N_("Repack"), // 21 N_("Box Preview"), // 22 N_("Side"), // 23 N_("Anchor"), // 24 N_("Fill X"), // 25 N_("Fill Y"), // 26 N_("Reconfigure"), // 27 N_("Set tooltip"), // 28 N_("Set tag"), // 29 N_("WI: disabled"), // 30 N_("Signals"), // 31 N_("Form events"), // 32 N_("Class response method"), // 33 N_("Reuse this"), // 34 N_("Restore default"), // 35 N_("Public"), // 36 0 }; /* NLS translation tables */ char* popmenu_prompts[] = { N_("Cut"), // 0 N_("Copy"), // 1 N_("Paste"), // 2 N_("Paste others"), // 3 N_("Drop widget"), // 5 0 }; /* NLS translation tables */ char* vdkbmaker_prompts[] = { N_("Begin"), N_("Runs child process"), N_("Kill or Close"), N_("Kills child process or close form if no child is running"), 0 }; /* NLS translation tables */ char* prjoptions_prompts[] = { N_("Project options"), // 0 N_("C compiler"), // 1 N_("C++ compiler"), // 2 N_("Linker"), // 3 N_("Compilation flags"), // 4 N_("Defines"), // 5 N_("Include paths"), // 6 N_("Shared libs"), // 7 N_("Debugger"), // 8 N_("Program args"), // 9 N_("Package version"), // 10 N_("Close and save"), // 11 N_("Cancel"), // 12 N_("Package name"), // 13 N_("NLS Support"), // 14 0 }; /* NLS translation tables */ char* search_dialog_prompts[] = { N_("Find Text"), N_("Find"), N_("Text to find"), N_("Previous search"), N_("Options"), N_("Case sensitive"), N_("Whole words only"), N_("Regular expressions"), N_("Directions"), N_("Forward"), N_("Backward"), N_("Scope"), N_("Global"), N_("Selected text"), N_("Origin"), N_("From cursor"), N_("Entire scope"), N_("Ok"), N_("Cancel"), N_("Reached end of buffer"), N_("continue from beginning ?"), 0 }; /* NLS translation tables */ char* replace_dialog_prompts[] = { N_("Replace Text"), N_("Replace"), N_("Text to find:"), N_("Text to replace:"), N_("Options"), N_("Case sensitive"), N_("Whole words only"), N_("Regular expressions"), N_("Prompt on replace"), N_("Directions"), N_("Forward"), N_("Backward"), N_("Scope"), N_("Global"), N_("Selected text"), N_("Origin"), N_("From cursor"), N_("Entire scope"), N_("Ok"), N_("Replace All"), N_("Cancel"), N_("Replace occurrence of:"), N_("with:"), N_("Yes"), N_("No"), 0 }; /* NLS translation tables */ char* about_dlg_text[] = { "Mario Motta", "Ionutz Borcoman", "Tim Lorenz", 0 }; /* NLS translation tables */ char* wi_widget_prompts[] = { N_("Set Caption"), // 0 N_("Caption wrap"), // 1 N_("Editable"), // 2 N_("Sorted"), // 3 N_("Hidden"), // 4 N_("CaseSensitive"), // 5 N_("Set Relief"), // 6 N_("Set glyph"), // 7 N_(".xpm -> project dir"), // 8 N_("Copy .xpm to project dir (recommended)"), // 9 N_("Set sel mode"), // 10 N_("Column title: "), // 11 N_("AutoResize"), // 12 N_("Set border shadow"), // 13 N_("ShowTime"), // 14 N_("Format H 24"), // 15 N_("Hidden"), // 16 N_("Text"), // 17 N_("Max chars"), // 18 N_("Set min size"), // 19 N_("Select parent container"), // 20 N_("Remove box"), // 21 N_("Remove fixed"), // 22 N_("Set grid options"), // 23 N_("Have grid"), // 24 N_("V spacing: "), // 25 N_("H spacing: "), // 26 N_("Set form title"), // 27 N_("Set back pixmap"), // 28 N_("Set focus widget"), // 29 N_("Remove frame"), // 30 N_("Set border width"), // 31 N_("Label: "), // 32 N_("Set shadow/align"), // 33 N_("Progress bar"), // 34 N_("History id"), // 35 N_("Max saved"), // 36 N_("Rows visibles"), // 37 N_("Cols visibles"), // 38 N_("Remove handle"), // 39 N_("Set shadow"), // 40 N_("Ckecked"), // 41 N_("Tab label: "), // 42 N_("Scrollable"), // 43 N_("PopUp"), // 44 N_("Minimum value"), // 45 N_("Maximum value"), // 46 N_("Set BlockCount"), // 47 N_("Set bar style"), // 48 N_("Set orientation"), // 49 N_("Activity mode"), // 50 N_("Def constructor"), // 51 N_("Set lower bound"), // 52 N_("Set upper bound"), // 53 N_("Set step"), // 54 N_("Set update policy"), // 55 N_("Set digits"), // 56 N_("Set default value"), // 57 N_("Set icon by data"), // 58 N_("Check this if you want set icon by data\n(icon must be non NULL)"), // 59 N_("Set display type"), // 60 N_("Set initial position"), // 61 N_("Freeze form size"), // 62 N_("Set minimum size, form can't be shrinked below"), // 63 0 }; vdkbuilder2-2.4.0/vdkbuilder/vdkb_notebook.cc0000644000000000000000000004436307454053710014670 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include //#include #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBGuiNotebook // put here vdk class name string #define VDK_CLASS "VDKNotebook" // put here vdk class name #define VDK_ANCESTOR VDKNotebook // put here here the widget will be named // (name+counter) #define VDK_WIDGET "notebook" extern char* wi_widget_prompts[]; static char buff[128]; int CLASS::Counter = 0; /* notebook properties names */ char* vdknotebook_props[] = { SCROLLABLE,POPUP,0 }; /* notebook signal names && nicknames Default response method name will be made by: On. For instance if object name = and nickname = default response method name will be: */ char* vdknotebook_signals[] = { "switch_page_signal", 0 }; char* vdknotebook_nicknames[] = { "SwitchPage",0 }; DEFINE_EVENT_LIST(CLASS,VDKBEventContainer); DEFINE_SIGNAL_LIST(CLASS,VDKBEventContainer); /* */ bool CLASS:: DelBox(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); // call ancestor delete box VDKBEventContainer::DelBox(sender); // notify to inspector that object was deleted if(ownerform) { VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) prjman->objInspector->SetActive(NULL); } return true; } /* */ bool CLASS::SetBoxSize(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { ownerform->SetBoxSize(NULL); } return true; } /* */ bool CLASS::AddNewPage(VDKObject* sender) { char local[64]; // make the first suitable tab label // roughly initializes pagecount to tablabels size +1 int pagecount = tablabels.size()+1; // makes the label sprintf(local,"%s_page%d",(char*) Name(),pagecount ); // checks if already into the list // than increments page counter VDKString lbl(local); while(tablabels.find(lbl)) { pagecount++; sprintf(local,"%s_page%d",(char*) Name(),pagecount ); lbl = local; } // got an unique label VDKBEventBox *box = new VDKBEventBox(local,this); AddWidget(box); pagelist.add(box); return true; } /* unused */ bool CLASS::OnButtonPressed(VDKObject* sender, GdkEvent* event) { // commented out, just let's pass trough printf("\nOnButtonPressed*****"); fflush(stdout); VDKBEventContainer::OnButtonPressed(this,event); //VDKBObject::ButtonPressed(sender,event); return false; } /* */ bool CLASS::RemovePage(VDKObject* sender) { int ndx = nbook->ActivePage; VDKBObject *page = pagelist[ndx]; VDKBEventBox* box = dynamic_cast(page); if(box) { int ndx = pagelist.at(page); if(ndx >= 0) { pagelist.remove(page); tablabels.unlink(ndx); // 2nd arg to false does not remove // child on notebook. // it will be removed by DelBox() nbook->RemovePage(ndx,false); // calling with sender NULL forces // to delete box embedded into a notebook page // (normally wouldn't be allowed) box->DelBox(NULL); delpage->Enabled = pagelist.size() > 1; } } return true; } //=========================================== /* */ CLASS::CLASS(char* name, VDKForm* owner): VDKBEventContainer(name,owner) { Counter++; VDKBObject::object = this; Init(); } /* */ CLASS::CLASS(char* name,VDKBEventContainer* outer): VDKBEventContainer(name,outer->Owner()) { VDKBObject::object = this; Counter++; outerbox = outer; Init(); } /* */ void CLASS::Init() { int t; AddBox(); // add to VDKBObject properties list for(t=0; vdknotebook_props[t]; t++) proplist.add(VDKBProperty(vdknotebook_props[t])); // add to VDKBObject signal list signals for(t=0; vdknotebook_signals[t]; t++) siglist.add(VDKBSignal(vdknotebook_signals[t], this, vdknotebook_nicknames[t])); // makes a pop menu popmenu = new VDKBContainerPopMenu(this); addwidget = new VDKMenuItem(popmenu,_("Add a new page")); delpage = new VDKMenuItem(popmenu,_("Remove current page")); popmenu->Separator(); delBox = new VDKMenuItem(popmenu,_("Remove notebook")); setsize = new VDKMenuItem(popmenu,_(wi_widget_prompts[19])); selectparent = new VDKMenuItem(popmenu,_(wi_widget_prompts[20])); SignalConnect(selectparent,"activate", &CLASS::SelectParentContainer); SignalConnect(delBox,"activate",&CLASS::DelBox); SignalConnect(setsize,"activate",&CLASS::SetBoxSize); SignalConnect(addwidget,"activate",&CLASS::AddNewPage); SignalConnect(delpage,"activate",&CLASS::RemovePage); // connect after so switch page signal can be handled. EventConnect("expose_event",&VDKBObject::BaseExposeEvent); // EventConnect("button_press_event",&CLASS::ButtonPressed,true); EventConnect("button_press_event",&VDKBObject::ButtonPressed); EventConnect("button_release_event",&VDKBObject::ButtonReleased); // EventConnect("button_release_event",&VDKBObject::ButtonReleased,true); // EventConnect("enter_notify_event",&VDKBObject::OnEnter); // EventConnect("leave_notify_event",&VDKBObject::OnLeave); // CONNECT_COMMON_EVENTS; /* assign this as parent so this can receive signals */ popmenu->Parent(this); popmenu->Setup(); /* better add it to owner, so will be surely destroyed even if never popped */ Owner()->AddItem(popmenu); tablabel = NULL; } /* */ void CLASS::AddBox() { nbook = new VDK_ANCESTOR(Owner()); widget = sigwid = container = nbook->Widget(); gtk_widget_show(container); Owner()->Objects().add(nbook); nbook->Parent(this); } /* only tab pages can be added to notebook */ void CLASS::AddWidget(VDKObject* obj, int justify, int expand, int fill , int padding, bool forceArgs) { VDKBObject* vdkbobj = dynamic_cast(obj); nbook->AddPage(obj,vdkbobj ? (char*) vdkbobj->Name() : (char*) "#none"); VDKBEventContainer::Add(obj,justify,expand,fill,padding); nbook->Visible = true; pagelist.add(vdkbobj); if(tablabels.size() >= pagelist.size()) { int ndx = pagelist.size()-1; nbook->Pages[ndx]->TabLabel->Caption = (char*) tablabels[ndx]; if(vdkbobj) vdkbobj->SetPropValue(LABEL,(char*) tablabels[ndx]); } else { tablabels.add(vdkbobj->Name()); if(vdkbobj) vdkbobj->SetPropValue(LABEL,(char*) vdkbobj->Name()); } delpage->Enabled = pagelist.size() > 1; // update widgets tree on object inspector VDKBGuiForm* ownerform = dynamic_cast(Owner()); VDKBProjectManager* prjman = ownerform ? dynamic_cast(ownerform->Owner()): NULL; if(prjman && prjman->objInspector) prjman->objInspector->LoadTree(ownerform); } /* extra args used */ void CLASS::Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { AddWidget(wid,justify, expand, fill , padding,forceArgs); } /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget 4 - unuseful call */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable frame counter // to ensure unicity int result = 0; VDKBEventBox *box1 = NULL; CLASS* notebook = NULL; if(owner->Active) { char local[64]; for(sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; CLASS::Counter++) sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); notebook = new CLASS(buff,owner); VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { if(ev && dynamic_cast(container)) { char local[16]; GdkEventButton* event = (GdkEventButton*) ev; sprintf(local,"%d",int(event->x)); notebook->SetPropValue(JUSTIFY_INTERNAL,local); sprintf(local,"%d",int(event->y)); notebook->SetPropValue(EXPAND_INTERNAL,local); // others than justify and flag unuseful container->AddWidget(notebook,int(event->x), int(event->y), true,true,true); } else container->AddWidget(notebook); notebook->outerbox = container; sprintf(local,"%s_page%d",buff,notebook->nbook->Pages.size()); box1 = new VDKBEventBox(local,notebook); notebook->AddWidget(box1); } else if( owner->Active->AddToParent(notebook,ev)) { sprintf(local,"%s_page%d",buff,notebook->nbook->Pages.size()); box1 = new VDKBEventBox(local,notebook); notebook->AddWidget(box1); } else // target isn't a container result = 2; } else // no active widget result = 3; // 0 on success if(result && notebook) notebook->Destroy(); return result; } //////////////////////////////////////////////////////////////////// /* */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { VDKBEventContainer::WriteOnFrm(fp,parentobj); // writes tab labels number fprintf(fp,"\n\tPages:%d;",pagelist.size()); // writes tab labels fprintf(fp,"\n\tLabels:\""); // int t,last = tablabels.size(); int t,last = pagelist.size(); for(t = 0; t < last-1 ; t++) fprintf(fp,"%s,", (char*) tablabels[t]); fprintf(fp,"%s\";", (char*) tablabels[last-1]); fprintf(fp,"\n\t%s%s;", PROP_SCROLLABLE,(char*) GetProp(SCROLLABLE)); fprintf(fp,"\n\t%s%s;", PROP_POPUP,(char*) GetProp(POPUP)); } char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char temp[256]; char bw[16]; char arg[16]; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return NULL; else source = new char[1024]; sprintf(temp,"\n%s = new %s(this);" ,obj_name,VDK_CLASS); strcpy(source,temp); // get size VDKPoint size = parser.Size(buffer); if(size.X() > 0 || size.Y() > 0) { sprintf(temp,"\n%s->SetSize(%d,%d);",obj_name,size.X(),size.Y()); strcat(source,temp); } if(strcmp(obj_parent,NIHIL_PROP)) sprintf(temp,"\n%s->Add(%s",obj_parent,obj_name); else sprintf(temp,"\nAdd(%s",obj_name); strcat(source,temp); // prepares arguments for add widget to container char justify[16],expand[16],fill[16],padding[16]; if(parser.GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && parser.GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && parser.GetParam(fill,buffer,PROP_FILL_INTERNAL) && parser.GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(temp,",%s,%s,%s,%s);", justify,expand,fill,padding); strcat(source,temp); } else { sprintf(temp,");"); strcat(source,temp); } if(parser.GetParam(bw,buffer,PROP_BORDERWIDTH) && strcmp(bw,NIHIL_PROP)) { sprintf(temp,"\n%s->BorderWidth(%s);",obj_name,bw); strcat(source,temp); } if(parser.GetParam(arg,buffer,PROP_SCROLLABLE) && strcmp(arg,NIHIL_PROP)) { sprintf(temp,"\n%s->Scrollable = %s;",obj_name,arg); strcat(source,temp); } if(parser.GetParam(arg,buffer,PROP_POPUP) && strcmp(arg,NIHIL_PROP)) { sprintf(temp,"\n%s->PopUp = %s;",obj_name,arg); strcat(source,temp); } return source; } /* */ bool CLASS::LoadTabLabels(char* buffer,VDKBParser& parser) { int n = 0 ; char arg[16],*local,*p; if(parser.GetParam(arg,buffer,"Pages:")) n = atoi(arg); else return false; local = new char[1024]; if(!parser.GetParam(local,buffer,"Labels:")) { delete[] local; return false; } // now in local there are a list of labels p = strtok(local,","); while(p) { tablabels.add(VDKString(p)); p = strtok(NULL,","); } delete[] local; return tablabels.size() == n; } /* */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[32]; CLASS* box; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return false; // get mode and size VDKPoint size = parser.Size(buffer); // get packing args int justification = l_justify; int expand = 0,fill = 0,padding = 0; int bw; // border width if(parser.GetParam(arg,buffer,PROP_JUSTIFY_INTERNAL)) justification = atoi(arg); if(parser.GetParam(arg,buffer,PROP_EXPAND_INTERNAL)) expand = atoi(arg); if(parser.GetParam(arg,buffer,PROP_FILL_INTERNAL)) fill = atoi(arg); if(parser.GetParam(arg,buffer,PROP_PADDING_INTERNAL)) padding = atoi(arg); if(parser.GetParam(arg,buffer,PROP_BORDERWIDTH) && strcmp(arg,NIHIL_PROP)) bw = atoi(arg); else bw = -1; // no parent, widget will be added to owner form innerbox if(!strcmp(obj_parent,NIHIL_PROP)) { box = new CLASS(obj_name,owner->InnerBox()); box->LoadTabLabels(buffer, parser); owner->AddWidget(box,justification,expand,fill,padding); } // get parent container address else { VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { box = new CLASS(obj_name,container); box->LoadTabLabels(buffer, parser); container->AddWidget(box,justification,expand,fill,padding,true); box->outerbox = container; } else // FIX ME: user warning return false; } // if(parser.GetParam(arg,buffer,PROP_SCROLLABLE) && strcmp(arg,NIHIL_PROP)) { box->SetPropValue(SCROLLABLE,arg); if(!strcmp(arg,CHECK_TRUE)) box->nbook->Scrollable = true; } if(parser.GetParam(arg,buffer,PROP_POPUP) && strcmp(arg,NIHIL_PROP)) box->SetPropValue(POPUP,arg); // call ancestor to set common properties VDKBObject::CreateWidget(box,buffer,parser); if(size.X() > 0 || size.Y() > 0) box->ObjectFromVDK()->SetSize(size.X(),size.Y()); if(bw >= 0) { box->BorderWidth(bw); box->SetPropValue(BORDERWIDTH,arg); } return true; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* This is called by object inspector when a widget is selected by user, thus to allow widget to set his own property controls. */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; inspector = isp; VDKBox* bframe = dynamic_cast(VDKBEventContainer::ExtraWidget(isp)); if(!bframe) return NULL; VDKTable *table = new VDKTable(inspector,2,2); table->SetSize(219,-1); table->AddToCell(new VDKLabel(inspector,_(wi_widget_prompts[42])),0,0); // gint pagenum = gtk_notebook_get_current_page (GTK_NOTEBOOK(WrappedWidget())); // printf("\nactive page:%d - nbook->ActivePage:%d",pagenum,(int) nbook->ActivePage); // fflush(stdout); tablabel = new VDKEntry(inspector,64, (char*) tablabels[nbook->ActivePage]); /**/ tablabel->SetSize(100,-1); table->AddToCell(tablabel,0,1); tablabel->Parent(this); scrollable = new VDKCheckButton(inspector,_(wi_widget_prompts[43])); table->AddToCell(scrollable,1,0); scrollable->Checked = GetProp(SCROLLABLE) == True; scrollable->Parent(this); popup = new VDKCheckButton(inspector,_(wi_widget_prompts[44])); table->AddToCell(popup,1,1); popup->Checked = GetProp(POPUP) == True; popup->Parent(this); SignalConnect(tablabel,"activate",&CLASS::OnSetTabLabel); SignalConnect(scrollable,"toggled",&CLASS::OnSetScrollable); SignalConnect(popup,"toggled",&CLASS::OnSetPopUp); bframe->Add(table,l_justify,false,false,false); return bframe; } /* */ bool CLASS::OnSetTabLabel(VDKObject*) { int activepage; activepage = nbook->ActivePage; if( (activepage >= 0) && (activepage < nbook->Pages.size() )) { if(strlen(tablabel->Text) <= 0) *buff = '\0'; else sprintf(buff,"%s",(char*) tablabel->Text); nbook->Pages[nbook->ActivePage]->TabLabel->Caption = buff; tablabels[nbook->ActivePage] = buff; pagelist[activepage]->SetPropValue(LABEL,buff); inspector->FormNeedToBeChanged(); } return true; } /* */ bool CLASS::OnSetScrollable(VDKObject*) { SetPropValue(SCROLLABLE, scrollable->Checked ? CHECK_TRUE : "nihil"); nbook->Scrollable = scrollable->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetPopUp(VDKObject*) { SetPropValue(POPUP, popup->Checked ? CHECK_TRUE : CHECK_FALSE); inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_object.cc0000644000000000000000000007631410031622605014305 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static char buff[256]; #define VERBOSE 0 // plm 07/09/2000 VDKPoint drag_offset; VDKPoint SelectedWidgetOrig; VDKPoint WindowOrig; VDKBEventContainer* container = NULL; VDKBFixed* fixed_wid = NULL; VDKBObject* SelectedWidget = NULL; /* The cursors used when selecting/adding/moving/resizing widgets */ /* static GdkCursor *cursor_selector = gdk_cursor_new (GDK_TOP_LEFT_ARROW); static GdkCursor *cursor_add_widget = gdk_cursor_new (GDK_PLUS); static GdkCursor *cursor_add_to_fixed = gdk_cursor_new (GDK_TCROSS); static GdkCursor *cursor_move = gdk_cursor_new (GDK_FLEUR); static GdkCursor *cursor_top_left = gdk_cursor_new (GDK_TOP_LEFT_CORNER); static GdkCursor *cursor_top_right = gdk_cursor_new (GDK_TOP_RIGHT_CORNER); static GdkCursor *cursor_bottom_left = gdk_cursor_new (GDK_BOTTOM_LEFT_CORNER); static GdkCursor *cursor_bottom_right = gdk_cursor_new (GDK_BOTTOM_RIGHT_CORNER); */ /* */ char* vdkbclass_names[] = { "form", "gnomeform", 0 }; /* */ // VDKBCLASSES_OFFSET is 1024 int ClassTypeLookup(char* word) { int t=0; for(;vdkbclass_names[t];t++) if(!strcmp(word,vdkbclass_names[t])) return VDKB_GUI_CLASSES_OFFSET+t; return -1; } /* */ char* vdkobj_props[] = { NORMALBACKGROUND,PRELIGHTBACKGROUND, INSENSITIVEBACKGROUND,ACTIVEBACKGROUND, SELECTEDBACKGROUND,FOREGROUND, FONT,ENABLED, CURSOR,USIZE,VISIBLE, JUSTIFY_INTERNAL, EXPAND_INTERNAL, FILL_INTERNAL,PADDING_INTERNAL, TIP,TAG,LABEL,TABLEROW,TABLECOL, DECLARE_PUBLIC, 0 }; char* vdkobj_signals[] = { SIGNAL_REALIZE,0 }; char* vdkobj_nicknames[] = { NICK_REALIZE,0 }; ////////////////////////////////////////////// VDKBObject::VDKBObject(char* name):name(name) { int t; for(t=0;vdkobj_props[t];t++) proplist.add(VDKBProperty(vdkobj_props[t])); for(t=0; vdkobj_signals[t]; t++) siglist.add(VDKBSignal(vdkobj_signals[t], this, vdkobj_nicknames[t])); // set adding props to default value SetPropValue(VISIBLE,CHECK_TRUE); SetPropValue(ENABLED,CHECK_TRUE); SetPropValue(JUSTIFY_INTERNAL,"0"); // l_justify or side in packer or x in fixed SetPropValue(EXPAND_INTERNAL,"1"); // or anchor in packer or y in fixed SetPropValue(FILL_INTERNAL,"1"); // or options in packer SetPropValue(PADDING_INTERNAL,"0"); // or border width in packer object = NULL; // plm Marked = false; } /* */ VDKBObject::~VDKBObject() { } /* */ VDKString VDKBObject::nihil_property = NIHIL_PROP; void VDKBObject::SetPropValue(const char* prop, const char* value) { VDKBProperty p(prop); VDKBProperty* pp; if( (pp = proplist.find(p))) pp->Value(value); } /* */ VDKString& VDKBObject::GetProp(char* prop) { VDKBProperty p(prop); VDKBProperty* pp; //VDKString value = NIHIL_PROP; if( (pp = proplist.find(p))) //value = pp->Value(); //return value; return pp->Property(); else return VDKBObject::nihil_property; } /* widget selection stuff, shameless stolen to Damon Chaplin, glade author */ // into vdkb_widsel.c extern "C" { extern void paint_selection (GdkWindow * window, GdkGC * gc, gint x, gint y, gint width, gint height); extern void clear_widget_selection (GtkWidget * widget); extern GdkWindow* get_widget_window (GtkWidget *parent, GtkWidget *widget); } /* */ void VDKBObject::ClearMark() { #if VERBOSE printf("\nVDKBObject::ClearMark()"); fflush(stdout); #endif clear_widget_selection (object->Widget()); // plm Marked = false; } /* */ void VDKBObject::Mark() { if(object && GTK_WIDGET_DRAWABLE(object->Widget())) { GdkWindow *window; GdkGC *gc; gint x, y, w, h; GtkWidget* widget, *ancestor; widget = ancestor = object->Widget(); gc = widget->style->black_gc; gdk_gc_set_subwindow (gc, GDK_INCLUDE_INFERIORS); window = get_widget_window (ancestor->parent, ancestor); if (window && ancestor->parent) { x = ancestor->allocation.x; y = ancestor->allocation.y; w = ancestor->allocation.width; h = ancestor->allocation.height; } else { x = 0; y = 0; gdk_window_get_size (window, &w, &h); } paint_selection (window, gc, x, y, w, h); /* Reset gc - maybe we should remember the current setting */ gdk_gc_set_subwindow (gc, GDK_CLIP_BY_CHILDREN); // plm Marked = true; } } /* =========================================================== */ /* */ void VDKBObject::WriteBgProp(char* propname, GtkStateType state, FILE* fp) { VDKString nihilProp = NIHIL_PROP; VDKString prop = GetProp(propname); /* char color[32]; if( prop == nihilProp) { VDKRgb rgb = object->GetBackground(state); if(rgb.red > 0) { sprintf(color,"%d,%d,%d",rgb.red,rgb.green,rgb.blue); fprintf(fp,"\n\t%s:%s;",propname,color); } else fprintf(fp,"\n\t%s:%s;",propname,(char*) nihilProp); } else */ fprintf(fp,"\n\t%s:%s;",propname,(char*) prop); } /* */ void VDKBObject::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { char* oname = (char*) Name(); fprintf(fp,"\n[object]\n{\n\tthis:%s;\n\tclass:%s;", oname,(char*) VDKName()); fprintf(fp,"\n\tparent:%s;", parentobj ? (char*) parentobj->Name(): NIHIL_PROP); if(!object) return; // jump these props for containers else if(!dynamic_cast(this)) { VDKString prop; VDKString nihilProp = NIHIL_PROP; VDKRgb rgb; WriteBgProp(NORMALBACKGROUND,GTK_STATE_NORMAL,fp); WriteBgProp(PRELIGHTBACKGROUND,GTK_STATE_PRELIGHT,fp); WriteBgProp(INSENSITIVEBACKGROUND,GTK_STATE_INSENSITIVE,fp); WriteBgProp(ACTIVEBACKGROUND,GTK_STATE_ACTIVE,fp); WriteBgProp(SELECTEDBACKGROUND,GTK_STATE_ACTIVE,fp); fprintf(fp,"\n\t%s%s;", PROP_FOREGROUND, (char*) GetProp(FOREGROUND)); fprintf(fp,"\n\t%s\"%s\";", PROP_FONT, (char*) GetProp( FONT)); fprintf(fp,"\n\t%s%s;", PROP_ENABLED, (char*) GetProp(ENABLED)); fprintf(fp,"\n\t%s%s;", PROP_CURSOR, (char*) GetProp(CURSOR)); fprintf(fp,"\n\tTip:\"%s\";", (char*) GetProp("Tip")); } fprintf(fp,"\n\t%s%s;", PROP_VISIBLE, (char*) GetProp(VISIBLE)); WriteCommonOnFrm(fp, parentobj); } /* */ void VDKBObject::WriteCommonOnFrm(FILE* fp, VDKBObject* parentobj) { VDKString Nihil = NIHIL_PROP; // these are common to all widgets fprintf(fp,"\n\t%s%s;", PROP_JUSTIFY_INTERNAL, (char*) GetProp(JUSTIFY_INTERNAL)); fprintf(fp,"\n\t%s%s;", PROP_EXPAND_INTERNAL, (char*) GetProp( EXPAND_INTERNAL)); fprintf(fp,"\n\t%s%s;", PROP_FILL_INTERNAL, (char*) GetProp(FILL_INTERNAL)); fprintf(fp,"\n\t%s%s;", PROP_PADDING_INTERNAL, (char*) GetProp(PADDING_INTERNAL)); fprintf(fp,"\n\t%s%s;", PROP_TAG, (char*) GetProp(TAG)); fprintf(fp,"\n\t%s%s;", PROP_DECLARE_PUBLIC, (char*) GetProp(DECLARE_PUBLIC)); // #if VERBOSE printf("\nwriting common properties of:%s", (char*) Name()); fflush(stdout); #endif if(GetProp(TABLEROW) != Nihil) fprintf(fp,"\n\t%s%s;",PROP_TABLEROW, (char*) GetProp(TABLEROW)); if(GetProp(TABLECOL) != Nihil) fprintf(fp,"\n\t%s%s;",PROP_TABLECOL, (char*) GetProp(TABLECOL)); // does not write size for scrolled window // and scrolled window childs. // with fixed exception bool isScrolled = dynamic_cast(this); bool isParentFixed = parentobj && dynamic_cast(parentobj); if( isScrolled && !isParentFixed) { #if VERBOSE printf("\n%s: - size not stored", (char*) Name()); fflush(stdout); #endif fprintf(fp,"\n\t%s%s;", PROP_USIZE,NIHIL_PROP); return; } // see note below if(parentobj) { VDKObject* p = parentobj->ObjectFromVDK(); if(p && dynamic_cast(p)) { #if VERBOSE printf("\nparent of:%s is a scrolled - size not stored", (char*) Name()); fflush(stdout); #endif fprintf(fp,"\n\t%s%s;", PROP_USIZE,NIHIL_PROP); return; } } fprintf(fp,"\n\t%s%s;", PROP_USIZE, (char*) GetProp( USIZE)); #if VERBOSE printf("\n%s:size stored - %s", (char*) Name(), (char*) GetProp( USIZE)); fflush(stdout); #endif /* // changed: mm version in 1.2.1 // Search for a parent scrolled at all upper levels // substituted with nearest level only if(parentobj) { VDKObject* p; for (p = parentobj->ObjectFromVDK(); p ; p = p->Parent()) { bool isFixed = dynamic_cast(p); if(isFixed) break; else if(dynamic_cast(p)) { #if VERBOSE printf("\nparent of:%s is a scrolled - size not stored", (char*) Name()); fflush(stdout); #endif fprintf(fp,"\n\t%s%s;", PROP_USIZE,NIHIL_PROP); return; } } } */ } /* */ void VDKBObject::CreateWidget(VDKBObject* gui_object, char* buffer,VDKBParser& parser) { char arg[128]; VDKRgb color; if(! gui_object->ObjectFromVDK()) return; color = parser.Color(buffer,PROP_NORMALBACKGROUND); if(color.red >= 0) { if( parser.GetParam(arg,buffer,PROP_NORMALBACKGROUND)) gui_object->SetPropValue(NORMALBACKGROUND,arg); gui_object->ObjectFromVDK()->NormalBackground = color; } color = parser.Color(buffer,PROP_PRELIGHTBACKGROUND); if(color.red >= 0) { if( parser.GetParam(arg,buffer,PROP_PRELIGHTBACKGROUND)) gui_object->SetPropValue(PRELIGHTBACKGROUND,arg); gui_object->ObjectFromVDK()->PrelightBackground = color; } color = parser.Color(buffer,PROP_INSENSITIVEBACKGROUND); if(color.red >= 0) { if( parser.GetParam(arg,buffer,PROP_INSENSITIVEBACKGROUND)) gui_object->SetPropValue(INSENSITIVEBACKGROUND,arg); gui_object->ObjectFromVDK()->InsensitiveBackground = color; } color = parser.Color(buffer,PROP_ACTIVEBACKGROUND); if(color.red >= 0) { if( parser.GetParam(arg,buffer,PROP_ACTIVEBACKGROUND)) gui_object->SetPropValue(ACTIVEBACKGROUND,arg); gui_object->ObjectFromVDK()->ActiveBackground = color; } color = parser.Color(buffer,PROP_SELECTEDBACKGROUND); if(color.red >= 0) { if( parser.GetParam(arg,buffer,PROP_SELECTEDBACKGROUND)) gui_object->SetPropValue(SELECTEDBACKGROUND,arg); gui_object->ObjectFromVDK()->SelectedBackground = color; } color = parser.Color(buffer,PROP_FOREGROUND); if(color.red >= 0) { if( parser.GetParam(arg,buffer,PROP_FOREGROUND)) gui_object->SetPropValue(FOREGROUND,arg); gui_object->ObjectFromVDK()->Foreground = color; } // other props here if(parser.GetParam(arg,buffer,PROP_ENABLED) && strcmp(arg,NIHIL_PROP)) gui_object->SetPropValue(ENABLED,arg); if(parser.GetParam(arg,buffer,PROP_VISIBLE) && strcmp(arg,NIHIL_PROP)) gui_object->SetPropValue(VISIBLE,arg); if(parser.GetParam(arg,buffer,PROP_TAG) && strcmp(arg,NIHIL_PROP)) gui_object->SetPropValue("Tag",arg); // avoid in case of form if( dynamic_cast(gui_object) == NULL) { if( parser.GetParam(arg,buffer,PROP_JUSTIFY_INTERNAL) && strcmp(arg,NIHIL_PROP) ) gui_object->SetPropValue(JUSTIFY_INTERNAL,arg); if(parser.GetParam(arg,buffer,PROP_EXPAND_INTERNAL) && strcmp(arg,NIHIL_PROP)) gui_object->SetPropValue( EXPAND_INTERNAL,arg); if(parser.GetParam(arg,buffer,PROP_FILL_INTERNAL) && strcmp(arg,NIHIL_PROP)) gui_object->SetPropValue("_Fill",arg); if(parser.GetParam(arg,buffer,PROP_PADDING_INTERNAL) && strcmp(arg,NIHIL_PROP)) gui_object->SetPropValue("_Padding",arg); if(parser.GetParam(arg,buffer,PROP_TIP) && strcmp(arg,NIHIL_PROP)) gui_object->SetPropValue("Tip",arg); if(parser.GetParam(arg,buffer,PROP_DECLARE_PUBLIC) && strcmp(arg,NIHIL_PROP)) gui_object->SetPropValue(DECLARE_PUBLIC,arg); } // if(parser.GetParam(arg,buffer,PROP_FONT) && strcmp(arg,NIHIL_PROP)) { VDKFont* font = new VDKFont(gui_object->ObjectFromVDK()->Owner(),arg); if((char*) font) { gui_object->SetPropValue( FONT,arg); gui_object->ObjectFromVDK()->Font = font; } else font->Destroy(); } // // get size // avoid in case of form if( dynamic_cast(gui_object) == NULL) { VDKPoint size = parser.Size(buffer); if(size.X() > 0 || size.Y() > 0) { if(parser.GetParam(arg,buffer,PROP_USIZE)) gui_object->SetPropValue(USIZE,arg); gui_object->ObjectFromVDK()->SetSize(size.X(),size.Y()); } } } /* */ char* VDKBObject::CreateSource(char* buffer,VDKBParser& parser,char* obj_name) { char* source = new char [4096]; char tmp[256]; char arg[128]; VDKRgb color; *source = '\0'; // set widget name to be used by rc if any sprintf(tmp,"\ngtk_widget_set_name (GTK_WIDGET(%s->WrappedWidget()), \"%s\");", obj_name,obj_name); strcpy(source,tmp); // color = parser.Color(buffer,PROP_NORMALBACKGROUND); if(color.red >= 0) { sprintf(tmp,"\n%s->NormalBackground = VDKRgb(%d,%d,%d);", obj_name, color.red,color.green,color.blue); strcat(source,tmp); } color = parser.Color(buffer,PROP_PRELIGHTBACKGROUND); if(color.red >= 0) { sprintf(tmp,"\n%s->PrelightBackground = VDKRgb(%d,%d,%d);", obj_name, color.red,color.green,color.blue); strcat(source,tmp); } color = parser.Color(buffer,PROP_INSENSITIVEBACKGROUND); if(color.red >= 0) { sprintf(tmp,"\n%s->InsensitiveBackground = VDKRgb(%d,%d,%d);", obj_name, color.red,color.green,color.blue); strcat(source,tmp); } color = parser.Color(buffer,PROP_INSENSITIVEBACKGROUND); if(color.red >= 0) { sprintf(tmp,"\n%s->ActiveBackground = VDKRgb(%d,%d,%d);", obj_name, color.red,color.green,color.blue); strcat(source,tmp); } color = parser.Color(buffer,PROP_SELECTEDBACKGROUND); if(color.red >= 0) { sprintf(tmp,"\n%s->SelectedBackground = VDKRgb(%d,%d,%d);", obj_name, color.red,color.green,color.blue); strcat(source,tmp); } color = parser.Color(buffer,"Foreground:"); if(color.red >= 0) { sprintf(tmp,"\n%s->Foreground = VDKRgb(%d,%d,%d);", obj_name, color.red,color.green,color.blue); strcat(source,tmp); } // other props here // set enabled only if == false if(parser.GetParam(arg,buffer,PROP_ENABLED) && !strcmp(arg,CHECK_FALSE) ) { sprintf(tmp,"\n%s->Enabled = %s;", obj_name,arg); strcat(source,tmp); } if(parser.GetParam(arg,buffer,PROP_CURSOR) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->Cursor = %s;", obj_name,arg); strcat(source,tmp); } if(parser.GetParam(arg,buffer,PROP_TIP) && strcmp(arg,NIHIL_PROP)) { bool nls_support = parser.CheckNLSSupport(); if(nls_support) sprintf(tmp, "\n%s->SetTip(_(\"%s\"));", obj_name,arg); else sprintf(tmp, "\n%s->SetTip(\"%s\");", obj_name,arg); strcat(source,tmp); } if(parser.GetParam(arg,buffer,PROP_TAG) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp, "\n%s->Tag = %s;", obj_name,arg); strcat(source,tmp); } // font if(parser.GetParam(arg,buffer,"Font:") && strcmp(arg,NIHIL_PROP)) { sprintf(tmp, "\nVDKFont* %s_font = new VDKFont(this,\"%s\");", obj_name,arg); strcat(source,tmp); sprintf(tmp, "\n%s->Font = %s_font;", obj_name,obj_name); strcat(source,tmp); } VDKPoint size = parser.Size(buffer); if(size.X() > 0 || size.Y() > 0) { sprintf(tmp,"\n%s->SetSize(%d,%d);",obj_name,size.X(),size.Y()); strcat(source,tmp); } return source; } /* */ void VDKBObject::WriteOnFrmEnd(FILE* fp) { fprintf(fp,"\n}"); } /* */ void VDKBObject::PopObjectBrowser() { if(object) object->Owner()->Application()->VDKMessageBox(APPNAME, _("Sorry, not yet implemented"), VDK_OK| VDK_ICONINFORMATION); } /* This should be override by subclasses in order to add their own controls to inspector. At this level results in a unuseful call */ VDKObjectContainer* VDKBObject::ExtraWidget(VDKBObjectInspector* isp) { #ifdef VDKBDEBUG printf("\n** WARNING **\nUnuseful call VDKBObject::ExtraWidget(%p)", isp); fflush(stdout); #endif return (VDKObjectContainer*) NULL; } /* */ bool VDKBObject::AddToParent(VDKObject* obj, GdkEvent* ev) { VDKBObject* vdkbobj = dynamic_cast (ObjectFromVDK()->Parent()); char* p = (char*) vdkbobj->GetProp(VISIBLE); bool hidden = (p && !strcmp(p,CHECK_FALSE)); if(vdkbobj) { VDKBEventContainer* container = dynamic_cast(vdkbobj); if(container) { // flag true will force args to AddWidget bool flag = false; VDKBProjectManager* prjman = NULL; VDKBGuiForm* ownerform = dynamic_cast(ObjectFromVDK()->Owner()); if(ownerform) prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) flag = prjman->objInspector->preview->Checked; if(ev && dynamic_cast(container)) { VDKBObject* self = dynamic_cast(obj); GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); if(self) self->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); if(self) self->SetPropValue( EXPAND_INTERNAL,buff); // others than justify and flag unuseful container->AddWidget(obj,int(event->x), int(event->y), flag,true,true); if(hidden) obj->Visible = false; } else { container->AddWidget(obj, l_justify, flag,flag,true,flag); if(hidden) obj->Visible = false; } VDKBObject* self = dynamic_cast(obj); if(self) { VDKBEventContainer* self_container = dynamic_cast(self); if(self_container) self_container->Outerbox(container); } return true; } else return false; } else return false; } /* ======================================= COMMON RESPONSE METHODS FOR ALL OBJECTS ======================================= */ void VDKBObject::SetupSignals(VDKObject* obj) { // obsolete } bool VDKBObject::BaseExposeEvent(VDKObject* sender, GdkEvent* ev) { VDKBGuiForm* ownerform = dynamic_cast(sender->Owner()); VDKBObject* self = dynamic_cast(sender); GdkEventExpose* event = (GdkEventExpose*) ev; if(ownerform && ownerform->Active == self && event->count == 0) self->Mark(); return true; } /* FIXED MOVING STUFF */ // Constants for drag actions #define DRAG_ACTION_NONE 0 #define DRAG_ACTION_MOVE 1 #define DRAG_ACTION_RESIZE 2 #define DRAG_ACTION_RESIZE_H 3 #define DRAG_ACTION_RESIZE_V 4 int dragAction = 0; bool onDraggingAnObjectIntoAFixed = false; static VDKPoint last_position; static VDKPoint old_size; extern "C" { GtkWidget* get_event_widget (GtkWidget *widget, GdkWindow *window, gint x, gint y, gint * x_return, gint * y_return); void fixed_draw_grid (GtkWidget * widget, int grid_horz_spacing, int grid_vert_spacing, int grid_style); } /* - handle mouse button click */ bool VDKBObject::ButtonPressed(VDKObject* sender, GdkEvent* ev) { GdkEventButton* event = (GdkEventButton*) ev; bool stop = true; #if HAVE_GNOME stop = ! dynamic_cast(sender); #endif VDKBGuiNotebook* nbook = dynamic_cast(sender); if(nbook) stop = false; // if(stop) // gtk_signal_emit_stop_by_name(GTK_OBJECT(sender->WrappedWidget()),"button_press_event"); /* checks widget parent container to wich propagate message. */ if(sender) container = dynamic_cast(sender->Parent()); /* if check is done successfully, calls VDKBEventContainer::OnButtonPress() that: - Mark() widget - set this as owner form active widget - if button pressed is 1 (left) propagates message to owner form if operational state shows that we are waiting for dropping a widget to gui. - else if button pressed is 3 (right) invokes virtual function Popmenu() that raises a popmenu. */ if(container) { container->OnButtonPressed(sender,ev); HandleFixed(sender,event); } return stop; //true; } /* - handle mouse button click release */ // into vdkb_form.cc extern SizeTipWin* sizetipwin; bool VDKBObject::ButtonReleased(VDKObject* sender, GdkEvent* ev) { if(sizetipwin) { sizetipwin->Close(); sizetipwin->Destroy(); sizetipwin = NULL; } // Fixing an obscure bug here, stopping signal // on a scrollable notebook will hang // agreed isn't an elegant way to fix bugs // but i can't do better for now :-( bool stop = true; VDKBGuiNotebook* nbook = dynamic_cast(sender); stop = nbook == NULL; /* if(nbook) { GtkNotebook* gtknotebook = GTK_NOTEBOOK(sender->Widget()); stop = !(gtknotebook->scrollable); } */ #if HAVE_GNOME stop = stop ? !dynamic_cast(sender): stop; #endif // if(stop) // gtk_signal_emit_stop_by_name(GTK_OBJECT(sender->WrappedWidget()),"button_release_event"); // plm if (Marked) Mark(); // fixed widget stuff: // ungrab the mouse if were grabbed // during ButtonPressed GtkWidget* grabbed = gtk_grab_get_current(); if(grabbed) gtk_grab_remove(grabbed/*object->Widget()*/); // resets default cursor and global flags ObjectFromVDK()->SetCursor(curDefault); onDraggingAnObjectIntoAFixed = false; dragAction = DRAG_ACTION_NONE; SelectedWidget = NULL; // mark object and draw grid on fixed if( container && fixed_wid) { bool have_grid = false; int horz_spacing = 1,vert_spacing = 1; VDKString isTrue = CHECK_TRUE; if(fixed_wid && fixed_wid->GetProp("have_grid") == isTrue) { have_grid = true; horz_spacing = atoi((char*) fixed_wid->GetProp("h_grid_spacing")); vert_spacing = atoi((char*) fixed_wid->GetProp("v_grid_spacing")); } if(have_grid) fixed_draw_grid (fixed_wid->Container(), horz_spacing, vert_spacing, 1); // dots } container = NULL; fixed_wid = NULL; return stop;// true; } /* - handle enter event */ bool VDKBObject::OnEnter(VDKObject* sender, GdkEvent* ev) { /* since gtk widgets shouldn't react to events, signal is stopped here. */ #if VERBOSE printf("\nVDKBObject::OnEnter"); fflush(stdout); #endif gtk_signal_emit_stop_by_name(GTK_OBJECT(sender->WrappedWidget()), "enter_notify_event"); return true; } /* - handle leave event */ bool VDKBObject::OnLeave(VDKObject* sender, GdkEvent* ev) { /* since gtk widgets shouldn't react to events, signal is stopped here. */ #if VERBOSE printf("\nVDKBObject::OnLeave"); fflush(stdout); #endif gtk_signal_emit_stop_by_name(GTK_OBJECT(sender->WrappedWidget()), "leave_notify_event"); return true; } /* ================================================ ================================================ */ /* valid only for fixed containers */ bool VDKBObject::HandleFixed(VDKObject* sender, GdkEventButton *event) { fixed_wid = dynamic_cast(container); if( container && (event->button == 1) && fixed_wid) { int x = -1,y = -1; // Grab the concerned widget gtk_grab_add(object->Widget()); // Get offset coordinates GtkWidget* Widget = get_event_widget (sender->Widget(), event->window, int(event->x), int(event->y), &x, &y); if(Widget) { // Save offset coordinates drag_offset = VDKPoint(x,y); GtkWidget* widget = object->Widget(); // Save selected widget relative coordinates SelectedWidgetOrig = VDKPoint(widget->allocation.x, widget->allocation.y); // Save selected widget pointer SelectedWidget = (VDKBObject*)this; // Save the window origin absolute position WindowOrig = VDKPoint(int(event->x_root) - SelectedWidgetOrig.x - drag_offset.x, int(event->y_root) - SelectedWidgetOrig.y - drag_offset.y); #if VERBOSE printf("\nVDKBObject::HandleFixed - %s - widget orig(%d,%d) - window orig(%d,%d)", gtk_widget_get_name (widget), widget->allocation.x,widget->allocation.y, WindowOrig.x, WindowOrig.y); fflush(stdout); #endif const int width = widget->allocation.width-8; const int height = widget->allocation.height-8; // Calculate handles rectangles positions VDKRect rs_corner(width,height,8,8); VDKRect ls_corner(0, height, 8, 8); VDKRect rn_corner(width, 0, 8, 8); VDKPoint mouse(x,y); if(rs_corner.Contains(mouse)) { dragAction = DRAG_ACTION_RESIZE; // resize object->SetCursor((VDKCursorType) GDK_BOTTOM_RIGHT_CORNER); } else if (ls_corner.Contains(mouse)) { dragAction = DRAG_ACTION_RESIZE_V; // resize_vert object->SetCursor((VDKCursorType) GDK_SB_V_DOUBLE_ARROW); } else if (rn_corner.Contains(mouse)) { dragAction = DRAG_ACTION_RESIZE_H; // resize_horiz object->SetCursor((VDKCursorType) GDK_SB_H_DOUBLE_ARROW); } else { dragAction = DRAG_ACTION_MOVE; // move object->SetCursor((VDKCursorType) GDK_FLEUR); } // We are dragging into a fixed onDraggingAnObjectIntoAFixed = true; } else { drag_offset = VDKPoint(0,0); onDraggingAnObjectIntoAFixed = false; } return onDraggingAnObjectIntoAFixed; } return false; } /* here we use native mouse routines for moving and resizing drawbacks: */ bool VDKBObject::OnMouseMove(VDKObject* sender, GdkEvent* ev) { int event_x = 0, event_y = 0; GdkEventMotion *event = (GdkEventMotion*) ev; #if VERBOSE printf("\n(0) VDKBObject::OnMouseMove - Received..."); fflush(stdout); #endif // Redirect event to selected widget if it exists // if the event is happening in a non grabbed widget // STUB if (SelectedWidget && (gtk_grab_get_current() != sender->Widget())) { #if VERBOSE printf("\n(0) VDKBObject::OnMouseMove - Mouse move event redirection..."); fflush(stdout); #endif SelectedWidget->OnMouseMove(SelectedWidget->ObjectFromVDK(), ev); return false; } #if VERBOSE printf("\n(1) VDKBObject::OnMouseMove - %s - pos(%d,%d) - root(%d,%d) - win_orig(%d,%d) - wid_orig(%d,%d)", gtk_widget_get_name (object->Widget()), int(event->x), int(event->y), int(event->x_root), int(event->y_root), WindowOrig.x, WindowOrig.y, SelectedWidgetOrig.x, SelectedWidgetOrig.y); fflush(stdout); #endif // this code interest only those widgets contained into a fixed. // extern flag is set to true by // VDKOBject::ButtonPressed handler or should be set by // an overridden one in subclasses if (onDraggingAnObjectIntoAFixed) { // Compute new position switch(dragAction) { case DRAG_ACTION_MOVE: // move // Calculation based on screen coordinates (absolute) // This way is used instead of relative coordinates because // some widgets are composed of few windows. So when the mouse // is near the frontier between two windows, event x or y change // of coordinate system, so the moving widget is jumping everywhere // in function of the coordinate system used. // event_x = int(event->x_root) - WindowOrig.x - drag_offset.x; event_y = int(event->y_root) - WindowOrig.y - drag_offset.y; break; case DRAG_ACTION_RESIZE: // resize event_x = int(event->x_root) - WindowOrig.x - SelectedWidgetOrig.x; event_y = int(event->y_root) - WindowOrig.y - SelectedWidgetOrig.y; break; case DRAG_ACTION_RESIZE_H: // resize_horiz event_x = int(event->x_root) - WindowOrig.x - SelectedWidgetOrig.x; event_y = object->Widget()->allocation.height; break; case DRAG_ACTION_RESIZE_V: // resize_vert event_x = object->Widget()->allocation.width; event_y = int(event->y_root) - WindowOrig.y - SelectedWidgetOrig.y; break; } // Ensure values won't be negatives if (event_x < 0) event_x = 0; if (event_y < 0) event_y = 0; // grid work int horz_spacing = 0,vert_spacing = 0; bool isShift = event->state & GDK_SHIFT_MASK; VDKString isTrue = CHECK_TRUE; bool have_grid = fixed_wid->GetProp("have_grid") == isTrue; if(have_grid && isShift) { horz_spacing = atoi((char*) fixed_wid->GetProp("h_grid_spacing")); vert_spacing = atoi((char*) fixed_wid->GetProp("v_grid_spacing")); // snaps to grid event_x += horz_spacing / 2; event_x -= event_x % horz_spacing; event_y += vert_spacing / 2; event_y -= event_y % vert_spacing; } VDKPoint new_position(event_x,event_y); #if VERBOSE printf("\n(2) VDKBObject::OnMouseMove - %s - x:%d,y:%d", gtk_widget_get_name (object->Widget()), event_x, event_y); fflush(stdout); #endif // here we move or resize switch(dragAction) { case DRAG_ACTION_MOVE: // move gtk_fixed_move(GTK_FIXED(fixed_wid->Container()), object->Widget(), new_position.x, new_position.y); // corrects GTK+ bug. Some widgets do not move unless // you call gtk_widget_set_uposition() gtk_widget_set_uposition (object->Widget(), new_position.x, new_position.y); // update widget properties sprintf(buff,"%d",new_position.x); SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",new_position.y); SetPropValue( EXPAND_INTERNAL,buff); break; case DRAG_ACTION_RESIZE: // resize case DRAG_ACTION_RESIZE_H: // resize_horiz case DRAG_ACTION_RESIZE_V: // resize_vert // Set new widget size object->Usize = new_position; // Set property value sprintf(buff,"%d,%d",new_position.x,new_position.y); SetPropValue(USIZE,buff); // show size tip win if(!sizetipwin) { sprintf(buff,_("Min.size:%d,%d"),new_position.x,new_position.y); int x, y; GtkWidget* wid = GTK_WIDGET(object->Widget()); gdk_window_get_deskrelative_origin(wid->window, &x,&y); sizetipwin = new SizeTipWin(object->Owner(),buff); sizetipwin->Setup(); sizetipwin->Position = VDKPoint(x,y); sizetipwin->Show(); } else sizetipwin->Update(new_position); break; } } return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_objinspect.cc0000644000000000000000000016516410022113244015173 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #ifdef HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // #include #include #include #include #include // #include "./pixmaps/font16.xpm" #include "./pixmaps/setcolor16.xpm" #include "./pixmaps/widname.xpm" #include "./pixmaps/undo.xpm" #include "./pixmaps/repack.xpm" #include "./pixmaps/calltip.xpm" #include "./pixmaps/tag.xpm" #include "./pixmaps/dock.xpm" #define VERBOSE 1 void create_font_selection (void); void font_selection_ok (GtkWidget *w, GtkFontSelectionDialog *fs); void font_selection_cancel (GtkWidget *w, GtkFontSelectionDialog *fs); char* selected_font = NULL; extern VDKBWidgetClipboard* WidgetClipboard; extern char* wi_prompts[]; extern char* popmenu_prompts[]; static char buff[256]; static VDKBGuiForm* activeOwner = NULL; static char *color_states[] = { "normal","prelight","insensitive","active","selected","foreground",0 }; /* NORMALBACKGROUND,PRELIGHTBACKGROUND, INSENSITIVEBACKGROUND,ACTIVEBACKGROUND, SELECTEDBACKGROUND,FOREGROUND,0 }; */ char *justifications[] = { "l_justify", "c_justify", "r_justify", 0 }; /* static char* sides[] = { "top","bottom","left","right",0 }; static char*anchors[] = { "center","north","nort-west","north-east", "south","south-west","south-east", "west","east",0 }; */ /* */ // in vdkb_design.cc extern FormEventHandlers evTableItems []; ////////////////////////////////////////////// DEFINE_SIGNAL_LIST(VDKBObjectInspector,VDKForm); DEFINE_EVENT_LIST(VDKBObjectInspector,VDKForm); DEFINE_SIGNAL_MAP(VDKBObjectInspector,VDKForm) ON_SIGNAL(nameButton,clicked_signal,SetWidgetName), ON_SIGNAL(name,activate_signal,SetWidgetName), ON_SIGNAL(nbook,switch_page_signal,OnPageSwitch), ON_SIGNAL(sigtable,select_row_signal,OnSelectTable), ON_SIGNAL(evtable,select_row_signal,OnSelectEventTable), ON_SIGNAL(evtable,click_column_signal,OnJumpToFormEventHandler), ON_SIGNAL(sigtable,click_column_signal,OnSelectTable), ON_SIGNAL(fontButton,clicked_signal,OnSelectFont), ON_SIGNAL(enabled,toggled_signal,OnSelectEnabled), ON_SIGNAL(visible,toggled_signal,OnSelectVisible), ON_SIGNAL(preview,toggled_signal,OnSelectPreview), ON_SIGNAL(repackButton,clicked_signal,RepackWidget), ON_SIGNAL(tipButton,clicked_signal,SetWidgetTip), ON_SIGNAL(tip,activate_signal,SetWidgetTip), ON_SIGNAL(colorButton,clicked_signal,OnChangeColor), ON_SIGNAL(restoreDefaultButton,clicked_signal,OnRestoreDefaultStyle), ON_SIGNAL(mul_connect,clicked_signal,OnMultipleConnect), ON_SIGNAL(WidgetsTree,select_node_signal,OnSelectWidgetsTree), ON_SIGNAL(WidgetsTree,click_column_signal,OnClickColumnWidgetsTree), ON_SIGNAL(add_remove_event,clicked_signal,ConnectToFormEvent), ON_SIGNAL(tagButton,clicked_signal,SetWidgetTag), ON_SIGNAL(tag,activate_signal,SetWidgetTag), ON_SIGNAL(declarePublic,toggled_signal,OnDeclarePublic) // ON_SIGNAL(reconfigure,clicked_signal,ReconfigurePackerWidget), // ON_SIGNAL(treeToolbar,clicked_signal,OnToolbarClicked) END_SIGNAL_MAP /* */ bool VDKBObjectInspector::OnClickColumnWidgetsTree(VDKObject*) { if(activeOwner) LoadTree(activeOwner); return true; } /* */ void VDKBObjectInspector::SelectWidgetByTree(VDKBObject* object) { VDKTreeNode node = NULL; // calling with == NULL // selects root (form) if(object) node = gtk_ctree_find_by_row_data (GTK_CTREE(WidgetsTree->CustomWidget()), NULL, (gpointer) object); gtk_ctree_node_moveto (GTK_CTREE(WidgetsTree->CustomWidget()), node, 0, 0.5, -1.0); WidgetsTree->SelectedNode = node; } /* */ bool VDKBObjectInspector::OnSelectWidgetsTree(VDKObject*) { VDKBObject* selected_object = NULL; VDKTreeNode node = WidgetsTree->SelectedNode; if(! node) return true; // retrieve widget address stored by LoadTree() gpointer gp = gtk_ctree_node_get_row_data(GTK_CTREE(WidgetsTree->CustomWidget()), node); // cast it to a VDKBObject selected_object = reinterpret_cast (gp); // unmark active widget if any if(active) active->ClearMark(); // form inner box was selected // since LoadTree set NULL into row data at root level (form) if(! selected_object) { if(activeOwner && dynamic_cast(activeOwner)) selected_object = activeOwner; /* Raising form gui editor disabled since does not work well on some wm (such as icewm) */ activeOwner->Raise(); } // set owner active widget if(activeOwner && selected_object) { activeOwner->Active = selected_object; // activates inspector on selected widget SetActive(selected_object,false); // mark it if(active) active->Mark(); // gtk_widget_queue_draw(GTK_WIDGET(Window())); } else DisableInspector(); // enable/disable toolbar if( (!WidgetsTree->SelectedNode) || (!activeOwner) || (!selected_object) || (selected_object == activeOwner) ) { BList* widlist = treeToolbar->ButtonList(); for(int t = 0; t < widlist->size()-1; t++) (*treeToolbar)[t]->Enabled = false; } else { // cut (*treeToolbar)[0]->Enabled = true; // copy (*treeToolbar)[1]->Enabled = selected_object && !dynamic_cast(selected_object); // paste (*treeToolbar)[2]->Enabled = WidgetClipboard->size() > 0; // paste others (*treeToolbar)[3]->Enabled = WidgetClipboard->size() > 1; } return true; } /* */ bool VDKBObjectInspector::SetWidgetTip(VDKObject*) { if(!active) return true; active->SetPropValue("Tip", strlen(tip->Text) > 0 ? tip->Text : (char*) NIHIL_PROP); FormNeedToBeChanged(); return true; } /* */ bool VDKBObjectInspector::SetWidgetTag(VDKObject*) { if(!active) return true; active->SetPropValue("Tag", strlen(tag->Text) > 0 ? tag->Text : NIHIL_PROP); FormNeedToBeChanged(); return true; } /* */ void VDKBObjectInspector::FormNeedToBeChanged(bool flag) { VDKBGuiForm* owner_form = NULL; if(!active) return ; if( (owner_form = dynamic_cast(active)) ) owner_form->Changed = flag; else { VDKObject* vdkobj = dynamic_cast(active); if(vdkobj) { owner_form = dynamic_cast(vdkobj->Owner()); if(owner_form) owner_form->Changed = flag; } } } /* */ bool VDKBObjectInspector::OnSelectPreview(VDKObject* ) { GtkPackType packtype = justification->Selected == 2 ? GTK_PACK_END : GTK_PACK_START; if(!active) return true; VDKBEventBox *box = dynamic_cast(active); if(!box) return true; else box->PreviewFlag = (bool) preview->Checked; EventBoxListIterator li(box->boxlist); for(;li;li++) { VDKBObject* vdkbobj = dynamic_cast(li.current()); if(vdkbobj) { int propExpand = atoi(vdkbobj->GetProp( EXPAND_INTERNAL)); int propFill = atoi(vdkbobj->GetProp("_Fill")); int propPadding = atoi(vdkbobj->GetProp("_Padding")); gtk_box_set_child_packing(GTK_BOX(box->Container()), vdkbobj->ObjectFromVDK()->WrappedWidget(), preview->Checked ? propExpand : 0, preview->Checked ? propFill : 0, propPadding, packtype); } } return true; } /* */ bool VDKBObjectInspector::RepackWidget(VDKObject* obj) { if(!active) return true; GtkPackType packtype = justification->Selected == 2 ? GTK_PACK_END : GTK_PACK_START; sprintf(buff,"%d",(int) padding->ValueAsInt); active->SetPropValue("_Padding",buff); int paddingtype = atoi(buff); bool filltype = fill->Checked; bool expandtype = expand->Checked; active->SetPropValue(JUSTIFY_INTERNAL, justification->Selected == 0 ? (char*) "0" : justification->Selected == 1 ? (char*) "1" : (char*) "2"); active->SetPropValue("_Fill", filltype ? (char*) "1" : (char*) "0"); active->SetPropValue( EXPAND_INTERNAL,expandtype ? (char*) "1" : (char*) "0"); FormNeedToBeChanged(); /* there are some exceptions, ... not good OOP here :-( */ // menu item is an exception VDKBMenuItem* menuitem = dynamic_cast(active); if(menuitem) { if(packtype == GTK_PACK_END) gtk_menu_item_right_justify( (GTK_MENU_ITEM(active->ObjectFromVDK()->WrappedWidget()))); else GTK_MENU_ITEM(menuitem->ObjectFromVDK()-> WrappedWidget())->right_justify = 0; } // VDKBEventBox and most of containers: normally packed VDKBEventBox* box = dynamic_cast(active->ObjectFromVDK()->Parent()); if(box) { gtk_box_set_child_packing(GTK_BOX(box->Container()), active->ObjectFromVDK()->WrappedWidget(), expandtype,filltype,paddingtype,packtype); return true; } // VDKBMenubar differently packed // since casting from menubar to box fails. VDKBMenubar* bar = dynamic_cast(active->ObjectFromVDK()->Parent()); if(bar) { if (GTK_WIDGET_DRAWABLE (bar->WrappedWidget())) { gtk_widget_queue_clear (GTK_WIDGET (bar->WrappedWidget())); } gtk_widget_queue_resize (GTK_WIDGET (bar->WrappedWidget())); return true; } return true; } /* */ bool VDKBObjectInspector::OnSelectVisible(VDKObject*) { if(!active) return true; bool flag = visible->Checked; active->SetPropValue(VISIBLE,flag ? CHECK_TRUE : CHECK_FALSE); active->ObjectFromVDK()->Visible = flag; FormNeedToBeChanged(); return true; } /* */ bool VDKBObjectInspector::OnSelectEnabled(VDKObject*) { if(!active) return true; bool flag = enabled->Checked; active->SetPropValue(ENABLED,flag ? CHECK_TRUE : CHECK_FALSE); FormNeedToBeChanged(); return true; } /* */ /* */ bool VDKBObjectInspector::OnDeclarePublic(VDKObject*) { if(!active) return true; bool flag = declarePublic->Checked; active->SetPropValue(DECLARE_PUBLIC,flag ? CHECK_YES : CHECK_NO); FormNeedToBeChanged(); return true; } /* */ bool VDKBObjectInspector::OnSelectFont(VDKObject*) { create_font_selection (); if(selected_font) { font->Text = selected_font; VDKObject* vdkobj = dynamic_cast(active); if(vdkobj) { VDKBGuiForm* owner_form = dynamic_cast(vdkobj->Owner()); if(owner_form) { VDKFont* newfont = new VDKFont(owner_form,selected_font); if( (char*) *newfont) // valid font { active->ObjectFromVDK()->Font = newfont; active->SetPropValue( FONT,selected_font); } else newfont->Destroy(); } } g_free(selected_font); } FormNeedToBeChanged(); return true; } /* */ bool VDKBObjectInspector::OnJumpToFormEventHandler(VDKObject*) { int ndx = evtable->Selected.Row(); if( (ndx < 0) || ( ndx >= (evtable->Tuples.size())) ) return true; VDKString True = CHECK_TRUE; VDKBGuiForm* owner_form = dynamic_cast(active); if(owner_form) { VDKBProjectManager* prjman = dynamic_cast(owner_form->Owner()); if(prjman) { char textname[256]; sprintf(textname,"%s.cc",(char*) owner_form->Name()); prjman->DefineFormEventHandler(textname,evtable->Tuples[ndx][0]); } } return true; } /* */ bool VDKBObjectInspector::ConnectToFormEvent(VDKObject*) { bool write_response = false; if(!active) return true; int ndx = evtable->Selected.Row(); if( (ndx < 0) || ( ndx >= (evtable->Tuples.size())) ) return true; VDKString True = CHECK_TRUE; VDKBGuiForm* owner_form = dynamic_cast(active); if(owner_form) { VDKString prop = owner_form->GetProp((char*) evtable->Tuples[ndx][0]); // toggles property if(prop == True) { owner_form->SetPropValue((char*) evtable->Tuples[ndx][0],CHECK_FALSE); evTableItems[ndx].items[1] = CHECK_NO; add_remove_event->Caption = _(wi_prompts[1]); evtable->Titles[0]->Enabled = true; } else { owner_form->SetPropValue((char*)evtable->Tuples[ndx][0],CHECK_TRUE); add_remove_event->Caption = _(wi_prompts[0]); write_response = true; evTableItems[ndx].items[1] = CHECK_YES; evtable->Titles[0]->Enabled = false; } evtable->UpdateRow(ndx,evTableItems[ndx].items); VDKBProjectManager* prjman = dynamic_cast(owner_form->Owner()); if(write_response && prjman) { char textname[256]; sprintf(textname,"%s.cc",(char*) owner_form->Name()); prjman->DefineFormEventHandler(textname,evtable->Tuples[ndx][0]); } } FormNeedToBeChanged(); return true; } // call project manager to write or jump to // response method bool VDKBObjectInspector::OnSelectEventTable(VDKObject*) { if(!active) return true; int ndx = evtable->Selected.Row(); if( (ndx < 0) || ( ndx >= (evtable->Tuples.size())) ) return true; VDKString True = CHECK_TRUE; VDKBGuiForm* owner_form = dynamic_cast(active); if(owner_form) { VDKString prop = owner_form->GetProp((char*) evtable->Tuples[ndx][0]); if( prop == True) { add_remove_event->Caption = _(wi_prompts[1]); evtable->Titles[0]->Enabled = true; } else { add_remove_event->Caption = _(wi_prompts[0]); evtable->Titles[0]->Enabled = false; } } return true; } /* */ // call project manager to write or jump to // response method bool VDKBObjectInspector::OnSelectTable(VDKObject*) { if(!active) return true; int ndx = sigtable->Selected.Row(); if( (ndx <= 0) || ( ndx >= (sigtable->Tuples.size()-1)) ) return true; VDKObject* vdkobj = dynamic_cast(active); if(vdkobj) { VDKBGuiForm* owner_form = dynamic_cast(vdkobj->Owner()); if(owner_form) { VDKBProjectManager* prjman = dynamic_cast(owner_form->Owner()); if(prjman) { char textname[256]; sprintf(textname,"%s.cc",(char*) owner_form->Name()); prjman-> DefineResponseMethod(textname, owner_form->SignalList[ndx-1].slot); } } } FormNeedToBeChanged(); return true; } /* */ bool VDKBObjectInspector::DeleteConnection(VDKObject* sender) { if(!active) return true; int ndx = sigtable->Selected.Row(); VDKObject* vdkobj = dynamic_cast(active); if(vdkobj) { VDKBGuiForm* owner_form = dynamic_cast(vdkobj->Owner()); if(owner_form) { // firs sigtable row unused owner_form->SignalList.unlink(ndx-1); LoadStaticTable(); } } FormNeedToBeChanged(); return true; } // into vdkb_design.cc extern char* WidgetClassName(int action_target); extern OpState OperationalState; /* */ bool VDKBObjectInspector::OnWidgetsTreeButtonPress(VDKObject* sender, GdkEvent* event) { // FIX ME: language support GdkEventButton* ev = (GdkEventButton*) event; if(ev->button != 3) return false; if(OperationalState.state == op_stand_by && OperationalState.action == act_add_widget && OperationalState.target == NULL) { // can do if is a container or form is selected bool canDo = dynamic_cast(active) || !active; if(canDo) { char* name = WidgetClassName(OperationalState.action_target); char* targetname = active ? (char*) active->Name() : activeOwner ? (char*) activeOwner->Name() : (char*) "unknown"; sprintf(buff,_(wi_prompts[2]), name ? name : "unknown", targetname); dropwidget->Caption = buff; treepopmenu->Popup(); } } else if(active) active->PopMenu(); return false; } /* */ bool VDKBObjectInspector::DropWidget(VDKObject* sender) { GdkEventButton event; event.type = GDK_BUTTON_PRESS; event.button = 1; VDKBGuiForm* ownerform = active ? dynamic_cast(active->ObjectFromVDK()->Owner()) : activeOwner ? activeOwner : NULL; if(ownerform) { // call active widget owner form that makes the job // calling with NULL add to innerbox VDKObject* target = active ? active->ObjectFromVDK(): NULL; ownerform->OnButtonPress( target, (GdkEvent*) &event); } return true; } /* */ bool VDKBObjectInspector::OnSignalListButtonPress(VDKObject* sender, GdkEvent* event) { if(!active) return false; GdkEventButton* ev = (GdkEventButton*) event; if(ev->button != 3) return false; else { int ndx = sigtable->Selected.Row(); if( (ndx > 0) && ( ndx < (sigtable->Tuples.size()-1)) ) popmenu->Popup(); } return false; } /* */ bool VDKBObjectInspector::OnActivateSlotName(VDKObject* sender) { if(!active) return true; // looks on entries array int t; for(t = 0; t < sigEntries.size(); t++) if(sender == sigEntries[t]) break; // freezes the slot if(t < sigEntries.size()) { active->SignalList()[t].Slot(sigEntries[t]->Text); active->SignalList()[t].SlotFixed(true); } FormNeedToBeChanged(); return true; } /* */ bool VDKBObjectInspector::OnMultipleConnect(VDKObject*) { int sel; if(!active) return true; else sel = sigcombo->Selected; if(sel < 0) return true; VDKString slot = (sigcombo->GetPopdownStrings())[sel]; // find signal with that slot VDKObject* vdkobj = dynamic_cast(active); if(vdkobj) { VDKBConnectionList* list = NULL; VDKBGuiForm *owner_form = dynamic_cast(vdkobj->Owner()); if(owner_form) list = &(owner_form->SignalList); else return true; VDKBConnectionListIterator li(*list); for(;li;li++) { VDKString list_slot = li.current().slot; if ( list_slot == slot) { VDKBConnection c(active->Name(), (char*) li.current().signal, (char*) list_slot, false); if(!owner_form->SignalList.find(c)) { owner_form->SignalList.add(c); LoadStaticTable(); return true; } else { Application()->VDKMessageBox(APPNAME, _(wi_prompts[3]), VDK_OK| VDK_ICONINFORMATION); return true; } } } } Application()->VDKMessageBox(APPNAME,_(wi_prompts[3]), VDK_OK| VDK_ICONINFORMATION); return true; } /* */ bool VDKBObjectInspector::OnConnectSignal(VDKObject* sender) { if(!active) return true; // looks on button array int t; for(t = 0; t < connectButtons.size(); t++) if(sender == connectButtons[t]) break; if(t < connectButtons.size()) { VDKBConnection c(active->SignalList()[t].Sender()->Name(), active->SignalList()[t].Signal(), active->SignalList()[t].Slot()); VDKObject* vdkobj = dynamic_cast(active); if(vdkobj) { VDKBGuiForm* owner_form = dynamic_cast(vdkobj->Owner()); if(owner_form ) { if(!owner_form->SignalList.find(c)) { owner_form->SignalList.add(c); LoadStaticTable(); } else Application()->VDKMessageBox(APPNAME, _(wi_prompts[5]), VDK_OK| VDK_ICONINFORMATION); } } } FormNeedToBeChanged(); return true; } /* */ void VDKBObjectInspector::LoadStaticTable() { if(!active) return ; int t = 0; VDKBConnectionList* list = NULL; VDKBGuiForm* owner_form = NULL; char* p = buff; char formname[128]; VDKObject* vdkobj = dynamic_cast(active); if(vdkobj) { owner_form = dynamic_cast(vdkobj->Owner()); if(owner_form) list = &(owner_form->SignalList); else return; } else return; sigtable->Clear(); strcpy(formname,owner_form->Name()); formname[0] = toupper(formname[0]); sprintf(buff,"DEFINE_SIGNAL_MAP(%sForm,VDKForm)",formname); sigtable->AddRow(&p); VDKBConnectionListIterator li(*list); StringList sl; for(;li;li++,t++) { if(li.current().declare) sl.add(li.current().slot); sprintf(buff,"ON_SIGNAL(%s,%s,%s),", (char*) li.current().sender, (char*) li.current().signal, (char*) li.current().slot); if(t == (list->size()-1) ) buff[strlen(buff)-1] = '\0'; sigtable->AddRow(&p); } sprintf(buff,"END_SIGNAL_MAP"); sigtable->AddRow(&p); sigcombo->ClearList(); if(sl.size() > 0) sigcombo->PopdownStrings = sl; } /* */ bool VDKBObjectInspector::OnPageSwitch(VDKObject*) { if(!active) return true; int activePage = nbook->ActivePage; if(activePage < 0 || activePage >= nbook->Pages.size()) return true; switch(activePage) { case 1: // signal page SetSlotEntries(); break; } return true; } /* */ void VDKBObjectInspector::SetSlotEntries() { if( !active || (active->SignalList().size() <= 0 ) ) return; int t; for(t=0; t < sigEntries.size();t++) { if(! active->SignalList()[t].SlotFixed()) { sprintf(buff,"On%s%s", (char*) active->SignalList()[t].Sender()->Name(), (char*) active->SignalList()[t].Nickname()); sigEntries[t]->Text = buff; active->SignalList()[t].Slot(buff); } } } /* */ bool VDKBObjectInspector::SetWidgetName(VDKObject*) { if(!active) return true; VDKObject* vdkobj = dynamic_cast(active); if(vdkobj) { VDKBGuiForm* owner_form = dynamic_cast(vdkobj->Owner()); if(owner_form && owner_form->ChildWithName((char*) name->Text)) // FIX ME: language support Application()->VDKMessageBox(APPNAME, _(wi_prompts[6]), VDK_OK| VDK_ICONINFORMATION); else if(owner_form && (strlen((char*) name->Text) > 0)) { // widget name is changed so it's // necessary to update also signal table VDKString oldname = oldWidgetName; VDKString newname = (char*) name->Text; active->Name((char*) name->Text); // changes widget name owner_form->ChangeConnectionSenderName(newname,oldname); // update signal table SetSlotEntries(); oldWidgetName = newname; // reactivate inspector SetActive(active); LoadTree(owner_form); FormNeedToBeChanged(); } else { // widget name can't be empty // FIX ME: language support Application()->VDKMessageBox(APPNAME, _(wi_prompts[7]), VDK_OK| VDK_ICONINFORMATION); name->Text = (char*) oldWidgetName; } } return true; } /* warning: function behaviour heavily depends on which theme we are using. Works well on default theme, some erratic behaviour with pixmapped themes. */ bool VDKBObjectInspector::OnRestoreDefaultStyle(VDKObject* sender) { char color[32]; GtkWidget* wid; // char* fontname; if(!active) return true; wid = active->ObjectFromVDK()->WrappedWidget(); // restore default style & font // doesn't work for fonts :-( gtk_widget_restore_default_style(wid); /* GtkStyle* rcstyle = gtk_rc_get_style(wid); GtkStyle* style = gtk_style_copy(gtk_widget_get_style(wid)); g_return_val_if_fail(rcstyle != NULL,TRUE); g_return_val_if_fail(style != NULL,TRUE); gtk_style_ref(style); style->font = rcstyle->font; gtk_widget_set_style(wid,style); */ // resets to nihil all color/font properties sprintf(color,"nihil"); active->SetPropValue(NORMALBACKGROUND,color); active->SetPropValue(PRELIGHTBACKGROUND,color); active->SetPropValue(INSENSITIVEBACKGROUND,color); active->SetPropValue(ACTIVEBACKGROUND,color); active->SetPropValue(SELECTEDBACKGROUND,color); active->SetPropValue(FOREGROUND,color); active->SetPropValue(FONT,color); font->Text = ""; // here an exception, since canvas do not display immediately changes VDKBGuiCanvas* canvas; VDKBPlaceHolder* pholder; if( (canvas = dynamic_cast(active)) ) { ((VDKCanvas*)canvas->ObjectFromVDK())->Clear(); ((VDKCanvas*)canvas->ObjectFromVDK())->Redraw(); } else if( (pholder = dynamic_cast(active)) ) { ((VDKCanvas*)pholder->ObjectFromVDK())->Clear(); ((VDKCanvas*)pholder->ObjectFromVDK())->Redraw(); } FormNeedToBeChanged(); return true; } /* */ bool VDKBObjectInspector::OnChangeColor(VDKObject* sender) { int ndx; char color[32]; VDKDefaultColor parms; if(!active) return true; else if(sender == NULL) { gtk_widget_restore_default_style(active->ObjectFromVDK()->WrappedWidget()); active->SetPropValue(NORMALBACKGROUND,NIHIL_PROP); return true; } else { ndx = colortypecombo->Selected; if(ndx < 0) return true; VDKBColorBrowser* dlg = new VDKBColorBrowser(this,&parms); dlg->Setup(); dlg->ShowModal(GTK_WIN_POS_CENTER); // calls GC now CollectGarbage(); if(parms.red < 0) return true; } VDKRgb newcolor(parms.red, parms.green, parms.blue); sprintf(color,"%d,%d,%d", newcolor.red, newcolor.green, newcolor.blue); switch(ndx) { case 0: // normal background active->ObjectFromVDK()->NormalBackground = newcolor; active->SetPropValue(NORMALBACKGROUND,color); break; case 1: // prelight background active->ObjectFromVDK()->PrelightBackground = newcolor; active->SetPropValue(PRELIGHTBACKGROUND,color); break; case 2: // InsensitiveBackground active->ObjectFromVDK()->InsensitiveBackground = newcolor; active->SetPropValue(INSENSITIVEBACKGROUND,color); break; case 3: // ActiveBackground active->ObjectFromVDK()->ActiveBackground = newcolor; active->SetPropValue(ACTIVEBACKGROUND,color); break; case 4: active->ObjectFromVDK()->SelectedBackground = newcolor; active->SetPropValue(SELECTEDBACKGROUND,color); break; case 5: // Foreground active->ObjectFromVDK()->Foreground = newcolor; active->SetPropValue(FOREGROUND,color); break; } // here an exception, since canvas do not display immediately changes VDKBGuiCanvas* canvas; VDKBPlaceHolder* pholder; if( (canvas = dynamic_cast(active)) ) { ((VDKCanvas*)canvas->ObjectFromVDK())->Clear(); ((VDKCanvas*)canvas->ObjectFromVDK())->Redraw(); } else if( (pholder = dynamic_cast(active)) ) { ((VDKCanvas*)pholder->ObjectFromVDK())->Clear(); ((VDKCanvas*)pholder->ObjectFromVDK())->Redraw(); } FormNeedToBeChanged(); return true; } /* */ VDKBObjectInspector::VDKBObjectInspector(VDKForm* owner, VDKBObject* active, char* title, int mode, GtkWindowType display): VDKForm(owner,title,mode,display),active(active) { active = NULL; ForceToClose = false; extrawidget = NULL; sigpageBox = evpageBox = NULL; } /* */ VDKBObjectInspector::~VDKBObjectInspector() { } /* */ bool VDKBObjectInspector::CanClose() { return ForceToClose == true; } /* */ void VDKBObjectInspector::OnShow(VDKForm*) { // modifyng window policy and or window position // on modals makes XServer die :-( if(!IsModal()) { VDKPoint ownerPos = Owner()->Position; VDKPoint ownerSize = Owner()->Usize; VDKPoint p(ownerPos.X() + 30, ownerPos.Y() + 50); Position = p; // does not allow to shrink or grow VDKString Yes = CHECK_YES; if(VDKBuilder::ideDefaults.project.wi_resizeable != Yes) gtk_window_set_policy(GTK_WINDOW(Window()),false,false,true); } else ForceToClose = true; } /* Tries to load /var/X11R6/lib/rgb.txt colors database Unused, substituted with VDKColorBrowser */ bool VDKBObjectInspector::LoadRGB(StringList& colors) { printf("\ncall to unused VDKBObjectInspector::LoadRGB()"); fflush(stdout); return true; } /* */ void VDKBObjectInspector::Setup() { sprintf(buff,_(wi_prompts[8])); Title = buff; int layout = atoi((char*) VDKBuilder::ideDefaults.project.wi_layout); VDKBox* panebox = new VDKBox(this,layout); panebox->Add(MakeWidgetsTreePage(),l_justify,false,false,2); nbook = new VDKNotebook(this); nbook->AddPage(mainbox = MakePropertiesPage(),_(wi_prompts[9])); // set signal page container to NULL sigpageBox = NULL; // set signal table to NULL sigtable = NULL; // set pop menu popmenu = new VDKMenu(this); // FIX ME: lang support VDKMenuItem *nop = new VDKMenuItem(popmenu,"Nop"); nop->Enabled = false; delConnection = new VDKMenuItem(popmenu,_(wi_prompts[10])); SignalConnect(delConnection,"activate",&VDKBObjectInspector::DeleteConnection); /* better add it to owner, so will be surely destroyed even if never popped */ AddItem(popmenu); panebox->Add(new VDKSeparator(this),l_justify,false,false,0); dockerbox = new VDKDockerBox(this); dockerbox->Add(nbook,l_justify,false,false,0); panebox->Add(dockerbox,l_justify,false,false,0); SignalConnect(dockerbox,"docked",&VDKBObjectInspector::OnDocked,false); SignalConnect(dockerbox,"undocked",&VDKBObjectInspector::OnDocked,false); Add(panebox); } /* */ bool VDKBObjectInspector::OnDocked(VDKObject* sender) { if(dockerbox->Docked) { WidgetsTree->SetSize(-1,350); dockerbox->DockForm()->Title = _("Properties and signals"); gtk_window_set_resizable(GTK_WINDOW(dockerbox->DockForm()->Window()),false); } else WidgetsTree->SetSize(-1,150); return true; } /* */ VDKBox* VDKBObjectInspector::MakePropertiesPage() { // main page box int t; VDKBox* Nbook0_Page0 = new VDKBox(this,v_box); Nbook0_Page0->SetSize(220,-1); CommonPropertiesFrame = new VDKFrame(this,_(wi_prompts[11]),v_box,shadow_etched_in); CommonPropertyTable = new VDKTable(this,7,2,true); CommonPropertyTable->RowSpacing = 0; CommonPropertyTable->ColSpacing = 0; CommonPropertyTable->SetSize(-1,200); // widget name VDKBox* nbox = new VDKBox(this,h_box); declarePublic = new VDKCheckButton(this,_(wi_prompts[36])); declarePublic->SetTip(_("Declare as public member")); nbox->Add(declarePublic,l_justify,false,false,0); nameButton = new VDKCustomButton(this,(const char**) widname_xpm,NULL);// _(wi_prompts[12])); nameButton->Relief = (GtkReliefStyle) 2; nameButton->SetTip(_("Click to change widget name")); nameButton->Enabled = false; nbox->Add(nameButton,l_justify,false,false,0); CommonPropertyTable->AddToCell(nbox,0,0); name = new VDKEntry(this,0); name->SetTip(_(wi_prompts[13])); CommonPropertyTable->AddToCell(name,0,1); // widget color VDKBox* cbox = new VDKBox(this,h_box); colorButton = new VDKCustomButton(this,(const char**)setcolor16_xpm,NULL);//,_(wi_prompts[15])); colorButton->Relief = (GtkReliefStyle) 2; colorButton->Enabled = false; colorButton->SetTip(_("Click to change widget color")); cbox->Add(colorButton,l_justify,false,false,0); // font fontButton = new VDKCustomButton(this,(const char**)font16_xpm,NULL);// ,_(wi_prompts[16])); fontButton->Relief = (GtkReliefStyle) 2; fontButton->Enabled = false; fontButton->SetTip(_("Click to change widget font")); cbox->Add(fontButton,l_justify,false,false,0); // restore default style button restoreDefaultButton = new VDKCustomButton(this,(const char**) undo_xpm,NULL);//,_(wi_prompts[35])); restoreDefaultButton->Relief = (GtkReliefStyle) 2; restoreDefaultButton->Enabled = false; restoreDefaultButton->SetTip(_("Restore default font & colors (backgrounds)")); cbox->Add(restoreDefaultButton,l_justify,false,false,0); cbox->Add(new VDKLabel(this,"Widget state")); CommonPropertyTable->AddToCell(cbox,1,0); // widget states colortypecombo = new VDKCombo(this,NORMALBACKGROUND); colortypecombo->SetTip(_("Select widget state to set colors")); StringList sc = colortypecombo->PopdownStrings; for(t=0; color_states[t]; t++) sc.add(VDKString(color_states[t])); colortypecombo->PopdownStrings = sc; colortypecombo->SelectItem(0); CommonPropertyTable->AddToCell(colortypecombo,1,1); // widget font font = new VDKEntry(this,0); font->Editable = false; CommonPropertyTable->AddToCell(font,2,0); // visible & enabled VDKBox* ebox = new VDKBox(this,h_box); visible = new VDKCheckButton(this,_("visible")); visible->SetTip(_("Uncheck to hide the widget")); ebox->Add(visible); // enabled enabled = new VDKCheckButton(this,_("enabled")); // enabled->Enabled = false; enabled->SetTip(_("Uncheck to disable the widget")); ebox->Add(enabled); CommonPropertyTable->AddToCell(ebox,2,1); // justification VDKBox* fbox = new VDKBox(this,h_box); fill = new VDKCheckButton(this,_(wi_prompts[19])); fill->Enabled = false; fbox->Add(fill,l_justify,false,false,3); expand = new VDKCheckButton(this,_(wi_prompts[18])); expand->Enabled = false; fbox->Add(expand,l_justify,false,false,0); CommonPropertyTable->AddToCell(fbox,3,0); justification = new VDKCombo(this); justification->SetTip(_("Select packing mode")); CommonPropertyTable->AddToCell(justification,3,1); StringList sj = justification->PopdownStrings; for(t=0;justifications[t];t++) sj.add(VDKString(justifications[t])); justification->PopdownStrings = sj; // packing flags VDKBox* lhbox = new VDKBox(this,h_box); lhbox->Add(new VDKLabel(this,_(wi_prompts[20])),l_justify,false,false,false); padding = new VDKSpinButton(this, 0, 0, 20 , 1 ,0 ); padding->SetTip(_("Select padding size")); lhbox->Add(padding,l_justify,false,false,false); padding->Enabled = false; CommonPropertyTable->AddToCell(lhbox,4,0); repackButton = new VDKCustomButton(this,(const char**) repack_xpm,_(wi_prompts[21])); repackButton->Relief = (GtkReliefStyle) 2; repackButton->Enabled = false; repackButton->SetTip(_("Click to repack the widget")); CommonPropertyTable->AddToCell(repackButton,4,1); // box preview preview = new VDKCheckButton(this,_(wi_prompts[22])); preview->SetTip(_("Toggle preview mode")); CommonPropertyTable->AddToCell(preview,5,0); VDKBox* hbbox2 = new VDKBox(this,h_box); // widget tip tipButton = new VDKCustomButton(this,(const char**) calltip_xpm,NULL);// ,_(wi_prompts[28])); tipButton->Relief = (GtkReliefStyle) 2; tipButton->Enabled = false; tipButton->SetTip(_("Click to set the widget tip")); hbbox2->Add(tipButton,l_justify,false,false,0); tip = new VDKEntry(this,0); hbbox2->Add(tip); CommonPropertyTable->AddToCell(hbbox2,6,0); // widget tag VDKBox* hbbox3 = new VDKBox(this,h_box); tagButton = new VDKCustomButton(this,(const char**) tag_xpm,NULL);//,_(wi_prompts[29])); tagButton->Relief = (GtkReliefStyle) 2; tagButton->Enabled = false; tagButton->SetTip(_("Click to set the widget tag\ntag is an integer >= 0")); hbbox3->Add(tagButton,l_justify,false,false,0); tag = new VDKEntry(this,0); hbbox3->Add(tag); CommonPropertyTable->AddToCell(hbbox3,6,1); // CommonPropertiesFrame->Add(CommonPropertyTable,l_justify,false,false,0);// true,true,false); Nbook0_Page0->Add(CommonPropertiesFrame,l_justify,false,false,2); return Nbook0_Page0; } /* */ void VDKBObjectInspector::DisableInspector() { active = NULL; name->Text = ""; tip->Text = ""; //colortypecombo->ClearList(); if(sigpageBox) { int t; // disconnects signals for(t=0; t < slots.size();t++) if (slots[t] > 0) SignalDisconnect(slots[t]); // connectTable->RemoveObjects(); sigpageBox->RemoveObjects(); // remove notebook signal page if(nbook->Pages.size() > 1) nbook->RemovePage(1); sigpageBox = NULL; } else if(evpageBox) { evpageBox->RemoveObjects(); // remove notebook event page if(nbook->Pages.size() > 1) nbook->RemovePage(1); evpageBox = NULL; } // disable all nameButton->Enabled = false; colorButton->Enabled = false; restoreDefaultButton->Enabled = false; fontButton->Enabled = false; enabled->Enabled = false; visible->Enabled = false; justification->Enabled = false; expand->Enabled = false; fill->Enabled = false; padding->Enabled = false; tipButton->Enabled = false; tagButton->Enabled = false; repackButton->Enabled = false; // set title sprintf(buff,_(wi_prompts[30])); Title = buff; return; } /* */ void VDKBObjectInspector::RemoveExtraWidget() { if (mainbox && extrawidget) { extrawidget->RemoveObjects(); mainbox->RemoveObject(extrawidget); extrawidget= NULL; } } /* normally called by a gui object to add his own properties widget to inspector. */ void VDKBObjectInspector::AddExtraWidget(VDKObjectContainer* wid) { if(mainbox && wid) { mainbox->Add(wid,l_justify,false,false,0); extrawidget = wid; } } /* activate inspector with a gui object selected by user */ void VDKBObjectInspector::SetActive(VDKBObject* act, bool loadWidgetsTree) { // wi going to be disabled if(act == NULL) { DisableInspector(); RemoveExtraWidget(); // clear widgets tree WidgetsTree->Clear(); // disable toolbar BList* widlist = treeToolbar->ButtonList(); for(int t = 0; t < widlist->size()-1; t++) (*treeToolbar)[t]->Enabled = false; return; } // avoid unuseful wi reloads (except notebook // where we should handle page switches else if(active == act) { VDKBGuiNotebook* nb = dynamic_cast(active); if(!nb) return; } else active = act; // remove extra fields specific to widget if(active) RemoveExtraWidget(); // some useful flags bool isForm = dynamic_cast(act) != NULL; bool isContainer = dynamic_cast(active) != NULL; bool isNotebook = dynamic_cast(active)!= NULL; bool isToolbar = dynamic_cast(active)!= NULL; bool isLabel = dynamic_cast(active)!= NULL; bool isHandle = dynamic_cast(active)!= NULL; bool isRadioButtonGroup = dynamic_cast(active)!= NULL; VDKBEventBox* isBox = dynamic_cast(active); bool cantJustify = dynamic_cast(active->ObjectFromVDK()->Parent())!= NULL; bool parentIsPacker = false; // dynamic_cast(active->ObjectFromVDK()->Parent())!= NULL; bool parentIsFixed = dynamic_cast(active->ObjectFromVDK()->Parent())!= NULL; // const true and nihil VDKString True = CHECK_TRUE; VDKString Nihil = NIHIL_PROP; // set widget and widget old name name->Text = active->Name(); oldWidgetName = active->Name(); VDKString _font = active->GetProp( FONT); font->Text = strcmp(_font,NIHIL_PROP) ? (char*) _font : (char*) ""; // set font also as entry tips font->SetTip(_font); // set prop values if(active->GetProp(ENABLED) != Nihil) enabled->Checked = active->GetProp(ENABLED) == True; if(active->GetProp(VISIBLE) != Nihil) visible->Checked = active->GetProp(VISIBLE) == True; if(isBox) { preview->Enabled = true; preview->Checked = isBox->PreviewFlag; } else preview->Enabled = false; // packing args int justarg = atoi(active->GetProp(JUSTIFY_INTERNAL)); int exparg = atoi(active->GetProp( EXPAND_INTERNAL)); int fillarg = atoi(active->GetProp(FILL_INTERNAL)); int paddarg = atoi(active->GetProp(PADDING_INTERNAL)); justification->SelectItem(justarg); expand->Checked = exparg != 0; padding->ValueAsFloat = float(paddarg); fill->Checked = fillarg != 0; /* side->SelectItem(justarg); anchor->SelectItem(exparg); GtkPackerOptions opts = (GtkPackerOptions) fillarg; fillx->Checked = opts & GTK_FILL_X; filly->Checked = opts & GTK_FILL_Y; p_expand->Checked = opts & GTK_PACK_EXPAND; */ if(!isContainer && !isLabel) { if(active->GetProp(TIP) != Nihil) tip->Text = (char*) active->GetProp(TIP); else tip->Text = ""; } else tip->Text = ""; if(!isForm) { if(active->GetProp(TAG) != Nihil) tag->Text = (char*) active->GetProp(TAG); else tag->Text = ""; declarePublic->Checked = !strcmp((char*) active->GetProp(DECLARE_PUBLIC),CHECK_YES); } else tag->Text = ""; // remove notebook page widgets && disconnect signals int ndx = nbook->ActivePage; if(sigpageBox) { int t; // disconnects signals for(t=0; t < slots.size();t++) if (slots[t] > 0) SignalDisconnect(slots[t]); // connectTable->RemoveObjects(); sigpageBox->RemoveObjects(); sigpageBox = NULL; } // remove notebook event page if(evpageBox) { evpageBox->RemoveObjects(); evpageBox = NULL; } // remove notebook page (sigpageBox included) and reload // a new one if(nbook->Pages.size() > 1) nbook->RemovePage(1); // make signals page for all widgets except: // forms, labels, containers // above widgets do not have any signal provided // with these exceptions: // notebook,toolbar,handle, radiobutton group if((!isForm && !isContainer && !isLabel) || isNotebook || isToolbar || isHandle || isRadioButtonGroup) { #if VERBOSE printf("\nmaking signal page"); fflush(stdout); #endif sigpageBox = MakeSignalsPage(); nbook->AddPage(sigpageBox,_(wi_prompts[31])); nbook->ActivePage = ndx; // gtk_widget_queue_draw(GTK_WIDGET(nbook->WrappedWidget())); } else // no signals at all // makes two empty arrays { sigEntries = VDKArray(0); slots = VDKArray(0); } // makes default events page for forms if(isForm) { nbook->AddPage(evpageBox = MakeFormEventsPage(),_(wi_prompts[32])); nbook->ActivePage = ndx; } // enable what can be enabled nameButton->Enabled = !isForm; fontButton->Enabled = !isContainer; enabled->Enabled = !isContainer && !isLabel; // visible->Enabled = !isContainer; visible->Enabled = true; repackButton->Enabled = (!cantJustify) && (!isForm) && !(parentIsPacker) && !(parentIsFixed); justification->Enabled = (!cantJustify) && (!isForm) && !(parentIsPacker); expand->Enabled = !isForm && !(parentIsPacker) && !(parentIsFixed) ; fill->Enabled = !isForm && !(parentIsPacker) && !(parentIsFixed); padding->Enabled = !isForm && !(parentIsPacker) && !(parentIsFixed); tipButton->Enabled = !isContainer && !isLabel && !isForm; tagButton->Enabled = !isForm; // side->Enabled = parentIsPacker; // anchor->Enabled = parentIsPacker; // p_expand->Enabled = parentIsPacker; // fillx->Enabled = parentIsPacker; // filly->Enabled = parentIsPacker; // reconfigure->Enabled = parentIsPacker; colorButton->Enabled = !isContainer; restoreDefaultButton->Enabled = !isContainer; declarePublic->Enabled = !isForm; /* call selected object to let it add his own widget here. All gui widgets should implement ExtraWidget(), otherwise an unuseful root class call will be made. (ExtraWidget is virtual on VDKBObject) */ AddExtraWidget(active->ExtraWidget(this)); // set title VDKObject* vdkobj = dynamic_cast(active); if(vdkobj) { VDKBGuiForm* ownerform = NULL; if(!isForm) ownerform = dynamic_cast(vdkobj->Owner()); else ownerform = dynamic_cast(active); if(ownerform) { char name[128]; strcpy(name,(char*) ownerform->Name()); name[0] = toupper(name[0]); sprintf(buff,"%sForm->%s::%s", name, active->VDKName(), (char*) active->Name() ); Title = buff; if(loadWidgetsTree) LoadTree(ownerform); } } } static char *colTitle = N_("Write or jump to response method"); static char *evcolTitle[] = { N_("Jump to event handler"), N_("Connected") }; /* */ VDKBox* VDKBObjectInspector::MakeFormEventsPage() { int t = 0; VDKString True = CHECK_TRUE; VDKBox* vbox = new VDKBox(this); evtable = new VDKCustomList(this,2,evcolTitle); evtable->AutoResize = true; evtable->ActiveTitle(1,false); evtable->Titles[0]->Enabled = false; VDKBGuiForm* owner_form = dynamic_cast(active); if(owner_form) { for(t=0;evTableItems[t].items[0];t++) { VDKString prop = owner_form->GetProp(evTableItems[t].items[0]); if(prop == True) evTableItems[t].items[1] = CHECK_YES; else evTableItems[t].items[1] = CHECK_NO; } } for(t=0;evTableItems[t].items[0];t++) evtable->AddRow(evTableItems[t].items); vbox->Add(evtable); add_remove_event = new VDKCustomButton(this,_(wi_prompts[0])); vbox->Add(add_remove_event,l_justify,false,false,false); return vbox; } /* */ VDKBox* VDKBObjectInspector::MakeSignalsPage() { VDKBox* vbox = new VDKBox(this); const int rows = active->SignalList().size(); const int cols = 2; int t,z = 0; // connecting table connectTable = new VDKTable(this,rows+2,cols); connectTable->ColSpacing = 1; connectTable->RowSpacing = 1; sigEntries = VDKArray(rows); connectButtons = VDKArray(rows); slots = VDKArray(rows*2); VDKBSListIterator li(active->SignalList()); connectTable->AddToCell(new VDKLabel(this,_(wi_prompts[31])),0,0); connectTable->AddToCell(new VDKLabel(this,_(wi_prompts[33])),0,1); connectTable->AddToCell(new VDKSeparator(this),1,0); connectTable->AddToCell(new VDKSeparator(this),1,1); for(t=0;li;li++,t++) { bool isContainer = dynamic_cast(active) != NULL; connectButtons[t] = new VDKCustomButton(this,li.current().Nickname()/*Signal()*/); sigEntries[t] = new VDKEntry(this,0,li.current().Slot()); slots[z++] = SignalConnect(sigEntries[t],"activate", &VDKBObjectInspector::OnActivateSlotName); slots[z++] = SignalConnect(connectButtons[t],"clicked", &VDKBObjectInspector::OnConnectSignal); connectTable->AddToCell(connectButtons[t],t+2,0); connectTable->AddToCell(sigEntries[t],t+2,1); if(t==0 && isContainer) { connectButtons[t]->Enabled = false; sigEntries[t]->Enabled = false; } } vbox->Add(connectTable,l_justify,false,false,false); // make and load static signal table (a list) char* p = _(colTitle); sigtable = new VDKCustomList(this,1,&p,GTK_SELECTION_EXTENDED); sigtable->ActiveTitles(true); EventConnect(sigtable,"button_press_event", &VDKBObjectInspector:: OnSignalListButtonPress); // cast white background to override some gtk-themes defaults //sigtable->NormalBackground = clWhite; vbox->Add(sigtable); // make and load combo signal list VDKBox* hbox = new VDKBox(this,h_box); mul_connect = new VDKCustomButton(this,_(wi_prompts[34])); hbox->Add(mul_connect,l_justify,false,false,false); hbox->Add(sigcombo = new VDKCombo(this),l_justify,false,false,false); vbox->Add(hbox,l_justify,false,false,false); LoadStaticTable(); return vbox; } /////////////////////////////////////////////// // WIDGET TREE ////////////////////////////////////////////// extern char *mininewform_xpm[]; /// some pixmaps /* XPM */ static char *container_xpm[] = { "16 16 5 1", ". c #000000", "# c #808000", "a c #c0c000", "b c #ffffc0", "c c None", /* pixels */ "ccccc..ccc.ccccc", "ccc..bb...b..ccc", "c..bb..#a..bb..c", ".bb..###aaa..bb.", "...#####aaaaa...", "c.b..###aaa...cc", "c.bbb..#a..aa.cc", "c.bbbbb..aaaa.cc", "c.bbbbbbaaaaa.cc", "c.bbbbbbaaaaa.cc", "c.bbbbbbaaaaa.cc", "c.bbbbbbaaaaa.cc", "c.abbbbbaaaa..cc", "cc..abbbaa..cccc", "cccc..ab..cccccc", "cccccc..cccccccc" }; /* XPM */ static char *widget_xpm[]={ "16 16 14 1", "# c #000000", "c c #008000", "d c #00c000", "g c #008080", "h c #00c0c0", "f c #00ffff", "k c #808000", "l c #c0c000", "j c #ffff00", "a c #c0ffc0", "e c #c0ffff", "i c #ffffc0", "b c #00ff00", ". c None", ".....##.........", "....#aa##.......", "...#aaabb#......", "..#bbbbbc###....", "..#ddbbcc#ee##..", "..#dddcc#eeeff#.", "..#dddc#fffffg#.", "...###c#hhffgg#.", "...#ii##hhhggg#.", "..#iiijj#hhgg#..", ".#jjjjjk##hg#...", ".#lljjkk#.##....", ".#lllkkk#.......", ".#lllkk#........", "..##lk#.........", "....##.........."}; #include "./pixmaps/cut.xpm" #include "./pixmaps/copy.xpm" #include "./pixmaps/paste.xpm" #include "./pixmaps/paste_others.xpm" extern VDKBWidgetClipboard* WidgetClipboard; bool VDKBObjectInspector::OnToolbarClicked(VDKObject* sender) { gpointer gp = NULL; VDKBObject* selected_object = NULL; int button = treeToolbar->ButtonPressed; VDKTreeNode node = WidgetsTree->SelectedNode; // dock/undock request if(button == 4) { dockerbox->Docked = dockerbox->Docked ? false : true; return true; } if(! node) return true; else { // retrieve widget address stored by LoadTree() gp = gtk_ctree_node_get_row_data(GTK_CTREE(WidgetsTree->CustomWidget()), node); // cast it to a VDKBObject selected_object = reinterpret_cast (gp); } if(!selected_object) return true; switch(button) { case 0:// cut WidgetClipboard->CutWidget(selected_object->ObjectFromVDK()); break; case 1:// copy WidgetClipboard->CopyWidget(selected_object->ObjectFromVDK()); break; case 2:// paste WidgetClipboard->PasteWidget(selected_object->ObjectFromVDK(),0); break; case 3:// paste others PasteOthers(selected_object); break; } return true; } /* paste others widgets on stack. An empty array is passed to dialog, it returns the array filled with widget to be pasted, or an empty array id user press cancel button. */ void VDKBObjectInspector::PasteOthers(VDKBObject* selected_object) { VDKBWidgetClipboardArray cliparray; VDKBWidgetClipboardDialog* child = new VDKBWidgetClipboardDialog(this,&cliparray, NULL); child->Setup(); child->ShowModal(GTK_WIN_POS_MOUSE); if(cliparray.size() > 0) { if(cliparray.size() == 1) { VDKBWidgetClipboardItem item = cliparray[0]; // finds widget ordinal position // into clipboard int ndx = WidgetClipboard->at(item); if(ndx >= 0) // paste widget resetting WI WidgetClipboard->PasteWidget(selected_object->ObjectFromVDK(),ndx, true); } else { int z = 0; for(; z < cliparray.size(); z++) { VDKBWidgetClipboardItem item = cliparray[z]; int ndx = WidgetClipboard->at(item); // finds widget ordinal position // into clipboard if(ndx >= 0) // reset WI only on last item WidgetClipboard->PasteWidget(selected_object->ObjectFromVDK(), ndx, z < (cliparray.size()-1) ? false: true); } } } } /* */ void VDKBObjectInspector::OnTreeMove (GtkCTree *wid, GtkCTreeNode *child, GtkCTreeNode *parent, GtkCTreeNode *sibling, gpointer data) { gpointer gp; VDKBObject* source,*target,*sibling_target; g_return_if_fail(wid != NULL); g_return_if_fail(data != NULL); VDKCustomTree* tree = reinterpret_cast(data); gp = gtk_ctree_node_get_row_data(GTK_CTREE(tree->CustomWidget()), child); source = reinterpret_cast (gp); gp = gtk_ctree_node_get_row_data(GTK_CTREE(tree->CustomWidget()), parent); target = reinterpret_cast (gp); if(sibling) { gp = gtk_ctree_node_get_row_data(GTK_CTREE(tree->CustomWidget()), sibling); sibling_target = reinterpret_cast (gp); } else sibling_target = NULL; gtk_signal_emit_stop_by_name(GTK_OBJECT(wid),"tree_move"); if(!source || !target) return; if(activeOwner) { // cut source and paste it to target WidgetClipboard->CutWidget(source->ObjectFromVDK()); // set target or sibling as active if(sibling_target && dynamic_cast(sibling_target)) activeOwner->Active = sibling_target; else activeOwner->Active = target; WidgetClipboard->PasteWidget(target->ObjectFromVDK(),0); // reload tree tree->SignalEmit(click_column_signal); } } /* */ VDKBox* VDKBObjectInspector::MakeWidgetsTreePage() { char * title = _("Refresh widgets tree"); VDKBox* box = new VDKBox(this); // treeToolbar = new VDKToolbar(this); treeToolbar = new VDKHLButtonBar(this,h_box,shadow_etched_in); treeToolbar->AddButton((const char**)cut_xpm,_(popmenu_prompts[0])); treeToolbar->AddButton((const char**)copy_xpm,_(popmenu_prompts[1])); treeToolbar->AddButton((const char**)paste_xpm,_(popmenu_prompts[2])); treeToolbar->AddButton((const char**)paste_others_xpm,_(popmenu_prompts[3])); treeToolbar->AddButton((const char**)dock_xpm,_("docks/undocks properties & signals")); box->Add(treeToolbar,l_justify,false,false,0); SignalConnect(treeToolbar,"clicked",&VDKBObjectInspector::OnToolbarClicked,false); BList* widlist = treeToolbar->ButtonList(); for(int t = 0; t < widlist->size()-1; t++) (*treeToolbar)[t]->Enabled = false; WidgetsTree = new VDKCustomTree(this,1,&title); WidgetsTree->SetSize(200,150); WidgetsTree->AutoResize = true; gtk_clist_set_reorderable (GTK_CLIST(WidgetsTree->CustomWidget()), true); // cast white background to override some gtk-themes defaults // WidgetsTree->NormalBackground = clWhite; box->Add(WidgetsTree); gtk_signal_connect (GTK_OBJECT (WidgetsTree->CustomWidget()), "tree_move", GTK_SIGNAL_FUNC(VDKBObjectInspector::OnTreeMove), (gpointer) WidgetsTree); EventConnect(WidgetsTree,"button_press_event", &VDKBObjectInspector::OnWidgetsTreeButtonPress); treepopmenu = new VDKMenu(this); // FIX ME: lang support VDKMenuItem *nop = new VDKMenuItem(treepopmenu,"Nop"); nop->Enabled = false; dropwidget = new VDKMenuItem(treepopmenu,_(popmenu_prompts[4])); SignalConnect(dropwidget,"activate", &VDKBObjectInspector::DropWidget); /* better explicitely add it to owner, so will be surely destroyed even if never popped */ AddItem(treepopmenu); return box; } /* */ void RecursiveLoadTree( EventBoxList& list, VDKCustomTree* tree, VDKTreeNode root) { char *objname; if(list.size() == 0) return; // iterates on boxes EventBoxListIterator li(list); for(;li;li++) { bool hasChilds = false; VDKTreeNode child = NULL; VDKBEventContainer* box = NULL; VDKBMenuItem* mi = NULL; VDKObject* object = li.current(); VDKBObject* vdkobj = dynamic_cast(object); if(vdkobj) { box = dynamic_cast(vdkobj); if(!box) mi = dynamic_cast(vdkobj); if(box) hasChilds = box->boxlist.size() > 0; else if(mi) hasChilds = mi->boxlist.size() > 0; } // gui widgets inner canvases must be neglected if(vdkobj && vdkobj->isA() != vdkbcanvas_class) { objname = (char*) vdkobj->Name(); child = tree->AddNode(&objname, root, hasChilds ? true : false, hasChilds ? false : true, box ? container_xpm : widget_xpm, box ? container_xpm : widget_xpm); if(child) gtk_ctree_node_set_row_data(GTK_CTREE(tree->CustomWidget()), child, (gpointer) vdkobj); } // recurs on inner boxes or menu items (if any) if(vdkobj && box && hasChilds) { VDKBEventContainer* box = (VDKBEventContainer*) vdkobj; RecursiveLoadTree(box->boxlist,tree,child); } else if(vdkobj && mi && hasChilds) RecursiveLoadTree(mi->boxlist,tree,child); else if(vdkobj && dynamic_cast(vdkobj)) { VDKBMenuItem* item = (VDKBMenuItem*) vdkobj; if(item) RecursiveLoadTree(item->boxlist,tree,child); } } } /* */ void VDKBObjectInspector::LoadTree(VDKBGuiForm* owner) { char *objname, *formname; char name[128]; strcpy(name,(char*) owner->Name()); name[0] = toupper(name[0]); formname = name; // set static activeOwner activeOwner = owner; WidgetsTree->Clear(); WidgetsTree->Freeze(); VDKTreeNode root = WidgetsTree->AddNode(&formname, NULL, owner->InnerBox()->boxlist.size() > 0 ? true : false, owner->InnerBox()->boxlist.size() > 0 ? false : true, mininewform_xpm, mininewform_xpm); if(root) gtk_ctree_node_set_row_data(GTK_CTREE(WidgetsTree->CustomWidget()), root, (gpointer) NULL); EventBoxListIterator li(owner->InnerBox()->boxlist); for(;li;li++) { bool hasChilds = false; VDKTreeNode child = NULL; VDKBEventContainer* box = NULL; VDKBMenuItem* mi = NULL; VDKObject* object = li.current(); VDKBObject* vdkobj = dynamic_cast(object); if(vdkobj) { box = dynamic_cast(vdkobj); if(!box) mi = dynamic_cast(vdkobj); if(box) hasChilds = box->boxlist.size() > 0; else if(mi) hasChilds = mi->boxlist.size() > 0; } if(vdkobj && vdkobj->isA() != vdkbcanvas_class) { objname = (char*) vdkobj->Name(); child = WidgetsTree->AddNode(&objname, root, hasChilds ? true : false, hasChilds ? false : true, box ? container_xpm : widget_xpm, box ? container_xpm : widget_xpm); if(child) gtk_ctree_node_set_row_data(GTK_CTREE(WidgetsTree->CustomWidget()), child, (gpointer) vdkobj); } if(box && hasChilds) RecursiveLoadTree(box->boxlist,WidgetsTree,child); else if(mi && hasChilds) RecursiveLoadTree(mi->boxlist,WidgetsTree,child); } WidgetsTree->Thaw(); } //////////////////////////////////////////////////////////////////////// /* * GtkFontSelection */ void font_selection_ok (GtkWidget *w, GtkFontSelectionDialog *fs) { selected_font = gtk_font_selection_dialog_get_font_name (fs); gtk_widget_destroy (GTK_WIDGET (fs)); /* This is needed to get out of gtk_main */ gtk_main_quit (); } /* */ void font_selection_cancel (GtkWidget *w, GtkFontSelectionDialog *fs) { selected_font = NULL; gtk_widget_destroy (GTK_WIDGET (fs)); gtk_main_quit (); } void create_font_selection (void) { GtkWidget *window = NULL; window = gtk_font_selection_dialog_new (_("Font Selection Dialog")); // gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE); gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &window); gtk_signal_connect ( GTK_OBJECT (GTK_FONT_SELECTION_DIALOG (window)->ok_button),"clicked", GTK_SIGNAL_FUNC(font_selection_ok), GTK_FONT_SELECTION_DIALOG (window) ); gtk_signal_connect ( GTK_OBJECT (GTK_FONT_SELECTION_DIALOG (window)->cancel_button),"clicked", GTK_SIGNAL_FUNC(font_selection_cancel), GTK_FONT_SELECTION_DIALOG (window) ); /* Set window as modal */ gtk_window_set_modal (GTK_WINDOW(window),TRUE); if(window) gtk_widget_show (window); /* wait until dialog get destroyed */ gtk_main(); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_orderdlg.cc0000644000000000000000000000717307252426144014651 /* * =========================== * VDK Builder * Version 1.0.3 * November 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include DEFINE_SIGNAL_MAP(Vdkb_reorderdlgForm,VDKForm) ON_SIGNAL(insertBtn,clicked_signal,OninsertBtnClick), ON_SIGNAL(cancelBtn,clicked_signal,OncancelBtnClick) END_SIGNAL_MAP /* main form setup */ void Vdkb_reorderdlgForm::GUISetup(void) { SetSize(150,210); Title = _("Reordering widgets"); vbox1 = new VDKBox(this,v_box); Add(vbox1,0,1,1,0); char* widgetListTitles[] = { N_("Contained widgets") }; char* p = _(widgetListTitles[0]); widgetList = new VDKCustomList(this,1, &p, (GtkSelectionMode) 0); widgetList->SetSize(138,173); widgetList->BorderShadow = (GtkShadowType) shadow_in; vbox1->Add(widgetList,0,1,1,0); separator0 = new VDKSeparator(this,h_separator); separator0->Enabled = false; vbox1->Add(separator0,0,0,0,0); separator0->Visible = false; hbox2 = new VDKBox(this,h_box); vbox1->Add(hbox2,0,1,1,0); hbox2->BorderWidth(0); insertBtn = new VDKCustomButton(this,(char*) NULL, _("_Insert"), 16,(GtkPositionType) 0); insertBtn->SetTip(_("Select a widget, new widget will be inserted in that position")); hbox2->Add(insertBtn,0,1,1,0); cancelBtn = new VDKCustomButton(this,(char*) NULL, _("_Cancel"),16,(GtkPositionType) 0); hbox2->Add(cancelBtn,0,1,1,0); } /* form constructor */ Vdkb_reorderdlgForm::Vdkb_reorderdlgForm(VDKForm* owner, EventBoxList* boxlist, int* pos, char* title): VDKForm(owner,title),boxlist(boxlist),pos(pos) { } /* form destructor */ Vdkb_reorderdlgForm::~Vdkb_reorderdlgForm() { } /* form setup */ void Vdkb_reorderdlgForm::Setup(void) { GUISetup(); // vdkb gui setup // put your code below here EventBoxListIterator li(*boxlist); for(;li;li++) { VDKObject* obj = li.current(); VDKBObject* vdkbobj = dynamic_cast(obj); if(vdkbobj) { char* widgetName = (char*) vdkbobj->Name(); widgetList->AddRow(&widgetName); } } } // signal response method bool Vdkb_reorderdlgForm::OninsertBtnClick(VDKObject* sender) { int selected = widgetList->Selected.Row(); if(selected >= 0) *pos = selected; else *pos = -1; Close(); return true; } // signal response method bool Vdkb_reorderdlgForm::OncancelBtnClick(VDKObject* sender) { *pos = -1; Close(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_paned.cc0000644000000000000000000003263207272557520014141 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include //#include #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBPaned // put here vdk class name string #define VDK_CLASS "VDKPaned" // put here vdk class name #define VDK_ANCESTOR VDKPaned // put here here the widget will be named // (name+counter) #define VDK_WIDGET "paned" extern char* wi_widget_prompts[]; static char buff[128]; int CLASS::Counter = 0; DEFINE_EVENT_LIST(CLASS,VDKBEventContainer); DEFINE_SIGNAL_LIST(CLASS,VDKBEventContainer); /* */ bool CLASS:: DelBox(VDKObject* sender) { // destroy inner gtk+ placeholder widget gtk_widget_destroy(container); // call ancestor delete box VDKBEventContainer::DelBox(sender); // notify to inspector that object was deleted VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) prjman->objInspector->SetActive(NULL); } return true; } /* */ bool CLASS::SetBoxSize(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { ownerform->SetBoxSize(NULL); } return true; } //=========================================== /* */ CLASS::CLASS(char* name, VDKForm* owner, int mode): VDKBEventContainer(name,owner) { Counter++; VDKBObject::object = this; VDKBEventContainer::mode = mode; Init(); } /* */ CLASS::CLASS(char* name,VDKBEventContainer* outer, int mode): VDKBEventContainer(name,outer->Owner()) { VDKBObject::object = this; Counter++; outerbox = outer; VDKBEventContainer::mode = mode; Init(); } /* */ void CLASS::Init() { AddBox(); // makes a pop menu popmenu = new VDKBContainerPopMenu(this); delBox = new VDKMenuItem(popmenu,_("Remove paned")); setsize = new VDKMenuItem(popmenu,_(wi_widget_prompts[19])); selectparent = new VDKMenuItem(popmenu,_(wi_widget_prompts[20])); SignalConnect(selectparent,"activate", &CLASS::SelectParentContainer); SignalConnect(delBox,"activate",&CLASS::DelBox); SignalConnect(setsize,"activate",&CLASS::SetBoxSize); /* assign this as parent so this can receive signals */ popmenu->Parent(this); popmenu->Setup(); /* better add it to owner, so will be surely destroyed even if never popped */ Owner()->AddItem(popmenu); CONNECT_COMMON_EVENTS; SetSize(100,100); } /* */ void CLASS::AddBox() { widget = sigwid = container = mode == v_box ? gtk_vpaned_new() : gtk_hpaned_new(); gtk_widget_show(container); } /* extra args unused */ void CLASS::AddWidget(VDKObject* obj, int justify, int expand, int fill , int padding, bool forceArgs) { if(justify == r_justify) gtk_paned_add2(GTK_PANED(container),obj->Widget()); else gtk_paned_add1(GTK_PANED(container),obj->Widget()); VDKBEventContainer::Add(obj,justify,expand,fill,padding); } /* extra args used */ void CLASS::Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { AddWidget(wid,justify, expand, fill , padding,forceArgs); } /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget 4 - unuseful call */ int CLASS::MakeWidgetH(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable frame counter // to ensure unicity int result = 0; CLASS* paned = NULL; VDKBEventBox *box1 = NULL; VDKBEventBox *box2 = NULL; if(owner->Active) { for(sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; CLASS::Counter++) sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); paned = new CLASS(buff,owner,h_box); for(sprintf(buff,"vbox%d",VDKBEventBox::Counter); owner->ChildWithName(buff) != (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"vbox%d",VDKBEventBox::Counter); box1 = new VDKBEventBox(buff,paned); box1->SetPropValue(JUSTIFY_INTERNAL,"c_justify"); // to pane 1 paned->AddWidget(box1,c_justify,true,true,true,true); for(sprintf(buff,"vbox%d",VDKBEventBox::Counter); owner->ChildWithName(buff) != (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"vbox%d",VDKBEventBox::Counter); box2 = new VDKBEventBox(buff,paned); box2->SetPropValue(JUSTIFY_INTERNAL,"2"); // to pane 2 paned->AddWidget(box2,r_justify,true,true,true,true); VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { if(ev && dynamic_cast(container)) { GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); paned->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); paned->SetPropValue( EXPAND_INTERNAL,buff); // others than justify and flag unuseful container->AddWidget(paned,int(event->x), int(event->y), true,true,true); } else container->AddWidget(paned); paned->outerbox = container; } else if(! owner->Active->AddToParent(paned,ev)) // target isn't a container result = 2; } else // no active widget result = 3; // 0 on success if(result && paned) paned->Destroy(); return result; } int CLASS::MakeWidgetV(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable frame counter // to ensure unicity int result = 0; CLASS* paned = NULL; VDKBEventBox *box1 = NULL; VDKBEventBox *box2 = NULL; for(sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; CLASS::Counter++) sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); paned = new CLASS(buff,owner,v_box); for(sprintf(buff,"vbox%d",VDKBEventBox::Counter); owner->ChildWithName(buff) != (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"vbox%d",VDKBEventBox::Counter); box1 = new VDKBEventBox(buff,paned); box1->SetPropValue(JUSTIFY_INTERNAL,"1"); // to pane 1 paned->AddWidget(box1,c_justify,true,true,true,true); for(sprintf(buff,"vbox%d",VDKBEventBox::Counter); owner->ChildWithName(buff) != (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"vbox%d",VDKBEventBox::Counter); box2 = new VDKBEventBox(buff,paned); box2->SetPropValue(JUSTIFY_INTERNAL,"r_justify"); // to pane 2 paned->AddWidget(box2,r_justify,true,true,true,true); if(owner->Active) { VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { if(ev && dynamic_cast(container)) { GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); paned->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); paned->SetPropValue( EXPAND_INTERNAL,buff); // others than justify and flag unuseful container->AddWidget(paned,int(event->x), int(event->y), true,true,true); } else container->AddWidget(paned); paned->outerbox = container; } else if(! owner->Active->AddToParent(paned,ev)) // target isn't a container result = 2; } else // no active widget result = 3; // 0 on success if(result) { if(box1) box1->Destroy(); if(box2) box2->Destroy(); if(paned) paned->Destroy(); } return result; } //////////////////////////////////////////////////////////////////// /* */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { VDKBEventContainer::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\tmode:%s;", mode == v_box ? "v_box" : "h_box"); } char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_mode[16]; char obj_name[128]; char obj_parent[128]; char temp[256]; char bw[16]; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_mode,buffer,"mode:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return NULL; else source = new char[1024]; sprintf(temp,"\n%s = new VDKPaned(this,%s);" ,obj_name,obj_mode); strcpy(source,temp); // get size VDKPoint size = parser.Size(buffer); if(size.X() > 0 || size.Y() > 0) { sprintf(temp,"\n%s->SetSize(%d,%d);",obj_name,size.X(),size.Y()); strcat(source,temp); } if(strcmp(obj_parent,NIHIL_PROP)) sprintf(temp,"\n%s->Add(%s",obj_parent,obj_name); else sprintf(temp,"\nAdd(%s",obj_name); strcat(source,temp); // prepares arguments for add widget to container char justify[16],expand[16],fill[16],padding[16]; if(parser.GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && parser.GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && parser.GetParam(fill,buffer,PROP_FILL_INTERNAL) && parser.GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(temp,",%s,%s,%s,%s);", justify,expand,fill,padding); strcat(source,temp); } else { sprintf(temp,");"); strcat(source,temp); } if(parser.GetParam(bw,buffer,PROP_BORDERWIDTH) && strcmp(bw,NIHIL_PROP)) { sprintf(temp,"\n%s->BorderWidth(%s);",obj_name,bw); strcat(source,temp); } return source; } /* */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char obj_mode[16]; CLASS* box; int mode; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_mode,buffer,"mode:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return false; // get mode and size mode = !strcmp(obj_mode,"h_box") ? h_box : v_box; VDKPoint size = parser.Size(buffer); // get packing args int justification = l_justify; int expand=0,fill=0,padding=0; int bw; // border width char arg[32]; if(parser.GetParam(arg,buffer,PROP_JUSTIFY_INTERNAL)) justification = atoi(arg); if(parser.GetParam(arg,buffer,PROP_EXPAND_INTERNAL)) expand = atoi(arg); if(parser.GetParam(arg,buffer,PROP_FILL_INTERNAL)) fill = atoi(arg); if(parser.GetParam(arg,buffer,PROP_PADDING_INTERNAL)) padding = atoi(arg); if(parser.GetParam(arg,buffer,PROP_BORDERWIDTH) && strcmp(arg,NIHIL_PROP)) bw = atoi(arg); else bw = -1; // no parent, widget will be added to owner form innerbox if(!strcmp(obj_parent,NIHIL_PROP)) { box = new CLASS(obj_name,owner->InnerBox(),mode); owner->AddWidget(box,justification,expand,fill,padding); } // get parent container address else { VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { box = new CLASS(obj_name,container,mode); container->AddWidget(box,justification,expand,fill,padding,true); box->outerbox = container; } else // FIX ME: user warning return false; } // call ancestor to set common properties VDKBObject::CreateWidget(box,buffer,parser); if(size.X() > 0 || size.Y() > 0) box->ObjectFromVDK()->SetSize(size.X(),size.Y()); if(bw >= 0) { box->BorderWidth(bw); box->SetPropValue(BORDERWIDTH,arg); } return true; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* This is called by object inspector when a widget is selected by user, thus to allow widget to set his own property controls. */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { return VDKBEventContainer::ExtraWidget(isp); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_parser.cc0000644000000000000000000010616210022114071014317 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include #include // #include #include #include #include #include #include #include #include #include #include #include #include #include // #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include // #include // #include #include #include #include #if HAVE_GNOME #include #include #include #endif #if USE_XDB #include #include #include #include #include #endif #include static char buff[256]; extern VDKBuilder* TheApp; extern char* source_prompts[]; /* TABLE: contains mapping between vdk class names and static class members of each class Used by parser to make widgets during .frm parsing */ struct { char *Class; char* (*create_source)(char* buffer,VDKBParser& parser); bool (*create_widget)(VDKBGuiForm* owner, char* buffer,VDKBParser& parser); } vdkclass[] = { // containers { "VDKBox", VDKBEventBox::CreateSource, VDKBEventBox::CreateWidget }, { "VDKFrame", VDKBFrame::CreateSource, VDKBFrame::CreateWidget }, { "VDKScrolled", VDKBScrolled::CreateSource, VDKBScrolled::CreateWidget }, { "VDKPaned", VDKBPaned::CreateSource, VDKBPaned::CreateWidget }, { "VDKMenubar", VDKBMenubar::CreateSource, VDKBMenubar::CreateWidget }, { "VDKNotebook", VDKBGuiNotebook::CreateSource, VDKBGuiNotebook::CreateWidget }, { "VDKToolbar", VDKBToolbar::CreateSource, VDKBToolbar::CreateWidget }, { "VDKTable", VDKBTable::CreateSource, VDKBTable::CreateWidget }, { "VDKRadioButtonGroup", VDKBRadioButtonGroup::CreateSource, VDKBRadioButtonGroup::CreateWidget }, { "VDKHandleBox", VDKBHandleBox::CreateSource, VDKBHandleBox::CreateWidget }, // { "VDKPacker", // VDKBPacker::CreateSource, VDKBPacker::CreateWidget }, { "VDKFixed", VDKBFixed::CreateSource, VDKBFixed::CreateWidget }, // buttons // { "VDKLabelButton", // VDKBLabelButton::CreateSource, VDKBLabelButton::CreateWidget }, // { "VDKPixmapButton", // VDKBPixmapButton::CreateSource, VDKBPixmapButton::CreateWidget }, { "VDKCheckButton", VDKBCheckButton::CreateSource, VDKBCheckButton::CreateWidget }, { "VDKRadioButton", VDKBRadioButton::CreateSource, VDKBRadioButton::CreateWidget }, { "VDKSpinButton", VDKBSpinButton::CreateSource, VDKBSpinButton::CreateWidget }, { "VDKCustomButton", VDKBCustomButton::CreateSource, VDKBCustomButton::CreateWidget }, // texts { "VDKLabel", VDKBTextLabel::CreateSource, VDKBTextLabel::CreateWidget }, { "VDKTextView", VDKBTextWidget::CreateSource, VDKBTextWidget::CreateWidget }, { "VDKEntry", VDKBEntry::CreateSource, VDKBEntry::CreateWidget }, // misc { "VDKCanvas", VDKBGuiCanvas::CreateSource, VDKBGuiCanvas::CreateWidget }, { "VDKPixmap", VDKBPixmap::CreateSource, VDKBPixmap::CreateWidget }, { "VDKImage", VDKBImage::CreateSource, VDKBImage::CreateWidget }, { "VDKMenuItem", VDKBMenuItem::CreateSource, VDKBMenuItem::CreateWidget }, { "VDKMenu", VDKBMenu::CreateSource, VDKBMenu::CreateWidget }, { "VDKCustomList", VDKBCustomList::CreateSource, VDKBCustomList::CreateWidget }, { "VDKCombo", VDKBCombo::CreateSource, VDKBCombo::CreateWidget }, { "VDKCustomTree", VDKBGuiCustomTree::CreateSource, VDKBGuiCustomTree::CreateWidget }, { "VDKSeparator", VDKBSeparator::CreateSource, VDKBSeparator::CreateWidget }, { "VDKProgressBar", VDKBProgressBar::CreateSource, VDKBProgressBar::CreateWidget }, { "VDKStatusbar", VDKBStatusbar::CreateSource, VDKBStatusbar::CreateWidget }, // { "VDKGrid", // VDKBGrid::CreateSource, VDKBGrid::CreateWidget }, { "VDKSlider", VDKBSlider::CreateSource, VDKBSlider::CreateWidget }, { "VDKPlaceHolder", VDKBPlaceHolder::CreateSource, VDKBPlaceHolder::CreateWidget }, // { "VDKTreeView", // VDKBTreeView::CreateSource, VDKBTreeView::CreateWidget }, // gnome #if HAVE_GNOME { "VDKGnomeAppBar", VDKBGnomeAppBar::CreateSource, VDKBGnomeAppBar::CreateWidget }, {"VDKGnomeDateEdit", VDKBGnomeDateEdit::CreateSource, VDKBGnomeDateEdit::CreateWidget }, {"VDKGnomeEntry", VDKBGnomeEntry::CreateSource, VDKBGnomeEntry::CreateWidget }, #endif // xdb support #if USE_XDB {"VDKXEntry", VDKBXEntry::CreateSource, VDKBXEntry::CreateWidget }, {"VDKXCheckButton", VDKBXCheckButton::CreateSource, VDKBXCheckButton::CreateWidget }, {"VDKXMemo", VDKBXMemo::CreateSource, VDKBXMemo::CreateWidget }, {"VDKXCustomList", VDKBXCustomList::CreateSource, VDKBXCustomList::CreateWidget }, #endif // map end { NULL,NULL,NULL } }; ////////////////////////////////////////////////////////////////// /* */ char* CreateSource(char* classname, char* buffer, VDKBParser& parser) { int t; VDKBAbstractComponentInterface* interface = NULL; for(t=0; vdkclass[t].Class; t++) if(!strcmp(classname,vdkclass[t].Class)) return vdkclass[t].create_source(buffer,parser); // statically unsopported widget // try to seek it into plugins list interface = TheApp->PluginList().Interface(classname); if(interface) return interface->CreateSource(buffer,parser); else return (char*) NULL; } /* */ bool CreateWidget(VDKBGuiForm* owner, char* classname, char* buffer, VDKBParser& parser) { int t; VDKBAbstractComponentInterface* interface = NULL; for(t=0; vdkclass[t].Class; t++) if(!strcmp(classname,vdkclass[t].Class)) return vdkclass[t].create_widget(owner,buffer,parser); // statically unsopported widget // try to seek it into plugins list interface = TheApp->PluginList().Interface(classname); if(interface) return interface->CreateWidget(owner,buffer,parser); else return false; } // in vdkb_object.cc extern char* vdkbclass_names[]; extern int ClassTypeLookup(char* word); //============================== static void Filter(char* s, char* filter) { bool flag = false; char* p = s; for(;*s;s++) { if(strchr(filter,*s)) { if(flag && (*s == ' ')) *p++ = *s; if(*s == '\"') flag = flag ? false : true; } else *p++ = *s; } *p = '\0'; } //////////////////////////////////////// void VDKBProject::WriteGuiHeaderParsingFrm(FILE* fp, char* fname) { VDKBParser parser(fname); char arg[256]; char* object; char obj_type[128]; char obj_name[128]; char slot[64]; char declare[12]; bool isUpper = false; // if first project anme char is upper // has the parser correctly loaded and filtered fname ? if(! parser.Buffer()) return; char* name; char* memname = new char[strlen(fname)+1]; strcpy(memname,fname); char* p = get_shortfilename(memname); if(p) name = p; else { delete[] memname; return ; } p = get_extension(name); if(p) *p = '\0'; // write developer header / gpl license // write file header time_t ltime; time(<ime); struct tm * lct = localtime(<ime); fprintf(fp,source_prompts[34],(char*)options.author); fprintf(fp,source_prompts[35],(char*)options.email); if(options.gpld) fprintf(fp,source_prompts[36]); fprintf(fp,source_prompts[37],(char*)options.author,1900+lct->tm_year); fprintf(fp,source_prompts[38]); fprintf(fp,source_prompts[2],name); // search for background pixmap if any p = parser.Buffer(); if(parser.GetParam(arg,p,PROP_BACKPIX) && strcmp(arg,NIHIL_PROP)) fprintf(fp,"\nprivate: VDKRawPixmap* _backpix;"); // writes widgets pointers declaration while( (p = strstr(p,"[object]")) ) { sprintf(arg,"[object]{"); object = ExtractSection(p,arg,"}"); if(object) { if(parser.GetObjectClass(object,obj_type) && parser.GetObjectName(object,obj_name)) { // checks if is a place holder if(!strcmp(obj_type,"VDKPlaceHolder")) { // extract obj type from place holder ctor char ctor[256]; *ctor = '\0'; if(parser.GetParam(ctor,object,"Ctor:")) { int t; for(t=0; ctor[t] && ctor[t] != '('; t++); ctor[t] = '\0'; } if(*ctor) strcpy(obj_type,ctor); } // checks if is an event-aware box else if(!strcmp(obj_type,"VDKBox") && parser.GetParam(arg,object,"event-aware:") && !strcmp(arg,CHECK_TRUE) ) strcpy(obj_type,"VDKEventBox"); // checks if is a docker else if(!strcmp(obj_type,"VDKBox") && parser.GetParam(arg,object,"dockable:") && !strcmp(arg,CHECK_TRUE) ) strcpy(obj_type,"VDKDockerBox"); // actually writes widget declaration // checking if should be declared as public or not bool publicDec; if(parser.GetParam(arg,object,PROP_DECLARE_PUBLIC) && !strcmp(arg,CHECK_YES)) publicDec = true; else publicDec = false; fprintf(fp,"\n%s %s* %s;", publicDec ? "public:" :"protected:", obj_type, obj_name); } p+=strlen(object); delete[] object; } else break; } p = parser.Buffer(); // write form events handlers declaration object = parser.GetObject(name); if(object) { if(parser.GetParam(arg,object,"OnFormActivate:") && !strcmp(arg,CHECK_TRUE)) fprintf(fp,"\nvoid OnFormActivate(VDKForm* sender, bool in_out);"); if(parser.GetParam(arg,object,"OnExpose:") && !strcmp(arg,CHECK_TRUE)) fprintf(fp,"\nvoid OnExpose(VDKForm* sender, GdkRectangle area);"); if(parser.GetParam(arg,object,"OnShow:") && !strcmp(arg,CHECK_TRUE)) fprintf(fp,"\nvoid OnShow(VDKForm* sender);"); if(parser.GetParam(arg,object,"OnChildClosing:") && !strcmp(arg,CHECK_TRUE)) fprintf(fp,"\nvoid OnChildClosing(VDKForm* child);"); if(parser.GetParam(arg,object,"OnIconize:") && !strcmp(arg,CHECK_TRUE)) fprintf(fp,"\nvoid OnIconize(VDKForm* sender);"); if(parser.GetParam(arg,object,"OnRestore:") && !strcmp(arg,CHECK_TRUE)) fprintf(fp,"\nvoid OnRestore(VDKForm* sender);"); if(parser.GetParam(arg,object,"OnMove:") && !strcmp(arg,CHECK_TRUE)) fprintf(fp,"\nvoid OnMove(VDKForm* sender);"); if(parser.GetParam(arg,object,"OnResize:") && !strcmp(arg,CHECK_TRUE)) fprintf(fp,"\nvoid OnResize(VDKForm* sender, VDKPoint& new_size);"); if(parser.GetParam(arg,object,"OnConfigure:") && !strcmp(arg,CHECK_TRUE)) fprintf(fp,"\nvoid OnConfigure(VDKForm* sender);"); if(parser.GetParam(arg,object,"OnRealize:") && !strcmp(arg,CHECK_TRUE)) fprintf(fp,"\nvoid OnRealize(VDKForm* sender);"); if(parser.GetParam(arg,object,"CanClose:") && !strcmp(arg,CHECK_TRUE)) fprintf(fp,"\nbool CanClose();"); delete[] object; } // fprintf(fp,"\npublic:"); // write signal map declaration isUpper = isupper(name[0]); if(!isUpper) name[0] = toupper(name[0]); if( strstr(p,"[connect]")) fprintf(fp,"\nDECLARE_SIGNAL_MAP(%sForm);",name); p = parser.Buffer(); // write response function declarations while( (p = strstr(p,"[connect]")) ) { sprintf(arg,"[connect]{"); object = ExtractSection(p,arg,"}"); if(object) { if(parser.GetParam(slot,object,"slot:") && parser.GetParam(declare,object,"declare:")) { if(atoi(declare)) fprintf(fp,"\nbool %s(VDKObject* sender);",slot); } p+=strlen(object); delete[] object; } else break; } fprintf(fp,source_prompts[3]); fprintf(fp,"\nDECLARE_SIGNAL_LIST(%sForm);",name); fprintf(fp,"\nDECLARE_EVENT_LIST(%sForm);",name); fprintf(fp,"\n// declares two static used to initialize"); fprintf(fp,"\n// form display type and initial position"); fprintf(fp,"\nstatic GtkWindowType %sForm::%s;",name,DISPLAY_TYPE); fprintf(fp,"\nstatic GtkWindowPosition %sForm::%s;",name,WINPOS); // char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; if(!isUpper) name[0] = tolower(name[0]); fprintf(fp,source_prompts[0], SOURCE_END_MARK, name, h_ext); fclose(fp); delete[] memname; } /* */ void VDKBProject::WriteGUIBoxesSetup(VDKBParser& parser, FILE* fp) { char arg[64]; char* object; char obj_name[128]; char obj_type[64]; char* source = NULL; //char* parent; char* p = parser.Buffer(); while( (p = strstr(p,"[object]")) ) { sprintf(arg,"[object]{"); object = ExtractSection(p,arg,"}"); if(object) { if(parser.GetObjectClass(object,obj_type) && parser.GetObjectName(object,obj_name) && ( source = CreateSource(obj_type,p,parser) )) { fprintf(fp,source); delete source; } p+=strlen(object); delete[] object; } else break; } } //////////////////////////////////////// static char* form_display_types[] = { "GTK_WINDOW_TOPLEVEL", "GTK_WINDOW_POPUP", 0 }; static char* win_positions[] = { "GTK_WIN_POS_NONE", "GTK_WIN_POS_CENTER", "GTK_WIN_POS_MOUSE", "GTK_WIN_POS_CENTER_ALWAYS", 0 }; void VDKBProject::WriteGUISetupParsingFrm(FILE* fp, char* fname) { VDKBParser parser(fname); char* property; // has the parser correctly loaded and filtered fname ? if(! parser.Buffer()) return; bool nls_support = options.nls_support == VDKString("yes"); char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; /////////////////////////////// // extract form name from fname char* name; char* memname = new char[strlen(fname)+1]; bool isUpper = false; strcpy(memname,fname); char* p = get_shortfilename(memname); if(p) name = p; else { delete memname; return ; } // write developer header / gpl license // write file header time_t ltime; time(<ime); struct tm * lct = localtime(<ime); fprintf(fp,source_prompts[34],(char*)options.author); fprintf(fp,source_prompts[35],(char*)options.email); if(options.gpld) fprintf(fp,source_prompts[36]); fprintf(fp,source_prompts[37],(char*)options.author,1900+lct->tm_year); fprintf(fp,source_prompts[38]); if(nls_support) fprintf(fp,"#if HAVE_CONFIG_H\n\ #include \n#endif\n#if !HAVE_GNOME\n#if ENABLE_NLS\n\ #include \n#define _(str) \\\n\ ( g_utf8_validate(gettext(str),-1,NULL) ? \\\n\ gettext(str) : \\\n\ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL))\n#define N_(str) str\n\ #else\n#define _(str) str\n#define N_(str) str\n#endif\n#endif\n"); p = get_extension(memname); if(p) *p = '\0'; fprintf(fp,"\n#include <%s.%s>",name,h_ext); isUpper = isupper(name[0]); if(!isUpper) name[0] = toupper(name[0]); // write static display type and initial form position char arg[8]; int dst = 0; p = parser.Buffer(); fprintf(fp,"\n//define static display type and initial form position"); if(parser.GetParam(arg,p,PROP_DISPLAY_TYPE)) dst = atoi(arg); dst = dst <= 1 ? dst : 0; fprintf(fp,"\nGtkWindowType %sForm::%s = %s;",name,DISPLAY_TYPE,form_display_types[dst]); if(parser.GetParam(arg,p,PROP_WINPOS)) dst = atoi(arg); dst = dst <= 3 ? dst : 0; fprintf(fp,"\nGtkWindowPosition %sForm::%s = %s;",name,WINPOS,win_positions[dst]); // write static table fprintf(fp,source_prompts[4]); fprintf(fp,"\nDEFINE_SIGNAL_LIST(%sForm,%s);", name, Type == vdk_project ? "VDKForm" : "VDKForm" /*"VDKGnomeForm"*/); fprintf(fp,"\nDEFINE_EVENT_LIST(%sForm,%s);", name, Type == vdk_project ? "VDKForm" : "VDKForm" /*"VDKGnomeForm"*/); if(strstr(p,"[connect]")) { char* object; char slot[64]; char sender[64]; char signal[64]; char arg[32]; fprintf(fp,source_prompts[5]); fprintf(fp,"\nDEFINE_SIGNAL_MAP(%sForm,%s)", name, Type == vdk_project ? "VDKForm" : "VDKForm" /*"VDKGnomeForm"*/); bool flag = false; while( (p = strstr(p,"[connect]")) ) { sprintf(arg,"[connect]{"); object = ExtractSection(p,arg,"}"); if(object) { if(flag) fprintf(fp,","); flag = true; if(parser.GetParam(sender,object,"sender:") && parser.GetParam(signal,object,"signal:") && parser.GetParam(slot,object,"slot:")) { sprintf(buff,"ON_SIGNAL(%s,%s,%s)", sender, signal, slot); fprintf(fp,"\n%s",buff); p+=strlen(object); delete object; } } else break; } fprintf(fp,"\nEND_SIGNAL_MAP"); } fprintf(fp,source_prompts[6]); fprintf(fp,"\nvoid\n%sForm::GUISetup(void)\n{", name); if(!isUpper) name[0] = tolower(name[0]); ///////////////////////////////////////////// char* object = parser.GetObject(name); if(!object) { // error, just write an useless form fprintf(fp,source_prompts[7]); fprintf(fp,"\n\tTitle = \"%s\";",name); fprintf(fp,"\n\tSetSize(400,300);"); fprintf(fp,"\n}\n"); fprintf(fp,source_prompts[0],SOURCE_END_MARK, name, cc_ext); fclose(fp); delete[] memname; return; } //////////////////////// BACKGROUND /////////////////////////// if( (property = parser.GetParam(buff,object,PROP_NORMALBACKGROUND)) && strcmp(property,NIHIL_PROP)) fprintf(fp,"\n\tNormalBackground = VDKRgb(%s);",buff); //////////////////////// FOREGROUND /////////////////////////// if( (property = parser.GetParam(buff,object,PROP_FOREGROUND)) && strcmp(property,NIHIL_PROP)) fprintf(fp,"\n\tForeground = VDKRgb(%s);",buff); //////////////////////// FONT /////////////////////////// if( (property = parser.GetParam(buff,object,PROP_FONT)) && strcmp(property,NIHIL_PROP)) fprintf(fp,"\n\tFont = new VDKFont(this,\"%s\");",buff); //////////////////////// CURSOR /////////////////////////// if( (property = parser.GetParam(buff,object,PROP_CURSOR)) && strcmp(property,NIHIL_PROP)) fprintf(fp,"\n\tCursor = %s;",buff); //////////////////////// SIZE /////////////////////////// if( (property = parser.GetParam(buff,object,PROP_FREEZE_USIZE)) && !strcmp(property,CHECK_TRUE)) { VDKPoint pt = parser.Size(object); if(pt.X() > 0) //fprintf(fp,"\n\tSetDefaultSize(VDKPoint(%d,%d));",pt.X(),pt.Y()); fprintf(fp,"\n\tSetSize(%d,%d);",pt.X(),pt.Y()); else fprintf(fp,"\n\tSetSize(400,300);"); } ////////////////////// TITLE //////////////////////////// if(parser.GetParam(buff,object,"Title:")) { if(options.nls_support == VDKString("yes")) fprintf(fp,"\n\tTitle = _(\"%s\");",buff); else fprintf(fp,"\n\tTitle = \"%s\";",buff); } else fprintf(fp,"\n\tTitle = \"%s\";",name); ////////////////////// GNOME APP BAR ///////////////////// #if HAVE_GNOME // if(Type == vdk_gnome_project) // fprintf(fp,"\n\tAdd(gnome_bar = new VDKGnomeAppBar(this));"); #endif ////////////////////// BACKGROUND PIXMAP////////// if(parser.GetParam(buff,object,PROP_BACKPIX) && strcmp(buff,NIHIL_PROP)) { fprintf(fp,"\n_backpix = new VDKRawPixmap(this,\"%s\");", buff); fprintf(fp,"\nif(_backpix) BackgroundPixmap = _backpix ;"); } //////////////////////////////////////////////////// WriteGUIBoxesSetup(parser,fp); /////////////////////////////////////////////////// ////////////////////// FOCUS WIDGET /////////////// if(parser.GetParam(buff,object,PROP_FOCUSWIDGET) && strcmp(buff,NIHIL_PROP)) fprintf(fp,"\n\tFocusWidget = %s;",buff); ////////////////////////////////////////////////// fprintf(fp,"\n}\n"); #if USE_XDB { char* local = new char[strlen(name)+1]; strcpy(local,name); // local[0] = toupper(local[0]); WriteXDBSetup(fp,local); delete[] local; } #endif fprintf(fp,source_prompts[0], SOURCE_END_MARK, name, cc_ext); fclose(fp); delete[] object; delete[] memname; } #if USE_XDB #include #include /* writes database setup. Preconditions: source code will be written if: - the interested module is the project main - xdb size is > 0 */ void VDKBProject::WriteXDBSetup(FILE* fp, char* name) { bool isUpper = false; VDKXDatabase* xdb = TheApp->theXdb; TableList* tlist = xdb->TList(); /* if(tlist->size() <= 0) return; */ /* isUpper = isupper(name[0]); if(!isUpper) name[0] = tolower(name[0]); */ // checks module name against project name // method will be written only on the main module VDKString prjname = Name; char* p = get_extension(prjname); if(p) *p = '\0'; if(strcmp(name,(char*) prjname)) return; if(tlist->size() > 0) fprintf(fp, "\n/*\nVDKXDatabase setup\n\ Initializes all tables and indexes contained into\n\ %s.prj.xdb\n\ and open tables if marked as active.\n\ Notes:\n\ - all path to tables and indexes files\n\ are relative to XDB_DATA_PATH symbolic constant,\n\ change it into %s.h header file if you need\n\ a different path, all data files should be contained\n\ into a single directory however\n\ - method will be empty if no tables are used\n*/\n", name,name); isUpper = isupper(name[0]); if(!isUpper) name[0] = toupper(name[0]); fprintf(fp,"\n#ifdef VDKXDB_SUPPORT"); fprintf(fp,"\nvoid\n%sApp::XDBSetup(void)\n{", name); if(tlist->size() > 0) { fprintf(fp,"\nVDKXTable* table = NULL;"); fprintf(fp,"\nVDKXTableIndex* index = NULL;"); fprintf(fp,"\nVDKString dbname;"); fprintf(fp,"\nVDKString ndxname;"); TableListIterator li(*tlist); // lops into xdb tables for(;li;li++) { VDKXTable* table = li.current(); IndexList* nlist = table->NdxList(); char* dbName = table->Name(); bool active = table->Active; fprintf(fp,"\ndbname = XDB_DATA_PATH;"); fprintf(fp,"\ndbname += \"%s\";",get_shortfilename(dbName)); fprintf(fp,"\ntable = new VDKXTable(xdb,(char*) dbname);"); if(active) fprintf(fp,"\nif(table) table->Open();"); if(nlist->size() > 0) { IndexListIterator ln(*nlist); // loops into table indexes for(;ln;ln++) { char* ndxName = ln.current()->Name(); fprintf(fp,"\nndxname = XDB_DATA_PATH;"); fprintf(fp,"\nndxname += \"%s\";", get_shortfilename(ndxName)); fprintf(fp, "\nindex = new VDKXTableIndex(table,(char*) ndxname);"); if(active) fprintf(fp,"\nif(index) index->Open();"); } } if(active) { fprintf(fp, "\nif(index && table && table->IsOpen())\n table->Order = 0;"); fprintf(fp, "\nif(table && table->IsOpen())\n table->First();"); } } } fprintf(fp,"\n}\n#endif\n"); } #endif /* read form signal file to load form signal list */ void VDKBGuiForm::ReadSignals(VDKBParser& parser) { char arg[64]; char* object; char sender[64]; char signal[64]; char slot[64]; char declare[16]; char* p = parser.Buffer(); SignalList.flush(); while( (p = strstr(p,"[connect]")) ) { sprintf(arg,"[connect]{"); object = ExtractSection(p,arg,"}"); if(object) { if(parser.GetParam(sender,object,"sender:") && parser.GetParam(signal,object,"signal:") && parser.GetParam(slot,object,"slot:") && parser.GetParam(declare,object,"declare:")) { bool b = !strcmp(declare,"1");; VDKBConnection c(sender,signal,slot,b); SignalList.add(c); } p+=strlen(object); delete[] object; } else break; } } /////////////////////////////////////// VDKBParser::~VDKBParser() { if(buffer) delete[] buffer; } //////////////////////////////////////// VDKBParser::VDKBParser(char* fname):fname(fname) { char* filter = "\n\t \"", *p; int c; FILE *fp = fopen(fname,"r"); if(! fp) { buffer = NULL; return; } struct stat info; stat(fname,&info); unsigned int size = info.st_size; buffer = p = new char[size+1]; while( (c = fgetc(fp)) != EOF) *p++ = (char) c; *p ='\0'; fclose(fp); Filter(buffer,filter); } /* */ char* VDKBParser::GetObject(char* name) { char arg[64]; sprintf(arg,"[%s]{",name); return ExtractSection(buffer,arg,"}"); } /* */ char* VDKBParser::GetWidget(char* name) { char arg[128]; sprintf(arg,"[object]{this:%s;",name); return ExtractSection(buffer,arg,"}"); } /* */ char* VDKBParser::GetObjectName(char* object,char* tgt) { return ExtractWord(object,tgt,"this:",";"); } /* */ char* VDKBParser::GetObjectClass(char* object,char* tgt) { return ExtractWord(object,tgt,PARSER_CLASS,";"); } /* */ char* VDKBParser::GetParam( char* tgt, // target char* object, // object buffer char* param) // param name { if(!object) return (char*) NULL; else return ExtractWord(object,tgt,param,";"); } /* */ int VDKBParser::ClassName(char* name) { char local[64]; char* object = GetObject(name); char* word = GetParam(local,object,PARSER_CLASS); if(word) return ClassTypeLookup(word); else return vdkbclass_none; } /* */ VDKPoint VDKBParser::Size(char* object) { char local[64]; VDKPoint p; char* word = GetParam(local,object,PROP_USIZE); if(!word || !strcmp(word,NIHIL_PROP)) return p; char* comma = strchr(word,','); if(comma) { *comma++= '\0'; int x = atoi(word); int y = atoi(comma); p = VDKPoint(x,y); } return p; } /* */ VDKRgb VDKBParser::Color(char*object, char* colortype) { char local[64],*comma; VDKRgb rgb(-1,-1,-1); int red,green,blue; char* word = GetParam(local,object,colortype); if(!word || !strcmp(word,NIHIL_PROP)) return rgb; comma = strchr(word,','); if(comma) { *comma++ = '\0'; red = atoi(word); word = comma; comma = strchr(word,','); if(comma) { *comma++= '\0'; green = atoi(word); blue = atoi(comma); rgb = VDKRgb(red,green,blue); return rgb; } } return rgb; } ///////////////////////////////////////////////// // CODE GENERATION ///////////////////////////////////////////////// /* */ bool VDKBParser::GetNameAndParent(char* pars_buff, char* obj_name, char* obj_parent) { if ( !GetParam(obj_name,pars_buff,PARSER_THIS) || !GetParam(obj_parent,pars_buff, PARSER_PARENT) ) // this or parent not found return false; // no parent widget else if(!strcmp(obj_parent,NIHIL_PROP)) return false; return true; } /* */ void VDKBParser::WriteCodeToPack( char* obj_parent, char* obj_name, char* source, char* buffer, char* tmp, bool viewport) { char justify[16],expand[16],fill[16],padding[16]; if(viewport) { if(GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && GetParam(fill,buffer,PROP_FILL_INTERNAL) && GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(tmp,"\n%s->%s(%s,%s,%s,%s,%s);", obj_parent, STATEMENT_ADD, obj_name,justify,expand,fill,padding); strcat(source,tmp); } else { sprintf(tmp,"\n%s->%s(%s);", obj_parent, STATEMENT_ADD, obj_name); strcat(source,tmp); } } else { sprintf(tmp,"\n%s->%s(%s,l_justify,0,0,0);", obj_parent, STATEMENT_ADD_NO_VIEWPORT, obj_name); strcat(source,tmp); } } /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ void VDKBParser::WriteVisible(char* obj_name, char* arg, char* source, char* buffer, char* tmp) { if( GetParam(arg,buffer,PROP_VISIBLE) && !strcmp(arg,CHECK_FALSE) ) { sprintf(tmp,"\n%s->%s = %s;", obj_name, STATEMENT_VISIBLE, arg); strcat(source,tmp); } } bool VDKBParser::CheckNLSSupport() { bool result = false; VDKBMainForm* mainform = dynamic_cast(TheApp->MainForm); VDKBProjectManager* prjman = mainform ? mainform->PrjManager(): NULL; VDKBProject* prj = prjman ? prjman->Project(): NULL; if(prj) result = (*prj->Options()).nls_support == VDKString("yes"); return result; } /* */ #if USE_XDB void VDKBParser::WriteXDBAssignCode(char* obj_name, char* assigntable, char* assignfield, char* source, char* tmp) { char prjname[256]; CheckXDBSupport(1); // checks for assigning prjname[0] = '\0'; VDKBMainForm* mainform = dynamic_cast(TheApp->MainForm); VDKBProjectManager* prjman = mainform ? mainform->PrjManager(): NULL; VDKBProject* prj = prjman ? prjman->Project(): NULL; if(prj) { char* p = NULL; strcpy(prjname,(char*) prj->Name); p = get_extension(prjname); if(p) *p ='\0'; } if(*prjname) { prjname[0] = toupper(prjname[0]); sprintf(tmp,"\n#ifdef VDKXDB_SUPPORT"); strcat(source,tmp); sprintf(tmp,"\n{\nVDKString dbname;"); strcat(source,tmp); sprintf(tmp, "\n%sApp* app = dynamic_cast<%sApp*>(Application());", prjname,prjname); strcat(source,tmp); sprintf(tmp,"\ndbname = XDB_DATA_PATH;\ndbname += \"%s\";", assigntable); strcat(source,tmp); sprintf(tmp,"\nif(app && app->TheXdb())"); strcat(source,tmp); sprintf(tmp, "\n%s->AssignTableField(app->TheXdb(),(char*) dbname,\"%s\");", obj_name,assignfield); strcat(source,tmp); sprintf(tmp,"\n}"); strcat(source,tmp); sprintf(tmp,"\n#endif"); strcat(source,tmp); } } /* */ void VDKBParser::WriteXDBClistAssignCode(char* obj_name, char* assigntable, char* assignfield, char* source, char* tmp) { char prjname[256]; CheckXDBSupport(1); // checks for assigning prjname[0] = '\0'; VDKBMainForm* mainform = dynamic_cast(TheApp->MainForm); VDKBProjectManager* prjman = mainform ? mainform->PrjManager(): NULL; VDKBProject* prj = prjman ? prjman->Project(): NULL; if(prj) { char* p = NULL; strcpy(prjname,(char*) prj->Name); p = get_extension(prjname); if(p) *p ='\0'; } if(*prjname) { // check if there are some columns assignment { int t = 0; bool there_are = false; char* local = new char[strlen(assignfield)+1], *p; char fname[11]; strcpy(local,assignfield); p = strtok(local,","); while(p) { strcpy(fname,p); if(strcmp(fname,NIHIL_PROP)) { there_are = true; break; } t++; p = strtok(NULL,","); } delete[] local; if(!there_are) return; } prjname[0] = toupper(prjname[0]); sprintf(tmp,"\n#ifdef VDKXDB_SUPPORT"); strcat(source,tmp); sprintf(tmp,"\n{\nVDKString dbname;"); strcat(source,tmp); sprintf(tmp, "\n%sApp* app = dynamic_cast<%sApp*>(Application());", prjname,prjname); strcat(source,tmp); sprintf(tmp,"\ndbname = XDB_DATA_PATH;\ndbname += \"%s\";", assigntable); strcat(source,tmp); sprintf(tmp,"\nif(app && app->TheXdb())\n{"); strcat(source,tmp); { int t = 0; char* local = new char[strlen(assignfield)+1], *p; char fname[11]; strcpy(local,assignfield); p = strtok(local,","); while(p) { strcpy(fname,p); if(strcmp(fname,NIHIL_PROP)) { sprintf(tmp, "\n%s->AssignTableFieldToColumn(%d,app->TheXdb(),(char*) dbname,\"%s\");", obj_name,t,p); strcat(source,tmp); } t++; p = strtok(NULL,","); } delete[] local; } sprintf(tmp,"\n}\n}"); strcat(source,tmp); sprintf(tmp,"\n#endif"); strcat(source,tmp); } } /* mode = 0 checks gor constructin mode = 1 checks for assigning */ bool VDKBParser::CheckXDBSupport(int mode) { VDKXDatabase* xdb = TheApp->theXdb; TableList* tlist = xdb->TList(); bool dbempty = tlist->size() <= 0; bool xdbsupport_defined = false; VDKBMainForm* mainform = dynamic_cast(TheApp->MainForm); VDKBProjectManager* prjman = mainform ? mainform->PrjManager(): NULL; VDKBProject* prj = prjman ? prjman->Project(): NULL; if(!mainform) return true; if(prj) { char* defines = (char*) (*prj->Options()).defines; xdbsupport_defined = strstr(defines,"VDKXDB_SUPPORT") != NULL; } if(dbempty && !xdbsupport_defined) { bool result; switch(mode) { case 0: result = mainform->Application()->VDKMessageBox(APPNAME, _("\ You are constructing a data-aware widget\n\ without using tables (VDKBuilder tables database is empty).\n\ If you want avoid compilation errors, explicitely define\n\ VDKXDB_SUPPORT or add the proper table to\n\ VDKBuilder tables database using \"Tools\" menu.\n\ Do you want define VDKXDB_SUPPORT now ?"), VDK_ICONQUESTION|VDK_YESNO, _(user_messages[user_ok]), _(user_messages[user_no])) == VDK_IDYES; if(result) (*prj->Options()).defines += " -DVDKXDB_SUPPORT"; break; case 1: result = mainform->Application()->VDKMessageBox(APPNAME, _("\ You are assigning a table/field to data-aware widget\n\ without using tables (VDKBuilder tables database is empty).\n\ If you want avoid compilation errors, explicitely define\n\ VDKXDB_SUPPORT or add the proper table to\n\ VDKBuilder tables database using \"Tools\" menu.\n\ Do you want define VDKXDB_SUPPORT now ?"), VDK_ICONQUESTION|VDK_YESNO, _(user_messages[user_ok]), _(user_messages[user_no])) == VDK_IDYES; if( result) (*prj->Options()).defines += " -DVDKXDB_SUPPORT"; break; } } return true; } #endif vdkbuilder2-2.4.0/vdkbuilder/vdkb_pbar.cc0000644000000000000000000003300307461764051013766 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBProgressBar // put here vdk class name string #define VDK_CLASS "VDKProgressBar" // put here vdk class name #define VDK_ANCESTOR VDKProgressBar // put here here the widget will be named // (name+counter) #define VDK_WIDGET "progressbar" //================================================================= extern char* wi_widget_prompts[]; static char buff[128]; extern void strreplace(char* s, char sep1, char sep2); // used to autogenerate default // button names and captions int CLASS::Counter = 0; /* label button properties names */ char* vdkpbar_props[] = { BARBLOCKCOUNT,BARSTYLE, BARORIENTATION,BARACTIVITYMODE, BARMIN,BARMAX, 0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDKBEvProgressBar); DEFINE_EVENT_LIST(CLASS,VDKBEvProgressBar); ////////////////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner, float min, float max): VDKBEvProgressBar(owner,min,max), VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties list // (Others props are prepended by VDKBObject constructor) for(t=0; vdkpbar_props[t]; t++) proplist.add(VDKBProperty(vdkpbar_props[t])); sprintf(buff,"%f",min); SetPropValue(BARMIN,buff); sprintf(buff,"%f",max); SetPropValue(BARMAX,buff); // progress bar not expand SetPropValue(JUSTIFY_INTERNAL,"l_justify"); SetPropValue( EXPAND_INTERNAL,CHECK_FALSE); SetPropValue( FILL_INTERNAL,CHECK_FALSE); SetPropValue(PADDING_INTERNAL,CHECK_FALSE); // connects events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); // set bar to max value Update(max); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;",PROP_BARMIN,(char*) GetProp(BARMIN)); fprintf(fp,"\n\t%s%s;",PROP_BARMAX,(char*) GetProp(BARMAX)); fprintf(fp,"\n\t%s%s;", PROP_BARBLOCKCOUNT,(char*) GetProp(BARBLOCKCOUNT)); fprintf(fp,"\n\t%s%s;",PROP_BARSTYLE,(char*) GetProp(BARSTYLE)); fprintf(fp,"\n\t%s%s;", PROP_BARORIENTATION,(char*) GetProp(BARORIENTATION)); fprintf(fp,"\n\t%s%s;", PROP_BARACTIVITYMODE,(char*) GetProp(BARACTIVITYMODE)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* bar = NULL; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else bar = new CLASS(buff,owner); // add widget to form return owner->AddToSelf(bar,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char min[16],max[16]; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; // get default values if(parser.GetParam(arg,buffer,PROP_BARMIN)) strcpy(min,arg); else strcpy(min,"0.0"); strreplace(min,',','.'); if(parser.GetParam(arg,buffer,PROP_BARMAX)) strcpy(max,arg); else strcpy(max,"1.0"); strreplace(max,',','.'); source = new char[4096]; sprintf(tmp,"\n%s = new %s(this,%s,%s);", obj_name, VDK_CLASS, min, max); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } if(parser.GetParam(arg,buffer,PROP_BARBLOCKCOUNT) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;", obj_name,BARBLOCKCOUNT,arg); strcat(source,tmp); } if(parser.GetParam(arg,buffer,PROP_BARSTYLE) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;",obj_name,BARSTYLE,arg); strcat(source,tmp); } if(parser.GetParam(arg,buffer,PROP_BARORIENTATION) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;", obj_name,BARORIENTATION,arg); strcat(source,tmp); } if(parser.GetParam(arg,buffer,PROP_BARACTIVITYMODE) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;", obj_name,BARACTIVITYMODE,arg); strcat(source,tmp); } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; float min = 0.0, max = 1.0; char arg[64]; CLASS* bar; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; // get default values if(parser.GetParam(arg,buffer,PROP_BARMIN)) min = atof(arg); if(parser.GetParam(arg,buffer,PROP_BARMAX)) max = atof(arg); VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { max = max <= min ? min+1 :max; bar = new CLASS(obj_name,owner,min,max); // prepares packing args based on those loaded by if(parser.GetParam(arg,buffer,PROP_BARBLOCKCOUNT) && strcmp(arg,NIHIL_PROP)) { bar->SetBlockCount(atoi(arg)); bar->SetPropValue(BARBLOCKCOUNT,arg); } if(parser.GetParam(arg,buffer,PROP_BARSTYLE) && strcmp(arg,NIHIL_PROP)) { bar->SetBarStyle( atoi(arg)); bar->SetPropValue(BARSTYLE,arg); } if(parser.GetParam(arg,buffer,PROP_BARORIENTATION) && strcmp(arg,NIHIL_PROP)) { bar->SetBarOrientation( atoi(arg)); bar->SetPropValue(BARORIENTATION,arg); } if(parser.GetParam(arg,buffer,PROP_BARACTIVITYMODE) && strcmp(arg,NIHIL_PROP)) { bar->SetActivityMode(atoi(arg)); bar->SetPropValue(BARACTIVITYMODE,arg); } // pack widget to container return owner->PackToSelf(bar, container, buffer, parser); } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// char* pstyles[] = {"continuous","discrete",0}; char* porient[] = { "left to right","right to left", "bottom to top","top to bottom", 0}; /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { inspector = isp; VDKCustomButton* button; int bc=0,t=0; VDKFrame* bframe = new VDKFrame(inspector,NULL, v_box,shadow_etched_in); VDKTable *table = new VDKTable(inspector,6,2); table->SetSize(219,-1); table->AddToCell(new VDKLabel(inspector, _(wi_widget_prompts[45])),0,0); min = new VDKEntry(inspector,0,(char*) GetProp(BARMIN)); min->SetSize(100,-1); table->AddToCell(min,0,1); min->Parent(this); SignalConnect(min,"activate",&CLASS::OnSetMin); table->AddToCell(new VDKLabel(inspector, _(wi_widget_prompts[46])),1,0); max = new VDKEntry(inspector,0,(char*) GetProp(BARMAX)); max->SetSize(100,-1); table->AddToCell(max,1,1); max->Parent(this); SignalConnect(max,"activate",&CLASS::OnSetMax); button = new VDKCustomButton(inspector, _(wi_widget_prompts[47])); table->AddToCell(button,2,0); button->Parent(this); SignalConnect(button,"clicked",&CLASS::OnSetBlockCount); bc = atoi( (char*) GetProp("BlockCount")); blockcount = new VDKSpinButton(inspector, bc, 0, 100 , 1 ,0 ); blockcount->SetSize(100,-1); table->AddToCell(blockcount,2,1); button = new VDKCustomButton(inspector, _(wi_widget_prompts[48])); table->AddToCell(button,3,0); SignalConnect(button,"clicked",&CLASS::OnSetBarStyle); button->Parent(this); bc = atoi( (char*) GetProp(BARSTYLE)); barstyle = new VDKCombo(inspector,NULL); barstyle->SetSize(100,-1); StringList sl; for(t = 0;pstyles[t];t++) sl.add(VDKString(pstyles[t])); barstyle->PopdownStrings = sl; barstyle->SelectItem(bc); table->AddToCell(barstyle,3,1); sl.flush(); button = new VDKCustomButton(inspector, _(wi_widget_prompts[49])); table->AddToCell(button,4,0); SignalConnect(button,"clicked",&CLASS::OnSetBarOrient); button->Parent(this); bc = atoi( (char*) GetProp(BARORIENTATION)); barorient = new VDKCombo(inspector,NULL); barorient->SetSize(100,-1); for(t=0;porient[t];t++) sl.add(VDKString(porient[t])); barorient->PopdownStrings = sl; barorient->SelectItem(bc); table->AddToCell(barorient,4,1); activitymode = new VDKCheckButton(inspector, _(wi_widget_prompts[50])); table->AddToCell(activitymode,5,1); activitymode->Parent(this); SignalConnect(activitymode,"toggled", &CLASS::OnSetActivityMode); bframe->Add(table,l_justify,false,false,false); return bframe; } /* */ bool CLASS::OnSetMin(VDKObject*) { if(strlen(min->Text) > 0) { strcpy(buff,(char*) min->Text); // strreplace(buff,',','.'); SetPropValue(BARMIN,buff); inspector->FormNeedToBeChanged(); } return true; } /* */ bool CLASS::OnSetMax(VDKObject*) { if(strlen(max->Text) > 0) { strcpy(buff,(char*) max->Text); // strreplace(buff,',','.'); SetPropValue(BARMAX,buff); inspector->FormNeedToBeChanged(); } return true; } /* */ bool CLASS::OnSetBlockCount(VDKObject*) { sprintf(buff,"%d",(int) blockcount->ValueAsInt); SetPropValue(BARBLOCKCOUNT,buff); inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetBarStyle(VDKObject*) { int sel = barstyle->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); int style = atoi(buff); SetPropValue(BARSTYLE,buff); SetBarStyle(style); inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetBarOrient(VDKObject*) { int sel = barorient->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); int orient = atoi(buff); SetPropValue(BARORIENTATION,buff); SetBarOrientation( orient); inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetActivityMode(VDKObject*) { SetPropValue(BARACTIVITYMODE, activitymode->Checked ? CHECK_TRUE : CHECK_FALSE); SetActivityMode( activitymode->Checked ? true : false); inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_pixmap.cc0000644000000000000000000003110207454567041014340 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include #include "./pixmaps/apple.xpm" #include "./pixmaps/copy.xpm" /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBPixmap // put here vdk class name string #define VDK_CLASS "VDKPixmap" // put here vdk class name #define VDK_ANCESTOR VDKPixmap // put here here the widget will be named // (name+counter) #define VDK_WIDGET "pixmap" extern char* wi_widget_prompts[]; static char buff[256]; // used to autogenerate default // labelbutton names and captions int CLASS::Counter = 0; /* label properties names */ char* vdkpixmap_props[] = { GLYPH,GLYPH_BYDATA, 0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// /* - constructor */ // default pixmap // defined in vdkb_local.cc extern char** default_pixmap; CLASS::CLASS(char* name, VDKForm* owner, char* pixfile): VDK_ANCESTOR(owner,pixfile,NULL,true),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties for(t=0; vdkpixmap_props[t]; t++) proplist.add(VDKBProperty(vdkpixmap_props[t])); // connects events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); SetSize(20,20); } CLASS::CLASS(char* name, VDKForm* owner, char** pixdata): VDK_ANCESTOR(owner,pixdata,NULL,true),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties for(t=0; vdkpixmap_props[t]; t++) proplist.add(VDKBProperty(vdkpixmap_props[t])); // connects events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_GLYPH,(char*) GetProp(GLYPH)); fprintf(fp,"\n\t%s%s;", PROP_GLYPH_BYDATA, (char*) GetProp(GLYPH_BYDATA)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* pixmap = NULL; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // creates a default pixmap pixmap = new CLASS(buff,owner,default_pixmap); return owner->AddToSelf(pixmap,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char obj_glyph[128]; char bydata[16]; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; if(parser.GetParam(obj_glyph,buffer,PROP_GLYPH) && strcmp(obj_glyph,NIHIL_PROP)) ; else strcpy(obj_glyph,""); if(parser.GetParam(bydata,buffer,PROP_GLYPH_BYDATA) && strcmp(bydata,NIHIL_PROP)) ; else strcpy(bydata,""); // some cases... if(*obj_glyph) { if(strcmp(bydata,CHECK_YES)) sprintf(tmp,"\n%s = new %s(this,%s%s%s);", obj_name,VDK_CLASS,"\"", obj_glyph, "\""); else { int z = 0; char* local = new char[strlen(obj_glyph)+1], *p = NULL; strcpy(local,obj_glyph); sprintf(buff,"\n#include \"%s\"",local); // refuses to include twice same file VDKString symbol(local); if(parser.decSymbols.find(symbol)) { #if 0 printf("\nsymbol:%s already declared", (char*) symbol); fflush(stdout); #endif strcpy(tmp,""); } else { strcpy(tmp,buff); parser.decSymbols.add(symbol); } p = get_shortfilename(local); // changes <.-> to _ if(!p) p = local; for(; p[z];z++) { if((p[z] == '.') || (p[z] == '-') ) p[z] = '_'; } sprintf(buff,"\n%s = new %s(this,%s);",obj_name,VDK_CLASS, p); strcat(tmp,buff); delete [] local; } } else sprintf(tmp,"\n%s = new %s(this,%s);", obj_name, VDK_CLASS, "(char*) NULL"); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char obj_glyph[256]; char bydata[16]; //char arg[64]; CLASS* pixmap; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; // get glyph if(parser.GetParam(obj_glyph,buffer,PROP_GLYPH) && strcmp(obj_glyph,NIHIL_PROP)) ; else strcpy(obj_glyph,""); // get glyph by data if(parser.GetParam(bydata,buffer,PROP_GLYPH_BYDATA) && strcmp(bydata,NIHIL_PROP)) ; else strcpy(bydata,""); VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { if(*obj_glyph) pixmap = new CLASS(obj_name,owner,obj_glyph); else pixmap = new CLASS(obj_name,owner,default_pixmap); // glyph if(*obj_glyph) pixmap->SetPropValue(GLYPH,obj_glyph); // glyph by data if(*bydata) pixmap->SetPropValue(GLYPH_BYDATA,bydata); // pack widget to container return owner->PackToSelf(pixmap, container, buffer, parser); } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,h_box,shadow_etched_in); VDKTable *table = new VDKTable(inspector,2,2); // table->SetSize(219,-1); VDKBox* bbox = new VDKBox(inspector,h_box); VDKCustomButton* set = new VDKCustomButton(inspector,(const char**) apple_xpm, NULL); set->SetTip(_(wi_widget_prompts[7])); set->Relief = (GtkReliefStyle) 2; bbox->Add(set,l_justify,false,false,0); set->Parent(this); SignalConnect(set,"clicked",&CLASS::OnSetGlyph); VDKString s = GetProp(GLYPH); shortname = new VDKCustomButton(inspector,(const char**) copy_xpm,NULL); shortname->Relief = (GtkReliefStyle) 2; shortname->SetTip(_(wi_widget_prompts[9])); shortname->Enabled = strcmp((char*) s,NIHIL_PROP); bbox->Add(shortname,l_justify,false,false,0); shortname->Parent(this); SignalConnect(shortname,"clicked",&CLASS::OnSetShortName); table->AddToCell(bbox,0,0); pixfile = new VDKEntry(inspector,0, !strcmp((char*) s,NIHIL_PROP) ? NULL : (char*) s); pixfile->SetSize(120,-1); pixfile->Editable = true; table->AddToCell(pixfile,0,1); pixfile->Parent(this); pixfile->SetTip(_("Enter \"nihil\" to reset assigned pixmap")); SignalConnect(pixfile,"activate",&CLASS::OnSetGlyph); s = GetProp(GLYPH_BYDATA); bydata = new VDKCheckButton(inspector,_(wi_widget_prompts[58])); bydata->SetTip(_(wi_widget_prompts[59])); table->AddToCell(bydata,1,0); bydata->Checked = !strcmp((char*) s, CHECK_YES); bydata->Parent(this); SignalConnect(bydata,"toggled",&CLASS::OnToggleBydata); bframe->Add(table,l_justify,false,false,false); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnToggleBydata(VDKObject*) { SetPropValue(GLYPH_BYDATA, bydata->Checked ? CHECK_YES : CHECK_NO); inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetGlyph(VDKObject* sender) { char* pix = pixfile->Text; if(sender == pixfile) { if (!strcmp(pix,NIHIL_PROP)) { SetPropValue(GLYPH,pix); SetPixmap(default_pixmap); inspector->FormNeedToBeChanged(); shortname->Enabled = false; } } else { FileStringArray selections; VDKXpmBrowser *child = new VDKXpmBrowser(Owner(),&selections, _(file_dialog_prompts[0])); child->ShowModal(); if(selections.size() > 0) { SetPixmap((char*) selections[0]); pixfile->Text = (char*) selections[0]; SetPropValue(GLYPH,(char*) selections[0]); inspector->FormNeedToBeChanged(); shortname->Enabled = true; } } return true; } /* */ bool CLASS::OnSetShortName(VDKObject*) { VDKString s = GetProp(GLYPH); VDKString path; VDKBProject* project; VDKBProjectManager* prjman; if(!inspector) return true; prjman = dynamic_cast(inspector->Owner()); if(!prjman) return true; project = prjman->Project(); if(!project) return true; path = project->Path; sprintf(buff,"cp %s %s/",(char*) s, (char*) path); system(buff); char* p = get_shortfilename((char*) s); if(p) { VDKString short_name = p; pixfile->Text = (char*) short_name; SetPropValue(GLYPH,(char*) short_name); inspector->FormNeedToBeChanged(); } return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_pholder.cc0000644000000000000000000001655507272557520014515 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.3 * July 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBPlaceHolder // put here how the widget will be named #define VDK_WIDGET "placeholder" extern char* wi_widget_prompts[]; static char buff[128]; // used to autogenerate default // names int CLASS::Counter = 0; /* properties */ char* vdkpholder_props[] = { PHOLDER_CTOR, 0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDKCanvas); DEFINE_EVENT_LIST(CLASS,VDKCanvas); /////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner): VDKCanvas(owner),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add frame properties // names. (Others props are prepended by VDKBObject constructor) for(t=0; vdkpholder_props[t]; t++) proplist.add(VDKBProperty(vdkpholder_props[t])); // connects events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_PHOLDER_CTOR,(char*) GetProp(PHOLDER_CTOR)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable label button counter // to ensure unicity CLASS* pholder; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else pholder = new CLASS(buff,owner); VDKRgb white("white"); if(white.IsValid()) pholder->NormalBackground = white; // add widget to form return owner->AddToSelf(pholder,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char ctor[256]; char arg[64]; char tmp[256]; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; // get constructor definition else if ( !parser.GetParam(ctor,buffer,PROP_PHOLDER_CTOR) ) return NULL; source = new char[4096]; sprintf(tmp,"\n%s = new %s;",obj_name,ctor); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[64]; CLASS* pholder; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { pholder = new CLASS(obj_name,owner); if( parser.GetParam(arg,buffer,PROP_PHOLDER_CTOR) && strcmp(arg,NIHIL_PROP) ) pholder->SetPropValue(PHOLDER_CTOR,arg); // pack widget to container return owner->PackToSelf(pholder, container, buffer, parser); } else return false; } /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { inspector = isp; VDKCustomButton* button; VDKFrame* bframe = new VDKFrame(inspector,NULL, v_box,shadow_etched_in); VDKBox *box = new VDKBox(inspector); box->SetSize(219,-1); button = new VDKCustomButton(inspector, _(wi_widget_prompts[51])); box->Add(button,l_justify,false,false,0); button->Parent(this); SignalConnect(button,"clicked",&CLASS::OnSetCtor); ctor = new VDKEntry(inspector,0,(char*) GetProp(PHOLDER_CTOR)); ctor->Parent(this); SignalConnect(ctor,"activated",&CLASS::OnSetCtor); box->Add(ctor); bframe->Add(box); return bframe; } /* */ bool CLASS::OnSetCtor(VDKObject*) { if(strlen(ctor->Text) > 0) SetPropValue(PHOLDER_CTOR,(char*) ctor->Text); inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_plugin.cc0000644000000000000000000001300207261616401014326 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #include #include #include #define VERBOSE 1 #define EXPORT_FUNCTION "GetExportClass" static char buff[256]; typedef VDKBAbstractComponentInterface* (*get_class) (void); /* - get shared libpath and libname - assign using g_module_build_path() - try to open shared lib using g_module_open () - if fails set == NULL and set with g_module_error () - else - set calling GetExportClass() using g_module_symbol() - if fails set == NULL and set with g_module_error () - else - assign calling interface->Icon() - assign calling interface->Tip() - assign id to 0 (will be PLUGIN_TOOL_BEGIN + ordinal number of the item into plugin list). */ VDKBPlugin::VDKBPlugin(char* libpath, char* libname): module(NULL),lib_path(libpath),lib_name(libname), icon(NULL),interface(NULL),id(0) { } /* destructor */ VDKBPlugin::~VDKBPlugin() { } #include bool VDKBPlugin::DlOpen() { get_class foo; // assign module_name = g_module_build_path((char*) lib_path, (char*) lib_name); #if VERBOSE printf("\nVDKBPlugin::VDKBPlugin - module name:%s", (char*) module_name); fflush(stdout); #endif // try to open shared lib module = g_module_open ( (char*) module_name, (GModuleFlags) G_MODULE_BIND_LAZY); if(!module) { // set error module = NULL; interface = NULL; error = g_module_error (); #if VERBOSE printf("\nVDKBPlugin::VDKBPlugin - fail to load - %s",(char*) error); fflush(stdout); #endif return false; } // get interface void** foo_address = (void**) &foo; if (!g_module_symbol (module,EXPORT_FUNCTION, foo_address)) { // set module invalid and error module = NULL; interface = NULL; error = g_module_error (); #if VERBOSE printf("\nVDKBPlugin::VDKBPlugin - fail to map - %s",(char*) error); fflush(stdout); #endif return false; } interface = foo(); #if VERBOSE printf("\nVDKBPlugin::VDKBPlugin - got %s interface - %p", (char*) module_name, interface); fflush(stdout); #endif // set component icon and tip icon = interface->Icon(); tip = (char*) interface->Tip(); // set id to default 0 // will be set to PLUGIN_TOOL_BEGIN + ordinal number // by plugin list. id = 0; return true; } /* */ bool VDKBPlugin::DlClose() { #if VERBOSE printf("\nVDKBPlugin::~VDKBPlugin - closing - %s",(char*) module_name); fflush(stdout); #endif if(module && (!g_module_close (module))) { printf ("\nerror: %s", g_module_error ()); fflush(stdout); return false; } else { if(interface) delete interface; return true; } } //=============== PLUGIN LIST ====================== bool VDKBPluginList::Load(char* file) { FILE* fp = fopen(file,"r"); if(!fp) return false; while(fgets(buff,sizeof(buff),fp)) { int n = strlen(buff)-1; buff[n] = buff[n] == '\n' ? '\0' : buff[n]; char* p = strchr(buff,','); if(p) { *p ='\0'; p++; VDKBPlugin plugin(buff,p); add(plugin); } else return false; } fclose(fp); return true; } /* */ bool VDKBPluginList::DlOpen() { int t = 0; bool result = true; VDKBPluginListIterator li(*this); for(;li;li++) { if(li.current().DlOpen()) { // assign id li.current().Id(PLUGIN_TOOL_BEGIN+t); t++; } else result = false; } return result; } /* */ bool VDKBPluginList::DlClose() { bool result = true; VDKBPluginListIterator li(*this); for(;li;li++) if(!li.current().DlClose()) result = false; return result; } /* returns the interface of the loaded plugin. NULL on failure Note: id are PLUGIN_TOOL_BEGIN+ordinal number of valid interfaces. */ VDKBAbstractComponentInterface* VDKBPluginList::Interface(int id) { VDKBAbstractComponentInterface* interface = NULL; VDKBPluginListIterator li(*this); for(;li;li++) { if(li.current().IsValid() && li.current().Id() == id) { interface = li.current().Interface(); break; } } return interface; } VDKBAbstractComponentInterface* VDKBPluginList::Interface(char *classname) { VDKBAbstractComponentInterface* interface = NULL; VDKBPluginListIterator li(*this); for(;li;li++) { if(li.current().IsValid() && li.current().Interface()) { if(!strcmp(classname,li.current().Interface()->VDKName())) { interface = li.current().Interface(); break; } } } return interface; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_prj.cc0000644000000000000000000003232410022114071013614 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include static char buff[512]; bool prj_filter(int argc, char *argv[]); static char *filter_argv[] = { NULL,NULL,NULL,NULL,NULL,NULL }; static int filter_argc = 4; ///////////////////////// CLASS VDKBPROJECT /* a brand new project, makes it and add main unit */ VDKBProject::VDKBProject(VDKForm* owner, char* name, int type, char* author, char* email, bool gpld, bool flag): owner(owner), Status(prj_never_saved), PathName(""), Path(""), Name(""), Valid(true), Type(type) { // set compilation flags pending on type // all but default if(type != vdk_project) options = VDKBProjectOptions(type); // no name if(! flag || (name == NULL) ) { char* def_name = (char*) VDKBuilder::ideDefaults.project.def_name; int count = VDKBuilder::ideDefaults.project.count; // fill project properties sprintf(buff,"%s%d",def_name,count); Name = buff; // build and add project unit sprintf(buff,"%s%d",def_name,count); // update project counter VDKBuilder::ideDefaults.project.count += 1; options.filename = Name; options.filename += ".opt"; options.author = author; options.email = email; options.gpld = gpld; } else { char* p; PathName = name; options.filename = name; options.filename += ".opt"; if( (p= get_path(name)) ) { Path = p; delete[] p; } Name = get_shortfilename(name); options.author = author; options.email = email; options.gpld = gpld; } units.add(new VDKBUnit(name,project_unit,Status)); } /* a file loaded new project */ VDKBProject::VDKBProject(VDKForm* owner,char* name): owner(owner), Status(prj_unsaved), PathName(name), Path(""), Name(""), Valid(false), Type(-1) { char* p; // PathName = name; options.filename = PathName; options.filename += ".opt"; if ( (p = get_path(name)) ) { Path = get_path(name); delete[] p; } Name = get_shortfilename(name); if(!LoadUnits(name)) { sprintf(buff,"%s\n%s", name, _(user_messages[user_cant_load_project]) ); owner->Application()->VDKMessageBox(APPNAME, buff, VDK_OK| VDK_ICONINFORMATION, _(user_messages[user_cancel]) ); } else { Valid = true; options.Load(); } } /* */ bool VDKBProject::LoadUnits(char* name) { static char local[512]; FILE* fp = fopen(name,"r"); if(!fp) return false; if(! fgets(buff,sizeof(buff)-1,fp)) { fclose(fp); return false; } else buff[strlen(buff)-1] = '\0'; // cheks correct project version if(strcmp(buff,CORRECT_PROJECT_FILE)) { sprintf(buff,"%s\n%s", name, _(user_messages[user_incorrect_project]) ); owner->Application()->VDKMessageBox(APPNAME, buff, VDK_OK| VDK_ICONINFORMATION, _(user_messages[user_cancel]) ); return false; } // load pathname and path if(! fgets(buff,sizeof(buff)-1,fp)) { fclose(fp); return false; } else { buff[strlen(buff)-1] = '\0'; PathName = buff; } if(! fgets(buff,sizeof(buff)-1,fp)) { fclose(fp); return false; } else { buff[strlen(buff)-1] = '\0'; Path = buff; /* checks if the path is the current cwd, try to update accordlying */ if(access((char*) PathName,F_OK)) { char *newpath = get_path(name); sprintf(local, _("<%s> not found\ \nproject dir path <%s> may need to be updated.\n\ Confirm update project dir with:%s"), (char*) PathName,buff, newpath); if (owner->Application()->VDKMessageBox(APPNAME, local, VDK_ICONQUESTION|VDK_YESNO, _(user_messages[user_ok]), _(user_messages[user_no])) == VDK_IDYES) { fclose(fp); filter_argv[1] = buff; filter_argv[2] = newpath; filter_argv[3] = name; if(prj_filter(filter_argc,filter_argv)) sprintf(local,_("%s successfully updated\nplease reload project"), name); else sprintf(local,_("%s failed to update"), name); owner->Application()->VDKMessageBox(APPNAME, local, VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]) ); } else { fclose(fp); sprintf(local, _("<%s> should be manually updated to\ \nnew project dir path <%s>."), (char*) PathName,newpath); owner->Application()->VDKMessageBox(APPNAME, local, VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]) ); } delete[] newpath; return false; } } // load type if(! fgets(buff,sizeof(buff)-1,fp)) { fclose(fp); return false; } else { buff[strlen(buff)-1] = '\0'; Type = atoi(buff); } // load pairs unit name/type while(fgets(buff,sizeof(buff)-1,fp)) { int type = unknow_type; buff[strlen(buff)-1] = '\0'; strcpy(local,buff); if(!fgets(buff,sizeof(buff)-1,fp)) { fclose(fp); return false; } else { buff[strlen(buff)-1] = '\0'; type = atoi(buff); } // checks for file existence char localbuff[256]; char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; bool check = true; switch(type) { case source_unit: sprintf(localbuff,"%s.%s",local,cc_ext); break; case object_unit: sprintf(localbuff,"%s.o",local); break; case staticlib_unit: sprintf(localbuff,"%s.a",local); break; case c_source_unit: sprintf(localbuff,"%s.c",local); break; default: check = false; break; } if(check && access(localbuff,F_OK)) { sprintf(buff,_("<%s> not found"), localbuff); owner->Application()->VDKMessageBox(APPNAME, buff, VDK_OK| VDK_ICONINFORMATION, _(user_messages[user_cancel]) ); fclose(fp); return false; } units.add(new VDKBUnit(local,type,prj_unsaved)); } fclose(fp); return true; } /* */ VDKBProject::~VDKBProject() { UnitListIterator li(units); for(;li;li++) delete li.current(); #ifdef VDKBDEBUG VDKString name = Name; printf("\ndeleting project:%s", (char*) name); fflush(stdout); #endif } /* */ bool VDKBProject::Save(char* name) { FILE* fp; VDKString pathname = name; VDKString path; char *p = get_path(name); Name = get_shortfilename(name); bool result = false; if(p) { path = p; fp = fopen(pathname,"w+b"); if(fp) { // project version and check string fprintf(fp,"%s\n",CORRECT_PROJECT_FILE); // project full pathname fprintf(fp,"%s\n",(char*) pathname); // project path fprintf(fp,"%s\n",(char*) path); delete[] p; // project type int type = Type; fprintf(fp,"%d\n",type); UnitListIterator li(units); // save main unit first if(li) { if( li.current()->Status == prj_never_saved ) { VDKString name = Name; char* p; if( ( p = get_extension((char*) name)) ) *p ='\0'; fprintf(fp,"%s/%s\n",(char*) path,(char*) name); sprintf(buff,"%s/%s",(char*) path,(char*) name); li.current()->Name(buff); } else fprintf(fp,"%s\n",(char*) li.current()->Name()); fprintf(fp,"%d\n",li.current()->Type()); li.current()->Status = prj_saved; li++; } // others units for(;li;li++) { // a pair unit name/type if( li.current()->Status == prj_never_saved ) { fprintf(fp,"%s/%s\n", (char*) path, (char*) li.current()->Name()); sprintf(buff,"%s/%s", (char*) path, (char*) li.current()->Name()); li.current()->Name(buff); } else fprintf(fp,"%s\n",(char*) li.current()->Name()); fprintf(fp,"%d\n",li.current()->Type()); li.current()->Status = prj_saved; } fclose(fp); // save options if(options.Save()) { Status = prj_saved; result = true; } else result = false; } else result = false; } // to be fixed with owner warned !!! return result; } /* */ bool VDKBProject::Save() { char* prj_ext = (char*) VDKBuilder::ideDefaults.project.prj_ext; VDKString p = PathName; // a bad patch to avoid a subtle bug // that cut ext to PathName // (to be further investigated) char* ext = get_extension(p); if(! ext ) { sprintf(buff,".%s",prj_ext); p += buff; } return Save( (char*) p); } /* */ bool VDKBProject::CreateTemplatesFilesForConsole() { char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; char* name = new char[strlen((char*) VDKString(Name)) + 1]; strcpy(name, (char*) VDKString(Name)); char* ext = get_extension(name); if(ext) *ext = '\0'; sprintf(buff,"%s/%s.%s", (char*) VDKString(Path), name, h_ext); // // write main unit .h FILE* fp = fopen(buff,"w+"); if(!fp) { delete[] name; return false; } else // write and close WriteMainHForConsole(fp); // write main unit .cc sprintf(buff,"%s/%s.%s", (char*) VDKString(Path), name, cc_ext); fp = fopen(buff,"w+"); if(!fp) { delete name; return false; } else // write and close WriteMainCCForConsole(fp); return Save(); } /* */ bool VDKBProject::CreateTemplatesFilesForVDK(int type) { char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; char* name = new char[strlen((char*) VDKString(Name)) + 1]; strcpy(name, (char*) VDKString(Name)); char* ext = get_extension(name); if(ext) *ext = '\0'; sprintf(buff,"%s/%s.%s", (char*) VDKString(Path), name, h_ext); // // write main unit .h FILE* fp = fopen(buff,"w+"); if(!fp) { delete[] name; return false; } else // write and close WriteMainH(fp,type); // write main unit .cc sprintf(buff,"%s/%s.%s", (char*) VDKString(Path), name, cc_ext); fp = fopen(buff,"w+"); if(!fp) { delete[] name; return false; } else // write and close WriteMainCC(fp,type); // write unit.form sprintf(buff,"%s/%s.%s", (char*) VDKString(Path), name, FORM_EXT); fp = fopen(buff,"w+"); if(!fp) { delete[] name; return false; } else WriteDfmFile(fp,type); char local[256]; sprintf(local,"%s/%s_gui.%s",(char*) VDKString(Path),name,h_ext); fp = fopen(local,"w+"); if(fp) WriteGuiHeaderParsingFrm(fp,buff); sprintf(local,"%s/%s_gui.%s",(char*) VDKString(Path),name,cc_ext); fp = fopen(local,"w+"); if(fp) WriteGUISetupParsingFrm(fp,buff); // save prj options return Save(); } #include #include #include #include #define MAXCHAR 512 bool prj_filter(int argc, char *argv[]) { FILE *inFile; // FILE *indexFile; FILE *tmpFile; char s[MAXCHAR]; char *tempFileName; if( argc!=4 && argc!=5){ printf("wrong number of parameters: %d\n", argc); printf("filter usage:\n" "\tfilter intext outtext infile [outfile]\n"); fflush(stdout); return false; } char *outFileName = (argc==5) ? argv[4]: argv[3]; if(( inFile = fopen( argv[3],"r"))==NULL){ printf("cannot open file %s\n",argv[3]); fflush(stdout); return false; } tempFileName = tempnam(".",NULL); if(( tmpFile = fopen(tempFileName,"w"))==NULL){ printf("cannot open file %s\n",tempFileName); fflush(stdout); return false; } // parse the files char token[MAXCHAR]; while( fgets(s,MAXCHAR,inFile) != NULL){ char * stemp =s; char * p; sprintf(token,argv[1]); while((p = strstr(stemp,token)) != NULL){ *p = '\0'; fputs(stemp,tmpFile); printf(stemp); stemp = p + strlen(token); sprintf(token,argv[2]); fputs(token,tmpFile); printf(token); fflush(stdout); sprintf(token,argv[1]); } fputs(stemp,tmpFile); printf(stemp); fflush(stdout); } fclose(inFile); fclose(tmpFile); int result = rename(tempFileName,outFileName); free(tempFileName); return !result; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_prjman.cc0000644000000000000000000011700410022113243014307 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifdef HAVE_CONFIG_H #include #endif #if USE_XDB #include #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #endif #undef __REGEXP_LIBRARY_H__ #define __REGEXP_LIBRARY_H__ 1 // do not include builtin regex.h // STUB #include #include #include #include #include #include #include #include #include #include extern char *c_xpm[]; extern char *h_xpm[]; extern char *prj_node_xpm[]; extern char *unit_node_xpm[]; extern char *gear_xpm[]; static char buff[512]; extern char *ext_types[]; extern char *mininewform_xpm[]; extern VDKBuilder* TheApp; // emacs support extern bool EmacsServerStarted(); extern int StartEmacs(char ** args); extern int EmacsPid(); // into vdkb.cc extern char mime_file[]; ////////////// SIGNAL STUFF //////////////// DEFINE_SIGNAL_MAP(VDKBProjectManager,VDKForm) ON_SIGNAL(tree,select_node_signal,OnSelectRow) // ON_SIGNAL(toolbar,clicked_signal,HandleToolbar) END_SIGNAL_MAP DEFINE_EVENT_LIST(VDKBProjectManager,VDKForm); DEFINE_SIGNAL_LIST(VDKBProjectManager,VDKForm); bool VDKBProjectManager::HandleToolbar(VDKObject* ) { int button = toolbar->ButtonPressed; switch(button) { case NEW_PROJECT_BUTTON: ((VDKBMainForm*) Owner())->NewProject(NULL); break; case ADD_UNIT_BUTTON: AddUnit(); break; case REMOVE_UNIT_BUTTON: RemoveUnit(); break; case ACTIVATE_EDITOR_BUTTON: OnSelectRow(tree); break; case FORM_PROPS_BUTTON: // select root (thus form) if(objInspector && ActiveChild.child) objInspector->SelectWidgetByTree(NULL); break; } return true; } /* activate editor on a selected tree node */ void VDKBProjectManager::ActivateEditor(VDKTreeNode node, bool editable, bool hilite) { if(! node) return; VDKBMainForm* mainform = (VDKBMainForm*) Owner(); VDKBEditor* editor = mainform->MakeEditor(); //look for the file pointed by node int t = 0; bool found = false; TextListIterator li(editor->textlist); for(;li;li++,t++) { if(! strcmp(li.current()->Filename(),tree->Key(node))) { found = true; break; } } // does not exist in editor, make it if(!found) editor->AddText(tree->Key(node),editable,hilite); // call emacs client even if found else if(EmacsServerStarted()) { char* args[3]; args[0] = "emacsclient"; args[1] = tree->Key(node); args[2] = NULL; StartEmacs(args); } // activate page containing file editor->nbook->ActivePage = t; // set toggle form/unit char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; char* p = get_extension(tree->Key(node)); if(p) { p++; if(!strcmp(p,cc_ext)) { char local[256]; strcpy(local,tree->Key(node)); char* q = get_extension(local); if(q) { *q = '\0'; sprintf(buff,"%s.frm",local); mainform->EnableToggleFormUnit(true,buff); } else mainform->EnableToggleFormUnit(false,buff); } else mainform->EnableToggleFormUnit(false,buff); } } /* activate editor on a generic file pointed by */ void VDKBProjectManager::ActivateEditor(char* text, bool editable, bool hilite) { if(! text) return; VDKBMainForm* mainform = (VDKBMainForm*) Owner(); VDKBEditor* editor = mainform->MakeEditor(); //look for the file int text list int t = 0; bool found = false; TextListIterator li(editor->textlist); for(;li;li++,t++) { if(! strcmp(li.current()->Filename(),text)) { found = true; break; } } // does not exist in editor, make it if(! found) editor->AddText(text,editable,hilite); // activate page containing file editor->nbook->ActivePage = t; // set toggle form/unit char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; char* p = get_extension(text); if(p) { p++; if(!strcmp(p,cc_ext)) { char local[256]; strcpy(local,text); char* q = get_extension(local); if(q) { *q = '\0'; sprintf(buff,"%s.frm",local); mainform->EnableToggleFormUnit(true,buff); } else mainform->EnableToggleFormUnit(false,buff); } else mainform->EnableToggleFormUnit(false,buff); } } /* */ bool VDKBProjectManager::OnSelectRow(VDKObject* obj) { VDKCustomTree* tree = dynamic_cast(obj); if(!tree ) return true; VDKTreeNode node = tree->SelectedNode; if(! node) return true; // get stored info gpointer p = gtk_ctree_node_get_row_data(GTK_CTREE(tree->CustomWidget()), node); VDKBUnit* unit = (VDKBUnit*) p; // is a leaf without other info, edit it if(! p && tree->IsLeaf(node)) ActivateEditor(node); // is a form unit // create or show form else if(p && (p == (gpointer) form_unit)) { char* t = new char[strlen(tree->Key(node))+1]; strcpy(t,tree->Key(node)); char* p = get_extension(t); if(p) *p = '\0'; VDKString text = t; text += "."; text += FORM_EXT; // create a form parsing .frm file (or raise) VDKBGuiForm* form = CreateForm(tree->Key(node)); // make inspector if(form) { if( !objInspector) { objInspector = new VDKBObjectInspector(this,NULL); objInspector->Setup(); objInspector->Show(); } else if(objInspector->Iconized) objInspector->Iconized = false; else objInspector->Raise(); objInspector->LoadTree(form); form->Raise(); } // set automa VDKBMainForm* mainform = (VDKBMainForm*) Owner(); mainform->Automa(automa_edit_form_on); delete[] t; } // isn't a leaf and is editable, edit it else if(p && (unit->Type() == c_source_unit)) ActivateEditor(node); return true; } /* */ bool VDKBProjectManager::OnReleaseButton(VDKObject* obj, GdkEvent*) { /* VDKCustomTree* tree = dynamic_cast(obj); // run time type checking if(!tree) return true; printf("\nVDKBProjectManager::OnReleaseButton()"); fflush(stdout); VDKTreeNode node = tree->SelectedNode; // no node selected so get away if(! node) return true; // refuses multiple selections // deselecting all nodes if(tree->Selections().size() > 1) { gtk_ctree_unselect_recursive (GTK_CTREE(tree->CustomWidget()), NULL); (*toolbar)[ADD_UNIT_BUTTON]->Enabled = true; (*toolbar)[REMOVE_UNIT_BUTTON]->Enabled = false; (*toolbar)[ACTIVATE_EDITOR_BUTTON]->Enabled = false; (*toolbar)[FORM_PROPS_BUTTON]->Enabled = false; return true; } // now can proceed // is root ? if(node == root) { (*toolbar)[ADD_UNIT_BUTTON]->Enabled = true; (*toolbar)[REMOVE_UNIT_BUTTON]->Enabled = false; (*toolbar)[ACTIVATE_EDITOR_BUTTON]->Enabled = false; (*toolbar)[FORM_PROPS_BUTTON]->Enabled = false; // prompts name & status VDKString name = project->Name; sprintf(buff,"%s - %s", (char*) name, _(prj_status[project->Status])); bar->Panels()[0]->Caption = buff; } // is a node ? else if(! tree->IsLeaf(node)) { // prompts name & status VDKBUnit* unit = (VDKBUnit*) gtk_ctree_node_get_row_data(GTK_CTREE(tree->CustomWidget()),node); // not a .frm if( ((gpointer) unit) != ((gpointer) form_unit)) { (*toolbar)[ADD_UNIT_BUTTON]->Enabled = false; (*toolbar)[REMOVE_UNIT_BUTTON]->Enabled = true; (*toolbar)[ACTIVATE_EDITOR_BUTTON]->Enabled = unit->Type() == c_source_unit ? true : false; (*toolbar)[FORM_PROPS_BUTTON]->Enabled = false; sprintf(buff,"%s.%s - %s", (char*) VDKString(unit->Name()), ext_types[unit->Type()], _(prj_status[unit->Status])); bar->Panels()[0]->Caption = buff; } else { (*toolbar)[ADD_UNIT_BUTTON]->Enabled = false; (*toolbar)[REMOVE_UNIT_BUTTON]->Enabled = false; (*toolbar)[ACTIVATE_EDITOR_BUTTON]->Enabled = true; (*toolbar)[FORM_PROPS_BUTTON]->Enabled = (ActiveChild.child) ? true : false; bar->Panels()[0]->Caption = ""; } } // is a leaf else { gpointer p = gtk_ctree_node_get_row_data(GTK_CTREE(tree->CustomWidget()),node); (*toolbar)[ADD_UNIT_BUTTON]->Enabled = false; (*toolbar)[REMOVE_UNIT_BUTTON]->Enabled = false; (*toolbar)[ACTIVATE_EDITOR_BUTTON]->Enabled = true; (*toolbar)[FORM_PROPS_BUTTON]->Enabled = ((p == (gpointer) form_unit) && (ActiveChild.child)) ? true : false; bar->Panels()[0]->Caption = ""; } */ return false; } void VDKBProjectManager::OnTreeSelection(GtkWidget* wid, GtkCTreeNode* node, int column, gpointer gp) { VDKBProjectManager* prjman = reinterpret_cast(gp); VDKCustomTree* tree = prjman->tree; // run time type checking if(!tree) return ; // VDKTreeNode node = tree->SelectedNode; // no node selected so get away if(! node) return ; // refuses multiple selections // deselecting all nodes if(tree->Selections().size() > 1) { gtk_ctree_unselect_recursive (GTK_CTREE(tree->CustomWidget()), NULL); (*prjman->toolbar)[ADD_UNIT_BUTTON]->Enabled = true; (*prjman->toolbar)[REMOVE_UNIT_BUTTON]->Enabled = false; (*prjman->toolbar)[ACTIVATE_EDITOR_BUTTON]->Enabled = false; (*prjman->toolbar)[FORM_PROPS_BUTTON]->Enabled = false; return ; } // now can proceed // is root ? if(node == prjman->root) { (*prjman->toolbar)[ADD_UNIT_BUTTON]->Enabled = true; (*prjman->toolbar)[REMOVE_UNIT_BUTTON]->Enabled = false; (*prjman->toolbar)[ACTIVATE_EDITOR_BUTTON]->Enabled = false; (*prjman->toolbar)[FORM_PROPS_BUTTON]->Enabled = false; // prompts name & status VDKString name = prjman->project->Name; sprintf(buff,"%s - %s", (char*) name, _(prj_status[prjman->project->Status])); prjman->bar->Panels()[0]->Caption = buff; } // is a node ? else if(! tree->IsLeaf(node)) { // prompts name & status VDKBUnit* unit = (VDKBUnit*) gtk_ctree_node_get_row_data(GTK_CTREE(tree->CustomWidget()),node); // not a .frm if( ((gpointer) unit) != ((gpointer) form_unit)) { (*prjman->toolbar)[ADD_UNIT_BUTTON]->Enabled = false; (*prjman->toolbar)[REMOVE_UNIT_BUTTON]->Enabled = true; (*prjman->toolbar)[ACTIVATE_EDITOR_BUTTON]->Enabled = unit->Type() == c_source_unit ? true : false; (*prjman->toolbar)[FORM_PROPS_BUTTON]->Enabled = false; sprintf(buff,"%s.%s - %s", (char*) VDKString(unit->Name()), ext_types[unit->Type()], _(prj_status[unit->Status])); prjman->bar->Panels()[0]->Caption = buff; } else { (*prjman->toolbar)[ADD_UNIT_BUTTON]->Enabled = false; (*prjman->toolbar)[REMOVE_UNIT_BUTTON]->Enabled = false; (*prjman->toolbar)[ACTIVATE_EDITOR_BUTTON]->Enabled = true; (*prjman->toolbar)[FORM_PROPS_BUTTON]->Enabled = (prjman->ActiveChild.child) ? true : false; prjman->bar->Panels()[0]->Caption = ""; } } // is a leaf else { gpointer p = gtk_ctree_node_get_row_data(GTK_CTREE(tree->CustomWidget()),node); (*prjman->toolbar)[ADD_UNIT_BUTTON]->Enabled = false; (*prjman->toolbar)[REMOVE_UNIT_BUTTON]->Enabled = false; (*prjman->toolbar)[ACTIVATE_EDITOR_BUTTON]->Enabled = true; (*prjman->toolbar)[FORM_PROPS_BUTTON]->Enabled = ((p == (gpointer) form_unit) && (prjman->ActiveChild.child)) ? true : false; prjman->bar->Panels()[0]->Caption = ""; } return ; } ///////////////////////////////////////////// /* */ VDKBProjectManager::VDKBProjectManager(VDKForm* owner): VDKForm(owner) { project = NULL; root = NULL; ForceToClose = false; Changed = false; ActiveChild.child = NULL; ActiveChild.name = ""; objInspector = NULL; } /* */ VDKBProjectManager::~VDKBProjectManager() { if(project) delete project; } /* */ /* NLS translation tables */ extern char * prjman_prompts[]; void VDKBProjectManager::Setup() { // Title = _(prjman_prompts[0]); // a notebook for units and classes lists panebar = new VDKNotebook(this); panebar->Scrollable = true; Add( panebar); // a vbox for units list page VDKBox *vbox = new VDKBox(this,v_box); const char* booktitle = _("Browse units"); panebar->AddPage( vbox, booktitle/*,unit_node_xpm,unit_node_xpm*/); // add next parts of units list to vbox // a separator VDKSeparator *sep = new VDKSeparator(this,h_separator); vbox->Add(sep,l_justify,false,false,false); // the toolbar // toolbar = new VDKToolbar(this); toolbar = new VDKHLButtonBar(this,h_box,shadow_etched_in); // toolbar->Style = GTK_TOOLBAR_BOTH; // toolbar->Spacing = 5; /* toolbar->AddButton(prjman_pixmaps[1],NULL, _(prjman_prompts[1]) ); toolbar->AddButton(prjman_pixmaps[2],NULL, _(prjman_prompts[2]) ); toolbar->AddButton(prjman_pixmaps[3],NULL, _(prjman_prompts[3]) ); toolbar->AddButton(prjman_pixmaps[4],NULL, _(prjman_prompts[4]) ); toolbar->AddButton(prjman_pixmaps[5],NULL, _(prjman_prompts[5]) ); */ toolbar->AddButton((const char**)prjman_pixmaps[1],_(prjman_prompts[1])); toolbar->AddButton((const char**)prjman_pixmaps[2],_(prjman_prompts[2])); toolbar->AddButton((const char**)prjman_pixmaps[3],_(prjman_prompts[3])); toolbar->AddButton((const char**)prjman_pixmaps[4],_(prjman_prompts[4])); toolbar->AddButton((const char**)prjman_pixmaps[5],_(prjman_prompts[5])); (*toolbar)[ADD_UNIT_BUTTON]->Enabled = false; (*toolbar)[REMOVE_UNIT_BUTTON]->Enabled = false; (*toolbar)[ACTIVATE_EDITOR_BUTTON]->Enabled = false; (*toolbar)[FORM_PROPS_BUTTON]->Enabled = false; // toolbar->Borderless = true; vbox->Add(toolbar,l_justify,false,false,false); SignalConnect(toolbar,"clicked",&VDKBProjectManager::HandleToolbar,false); // another sep sep = new VDKSeparator(this,h_separator); vbox->Add(sep,l_justify,false,false,false); // the widgets tree vbox->Add(tree = new VDKBCustomTree(this,1,NULL, GTK_SELECTION_SINGLE));//GTK_SELECTION_EXTENDED // cast white background to override some gtk-themes defaults // tree->NormalBackground = clWhite; bar = new VDKPanelbar(this); vbox->Add(bar,l_justify,false,false,false); // EventConnect(tree,"button_release_event", &VDKBProjectManager::OnReleaseButton); // SignalConnect(tree,"tree_select_row",&VDKBProjectManager::OnTreeSelection); gtk_signal_connect( GTK_OBJECT(tree->CustomWidget()), "tree_select_row", GTK_SIGNAL_FUNC(VDKBProjectManager::OnTreeSelection), (gpointer) this); // make and add classes pane as a new page in panebar // STUB cpane = new VDKBCCPane(this); // cpane->Setup(); // booktitle = _("Browse classes"); // panebar->AddPage( cpane, booktitle/*,class_xpm,class_xpm*/); // all done SetSize(300,250); // allows to grow // denies to shrink and autoshrink gtk_window_set_policy(GTK_WINDOW(Window()),false,true,false); } /* */ void VDKBProjectManager::OnShow(VDKForm*) { int w,h; VDKPoint ownerPos = Owner()->Position; gdk_window_get_size(GTK_WIDGET(Owner()->Window())->window, &w, &h); VDKPoint ownerSize = VDKPoint(w,h); VDKPoint p(ownerPos.X(),ownerPos.Y()+ownerSize.Y()+30); Position = p; // check mime type if(*mime_file) OpenProject(mime_file); else { // load last session char* save = (char*) VDKBuilder::ideDefaults.project.save_session; if(!strcmp(save,CHECK_YES)) LoadLastSession(); } } /* */ static char *avoid = "\"\r\n\t"; #define LAST_SESSION_PRJMAN_DO "project_manager_do" #define LAST_SESSION_MAINFORM_POS "mainform_pos:" #define LAST_SESSION_PRJMAN_ALLOCATION "prjman_alloc:" #define LAST_SESSION_EDITOR_ALLOCATION "editor_alloc:" #define LAST_SESSION_WI_ALLOCATION "wi_alloc:" #define LAST_SESSION_OPEN_FILE "open_file:" #define LAST_SESSION_OPEN_FORM "open_form:" #define LAST_SESSION_POS_FORM "pos_form:" #define LAST_SESSION_OPEN_TEXT "open_text:" #define LAST_SESSION_ACTIVE_TEXT "active_text:" #define LAST_SESSION_ACTIVE_TEXT_POS "active_text_pos:" #define LAST_SESSION_END_KEY ";" #define RIGHT_BRACE "}" static VDKPoint getpos(char* s) { VDKPoint point(0,0); char* p = strchr(s,','); if(p) { *p = '\0'; p++; point.x = atoi(s); point.y = atoi(p); } return point; } void VDKBProjectManager::LoadLastSession() { // load last session file char *key = NULL; char* buffer = NULL,*p,*section; struct stat info; char* file; FILE* fp; // look at user home sprintf(buff,"%s/.vdkb2/res/last.session",(char*) TheApp->user_home); file = buff; // no last session here if(stat(file,&info) == -1) return; else fp = fopen(file,"r"); // filters file cutting unnecessary chars. if(fp) { int c; buffer = p = new char[info.st_size+1]; while( (c = fgetc(fp)) != EOF) { if (!strchr (avoid, c)) *p++ = (char) c; } *p = '\0'; fclose(fp); } else return; // read project to open key = new char[1024*10]; if((section = ExtractSection(buffer, LAST_SESSION_PRJMAN_DO, RIGHT_BRACE))) { VDKBMainForm* mainform = (VDKBMainForm*) Owner(); // extracts project file name to open if((ExtractWord(section,key, LAST_SESSION_OPEN_FILE, LAST_SESSION_END_KEY))) { if(access(key,F_OK)) { sprintf(buff,_("Could not open last session %s"),key); Application()->VDKMessageBox(APPNAME, buff, VDK_OK| VDK_ICONINFORMATION, _(user_messages[user_cancel]), NULL,5000); return; } else OpenProject(key,false); } else goto DEAD_END; // extract main form position if((ExtractWord(section,key, LAST_SESSION_MAINFORM_POS, LAST_SESSION_END_KEY))) { VDKPoint pos = getpos(key); if(mainform) mainform->Position = pos; } // extracts forms names to open if((ExtractWord(section,key, LAST_SESSION_OPEN_FORM, LAST_SESSION_END_KEY))) { VDKBStringList flist; char* token; VDKBGuiForm* form = NULL; if( (token = strtok(key,",")) ) { if(!objInspector) { objInspector = new VDKBObjectInspector(this,NULL); objInspector->Setup(); objInspector->Show(); } // set automa mainform->Automa(automa_edit_form_on); // load list with all form names do { flist.add(VDKString(token)); } while( (token = strtok(NULL,",")) ); // iterates on string list for(VDKBStringListIterator li(flist);li;li++) { // create a form parsing .frm file form = CreateForm((char*) li.current()); if(form) form->Show(); } if(form) objInspector->LoadTree(form); // reset changes on forms objInspector->FormNeedToBeChanged(false); } } // extracts forms position if((ExtractWord(section,key, LAST_SESSION_POS_FORM, LAST_SESSION_END_KEY))) { char* p = strtok(key,"-"); if(p) { int t = 0; do { VDKPoint point = getpos(p); if(t < formlist.size()) formlist[t]->Position = point; t++; } while( ( p = strtok(NULL,"-")) ); } } // extracts text names to open on editor if((ExtractWord(section,key, LAST_SESSION_OPEN_TEXT, LAST_SESSION_END_KEY))) { VDKBStringList flist; char* token; int t = 0; if( (token = strtok(key,",")) ) { VDKBMainForm* mainform = (VDKBMainForm*) Owner(); VDKBEditor* editor = mainform->MakeEditor(); // load list with all text names do { flist.add(VDKString(token)); } while( (token = strtok(NULL,",")) ); // iterates on string list for(VDKBStringListIterator li(flist);li;li++,t++) { bool found = false; TextListIterator lt(editor->textlist); for(;lt;lt++) { if(! strcmp(lt.current()->Filename(), (char*) li.current())) { found = true; break; } } // does not exist in editor, make it if(!found) editor->AddText((char*) li.current(),true,true); } } } // extract project manager allocation if((ExtractWord(section,key, LAST_SESSION_PRJMAN_ALLOCATION, LAST_SESSION_END_KEY))) { char* p = strchr(key,'-'); if(p) { *p = '\0'; p++; VDKPoint pos = getpos(key); VDKPoint size = getpos(p); Position = pos; SetFormSize(size); } } // extract editor allocation if((ExtractWord(section,key, LAST_SESSION_EDITOR_ALLOCATION, LAST_SESSION_END_KEY))) { VDKBEditor* editor = mainform->MakeEditor(); if(editor) { char* p = strchr(key,'-'); if(p) { *p = '\0'; p++; VDKPoint pos = getpos(key); VDKPoint size = getpos(p); editor->Position = pos; editor->SetFormSize(size); } } } // extract wi allocation if((ExtractWord(section,key, LAST_SESSION_WI_ALLOCATION, LAST_SESSION_END_KEY))) { char* p = strchr(key,'-'); if(p) { *p = '\0'; p++; VDKPoint pos = getpos(key); VDKPoint size = getpos(p); if(objInspector) { objInspector->Position = pos; // objInspector->SetFormSize(size); } } } // extract active text and last text cursor position if((ExtractWord(section,key, LAST_SESSION_ACTIVE_TEXT, LAST_SESSION_END_KEY))) { bool found = false; int t = 0; VDKBEditor* editor = mainform->MakeEditor(); if(editor) { TextListIterator lt(editor->textlist); for(;lt;lt++,t++) { if(! strcmp(lt.current()->Filename(), key)) { found = true; break; } } // if(found) { editor->nbook->ActivePage = t; (editor->textlist)[t]->GrabFocus(); if((ExtractWord(section,key, LAST_SESSION_ACTIVE_TEXT_POS, LAST_SESSION_END_KEY))) { int pos = atoi(key); (editor->textlist)[t]->ScrollToPos(pos); /* GtkWidget *wid = (editor->textlist)[t]->WrappedWidget(); GtkAdjustment *adj = GTK_ADJUSTMENT(GTK_TEXT_VIEW(wid)->vadjustment); gtk_adjustment_value_changed(adj); */ } } } } delete[] section; } else goto DEAD_END; // opens all text editors // opens all child forms DEAD_END: if(buffer) delete[] buffer; if(key) delete[] key; } /* */ extern VDKPoint mainformLastPosition; bool VDKBProjectManager::SaveLastSession() { FILE* fp; // look at user home if(project) { VDKPoint p,s; VDKBMainForm* mainform = (VDKBMainForm*) Owner(); VDKBEditor* editor = mainform->MakeEditor(); sprintf(buff,"%s/.vdkb2/res/last.session",(char*) TheApp->user_home); fp = fopen(buff,"w+"); if(!fp) return false; // saves project name fprintf(fp,"%s {\n %s\n\t%s.prj;", LAST_SESSION_PRJMAN_DO, LAST_SESSION_OPEN_FILE, (char *) project->PathName); // saves main form last position // global mainformLastPosition is set by // main form CanClose(). // At this points underlying mainform gtk+ // widget is already destroyed and isn't // possible access to his position. p = mainformLastPosition; fprintf(fp,"\n\t%s%d,%d;", LAST_SESSION_MAINFORM_POS, p.x,p.y); // saves prjmanager allocation p = Position; s = VDKPoint(Window()->allocation.width,Window()->allocation.height); fprintf(fp,"\n\t%s%d,%d-%d,%d;", LAST_SESSION_PRJMAN_ALLOCATION, p.x,p.y,s.x,s.y); // saves editor allocation if(editor && editor->Visible) { p = editor->Position; s = VDKPoint(editor->Window()->allocation.width, editor->Window()->allocation.height); fprintf(fp,"\n\t%s%d,%d-%d,%d;", LAST_SESSION_EDITOR_ALLOCATION, p.x,p.y,s.x,s.y); } // saves WI allocation if(objInspector) { p = objInspector->Position; s = VDKPoint(objInspector->Window()->allocation.width, objInspector->Window()->allocation.height); fprintf(fp,"\n\t%s%d,%d-%d,%d;", LAST_SESSION_WI_ALLOCATION, p.x,p.y,s.x,s.y); } // saves forms name int t = 0, j = 0; if(formlist.size() > 0) { fprintf(fp,"\n %s",LAST_SESSION_OPEN_FORM); j = formlist.size(); GuiFormListIterator li(formlist); for (;li;li++,t++) { // save only if visible if(li.current()->Visible) { fprintf(fp,"\n\t%s",(char*) li.current()->FileName()); if(t < j-1) fprintf(fp,","); } } fprintf(fp,";"); // saves forms positions fprintf(fp,"\n %s",LAST_SESSION_POS_FORM); li.restart(); t = 0; for (;li;li++,t++) { // save only if visible if(li.current()->Visible) { VDKPoint p = li.current()->Position; fprintf(fp,"\n\t%d,%d",p.x,p.y); if(t < j-1) fprintf(fp,"-"); } } fprintf(fp,";"); } // text editor section // saves texts name t = 0; j = editor->textlist.size(); if(j > 0) { fprintf(fp,"\n %s",LAST_SESSION_OPEN_TEXT); for(TextListIterator li(editor->textlist);li;li++,t++) { fprintf(fp,"\n\t%s",(char*) li.current()->Filename()); if(t < j-1) fprintf(fp,","); } fprintf(fp,";"); // saves active text int a = editor->nbook->ActivePage; if(a >= 0 && a < j) { fprintf(fp,"\n %s",LAST_SESSION_ACTIVE_TEXT); fprintf(fp,"\n\t%s",(char*) editor->textlist[a]->Filename()); fprintf(fp,";"); // saves active text cursor position fprintf(fp,"\n %s",LAST_SESSION_ACTIVE_TEXT_POS); fprintf(fp,"\n\t%d",(int) editor->textlist[a]->Pointer); fprintf(fp,";"); } } // end of section fprintf(fp,"\n}"); fclose(fp); return true; } else return false; } /* */ void VDKBProjectManager::AddNewProject(char* name, int type, char* author, char* email, bool gpld, bool updatelru) { if(type < 0) return; if(project) { // this should manage project closing // (saving all prj stuff) CanClose(); // // force to close all child form (if any) formlist.Destroy(); if(objInspector) { objInspector->ForceToClose = true; objInspector->Close(); objInspector = NULL; } ActiveChild.child = NULL; // removes all editor page VDKBMainForm* mainform = (VDKBMainForm*) Owner(); VDKBEditor* editor = mainform->Editor(); if( editor) { int t = 0; while( (t = editor->nbook->Pages.size()) > 0) editor->nbook->RemovePage(t-1); editor->textlist.flush(); } delete project; project = NULL; //STUB cpane->Clean(); // clear old classes } if(type >= 0) project = new VDKBProject(this, name, type, author, email, gpld, true); // makes template files bool result = false; switch(type) { case vdk_project: result = project->CreateTemplatesFilesForVDK(type); break; case console_project: result = project->CreateTemplatesFilesForConsole(); break; case vdk_gnome_project: result = project->CreateTemplatesFilesForVDK(type); break; default: break; } if(result) { LoadTree(); ((VDKBMainForm*) Owner())->Automa(automa_prjman_on); // change to project dir VDKString dir = project->Path; chdir((char*) dir); // activate editor on project_name.cc char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; VDKString mainsource = project->PathName; mainsource += "."; mainsource += cc_ext; ActivateEditor((char*) mainsource,true,true); VDKBMainForm* mainform = (VDKBMainForm*) Owner(); #if HAVE_GNOME // enable gnome widget toolbar pending on project typedef if(project->Type == vdk_gnome_project) mainform->EnableGnomeWidgets(true); else mainform->EnableGnomeWidgets(false); #endif // update lru manager if(mainform->LruManager() && updatelru) { mainform->LruManager()->Update(name); mainform->UpdateLRU(); } // STUB update class viewer for project // cpane->reset_pane(); // cpane->LoadClassTree((char*) project->Path); } } /* */ #if USE_XDB extern bool LoadXdbOptions(VDKXDatabase* db, char* filename); #endif void VDKBProjectManager::OpenProject(char* filename, bool updatelru) { FileStringArray selections; char* prj_ext = (char*) VDKBuilder::ideDefaults.project.prj_ext; if(!filename) { VDKFileDialog *child = new VDKFileDialog(this,&selections, _(file_dialog_prompts[0])); sprintf(buff,"*.%s",prj_ext); child->Filter = buff; child->ShowModal(); if(selections.size() <= 0) return; } else { selections.resize(1); selections[0] = filename; } // load project VDKBProject *temp = new VDKBProject(this,(char*) selections[0]); if(temp->Valid) { if(project) { // this should manage project closing CanClose(); // force to close all child form (if any) formlist.Destroy(); ActiveChild.child = NULL; if(objInspector) { objInspector->ForceToClose = true; objInspector->Close(); objInspector = NULL; } // removes all editor page VDKBMainForm* mainform = (VDKBMainForm*) Owner(); VDKBEditor* editor = mainform->Editor(); if( editor) { int t = 0; while( (t = editor->nbook->Pages.size()) > 0) editor->nbook->RemovePage(t-1); editor->textlist.flush(); } // STUB cpane->Clean(); // clear old classes } delete project; project = temp; LoadTree(); ((VDKBMainForm*) Owner())->Automa(automa_prjman_on); Changed = false; // change to project dir VDKString dir = project->Path; chdir((char*) dir); // make it if does not exists VDKBMainForm* mainform = (VDKBMainForm*) Owner(); mainform->MakeEditor(); // activate editor on project_name.cc char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; VDKString mainsource = project->PathName; //char* p = get_extension((char*) mainsource); mainsource += "."; mainsource += cc_ext; ActivateEditor((char*) mainsource,true,true); #if HAVE_GNOME // enable gnome widget toolbar pending on project typedef if(project->Type == vdk_gnome_project) mainform->EnableGnomeWidgets(true); else mainform->EnableGnomeWidgets(false); #endif #if USE_XDB // clear previous database TheApp->theXdb->Clear(); if(!LoadXdbOptions(TheApp->theXdb,(char*) project->PathName)) ; // warn user !! #endif // update lru manager if(mainform->LruManager() && updatelru) { mainform->LruManager()->Update((char*) selections[0]); mainform->UpdateLRU(); } } else delete temp; // STUB update class viewer for project // cpane->reset_pane(); // if(VDKBuilder::ideDefaults.project.enable_class_browser == VDKString(CHECK_YES)) // cpane->LoadClassTree((char*) project->Path); } /* */ void VDKBProjectManager::LoadTree() { if(! project) return; // clears tree tree->Clear(); tree->Freeze(); // add project to tree VDKString name = project->Name; char* prj = (char*) name; // add root root = tree->AddNode(&prj,NULL,true,false, prj_node_xpm,prj_node_xpm); // sets project as row data gtk_ctree_node_set_row_data(GTK_CTREE(tree->CustomWidget()), root, (gpointer) project); // add units UnitListIterator li(project->Units()); for(;li;li++) AddUnitNode(li.current()); tree->Thaw(); // select root node tree->SelectedNode = NULL; // enables (*toolbar)[ADD_UNIT_BUTTON]->Enabled = true; (*toolbar)[REMOVE_UNIT_BUTTON]->Enabled = false; (*toolbar)[ACTIVATE_EDITOR_BUTTON]->Enabled = false; } /* */ void VDKBProjectManager::AddUnitNode(VDKBUnit* unit) { char **xpm,*p; int type = unit->Type(); switch(type) { case source_unit: case project_unit: xpm = unit_node_xpm; p = unit->ShortName(); break; case c_source_unit: xpm = unit_node_xpm; sprintf(buff,"%s.c",unit->Name()); p = buff; break; case object_unit: case staticlib_unit: xpm = gear_xpm; p = unit->ShortName(); break; default: xpm = unit_node_xpm; p = unit->ShortName(); } VDKTreeNode node = tree->AddNode(&p,root, false,false,xpm,xpm); // sets unit as row data gtk_ctree_node_set_row_data(GTK_CTREE(tree->CustomWidget()), node, (gpointer) unit); // if unit type == source_unit // add child source and header if(unit->Type() == source_unit || unit->Type() == project_unit ) { char* source = unit->Source(); // check for exist if(! access(source,F_OK)) { VDKTreeNode n = tree->AddNode(&source,node,false,true,c_xpm,c_xpm); gtk_ctree_node_set_row_data(GTK_CTREE(tree->CustomWidget()), n, (gpointer) NULL); } char* header = unit->Header(); if(! access(header,F_OK)) { VDKTreeNode n = tree->AddNode(&header,node,false,true,h_xpm,h_xpm); gtk_ctree_node_set_row_data(GTK_CTREE(tree->CustomWidget()), n, (gpointer) NULL); } char* gui = unit->Gui(); VDKTreeNode n = NULL; if(! access(gui,F_OK)) { n = tree->AddNode(&gui,node,false,false, mininewform_xpm,mininewform_xpm); if(n) gtk_ctree_node_set_row_data(GTK_CTREE(tree->CustomWidget()), n, (gpointer) form_unit); // char* p = unit->GuiSource(); if(n && p && ! access(p,F_OK)) { VDKTreeNode n1 = tree->AddNode(&p,n,false,true, c_xpm,c_xpm); if(n1) gtk_ctree_node_set_row_data(GTK_CTREE(tree->CustomWidget()), n1, (gpointer) NULL); } // p = unit->DfmHeader(); if( n && p && ! access(p,F_OK)) { VDKTreeNode n2 = tree->AddNode(&p,n,false,true, h_xpm,h_xpm); if(n2) gtk_ctree_node_set_row_data(GTK_CTREE(tree->CustomWidget()), n2, (gpointer) NULL); } } } } /* */ void VDKBProjectManager::RemoveUnit() { VDKBUnit* unit; VDKTreeNode node = tree->SelectedNode; if(!node) return; else unit = (VDKBUnit*) gtk_ctree_node_get_row_data( GTK_CTREE(tree->CustomWidget()), node); if(unit->Type() == project_unit) Application()->VDKMessageBox(APPNAME, _(user_messages[user_cant_remove_unit]), VDK_OK| VDK_ICONINFORMATION, _(user_messages[user_cancel])); else if(project->Units().remove(unit)) { tree->RemoveNode(node); delete unit; Changed = true; } return; } /* */ void VDKBProjectManager::AddUnit() { FileStringArray selections; char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; VDKFileDialog *child = new VDKFileDialog(this,&selections, file_dialog_prompts[2]); sprintf(buff,"*.%s",cc_ext); child->Filter = buff; child->ShowModal(); int t; if(selections.size() <= 0) return ; for(t=0; t < selections.size();t++) { char* selected = (char*) selections[t]; VDKBUnit* unit = new VDKBUnit(selected,prj_unsaved); if(! Unique(unit)) { // duplicate not allowed sprintf(buff,"%s\n%s", unit->Name(), _(user_messages[user_dup_unit]) ); Application()->VDKMessageBox(APPNAME, buff, VDK_OK| VDK_ICONINFORMATION, _(user_messages[user_cancel])); delete unit; } else if(unit->Type() != unknow_type) { project->Units().add(unit); Changed = true; AddUnitNode(unit); } else { // unknown type can't be added sprintf(buff,"%s\n%s\n%s", unit->Name(), _(user_messages[user_unknown_unit]), _(user_messages[user_unknown_unit1]) ); Application()->VDKMessageBox(APPNAME, buff, VDK_OK| VDK_ICONINFORMATION, _(user_messages[user_cancel]) ); delete unit; } } } /* checks unique */ bool VDKBProjectManager::Unique(VDKBUnit* unit) { UnitListIterator li(project->Units()); for(;li;li++) if (*unit == *(li.current())) return false; return true; } /* Save project */ #if USE_XDB extern bool SaveXdbOptions(VDKXDatabase* db, char* filename); #endif bool VDKBProjectManager::Save() { if(project) { if(project->Status == prj_never_saved) { char* prj_ext = (char*) VDKBuilder::ideDefaults.project.prj_ext; FileStringArray selections; VDKFileSaveAsDialog *child = new VDKFileSaveAsDialog(this,&selections, _(file_dialog_prompts[3])); sprintf(buff,"*.%s",prj_ext); child->Filter = buff; child->ShowModal(); if(selections.size() <= 0) return false; project->Save((char*) selections[0]); #if USE_XDB SaveXdbOptions(TheApp->theXdb,(char*) selections[0]); #endif Changed = false; // reload tree LoadTree(); } else { // save editors VDKBMainForm* mainform = (VDKBMainForm*) Owner(); VDKBEditor* editor = mainform ? mainform->Editor() : NULL; if(editor && editor->Visible) editor->UpdateFiles(); // save project project->Save(); #if USE_XDB SaveXdbOptions(TheApp->theXdb,(char*) project->PathName); #endif // writes frm file (in vdkb_design.cc) WriteGuiFiles(); Changed = false; // reload tree LoadTree(); } } return true; } /* Project manager can'te be closed */ bool VDKBProjectManager::CanClose() { if(project) { // save editors VDKBMainForm* mainform = (VDKBMainForm*) Owner(); VDKBEditor* editor = mainform ? mainform->Editor() : NULL; if(editor && editor->Visible) editor->UpdateFiles(); // save project project->Save(); // writes frm file (in vdkb_design.cc) WriteGuiFiles(); Changed = false; // can be closed via mainform only. if(ForceToClose) { // save last session char* save = (char*) VDKBuilder::ideDefaults.project.save_session; if(!strcmp(save,CHECK_YES)) SaveLastSession(); // allows child list to be close // setting child ForceToClose = true formlist.Close(); if(objInspector) objInspector->ForceToClose = true; return ForceToClose; } } return ForceToClose; } ///////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////// typedef struct { VDKTreeNodeList* list; char* key; } SelectInfo; /* called by Select(char* key)->gtk_ctree_post_recursive(), if node key matches with key add that node to list */ static void SelectOnTree(GtkCTree *ctree, GtkCTreeNode *node, gpointer i) { SelectInfo* info = (SelectInfo*) i; char *text; int res = gtk_ctree_get_node_info (ctree, node, &text, NULL, NULL, NULL, NULL,NULL,NULL,NULL); if(res && strstr(text,info->key)) info->list->add(node); } /* return a list of nodes that contain , user should delete list after use */ VDKTreeNodeList* VDKBCustomTree::Select(char* key) { VDKTreeNodeList* nodelist = new VDKTreeNodeList; SelectInfo info = { nodelist, key }; gtk_ctree_post_recursive(GTK_CTREE(custom_widget), NULL, SelectOnTree, (gpointer) &info); return nodelist; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_prjopt.cc0000644000000000000000000002252307434173757014374 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * January 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #include //static char buff[512]; extern char* ExtractWord(char* src,char* tgt,char* key1,char* key2); extern char * ExtractSection (char *buffer, char *section_begin, char* section_end); static char *avoid = "\"\r\n\t"; /* */ VDKBProjectOptions::VDKBProjectOptions(int type): type(type), c_compiler("gcc"), cc_compiler("g++"), link("g++"), defines("-DNONE"), includes("-I./"), debugger(""), runargs(""), package(""), version("0.0.1"), nls_support("no") { switch(type) { case vdk_project: #if USE_XDB c_flags = "-g -Wall `vdkxdb-config-2 --cflags`"; libs = "`vdkxdb-config-2 --libs`"; #else c_flags = "-g -Wall `vdk-config-2 --cflags`"; libs = "`vdk-config-2 --libs`"; #endif break; case vdk_gnome_project: #if USE_XDB c_flags = "-g -Wall `vdkxdb-config-2 --cflags`"; libs = "`vdkxdb-config-2 --libs`"; #else c_flags = "-g -Wall `vdk-config-2 --cflags`"; libs = "`vdk-config-2 --libs`"; #endif defines = "-DHAVE_GNOME"; break; default: c_flags = "-g -Wall"; break; } } /* */ VDKBProjectOptions::~VDKBProjectOptions() { } /* */ bool VDKBProjectOptions::Save() { FILE* fp = fopen(filename,"w+"); if(!fp) return false; // compilers section fprintf(fp,"/*\n!!! PLEASE DO NOT EDIT THIS FILE !! (or edit at your own risk)\n"); fprintf(fp,"Let VDKBuilder do the job for you\n*/\n"); fprintf(fp,"%s%s%s%s%s%s%s%s\n", COMPILERS_SECTION, C_COMPILER, (char*) c_compiler, END_KEY, CC_COMPILER, (char*) cc_compiler, END_KEY, END_SECTION); // link section fprintf(fp,"%s%s%s%s%s\n", LINK_SECTION, LINK, (char*) link, END_KEY, END_SECTION); // c flags section fprintf(fp,"%s%s%s%s%s\n", C_FLAGS_SECTION, C_FLAGS, (char*) c_flags, END_KEY, END_SECTION); // define section fprintf(fp,"%s%s%s%s%s\n", DEFINES_SECTION, DEFINES, (char*) defines, END_KEY, END_SECTION); // include section fprintf(fp,"%s%s%s%s%s\n", INCLUDES_SECTION, INCLUDES, (char*) includes, END_KEY, END_SECTION); // libs section fprintf(fp,"%s%s%s%s%s\n", LIBS_SECTION, LIBS, (char*) libs, END_KEY, END_SECTION); // debugger section fprintf(fp,"%s%s%s%s%s\n", DEBUGGER_SECTION, DEBUGGER, (char*) debugger, END_KEY, END_SECTION); // program section fprintf(fp,"%s%s%s%s%s\n", PROGRAM_SECTION, RUNARGS, (char*) runargs, END_KEY, END_SECTION); // package section fprintf(fp,"%s\n%s%s%s\n", PACKAGE_SECTION, PKG_NAME, package.isNull() ? "" : (char*) package, END_KEY); fprintf(fp,"%s%s%s\n", PKG_VERSION, version.isNull() ? "" :(char*) version, END_KEY); fprintf(fp,"%s%s%s%s\n", NLS_SUPPORT, nls_support.isNull() ? "no" : (char*) nls_support, END_KEY, END_SECTION); // developer section fprintf(fp,"%s\n%s%s%s\n", DEVELOPER_SECTION, AUTHOR, author.isNull() ? "" : (char*) author, END_KEY); fprintf(fp,"%s%s%s\n", EMAIL, email.isNull() ? "" :(char*) email, END_KEY); fprintf(fp,"%s%s%s%s\n", GPLD, gpld ? "yes" : "no", END_KEY, END_SECTION); fclose(fp); return true; } /* */ bool VDKBProjectOptions::Load() { char* buff,*p,*section; char *key = new char[512]; struct stat info; char* file = (char*) filename; stat(file,&info); FILE* fp = fopen(file,"r"); if(fp) { int c; buff = p = new char[info.st_size+1]; while( (c = fgetc(fp)) != EOF) { if (!strchr (avoid, c)) *p++ = (char) c; } *p = '\0'; fclose(fp); } else return false; if((section = ExtractSection(buff,COMPILERS_SECTION,END_SECTION))) { if(ExtractWord(section,key,C_COMPILER,END_KEY)) c_compiler = key; if(ExtractWord(section,key,CC_COMPILER,END_KEY)) cc_compiler = key; delete[] section; } if((section = ExtractSection(buff,LINK_SECTION,END_SECTION))) { if(ExtractWord(section,key,LINK,END_KEY)) link = key; delete[] section; } if((section = ExtractSection(buff,C_FLAGS_SECTION,END_SECTION))) { if(ExtractWord(section,key,C_FLAGS,END_KEY)) c_flags = key; delete[] section; } if((section = ExtractSection(buff,DEFINES_SECTION,END_SECTION))) { if(ExtractWord(section,key,DEFINES,END_KEY)) defines = key; delete[] section; } if((section = ExtractSection(buff,INCLUDES_SECTION,END_SECTION))) { if(ExtractWord(section,key,INCLUDES,END_KEY)) includes = key; delete[] section; } if((section = ExtractSection(buff,LIBS_SECTION,END_SECTION))) { if(ExtractWord(section,key,LIBS,END_KEY)) libs = key; delete[] section; } if((section = ExtractSection(buff,DEBUGGER_SECTION,END_SECTION))) { if(ExtractWord(section,key,DEBUGGER,END_KEY)) debugger = key; delete[] section; } if((section = ExtractSection(buff,PROGRAM_SECTION,END_SECTION))) { if(ExtractWord(section,key,RUNARGS,END_KEY)) runargs = key; delete[] section; } if((section = ExtractSection(buff,PACKAGE_SECTION,END_SECTION))) { if(ExtractWord(section,key,PKG_NAME,END_KEY)) package = key; if(ExtractWord(section,key,PKG_VERSION,END_KEY)) version = key; if(ExtractWord(section,key,NLS_SUPPORT,END_KEY)) nls_support = key; delete[] section; } if((section = ExtractSection(buff,DEVELOPER_SECTION,END_SECTION))) { if(ExtractWord(section,key,AUTHOR,END_KEY)) author = key; if(ExtractWord(section,key,EMAIL,END_KEY)) email = key; if(ExtractWord(section,key,GPLD,END_KEY)) gpld = !strcmp(key,"yes"); delete[] section; } // finished delete[] buff; delete[] key; return true; } #if USE_XDB #define XDB_ACTIVE "active:" bool SaveXdbOptions(VDKXDatabase* db, char* filename) { VDKString fname = filename; TableList* tlist = NULL; FILE* fp = NULL; if(!db) return false; else { fname += ".prj.xdb"; fp = fopen((char*) fname,"w+"); tlist = db->TList(); } if(!fp || !tlist) return false; // loops into xdb TableListIterator lt(*tlist); for(;lt;lt++) { // header fprintf(fp,"%s\n",XDB_SECTION); VDKXTable* table = lt.current(); IndexList* ilist = table->NdxList(); char* name = (char*) table->Name(); fprintf(fp,"%s%s%s\n",XDB_TABLE_OPEN,name,END_KEY); fprintf(fp,"%s%s%s\n",XDB_ACTIVE, table->Active ? "yes" : "no", END_KEY); IndexListIterator li(*ilist); for(;li;li++) { VDKXTableIndex* index = li.current(); char* name = (char*) index->Name(); fprintf(fp,"%s%s%s\n",XDB_INDEX_OPEN,name,END_KEY); } // footer fprintf(fp,"%s\n",END_SECTION); } fclose(fp); return true; } /* */ bool LoadXdbOptions(VDKXDatabase* db, char* filename) { VDKString file = filename; FILE* fp = NULL; char* buff,*p,*section; char *sec_key = NULL; char *ndx_key = NULL; char* act_key = NULL; struct stat info; if(!db) return false; else file += ".prj.xdb"; sec_key = new char[256]; ndx_key = new char[256]; act_key = new char[32]; stat(file,&info); fp = fopen(file,"r"); if(fp) { int c; buff = p = new char[info.st_size+1]; while( (c = fgetc(fp)) != EOF) { if (!strchr (avoid, c)) *p++ = (char) c; } *p = '\0'; fclose(fp); } else return false; // scans char* sec_pt = buff; // gets an xdb section while((section = ExtractSection(sec_pt,XDB_SECTION,END_SECTION))) { char* table = ExtractWord(section,sec_key,XDB_TABLE_OPEN,END_KEY); bool active = false; if(ExtractWord(section,act_key,XDB_ACTIVE,END_KEY)) active = !strcmp(act_key,"yes"); else *act_key = '\0'; if(table) { // adds table to xdb VDKXTable *dbtable = new VDKXTable(db,table); dbtable->Open(); dbtable->Active = active; // move forward pointer char* ndx_pt = section + strlen(XDB_TABLE_OPEN) + strlen(table)+ strlen(END_KEY); if(*act_key) ndx_pt += strlen(XDB_ACTIVE) + strlen(act_key)+ strlen(END_KEY); while(ExtractWord(ndx_pt,ndx_key,XDB_INDEX_OPEN,END_KEY)) { // adds index to table and opens it VDKXTableIndex *index = new VDKXTableIndex(dbtable,ndx_key); index->Open(); // move forward pointer ndx_pt += (strlen(XDB_INDEX_OPEN) + strlen(ndx_key) + strlen(END_KEY)); } sec_pt += strlen(section) + strlen(XDB_SECTION) + strlen(END_SECTION); } delete[] section; } // finished delete[] buff; delete[] sec_key; delete[] ndx_key; delete[] act_key; return true; } #endif vdkbuilder2-2.4.0/vdkbuilder/vdkb_prjpref.cc0000644000000000000000000001434210022113243014471 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * January 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include static char buff[256]; extern VDKBuilder* TheApp; DEFINE_SIGNAL_MAP(VDKBPrjPrefForm,VDKForm) ON_SIGNAL(ok,clicked_signal,Ok), ON_SIGNAL(cancel,clicked_signal,Cancel) END_SIGNAL_MAP //======================================= /* checks if debugger exists on default paths */ static char* search_paths[] = { "/usr/bin", "/usr/local/bin", "/usr/X11R6/bin/", "/usr/bin/X11/" "/usr/X11/bin/", 0 }; bool CheckDebugger(char* exe) { bool exists = false; int t; if(exe && *exe) { for(t = 0; search_paths[t]; t++) { sprintf(buff,"%s/%s",search_paths[t],exe); exists = !access(buff,F_OK); if(exists) break; } } return exists; } bool VDKBPrjPrefForm::Ok(VDKObject*) { options->c_compiler = c_compiler->Text; options->cc_compiler = cc_compiler->Text; options->link = link->Text; options->c_flags = c_flags->Text; options->defines = defines->Text; options->includes = includes->Text; options->libs = libs->Text; // checks if debugger exists on /usr/bin or /usr/local/bin // otherwise warns user and let "debug" field blank. char* p = (char*) debugger->Text; if(CheckDebugger(p)) options->debugger = debugger->Text; else if(p && *p) { sprintf(buff, _("<%s> does not exists on default paths\n\ please enter a complete pathname for debugger executable"),p); Application()->VDKMessageBox( APPNAME, buff, VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 5000); options->debugger = ""; } else options->debugger = ""; options->runargs = runargs->Text; options->version = version->Text; options->package = package->Text; options->nls_support = nls_support->Checked ? "yes" : "no"; options->Save(); VDKBMainForm* mainform = dynamic_cast(Owner()); // reset menu/options flag if(mainform) mainform->Automa(automa_prjman_on); // update whole gui files VDKBProjectManager* prjman = mainform ? mainform->PrjManager(): NULL; if(prjman) { GuiFormListIterator lf(*(prjman->FormList())); for(;lf;lf++) lf.current()->Changed = true; // update gui files without ask user prjman->WriteGuiFiles(false); } Close(); return true; } /* */ bool VDKBPrjPrefForm::Cancel(VDKObject*) { Close(); return true; } //======================================= /* */ VDKBPrjPrefForm::VDKBPrjPrefForm(VDKForm* owner, VDKBProjectOptions *options): VDKForm(owner),options(options) { } /* */ VDKBPrjPrefForm:: ~VDKBPrjPrefForm() { } /* */ void VDKBPrjPrefForm::Setup() { int t; sprintf(buff,"%s - <%s>", _(prjoptions_prompts[0]), (char*) options->filename); Title = buff; VDKBox* vbox = new VDKBox(this,v_box); table = new VDKTable(this,9,2); for(t = 0; t < 9 ;t++) table->AddToCell(new VDKLabel(this,_(prjoptions_prompts[t+1])),t,0); c_compiler = new VDKEntry(this,0,options->c_compiler); c_compiler->SetSize(300,-1); table->AddToCell(c_compiler,0,1); cc_compiler = new VDKEntry(this,0,options->cc_compiler); table->AddToCell(cc_compiler,1,1); link = new VDKEntry(this,0,options->link); table->AddToCell(link,2,1); c_flags = new VDKEntry(this,0,options->c_flags); table->AddToCell(c_flags,3,1); defines = new VDKEntry(this,0,options->defines); table->AddToCell(defines,4,1); includes = new VDKEntry(this,0,options->includes); table->AddToCell(includes,5,1); libs = new VDKEntry(this,0,options->libs); table->AddToCell(libs,6,1); debugger = new VDKEntry(this,0,options->debugger); table->AddToCell(debugger,7,1); runargs = new VDKEntry(this,0,options->runargs); table->AddToCell(runargs,8,1); vbox->Add(table); // autoconf/automake section VDKFrame* frame1 = new VDKFrame(this," * Autoconf/Automake *", v_box,shadow_etched_out); VDKTable* table1 = new VDKTable(this,3,2); table1->AddToCell(new VDKLabel(this,_(prjoptions_prompts[13])),0,0); package = new VDKEntry(this,0,options->package); package->SetTip(_("If left empty package name will be as project name")); table1->AddToCell(package,0,1); table1->AddToCell(new VDKLabel(this,_(prjoptions_prompts[10])),1,0); version = new VDKEntry(this,0,options->version); table1->AddToCell(version,1,1); nls_support = new VDKCheckButton(this,_(prjoptions_prompts[14])); nls_support->SetTip(_("Check to enable Native Language Support")); nls_support ->Checked = options->nls_support == VDKString("yes"); table1->AddToCell(nls_support,2,0); frame1->Add(table1); vbox->Add(frame1,l_justify,false,false,false); // button section VDKFrame *frame = new VDKFrame(this,NULL,h_box); ok = new VDKCustomButton(this,_(prjoptions_prompts[11])); cancel = new VDKCustomButton(this,_(prjoptions_prompts[12])); frame->Add(ok); frame->Add(cancel); vbox->Add(frame,l_justify,false,false,false); Add(vbox); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_PWizard.cc0000644000000000000000000003224310022114071014401 /* * =========================== * VDK Builder * Version 2.0 * March 2001 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include "pixmaps/gnome_wiz.xpm" #include "pixmaps/terminal.xpm" #include "pixmaps/gnome-search.xpm" #include "pixmaps/leftarrow.xpm" #include "pixmaps/rightarrow.xpm" #include "pixmaps/finish.xpm" #include "pixmaps/stop.xpm" #include /* defining signal and events dynamics tables */ DEFINE_SIGNAL_LIST(Vdkb_PWizardForm,VDKForm); DEFINE_EVENT_LIST(Vdkb_PWizardForm,VDKForm); /* defining signal static table */ DEFINE_SIGNAL_MAP(Vdkb_PWizardForm,VDKForm) ON_SIGNAL(prev,clicked_signal,OnprevClick), ON_SIGNAL(next,clicked_signal,OnnextClick), ON_SIGNAL(cancel,clicked_signal,OncancelClick), ON_SIGNAL(prjtypegroup,toggled_signal,OnrbgroupToggled), ON_SIGNAL(browsedir,clicked_signal,OnbrowsedirClick), ON_SIGNAL(prjname,changed_signal,OnprjnameChanged), ON_SIGNAL(prjroot,changed_signal,OnprjrootChanged), ON_SIGNAL(finish,clicked_signal,OnfinishClick) END_SIGNAL_MAP enum { vdk_app = 0, console_app, gnome_app }; extern char *app_wiz_xpm[]; static char *default_prj_info = "\n%s%s"; static char* info_group[] = { N_("VDK Application"), N_("\nA VDK typical application\nwith at least a Main Form,\nruns with most window managers"), N_("Console Application"), N_("\nA text based application that\nruns from a terminal"), N_("Gnome Application"), N_("\nA VDK application that is\nGnome aware, requires Gnome\nlibs installed"), }; static char buff[1024]; /* main form constructor */ Vdkb_PWizardForm::Vdkb_PWizardForm(VDKForm* owner, char* title, VDKBNewProjectInfo* info) : VDKForm (owner,title), info(info) { info->isValid = false; } /* main form destructor */ Vdkb_PWizardForm::~Vdkb_PWizardForm() { } /* main form setup */ void Vdkb_PWizardForm::GUISetup(void) { SetSize(500,400); Title = _("VDKBuilder project wizard"); vbox4 = new VDKBox(this,v_box); Add(vbox4,0,1,1,0); step1frame = new VDKFrame(this,_("Step 1 - Project type"),v_box,shadow_etched_in); step1frame->Shadow = shadow_etched_in; step1frame->Align = c_justify; vbox4->Add(step1frame,0,1,1,0); step1frame->BorderWidth(5); step1 = new VDKBox(this,h_box); step1frame->Add(step1,0,1,1,0); step1->BorderWidth(0); iconbox = new VDKEventBox(this,v_box); iconbox->NormalBackground = clWhite; iconbox->SetSize(59,192); step1->Add(iconbox,0,0,0,0); iconbox->BorderWidth(0); vdk_pix = new VDKPixmap(this,app_wiz_xpm); iconbox->Add(vdk_pix,0,1,1,0); console_pix = new VDKPixmap(this,terminal_xpm); iconbox->Add(console_pix,0,1,1,0); gnome_pix = new VDKPixmap(this,gnome_wiz_xpm); gnome_pix->Enabled = false; iconbox->Add(gnome_pix,0,1,1,0); prjtypegroup = new VDKRadioButtonGroup(this,v_box); // prjtypegroup->SetSize(151,250); step1->Add(prjtypegroup,0,0,0,5); prjtypegroup->BorderWidth(0); vdk = new VDKRadioButton(this,_("VDK application")); prjtypegroup->Add(vdk,0,1,1,0); console = new VDKRadioButton(this,_("Console application")); prjtypegroup->Add(console,0,1,1,0); gnome = new VDKRadioButton(this,_("Gnome compliant application")); gnome->Enabled = false; prjtypegroup->Add(gnome,0,1,1,0); frame1 = new VDKFrame(this,NULL,v_box,shadow_etched_in); frame1->Shadow = shadow_etched_in; frame1->Align = c_justify; step1->Add(frame1,0,1,1,5); frame1->BorderWidth(5); labelbox = new VDKEventBox(this,v_box); frame1->Add(labelbox,l_justify,1,1,0); labelbox->BorderWidth(0); prj_info_label = new VDKLabel(this,"label1"); prj_info_label->Justify = (GtkJustification) 0; labelbox->Add(prj_info_label,0,1,1,0); step2frame = new VDKFrame(this,_("Step2 - Project paths"),v_box,shadow_etched_in); step2frame->Shadow = shadow_etched_in; step2frame->Align = c_justify; vbox4->Add(step2frame,0,1,1,0); step2frame->BorderWidth(5); step2 = new VDKFixed(this); step2frame->Add(step2,0,1,1,0); label1 = new VDKLabel(this,_("Project root\ndirectory")); label1->SetSize(88,30); step2->Add(label1,7,10,1,0); label2 = new VDKLabel(this,_("Project name\n(no extension)")); label2->SetSize(88,31); step2->Add(label2,10,48,1,0); label3 = new VDKLabel(this,_("Absolute path")); label3->SetSize(88,30); step2->Add(label3,8,88,1,0); prjroot = new VDKEntry(this,0); prjroot->SetSize(208,20); prjroot->Editable = true; step2->Add(prjroot,112,9,1,0); prjname = new VDKEntry(this,0); prjname->SetSize(208,20); prjname->Editable = true; step2->Add(prjname,112,48,1,0); abspath = new VDKEntry(this,0); abspath->Enabled = false; abspath->SetSize(280,20); abspath->Editable = false; step2->Add(abspath,112,87,1,0); browsedir = new VDKCustomButton(this,(const char**) gnome_search_xpm,_("_Browse.."),16,(GtkPositionType) 1); browsedir->SetSize(98,29); browsedir->Relief = (GtkReliefStyle) 2; step2->Add(browsedir,328,4,1,0); // separator1 = new VDKSeparator(this,h_separator); // separator1->SetSize(421,0); // step2->Add(separator1,3,114,0,0); // filestree->SetSize(416,80); // step2->Add(filestree,5,119,1,0); VDKTable* table = new VDKTable(this,4,2); table->AddToCell(new VDKLabel(this,_("Author:")),0,0); author = new VDKEntry(this); table->AddToCell(author,0,1,0); table->AddToCell(new VDKLabel(this,_("E-mail:")),1,0); email = new VDKEntry(this); table->AddToCell(email,1,1,0); gpld = new VDKCheckButton(this, _("GPL'd source file headers"), _("Add GPL license to source file headers")); gpld->Checked = true; table->AddToCell(gpld,2,0,0); VDKFrame* fr = new VDKFrame(this); fr->Shadow = shadow_etched_out; fr->SetSize(250,120); filestree = new VDKTextView(this); // filestree->SetSize(300,100); filestree->Visible = false; fr->Add(filestree); table->AddToCell(fr,3,0,0); step2->Add(table,3,120,1,0); separator2 = new VDKSeparator(this,h_separator); vbox4->Add(separator2,0,0,0,0); buttonsbox = new VDKBox(this,h_box); buttonsbox->SetSize(431,33); vbox4->Add(buttonsbox,0,0,0,5); buttonsbox->BorderWidth(0); // prev = new VDKCustomButton(this,(const char**)leftarrow_xpm,_("_Previous step"),16,(GtkPositionType) 1); prev = new VDKHLButton(this,(const char**)leftarrow_xpm,_("_Previous step"),16,(GtkPositionType) 1); prev->Relief = (GtkReliefStyle) 2; buttonsbox->Add(prev,0,1,0,0); // next = new VDKCustomButton(this,(const char**)rightarrow_xpm,_("_Next step"),16,(GtkPositionType) 1); next = new VDKHLButton(this,(const char**)rightarrow_xpm,_("_Next step"),16,(GtkPositionType) 1); next->Relief = (GtkReliefStyle) 2; buttonsbox->Add(next,0,1,0,0); // finish = new VDKCustomButton(this,(const char**)finish_xpm,_("_Finish"),16,(GtkPositionType) 1); finish = new VDKHLButton(this,(const char**)finish_xpm,_("_Finish"),16,(GtkPositionType) 1); finish->Relief = (GtkReliefStyle) 2; buttonsbox->Add(finish,0,1,0,0); //cancel = new VDKCustomButton(this,(const char**)stop_xpm,_("_Cancel"),16,(GtkPositionType) 1); cancel = new VDKHLButton(this,(const char**)stop_xpm,_("_Cancel"),16,(GtkPositionType) 1); cancel->Relief = (GtkReliefStyle) 2; buttonsbox->Add(cancel,0,1,0,0); } /* main form setup */ void Vdkb_PWizardForm::Setup(void) { GUISetup(); // store frames addresses steps[0] = step1frame; steps[1] = step2frame; steps[1]->Visible = false; activeStep = 0; // put your code below here labelbox->NormalBackground = clIvory; char* homedir = getenv("HOME"); if (homedir) prjroot->Text = homedir; //gnome->Enabled = false; sprintf (buff,default_prj_info, _(info_group[0]), _(info_group[1])); gtk_label_set_markup(GTK_LABEL(prj_info_label->WrappedWidget()), buff); prev->Enabled = false; finish->Enabled = false; prjtypegroup->Buttons[2]->Enabled = false; } //signal response method bool Vdkb_PWizardForm::OncancelClick(VDKObject* sender) { info->isValid = false; Close(); return true; } //signal response method bool Vdkb_PWizardForm::OnnextClick(VDKObject* sender) { steps[activeStep]->Visible = false; if (activeStep < MAX_STEP) activeStep++; prev->Enabled = activeStep > 0; next->Enabled = activeStep < MAX_STEP; steps[activeStep]->Visible = true; if (activeStep == console_app) SetPaths (); return true; } //signal response method bool Vdkb_PWizardForm::OnprevClick(VDKObject* sender) { steps[activeStep]->Visible = false; if (activeStep > 0) activeStep--; prev->Enabled = activeStep > 0; next->Enabled = activeStep < MAX_STEP; steps[activeStep]->Visible = true; if (activeStep == console_app) SetPaths (); return true; } //signal response method bool Vdkb_PWizardForm::OnrbgroupToggled(VDKObject* sender) { int sel = prjtypegroup->Selected; if ((sel>= 0) && (sel < prjtypegroup->Buttons.size ())) { sprintf (buff,_(default_prj_info), _(info_group[sel*2]),_(info_group[sel*2+1]) ); gtk_label_set_markup(GTK_LABEL(prj_info_label->WrappedWidget()), buff); } return true; } /* */ void Vdkb_PWizardForm::SetPaths (void) { VDKString pathname(prjroot->Text); VDKString projectname(prjname->Text); char* p = (char*) pathname; if ((!pathname.size ())) return; if (p/*pathname*/[pathname.size ()-1] != '/') pathname+= "/"; if (projectname.size () > 0) { pathname+= projectname; pathname+="/"; } abspath->Text = (char*) pathname; // display project files tree if ((pathname.size ()) && (projectname.size ())) { int sel = prjtypegroup->Selected; if (sel != 1) sprintf (buff, _("\ Project directory: %s\n\ Main source: %s.cc/.h\nMain GUI sources: %s_gui.cc/.h\n\ Main Form description: %s.frm\nProject description: %s.prj\n\ Project options: %s.prj.opt\nMakefile: vdkbMakefile"), (char*) abspath->Text, (char*) projectname, (char*) projectname, (char*) projectname, (char*) projectname, (char*) projectname); else sprintf (buff, _("\ Project directory: %s\n\ Main sources: %s.cc/.h\nProject description: %s.prj\n\ Project options: %s.prj.opt\nMakefile: vdkbMakefile"), (char*) abspath->Text, (char*) projectname, (char*) projectname, (char*) projectname); filestree->Clear(); filestree->TextInsert(buff); filestree->Visible = true; } else filestree->Visible = false; finish->Enabled = (strlen (projectname) > 0) && (strlen (pathname) > 0); } //signal response method bool Vdkb_PWizardForm::OnbrowsedirClick(VDKObject* sender) { char selection[512]; *selection = '\0'; VDKFileSel* child = new VDKFileSel (this, selection, _("Choosing project directory")); child->ShowModal () ; if (*selection) { prjroot->Text = selection; SetPaths (); } return true; } //signal response method bool Vdkb_PWizardForm::OnprjnameChanged(VDKObject* sender) { SetPaths (); return true; } //signal response method bool Vdkb_PWizardForm::OnprjrootChanged(VDKObject* sender) { SetPaths (); return true; } //signal response method bool Vdkb_PWizardForm::OnfinishClick(VDKObject* sender) { if (info) { // checks for project dir if(access( (char*) abspath->Text,F_OK)) { sprintf(buff,_("%s directory not found\ncreate it ?"), (char*) abspath->Text); if(Application()->VDKMessageBox(APPNAME,buff, VDK_ICONQUESTION|VDK_YESNO) == VDK_IDYES) { if(mkdir ((char*) abspath->Text, 0755) < 0) { sprintf(buff,_("failed to create %s directory"), (char*) abspath->Text); Application()->VDKMessageBox(APPNAME,buff, VDK_ICONINFORMATION|VDK_OK); info->isValid = false; return true; } } else { info->isValid = false; return true; } } // all checks ok info->prjname = (char*) abspath->Text; info->prjname += (char*) prjname->Text; info->prjname += ".prj"; info->author = (char*) author->Text; info->email = (char*) email->Text; info->gpld = gpld->Checked; info->type = prjtypegroup->Selected; info->isValid = true; } Close(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_prop.cc0000644000000000000000000000205507252426231014016 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #include vdkbuilder2-2.4.0/vdkbuilder/vdkb_radiobutton.cc0000644000000000000000000002057607477070603015407 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBRadioButton // put here vdk class name string #define VDK_CLASS "VDKRadioButton" // put here vdk class name #define VDK_ANCESTOR VDKRadioButton // put here here the widget will be named // (name+counter) #define VDK_WIDGET "radiobutton" extern char* wi_widget_prompts[]; static char buff[128]; extern bool onDraggingAnObjectIntoAFixed; extern GtkWidget *grabbed_widget; int CLASS::OnButtonEvent(GtkWidget *w, GdkEvent* event, void* o) { g_return_val_if_fail(o != NULL, FALSE); g_return_val_if_fail(w != NULL, FALSE); CLASS* obj = reinterpret_cast(o); VDKBEventContainer* container; gtk_signal_emit_stop_by_name(GTK_OBJECT(w), "button_press_event"); container = dynamic_cast(obj->ObjectFromVDK()->Parent()); if(container) container->OnButtonPressed(obj,event); return TRUE; } int CLASS::OnEnterEvent(GtkWidget *w, GdkEvent* event, void* o) { g_return_val_if_fail(o != NULL, FALSE); g_return_val_if_fail(w != NULL, FALSE); gtk_signal_emit_stop_by_name(GTK_OBJECT(w),"enter_notify_event"); return true; } int CLASS::OnLeaveEvent(GtkWidget *w, GdkEvent* event, void* o) { g_return_val_if_fail(o != NULL, FALSE); g_return_val_if_fail(w != NULL, FALSE); gtk_signal_emit_stop_by_name(GTK_OBJECT(w),"leave_notify_event"); return true; } ////////////////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner, char* label, char* tip): VDKBCheckButton(name,owner,label,tip) { gtk_widget_destroy(widget); widget = gtk_radio_button_new_with_label(NULL,label); // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; gtk_signal_connect(GTK_OBJECT(widget),"button_press_event", GTK_SIGNAL_FUNC(CLASS::OnButtonEvent), reinterpret_cast(this)); gtk_signal_connect(GTK_OBJECT(widget),"enter_notify_event", GTK_SIGNAL_FUNC(CLASS::OnEnterEvent), reinterpret_cast(this)); gtk_signal_connect(GTK_OBJECT(widget),"leave_notify_event", GTK_SIGNAL_FUNC(CLASS::OnLeaveEvent), reinterpret_cast(this)); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s\"%s\";", PROP_CAPTION,(char*) GetProp(CAPTION)); fprintf(fp,"\n\t%s%s;", PROP_CAPTIONWRAP,(char*) GetProp(CAPTIONWRAP)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* button = NULL; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else button = new CLASS(buff,owner,buff); return owner->AddToSelf(button,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char obj_caption[128]; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; bool nls_support = parser.CheckNLSSupport(); source = new char[4096]; if(!parser.GetParam(obj_caption,buffer,PROP_CAPTION)) strcpy(obj_caption,"none"); if(nls_support) sprintf(tmp,"\n%s = new %s(this,_(\"%s\"));", obj_name,VDK_CLASS,obj_caption); else sprintf(tmp,"\n%s = new %s(this,\"%s\");", obj_name,VDK_CLASS,obj_caption); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // get label button props if(parser.GetParam(arg,buffer,PROP_CAPTIONWRAP) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;",obj_name,CAPTIONWRAP,arg); strcat(source,tmp); } // set widget specific properties // get label button props if(parser.GetParam(arg,buffer,PROP_CAPTIONWRAP) && strcmp(arg,NIHIL_PROP) ) { sprintf(tmp,"\n%s->%s = %s;",obj_name,CAPTIONWRAP,arg); strcat(source,tmp); } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char obj_caption[256]; char arg[64]; CLASS* button; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; // get caption if(!parser.GetParam(obj_caption,buffer,PROP_CAPTION)) strcpy(obj_caption,"none"); VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { button = new CLASS(obj_name,owner,obj_caption); if(parser.GetParam(arg,buffer,PROP_CAPTIONWRAP) && strcmp(arg,NIHIL_PROP)) { button->CaptionWrap = !strcmp(arg,CHECK_TRUE); button->SetPropValue(CAPTIONWRAP,arg); } // pack widget to container return owner->PackToSelf(button, container, buffer, parser); } else return false; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_spinbutton.cc0000644000000000000000000003272507477070604015262 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif // for methods and other stuff #define CLASS VDKBSpinButton // put here vdk class name string #define VDK_CLASS "VDKSpinButton" // put here vdk class name #define VDK_ANCESTOR VDKSpinButton // put here here the widget will be named // (name+counter) #define VDK_WIDGET "spinbutton" extern void strreplace(char* s, char sep1, char sep2); extern char* wi_widget_prompts[]; static char buff[128]; // used to autogenerate default // button names and captions int CLASS::Counter = 0; /* label button properties names */ char* vdkspinbutton_props[] = { SLIDER_DIGITS,SLIDER_DEFVALUE, SLIDER_LOWER,SLIDER_UPPER, SLIDER_STEP,SPIN_CLIMB,0 }; /* button signals names && nicknames Default response method name will be made by: On. For instance if object name = and nickname = default response method name will be: */ char* vdkspinbutton_signals[] = { SIGNAL_VALUE_CHANGED,SIGNAL_FOCUS_OUT, 0 }; char* vdkspinbutton_nicknames[] = { NICK_VALUE_CHANGED,NICK_FOCUS_OUT,0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner, float defValue, float lower, float upper, float step, float climb): VDK_ANCESTOR(owner,defValue,lower,upper,step, climb), VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties list // (Others props are prepended by VDKBObject constructor) for(t=0; vdkspinbutton_props[t]; t++) proplist.add(VDKBProperty(vdkspinbutton_props[t])); SetPropValue(SLIDER_DIGITS,"2"); sprintf(buff,"%.1f",0.0); SetPropValue(SLIDER_DEFVALUE,buff); sprintf(buff,"%.1f",0.0); SetPropValue(SLIDER_LOWER,buff); sprintf(buff,"%.1f",1.0); SetPropValue(SLIDER_UPPER ,buff); sprintf(buff,"%.1f",0.05); SetPropValue(SLIDER_STEP,buff); sprintf(buff,"%.1f",0.0); SetPropValue(SPIN_CLIMB,buff); // add to VDKBObject signal list label button signals for(t=0; vdkspinbutton_signals[t]; t++) siglist.add(VDKBSignal(vdkspinbutton_signals[t], this, vdkspinbutton_nicknames[t])); // connects events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_SLIDER_DIGITS,(char*) GetProp(SLIDER_DIGITS)); fprintf(fp,"\n\t%s%s;", PROP_SLIDER_DEFVALUE,(char*) GetProp(SLIDER_DEFVALUE)); fprintf(fp,"\n\t%s%s;", PROP_SLIDER_LOWER,(char*) GetProp(SLIDER_LOWER)); fprintf(fp,"\n\t%s%s;", PROP_SLIDER_UPPER,(char*) GetProp(SLIDER_UPPER)); fprintf(fp,"\n\t%s%s;", PROP_SLIDER_STEP,(char*) GetProp(SLIDER_STEP)); fprintf(fp,"\n\t%s%s;", PROP_SPIN_CLIMB,(char*) GetProp(SPIN_CLIMB)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* button = NULL; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else button = new CLASS(buff,owner); // add widget to form return owner->AddToSelf(button,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char appo[128]; double defvalue = 0.0, lower = 0.0, upper = 1.0, step = 0.05, climb = 0.0; int digits = 2; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; // get default values if(parser.GetParam(arg,buffer,PROP_SLIDER_DIGITS)) digits = atoi(arg); if(parser.GetParam(arg,buffer,PROP_SLIDER_DEFVALUE)) defvalue = atof(arg); if(parser.GetParam(arg,buffer,PROP_SLIDER_LOWER)) lower = atof(arg); if(parser.GetParam(arg,buffer,PROP_SLIDER_UPPER)) upper = atof(arg); if(parser.GetParam(arg,buffer,PROP_SLIDER_STEP)) step = atof(arg); if(parser.GetParam(arg,buffer,PROP_SPIN_CLIMB)) climb = atof(arg); source = new char[4096]; sprintf(appo,"%f-%f-%f-%f-%f",defvalue,lower,upper,step,climb); strreplace(appo,',','.'); strreplace(appo,'-',','); sprintf(tmp,"\n%s = new %s(this,%s);",obj_name,VDK_CLASS,appo); strcpy(source,tmp); sprintf(tmp,"\n%s->Digits = %d;",obj_name,digits); strcat(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; double defvalue = 0.0, lower = 0.0, upper = 1.0, step = 0.05, climb = 0.0; int digits = 2; char arg[64]; CLASS* button; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; // get default values if(parser.GetParam(arg,buffer,PROP_SLIDER_DIGITS)) digits = atoi(arg); if(parser.GetParam(arg,buffer,PROP_SLIDER_DEFVALUE)) defvalue = atof(arg); if(parser.GetParam(arg,buffer,PROP_SLIDER_LOWER)) lower = atof(arg); if(parser.GetParam(arg,buffer,PROP_SLIDER_UPPER)) upper = atof(arg); if(parser.GetParam(arg,buffer,PROP_SLIDER_STEP)) step = atof(arg); if(parser.GetParam(arg,buffer,PROP_SPIN_CLIMB)) climb = atof(arg); VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { button = new CLASS(obj_name,owner,defvalue, lower,upper,step,climb); button->Digits = digits; sprintf(buff,"%d",digits); button->SetPropValue(SLIDER_DIGITS,buff); sprintf(buff,"%f",defvalue); button->SetPropValue(SLIDER_DEFVALUE,buff); sprintf(buff,"%f",lower); button->SetPropValue(SLIDER_LOWER,buff); sprintf(buff,"%f",upper); button->SetPropValue(SLIDER_UPPER,buff); sprintf(buff,"%f",step); button->SetPropValue(SLIDER_STEP,buff); sprintf(buff,"%f",climb); button->SetPropValue(SPIN_CLIMB,buff); // pack widget to container return owner->PackToSelf(button, container, buffer, parser); } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL, v_box,shadow_etched_in); VDKTable *table = new VDKTable(inspector,6,2); table->SetSize(219,-1); table->AddToCell(new VDKLabel(inspector,_("Default value")),0,0); defvalue = new VDKEntry(inspector,0,(char*) GetProp(SLIDER_DEFVALUE)); defvalue->SetSize(100,-1); table->AddToCell(defvalue,0,1); defvalue->Parent(this); SignalConnect(defvalue,"activate",&CLASS::OnSetDefValue); table->AddToCell(new VDKLabel(inspector,_("Lower range value")),1,0); lower = new VDKEntry(inspector,0,(char*) GetProp(SLIDER_LOWER)); lower->SetSize(100,-1); table->AddToCell(lower,1,1); lower->Parent(this); SignalConnect(lower,"activate",&CLASS::OnSetLower); table->AddToCell(new VDKLabel(inspector,_("Upper range value")),2,0); upper = new VDKEntry(inspector,0,(char*) GetProp(SLIDER_UPPER)); upper->SetSize(100,-1); table->AddToCell(upper,2,1); upper->Parent(this); SignalConnect(upper,"activate",&CLASS::OnSetUpper); table->AddToCell(new VDKLabel(inspector,_("Step increment")),3,0); step = new VDKEntry(inspector,0,(char*) GetProp(SLIDER_STEP)); step->SetSize(100,-1); table->AddToCell(step,3,1); step->Parent(this); SignalConnect(step,"activate",&CLASS::OnSetStep); table->AddToCell(new VDKLabel(inspector,_("Climb rate")),4,0); climb = new VDKEntry(inspector,0,(char*) GetProp(SPIN_CLIMB)); climb->SetSize(100,-1); table->AddToCell(climb,4,1); climb->Parent(this); SignalConnect(climb,"activate",&CLASS::OnSetClimb); table->AddToCell(new VDKLabel(inspector,_("Precision")),5,0); digits = new VDKEntry(inspector,0,(char*) GetProp(SLIDER_DIGITS)); digits->SetSize(100,-1); table->AddToCell(digits,5,1); digits->Parent(this); SignalConnect(digits,"activate",&CLASS::OnSetDigits); bframe->Add(table,l_justify,false,false,false); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnSetDefValue(VDKObject*) { if(strlen(defvalue->Text) > 0) { sprintf(buff,"%s",(char*) defvalue->Text); SetPropValue(SLIDER_DEFVALUE,buff); inspector->FormNeedToBeChanged(); } return true; } /* */ bool CLASS::OnSetLower(VDKObject*) { if(strlen(lower->Text) > 0) { sprintf(buff,"%s",(char*) lower->Text); SetPropValue(SLIDER_LOWER,buff); inspector->FormNeedToBeChanged(); } return true; } /* */ bool CLASS::OnSetUpper(VDKObject*) { if(strlen(upper->Text) > 0) { sprintf(buff,"%s",(char*) upper->Text); SetPropValue(SLIDER_UPPER,buff); inspector->FormNeedToBeChanged(); } return true; } /* */ bool CLASS::OnSetStep(VDKObject*) { if(strlen(step->Text) > 0) { sprintf(buff,"%s",(char*) step->Text); SetPropValue(SLIDER_STEP ,buff); inspector->FormNeedToBeChanged(); } return true; } /* */ bool CLASS::OnSetClimb(VDKObject*) { if(strlen(climb->Text) > 0) { sprintf(buff,"%s",(char*) climb->Text); SetPropValue(SPIN_CLIMB,buff); inspector->FormNeedToBeChanged(); } return true; } /* */ bool CLASS::OnSetDigits(VDKObject*) { if(strlen(digits->Text) > 0) { sprintf(buff,"%s",(char*) digits->Text); SetPropValue(SLIDER_DIGITS,buff); inspector->FormNeedToBeChanged(); } return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_rbgroup.cc0000644000000000000000000003201110022113242014471 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include //#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static char buff[128]; char* vdkrbuttongroup_signals[] = { "toggled_signal",0 }; char* vdkrbuttongroup_nicknames[] = { "Toggled",0 }; /////////////////////////////////////////////////////////////////////// /* Makes a box thats is owned by a form */ VDKBRadioButtonGroup::VDKBRadioButtonGroup(char* name, VDKForm* owner, int mode, int w, int h): VDKBEventBox(name,owner,mode) { Init(); } /* makes a box owned by another box */ VDKBRadioButtonGroup::VDKBRadioButtonGroup(char* name, VDKBEventContainer* outer, int mode, int w, int h): VDKBEventBox(name,outer,mode) { Init(); } /* */ void VDKBRadioButtonGroup::Init() { int t; if(delBox) delBox->Caption = _("Remove Radio button group"); for(t=0; vdkrbuttongroup_signals[t]; t++) siglist.add(VDKBSignal(vdkrbuttongroup_signals[t], this, vdkrbuttongroup_nicknames[t])); } //////////////////////////////////////// /* */ void VDKBRadioButtonGroup::Add(VDKObject* obj, int justify, int expand, int fill , int padding) { AddWidget(obj,justify, expand, fill, padding,true); } /* */ void VDKBRadioButtonGroup::AddWidget(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { VDKBRadioButton* button = NULL; VDKBObject* vdkbobj = dynamic_cast(wid); if(vdkbobj) button = dynamic_cast(vdkbobj); if(button) VDKBEventBox::AddWidget(wid,justify, expand, fill, padding, forceArgs); else { sprintf(buff,"RadioButton Groups can accomodate only RadioButtons"); ObjectFromVDK()->Owner()->Application()->VDKMessageBox(APPNAME,buff, VDK_OK| VDK_ICONINFORMATION); } } /* */ void VDKBRadioButtonGroup::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { VDKBEventBox::WriteOnFrm(fp,parentobj); } char* VDKBRadioButtonGroup::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_mode[16]; char obj_parent[128]; char temp[256]; char bw[16]; char arg[16]; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_mode,buffer,"mode:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return NULL; else source = new char[1024]; sprintf(temp,"\n%s = new VDKRadioButtonGroup(this,%s);",obj_name,obj_mode); strcpy(source,temp); // get size VDKPoint size = parser.Size(buffer); if(size.X() > 0 || size.Y() > 0) { sprintf(temp,"\n%s->SetSize(%d,%d);",obj_name,size.X(),size.Y()); strcat(source,temp); } bool adjArg = true; // has parent if(strcmp(obj_parent,NIHIL_PROP)) { // bad OOP design here :-( // but in seek of semplicity.. // boxes embedded into notebooks act differently char* object = parser.GetWidget(obj_parent); char obj_class[32]; if(object) { // parent is a notebook if(parser.GetParam(obj_class,object,PARSER_CLASS) && !strcmp(obj_class,"VDKNotebook")) { char label[128]; if(!parser.GetParam(label,buffer, PROP_LABEL)) *label = '\0'; sprintf(temp,"\n%s->AddPage(%s,\"%s\");", obj_parent, obj_name, *label ? label : obj_name); adjArg = false; } // other else if(parser.GetParam(obj_class,object,PARSER_CLASS) && !strcmp(obj_class,"VDKTable")) { int row,col; if(parser.GetParam(arg,buffer,PROP_TABLEROW) && strcmp(arg,NIHIL_PROP)) row = atoi(arg); else row = 0; if(parser.GetParam(arg,buffer,PROP_TABLECOL) && strcmp(arg,NIHIL_PROP)) col = atoi(arg); else col = 0; sprintf(temp,"\n%s->AddToCell(%s,%d,%d);", obj_parent,obj_name,row,col); adjArg = false; } else sprintf(temp,"\n%s->Add(%s",obj_parent,obj_name); delete[] object; } // other parents else sprintf(temp,"\n%s->Add(%s",obj_parent,obj_name); } else sprintf(temp,"\nAdd(%s",obj_name); strcat(source,temp); if(adjArg) { // prepares arguments for add widget to container char justify[16],expand[16],fill[16],padding[16]; if(parser.GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && parser.GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && parser.GetParam(fill,buffer,PROP_FILL_INTERNAL) && parser.GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(temp,",%s,%s,%s,%s);", justify,expand,fill,padding); strcat(source,temp); } else { sprintf(temp,");"); strcat(source,temp); } } if(parser.GetParam(bw,buffer,PROP_BORDERWIDTH) && strcmp(bw,NIHIL_PROP)) { sprintf(temp,"\n%s->BorderWidth(%s);",obj_name,bw); strcat(source,temp); } return source; } /* */ bool VDKBRadioButtonGroup::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_mode[16]; char obj_parent[128]; VDKBRadioButtonGroup* box; int mode; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_mode,buffer,"mode:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return false; // get mode and size mode = !strcmp(obj_mode,"h_box") ? h_box : v_box; VDKPoint size = parser.Size(buffer); // get packing args int justification = l_justify; int expand=0,fill=0,padding=0; int bw; // border width char arg[32]; if(parser.GetParam(arg,buffer,PROP_JUSTIFY_INTERNAL)) justification = atoi(arg); if(parser.GetParam(arg,buffer,PROP_EXPAND_INTERNAL)) expand = atoi(arg); if(parser.GetParam(arg,buffer,PROP_FILL_INTERNAL)) fill= atoi(arg); if(parser.GetParam(arg,buffer,PROP_PADDING_INTERNAL)) padding= atoi(arg); if(parser.GetParam(arg,buffer,PROP_BORDERWIDTH) && strcmp(arg,NIHIL_PROP)) bw = atoi(arg); else bw = -1; // no parent, widget will be added to owner form innerbox if(!strcmp(obj_parent,NIHIL_PROP)) { box = new VDKBRadioButtonGroup(obj_name,owner->InnerBox(),mode); // call ancestor to set common properties VDKBObject::CreateWidget(box,buffer,parser); owner->AddWidget(box,justification,expand,fill,padding); if(size.X() > 0 || size.Y() > 0) box->ObjectFromVDK()->SetSize(size.X(),size.Y()); if(bw >= 0) { box->BorderWidth(bw); box->SetPropValue(BORDERWIDTH,arg); } } else // has a parent, will be added to parent. // Parent should be a container { // get parent container address VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { box = new VDKBRadioButtonGroup(obj_name,container,mode); // bad OOP design here :-( // but in seek of semplicity.. // we use justification for row // and expand for col to add boxes char* object = parser.GetWidget(obj_parent); char obj_class[32]; if(object) { // parent is a table if(parser.GetParam(obj_class,object,PARSER_CLASS) && !strcmp(obj_class,"VDKTable")) { if(parser.GetParam(arg,buffer,PROP_TABLEROW) && strcmp(arg,NIHIL_PROP)) justification = atoi(arg); else justification = 0; if(parser.GetParam(arg,buffer,PROP_TABLECOL) && strcmp(arg,NIHIL_PROP)) expand = atoi(arg); else expand = 0; } } // call ancestor to set common properties VDKBObject::CreateWidget(box,buffer,parser); container->AddWidget(box,justification,expand,fill,padding,true); if(size.X() > 0 || size.Y() > 0) box->ObjectFromVDK()->SetSize(size.X(),size.Y()); box->outerbox = container; if(bw >= 0) { char local[16]; box->BorderWidth(bw); sprintf(local,"%d",bw); box->SetPropValue(BORDERWIDTH,local); } } else return false; // FIX ME: user warning } return true; } /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget */ int VDKBRadioButtonGroup::MakeWidgetV(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable box counter // to ensure unicity int result = 0; VDKBRadioButtonGroup* box = NULL; if(owner->Active) { for(sprintf(buff,"VRadioButtonGroup%d",VDKBEventBox::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"VRadioButtonGroup%d",VDKBEventBox::Counter); box = new VDKBRadioButtonGroup(buff,owner,v_box); VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { if(ev && dynamic_cast(container)) { GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); box->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); box->SetPropValue( EXPAND_INTERNAL,buff); // others than justify and flag unuseful container->AddWidget(box,int(event->x), int(event->y), true,true,true); } else container->AddWidget(box); box->outerbox = container; } // target isn't a container else if(! owner->Active->AddToParent(box,ev)) result = 2; } else // no active widget result = 3; // 0 on success if(result && box) box->Destroy(); return result; } /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget */ int VDKBRadioButtonGroup::MakeWidgetH(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable box counter // to ensure unicity int result = 0; VDKBRadioButtonGroup* box = NULL; if(owner->Active) { for(sprintf(buff,"HRadioButtonGroup%d",VDKBEventBox::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"HRadioButtonGroup%d",VDKBEventBox::Counter); box = new VDKBRadioButtonGroup(buff,owner,h_box); VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { if(ev && dynamic_cast(container)) { GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); box->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); box->SetPropValue( EXPAND_INTERNAL,buff); // others than justify and flag unuseful container->AddWidget(box,int(event->x), int(event->y), true,true,true); } else container->AddWidget(box); box->outerbox = container; } // target isn't a container else if(! owner->Active->AddToParent(box,ev)) result = 2; } else // no active widget result = 3; // 0 on success if(result && box) box->Destroy(); return result; } VDKObjectContainer* VDKBRadioButtonGroup::ExtraWidget(VDKBObjectInspector* isp) { return VDKBEventContainer::ExtraWidget(isp); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_replace.cc0000644000000000000000000002212310022114070014427 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * February 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include SearchList VDKBReplaceForm::find_history = SearchList(); SearchList VDKBReplaceForm::replace_history = SearchList(); static char buff[256]; //============================================= DEFINE_SIGNAL_MAP(VDKBReplaceForm,VDKForm) ON_SIGNAL(ok,clicked_signal,Ok), ON_SIGNAL(cancel,clicked_signal,Cancel), ON_SIGNAL(replaceall,clicked_signal,ReplaceAll) END_SIGNAL_MAP /* */ bool VDKBReplaceForm::ReplaceAll(VDKObject*) { char* match = find_combo->Text; char* replace = replace_combo->Text; int pos = 0; if(!strlen(match) || ! strlen(replace)) return true; VDKString entry = match; if(! VDKBReplaceForm::find_history.find(entry)) VDKBReplaceForm::find_history.add(entry); entry = replace; if(! VDKBReplaceForm::replace_history.find(entry)) VDKBReplaceForm::replace_history.add(entry); while(pos >= 0 && pos < (int) text->Length) { if(prompt->Checked) { pos = text->Search(match, pos, true); if(pos >= 0) { int answer; VDKBReplaceDialog *dlg = new VDKBReplaceDialog(this, match, replace, &answer); dlg->Setup(); dlg->ShowModal(); switch(answer) { case 0: //answered yes pos = ReplaceText(pos,match,replace); break; case 1: // answered no pos += strlen(match); break; case 2: // answered cancel default: pos = -1; break; } } } else { pos = text->Search(match, pos, true); if(pos >= 0) pos = ReplaceText(pos,match,replace); } } Close(); return true; } /* */ bool VDKBReplaceForm::Ok(VDKObject*) { char* match = find_combo->Text; char* replace = replace_combo->Text; if(!strlen(match) || ! strlen(replace)) return true; VDKString entry = match; if(! VDKBReplaceForm::find_history.find(entry)) VDKBReplaceForm::find_history.add(entry); entry = replace; if(! VDKBReplaceForm::replace_history.find(entry)) VDKBReplaceForm::replace_history.add(entry); if(prompt->Checked) { int p = text->Search(match, 0, true); if(p>=0) { sprintf(buff,"%s\n\"%s\"\%s \"%s\"?", _(replace_dialog_prompts[21]), match, _(replace_dialog_prompts[22]), replace); int result = Application()->VDKMessageBox( APPNAME, buff, VDK_YESNO|VDK_ICONQUESTION, _(user_messages[user_ok]), _(user_messages[user_no]) ); if(result == VDK_IDYES) ReplaceText(p,match,replace); } } else { int p = text->Search(match, 0, true); if(p>=0) ReplaceText(p,match,replace); } Close(); return true; } /* */ int VDKBReplaceForm::ReplaceText(int pos, char* match, char* rep) { text->Pointer = pos; text->ForwardDelete(strlen(match)); text->Pointer = pos; text->TextInsert(rep); return pos+strlen(rep); } /* */ bool VDKBReplaceForm::Cancel(VDKObject*) { Close(); return true; } /* */ VDKBReplaceForm::VDKBReplaceForm(VDKForm* owner, VDKBText* text): VDKForm(owner),text(text) { } /* */ VDKBReplaceForm::~VDKBReplaceForm() { } /* */ void VDKBReplaceForm::Setup() { Title = _(replace_dialog_prompts[0]); VDKRadioButton *button; VDKFrame *mainframe = new VDKFrame(this, _(replace_dialog_prompts[1]), v_box,shadow_out); VDKTable *table1 = new VDKTable(this,2,2); mainframe->Add(table1); VDKLabel *find_history = new VDKLabel(this,_(replace_dialog_prompts[2])); find_combo = new VDKCombo(this); table1->AddToCell(find_history,0,0); table1->AddToCell(find_combo,0,1); VDKLabel *rep_history = new VDKLabel(this,_(replace_dialog_prompts[3])); replace_combo = new VDKCombo(this); table1->AddToCell(rep_history,1,0); table1->AddToCell(replace_combo,1,1); // if(VDKBReplaceForm::find_history.size() > 0) find_combo->PopdownStrings = VDKBReplaceForm::find_history; if(VDKBReplaceForm::replace_history.size() > 0) replace_combo->PopdownStrings = VDKBReplaceForm::replace_history; VDKTable *table2 = new VDKTable(this,2,2); mainframe->Add(table2); // VDKFrame* opt_frame = new VDKFrame(this, _(replace_dialog_prompts[4]), v_box,shadow_etched_in); table2->AddToCell(opt_frame,0,0); opt_frame->Add(casesens = new VDKCheckButton(this, _(replace_dialog_prompts[5]))); casesens->Checked = true; opt_frame->Add(wholeword = new VDKCheckButton(this, _(replace_dialog_prompts[6]))); wholeword->Enabled = false; opt_frame->Add(regex = new VDKCheckButton(this, _(replace_dialog_prompts[7]))); regex->Enabled = false; opt_frame->Add(prompt = new VDKCheckButton(this, _(replace_dialog_prompts[8]))); prompt->Checked = true; // VDKFrame* dir_frame = new VDKFrame(this,_(replace_dialog_prompts[9]), v_box,shadow_etched_in); table2->AddToCell(dir_frame,0,1); direction = new VDKRadioButtonGroup(this); button = new VDKRadioButton(direction,_(replace_dialog_prompts[10])); button = new VDKRadioButton(direction,_(replace_dialog_prompts[11])); button->Enabled = false; direction->SetDefault(0); dir_frame->Add(direction); // VDKFrame* scope_frame = new VDKFrame(this,_(replace_dialog_prompts[12]), v_box,shadow_etched_in); table2->AddToCell(scope_frame,1,0); scope = new VDKRadioButtonGroup(this); button = new VDKRadioButton(scope,_(replace_dialog_prompts[13])); button = new VDKRadioButton(scope,_(replace_dialog_prompts[14])); button->Enabled = false; scope->SetDefault(0); scope_frame->Add(scope); // VDKFrame* org_frame = new VDKFrame(this,_(replace_dialog_prompts[15]), v_box,shadow_etched_in); table2->AddToCell(org_frame,1,1); origin = new VDKRadioButtonGroup(this); button = new VDKRadioButton(origin,_(replace_dialog_prompts[16])); button->Enabled = false; button = new VDKRadioButton(origin,_(replace_dialog_prompts[17])); origin->SetDefault(1); org_frame->Add(origin); Add(mainframe); // VDKFrame *buttonframe = new VDKFrame(this,NULL,h_box,shadow_etched_in); buttonframe->Add(ok = new VDKCustomButton(this, _(replace_dialog_prompts[18]))); buttonframe->Add(replaceall = new VDKCustomButton(this, _(replace_dialog_prompts[19]))); buttonframe->Add(cancel = new VDKCustomButton(this, _(replace_dialog_prompts[20]))); Add(buttonframe,l_justify,false,false,false); } /* =========================================================== */ DEFINE_SIGNAL_MAP(VDKBReplaceDialog,VDKForm) ON_SIGNAL(ok,clicked_signal,Ok), ON_SIGNAL(cancel,clicked_signal,Cancel), ON_SIGNAL(no_button,clicked_signal,No) END_SIGNAL_MAP //========================================== VDKBReplaceDialog::VDKBReplaceDialog(VDKForm* owner, char *match, char* rep, int *answer): VDKForm(owner),answer(answer),match(match),rep(rep) { } /* */ VDKBReplaceDialog:: ~VDKBReplaceDialog() { } /* */ void VDKBReplaceDialog::Setup() { Title = APPNAME; VDKFrame* frame1 = new VDKFrame(this,NULL,v_box,shadow_etched_in); sprintf(buff, "%s\n\"%s\"\n%s \"%s\"", _(replace_dialog_prompts[21]), match, _(replace_dialog_prompts[22]), rep); VDKLabel* label = new VDKLabel(this,buff); frame1->Add(label); VDKFrame *frame2 = new VDKFrame(this,NULL,h_box,shadow_etched_in); ok = new VDKCustomButton(this,_(replace_dialog_prompts[23])); no_button = new VDKCustomButton(this,_(replace_dialog_prompts[24])); cancel = new VDKCustomButton(this,_(replace_dialog_prompts[20])); frame2->Add(ok); frame2->Add(no_button); frame2->Add(cancel); Add(frame1); Add(frame2,l_justify,false,false,false); SetSize(-1,100); } /* */ bool VDKBReplaceDialog::Ok(VDKObject*) { *answer = 0; Close(); return true; } /* */ bool VDKBReplaceDialog::No(VDKObject*) { *answer = 1; Close(); return true; } /* */ bool VDKBReplaceDialog::Cancel(VDKObject*) { *answer = 2; Close(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_sbar.cc0000644000000000000000000002274407454572204014002 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.3 * July 1999 * =========================== * * Copyright (C) 1998, 1999 Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include "./pixmaps/shadow.xpm" /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBStatusbar // put here vdk class name string #define VDK_CLASS "VDKStatusbar" // put here vdk class name #define VDK_ANCESTOR VDKStatusbar // put here here the widget will be named // (name+counter) #define VDK_WIDGET "statusbar" //================================================================= extern char* wi_widget_prompts[]; static char buff[128]; static char *shadows[] = { "shadow_none","shadow_in","shadow_out","shadow_etched_in", "shadow_etched_out",0 }; /* properties */ char* vdksbar_props[] = { SHADOW,0 }; int CLASS::Counter = 0; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDKBEvStatusbar); DEFINE_EVENT_LIST(CLASS,VDKBEvStatusbar); /////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner): VDKBEvStatusbar(owner),VDKBObject(name) { // newly constructed widget counter is incremented // each time Counter++; int t; for(t=0; vdksbar_props[t]; t++) proplist.add(VDKBProperty(vdksbar_props[t])); SetPropValue(JUSTIFY_INTERNAL,"r_justify"); SetPropValue( EXPAND_INTERNAL,CHECK_FALSE); SetPropValue(FILL_INTERNAL,CHECK_FALSE); // assign this to VDKBObject member. object = this; // connects events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties // a weird patch, for an obscure reason bkg goes to grey // so we force it to nihil SetPropValue(NORMALBACKGROUND,NIHIL_PROP); VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;",PROP_SHADOW, (char*) GetProp(SHADOW)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* statusbar = NULL; // autogenerate first suitable button counter // to ensure unicity // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // actually makes widget { statusbar = new CLASS(buff,owner); statusbar->SetSize(30,20); } // add widget to form return owner->AddToSelf(statusbar,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; // get name and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return NULL; else source = new char[1024]; sprintf(tmp,"\n%s = new VDKStatusbar(this);", obj_name); strcpy(source,tmp); // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } if(strcmp(obj_parent,NIHIL_PROP)) sprintf(tmp,"\n%s->Add(%s",obj_parent,obj_name); else sprintf(tmp,"\nAdd(%s",obj_name); strcat(source,tmp); // prepares arguments for add widget to container char justify[16],expand[16],fill[16],padding[16]; if(parser.GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && parser.GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && parser.GetParam(fill,buffer,PROP_FILL_INTERNAL) && parser.GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(tmp,",%s,%s,%s,%s);", justify,expand,fill,padding); strcat(source,tmp); } else { sprintf(tmp,");"); strcat(source,tmp); } // set widget specific properties // get shadow if(parser.GetParam(arg,buffer,PROP_SHADOW) && strcmp(arg,NIHIL_PROP)) { int ndx = atoi(arg); ndx = (ndx >= 0) && (ndx <= 4) ? ndx : 0; sprintf(tmp,"\n%s->%s = %s;", obj_name,SHADOW,shadows[ndx]); strcat(source,tmp); } /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[32]; CLASS* statusbar; // get name and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return false; statusbar = new CLASS(obj_name,owner); statusbar->SetSize(30,20); if(parser.GetParam(arg,buffer,PROP_SHADOW) && strcmp(arg,NIHIL_PROP)) { statusbar->SetPropValue(SHADOW,arg); int sh = atoi(arg); VDKStatusbar *bar = (VDKStatusbar*) *statusbar; GtkStatusbar* sbar = GTK_STATUSBAR(bar->Widget()); gtk_frame_set_shadow_type(GTK_FRAME(sbar->frame), (GtkShadowType) sh); } // no parent, widget will be added to owner form innerbox if(!strcmp(obj_parent,NIHIL_PROP)) owner->PackToSelf(statusbar, NULL, buffer, parser, obj_parent); else { VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) owner->PackToSelf(statusbar, container, buffer, parser, NULL); else { statusbar->Destroy(); return false; } } return true; } VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { inspector = isp; VDKFrame* xframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); VDKBox* box = new VDKBox(inspector,h_box); VDKCustomButton *set = new VDKCustomButton(inspector,(const char**) shadow_xpm,NULL); set->Relief = (GtkReliefStyle) 2; set->SetTip(_(wi_widget_prompts[13])); box->Add(set,l_justify,false,false,0); set->Parent(this); SignalConnect(set,"clicked",&CLASS::OnSetShadow); shadow = new VDKCombo(inspector,NULL); shadow->SetSize(100,-1); StringList sl; int t = 0; for(;shadows[t];t++) sl.add(VDKString(shadows[t])); shadow->PopdownStrings = sl; box->Add(shadow,l_justify,false,false,0); int r = atoi(GetProp(SHADOW)); shadow->SelectItem(r); xframe->Add(box,l_justify,false,false,false); return xframe; } /* */ bool CLASS:: OnSetShadow(VDKObject*) { int sel = shadow->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); SetPropValue(SHADOW,buff); int shd = atoi(buff); GtkStatusbar* bar = GTK_STATUSBAR(statusbar->Widget()); gtk_frame_set_shadow_type(GTK_FRAME(bar->frame), (GtkShadowType) shd); inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_scrolled.cc0000644000000000000000000003172007454111076014650 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include //#include #include #include #include #include #include #include #include #include // #include #include #include #include "./pixmaps/shadow.xpm" /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBScrolled // put here vdk class name string #define VDK_CLASS "VDKScrolled" // put here vdk class name #define VDK_ANCESTOR VDKScrolled // put here here the widget will be named // (name+counter) #define VDK_WIDGET "scrolled" extern char* wi_widget_prompts[]; static char buff[128]; int CLASS::Counter = 0; DEFINE_EVENT_LIST(CLASS,VDKBEventContainer); DEFINE_SIGNAL_LIST(CLASS,VDKBEventContainer); char* vdkscrolled_props[] = { BORDERSHADOW,0 }; static char *shadows[] = { "shadow_none","shadow_in","shadow_out","shadow_etched_in", "shadow_etched_out",0 }; /* */ bool CLASS:: DelBox(VDKObject* sender) { // destroy inner gtk+ placeholder widget gtk_widget_destroy(container); // call ancestor delete box VDKBEventContainer::DelBox(sender); // notify to inspector that object was deleted VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) prjman->objInspector->SetActive(NULL); } return true; } /* */ bool CLASS::SetBoxSize(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { ownerform->SetBoxSize(NULL); } return true; } //=========================================== /* */ CLASS::CLASS(char* name, VDKForm* owner): VDKBEventContainer(name,owner) { Counter++; VDKBObject::object = this; VDKBEventContainer::mode = mode; Init(); } /* */ CLASS::CLASS(char* name,VDKBEventContainer* outer): VDKBEventContainer(name,outer->Owner()) { VDKBObject::object = this; Counter++; outerbox = outer; // add to VDKBObject properties for(int t=0; vdkscrolled_props[t]; t++) proplist.add(VDKBProperty(vdkscrolled_props[t])); Init(); } /* */ void CLASS::Init() { AddBox(); // makes a pop menu popmenu = new VDKBContainerPopMenu(this); delBox = new VDKMenuItem(popmenu,_("Remove scrolled")); selectparent = new VDKMenuItem(popmenu,_(wi_widget_prompts[20])); SignalConnect(selectparent,"activate", &CLASS::SelectParentContainer); SignalConnect(delBox,"activate",&CLASS::DelBox); /* assign this as parent so this can receive signals */ popmenu->Parent(this); popmenu->Setup(); /* better add it to owner, so will be surely destroyed even if never popped */ Owner()->AddItem(popmenu); // CONNECT_COMMON_EVENTS; SetSize(100,100); } /* */ void CLASS::AddBox() { widget = sigwid = container = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (container), GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS); gtk_widget_show(container); } /* extra args unused */ void CLASS::AddWidget(VDKObject* obj, int justify, int expand, int fill , int padding, bool forceArgs) { if (BinCheck(obj)) { /* if(dynamic_cast(obj)) gtk_container_add(GTK_CONTAINER(container),obj->Widget()); else { */ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(container), obj->Widget()); gtk_container_set_focus_hadjustment ( GTK_CONTAINER (obj->Widget()), gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (container))); gtk_container_set_focus_vadjustment (GTK_CONTAINER (obj->Widget()), gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (container))); // } VDKBEventContainer::Add(obj,l_justify,expand,fill,padding); } else obj->Destroy(); } /* extra args used */ void CLASS::Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { AddWidget(wid); } /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget 4 - unuseful call */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable frame counter // to ensure unicity CLASS* scrolled = NULL; int result = 0; if(owner->Active) { for(sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; CLASS::Counter++) sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); scrolled = new CLASS(buff,owner); VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { if(ev && dynamic_cast(container)) { GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); scrolled->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); scrolled->SetPropValue( EXPAND_INTERNAL,buff); // others than justify and flag unuseful container->AddWidget(scrolled,int(event->x), int(event->y), true,true,true); } else container->AddWidget(scrolled); scrolled->outerbox = container; } else if(! owner->Active->AddToParent(scrolled,ev)) // target isn't a container result = 2; } else // no active widget result = 3; // 0 on success if(result && scrolled) scrolled->Destroy(); return result; } //////////////////////////////////////////////////////////////////// /* */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { VDKBEventContainer::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_BORDERSHADOW, (char*) GetProp(BORDERSHADOW)); } char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char temp[256]; char bw[64]; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return NULL; else source = new char[1024]; sprintf(temp,"\n%s = new %s(this);",obj_name,VDK_CLASS); strcpy(source,temp); // get size VDKPoint size = parser.Size(buffer); if(size.X() > 0 || size.Y() > 0) { sprintf(temp,"\n%s->SetSize(%d,%d);",obj_name,size.X(),size.Y()); strcat(source,temp); } if(strcmp(obj_parent,NIHIL_PROP)) sprintf(temp,"\n%s->Add(%s",obj_parent,obj_name); else sprintf(temp,"\nAdd(%s",obj_name); strcat(source,temp); // prepares arguments for add widget to container char justify[16],expand[16],fill[16],padding[16]; if(parser.GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && parser.GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && parser.GetParam(fill,buffer,PROP_FILL_INTERNAL) && parser.GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(temp,",%s,%s,%s,%s);", justify,expand,fill,padding); strcat(source,temp); } else { sprintf(temp,");"); strcat(source,temp); } if(parser.GetParam(bw,buffer,PROP_BORDERWIDTH) && strcmp(bw,NIHIL_PROP)) { sprintf(temp,"\n%s->BorderWidth(%s);",obj_name,bw); strcat(source,temp); } // get shadow if(parser.GetParam(bw,buffer,PROP_BORDERSHADOW ) && strcmp(bw,NIHIL_PROP)) { int ndx = atoi(bw); ndx = (ndx >= 0) && (ndx <= 4) ? ndx : 0; sprintf(temp,"\n%s->%s = (GtkShadowType) %s;", obj_name,BORDERSHADOW,shadows[ndx]); strcat(source,temp); } return source; } /* */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; CLASS* box; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return false; // get mode and size VDKPoint size = parser.Size(buffer); // get packing args int justification = l_justify; int expand=0,fill=0,padding=0; int bw; // border width char arg[32]; if(parser.GetParam(arg,buffer,PROP_JUSTIFY_INTERNAL)) justification = atoi(arg); if(parser.GetParam(arg,buffer,PROP_EXPAND_INTERNAL)) expand = atoi(arg); if(parser.GetParam(arg,buffer,PROP_FILL_INTERNAL)) fill = atoi(arg); if(parser.GetParam(arg,buffer,"_Padding:")) padding = atoi(arg); if(parser.GetParam(arg,buffer,PROP_BORDERWIDTH) && strcmp(arg,NIHIL_PROP)) bw = atoi(arg); else bw = -1; // no parent, widget will be added to owner form innerbox if(!strcmp(obj_parent,NIHIL_PROP)) { box = new CLASS(obj_name,owner->InnerBox()); owner->AddWidget(box,justification,expand,fill,padding); } // get parent container address else { VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { box = new CLASS(obj_name,container); container->AddWidget(box,justification,expand,fill,padding,true); box->outerbox = container; } else // FIX ME: user warning return false; } if(parser.GetParam(arg,buffer,PROP_BORDERSHADOW) && strcmp(arg,NIHIL_PROP)) { box->SetPropValue(BORDERSHADOW,arg); int sh = atoi(arg); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(box->ObjectFromVDK()-> WrappedWidget()),(GtkShadowType) sh); // box->BorderShadow = (GtkShadowType) sh; } // call ancestor to set common properties VDKBObject::CreateWidget(box,buffer,parser); if(size.X() > 0 || size.Y() > 0) box->ObjectFromVDK()->SetSize(size.X(),size.Y()); if(bw >= 0) { box->BorderWidth(bw); box->SetPropValue(BORDERWIDTH,arg); } return true; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* This is called by object inspector when a widget is selected by user, thus to allow widget to set his own property controls. */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { inspector = isp; VDKBox* bframe = dynamic_cast(VDKBEventContainer::ExtraWidget(inspector)); if(!bframe) return VDKBEventContainer::ExtraWidget(inspector); VDKBox* box = new VDKBox(inspector,h_box); VDKCustomButton *set = new VDKCustomButton(inspector,(const char**) shadow_xpm,NULL); set->Relief = (GtkReliefStyle) 2; set->SetTip(_(wi_widget_prompts[13])); box->Add(set,l_justify,false,false,0); set->Parent(this); SignalConnect(set,"clicked",&CLASS::OnSetShadow); shadow = new VDKCombo(isp,NULL); StringList sl; int t = 0; for(;shadows[t];t++) sl.add(VDKString(shadows[t])); shadow->PopdownStrings = sl; shadow->SetSize(120,-1); box->Add(shadow,l_justify,false,false,0); int r = atoi(GetProp(BORDERSHADOW)); shadow->SelectItem(r); bframe->Add(box,l_justify,false,false,0); return bframe; } /* */ /* */ bool CLASS::OnSetShadow(VDKObject*) { int sel = shadow->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); SetPropValue(BORDERSHADOW ,buff); int shd = atoi(buff); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(ObjectFromVDK()->WrappedWidget()), (GtkShadowType) shd); // BorderShadow = (GtkShadowType) shd; inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_search.cc0000644000000000000000000001250707257645352014322 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * February 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include SearchList VDKBSearchForm::history = SearchList(); //============================================= DEFINE_SIGNAL_MAP(VDKBSearchForm,VDKForm) ON_SIGNAL(ok,clicked_signal,Ok), ON_SIGNAL(cancel,clicked_signal,Cancel), ON_SIGNAL(combo,activate_signal,OnComboEntry) END_SIGNAL_MAP /* */ bool VDKBSearchForm::OnComboEntry(VDKObject*) { Ok(NULL); return true; } /* */ bool VDKBSearchForm::Ok(VDKObject*) { char* s = combo->Text; if(s && strlen(s) > 0) { *match = new char[strlen(s)+1]; strcpy(*match,s); VDKString entry = s; if(! VDKBSearchForm::history.find(entry)) VDKBSearchForm::history.add(entry); } else *match = NULL; Close(); return true; } /* */ bool VDKBSearchForm::Cancel(VDKObject*) { *match = NULL; Close(); return true; } //========================================== /* */ VDKBSearchForm::VDKBSearchForm(VDKForm* owner, char** match): VDKForm(owner),match(match) { /* SearchListIterator li(VDKBSearchForm::history); for(;li;li++) { printf("\nhistory:%s",(char*) li.current()); fflush(stdout); } */ } /* */ VDKBSearchForm::~VDKBSearchForm() { } /* */ void VDKBSearchForm::Setup() { Title = _(search_dialog_prompts[0]); VDKRadioButton *button; VDKFrame *mainframe = new VDKFrame(this, _(search_dialog_prompts[1]), v_box,shadow_out); VDKTable *table1 = new VDKTable(this,1,1); mainframe->Add(table1); VDKLabel *history = new VDKLabel(this,_(search_dialog_prompts[2])); combo = new VDKCombo(this); table1->AddToCell(history,0,0); table1->AddToCell(combo,0,1); // if(VDKBSearchForm::history.size() > 0) combo->PopdownStrings = VDKBSearchForm::history; VDKTable *table2 = new VDKTable(this,2,2); mainframe->Add(table2); // VDKFrame* opt_frame = new VDKFrame(this,search_dialog_prompts[4], v_box,shadow_etched_in); table2->AddToCell(opt_frame,0,0); opt_frame->Add(casesens = new VDKCheckButton(this, _(search_dialog_prompts[5]))); casesens->Checked = true; opt_frame->Add(wholeword = new VDKCheckButton(this, _(search_dialog_prompts[6]))); wholeword->Enabled = false; opt_frame->Add(regex = new VDKCheckButton(this, _(search_dialog_prompts[7]))); regex->Enabled = false; // VDKFrame* dir_frame = new VDKFrame(this,_(search_dialog_prompts[8]), v_box,shadow_etched_in); table2->AddToCell(dir_frame,0,1); direction = new VDKRadioButtonGroup(this); button = new VDKRadioButton(direction,_(search_dialog_prompts[9])); button = new VDKRadioButton(direction,_(search_dialog_prompts[10])); button->Enabled = false; direction->SetDefault(0); dir_frame->Add(direction); // VDKFrame* scope_frame = new VDKFrame(this,_(search_dialog_prompts[11]), v_box,shadow_etched_in); table2->AddToCell(scope_frame,1,0); scope = new VDKRadioButtonGroup(this); button = new VDKRadioButton(scope,_(search_dialog_prompts[12])); button = new VDKRadioButton(scope,_(search_dialog_prompts[13])); button->Enabled = false; scope->SetDefault(0); scope_frame->Add(scope); // VDKFrame* org_frame = new VDKFrame(this,_(search_dialog_prompts[14]), v_box,shadow_etched_in); table2->AddToCell(org_frame,1,1); origin = new VDKRadioButtonGroup(this); button = new VDKRadioButton(origin,_(search_dialog_prompts[15])); button->Enabled = false; button = new VDKRadioButton(origin,_(search_dialog_prompts[16])); origin->SetDefault(1); org_frame->Add(origin); Add(mainframe); // VDKFrame *buttonframe = new VDKFrame(this,NULL,h_box,shadow_etched_in); buttonframe->Add(ok = new VDKCustomButton(this,_(search_dialog_prompts[17]))); // plm 22/09/2000 label translation buttonframe->Add(cancel = new VDKCustomButton(this, _(search_dialog_prompts[18]))); Add(buttonframe,l_justify,false,false,false); // set initial position //gtk_window_position(GTK_WINDOW(Window()),GTK_WIN_POS_MOUSE); combo->CaseSensitive = true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_separator.cc0000644000000000000000000001521107272557517015052 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBSeparator // put here vdk class name string #define VDK_CLASS "VDKSeparator" // put here vdk class name #define VDK_ANCESTOR VDKSeparator // put here here the widget will be named // (name+counter) #define VDK_WIDGET "separator" static char buff[128]; int CLASS::Counter = 0; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDKBEvSeparator); DEFINE_EVENT_LIST(CLASS,VDKBEvSeparator); /////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner,int mode): VDKBEvSeparator(owner,mode),VDKBObject(name),mode(mode) { // newly constructed widget counter is incremented // each time Counter++; SetPropValue(JUSTIFY_INTERNAL,"0"); SetPropValue( EXPAND_INTERNAL,"0"); SetPropValue(FILL_INTERNAL,"0"); // assign this to VDKBObject member. object = this; // connects events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); SetSize(100,2); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_SEPARATOR_MODE,mode == h_separator ? "h_separator" : "v_separator"); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container */ int CLASS::MakeWidgetH(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* separator = NULL; // autogenerate first suitable button counter // to ensure unicity // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // actually makes widget separator = new CLASS(buff,owner,h_separator); // add widget to form return owner->AddToSelf(separator,ev); } int CLASS::MakeWidgetV(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* separator = NULL; // autogenerate first suitable button counter // to ensure unicity // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // actually makes widget separator = new CLASS(buff,owner,v_separator); // add widget to form return owner->AddToSelf(separator,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char obj_mode[16]; // get name, and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; // get mode else if ( !parser.GetParam(obj_mode,buffer,PROP_SEPARATOR_MODE)) return NULL; source = new char[4096]; sprintf(tmp,"\n%s = new %s(this,%s);", obj_name,VDK_CLASS,obj_mode); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char obj_mode[16]; CLASS* separator = NULL; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; // get mode else if ( !parser.GetParam(obj_mode,buffer,PROP_SEPARATOR_MODE) ) return false; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { separator = new CLASS(obj_name,owner,atoi(obj_mode)); // pack widget to container return owner->PackToSelf(separator, container, buffer, parser); } else return false; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_signal.cc0000644000000000000000000000321207252426261014312 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #include #include static char buff[256]; /* */ VDKBSignal::VDKBSignal(char* name, VDKBObject* sender, char* nickname, char* slot): signal(name),nickname(nickname),sender(sender) { if(!slot) { sprintf(buff,"On%s%s", (char*) VDKBSignal::sender->Name(), (char*) VDKBSignal::nickname); VDKBSignal::slot = buff; } connected = slotFixed = false; } bool VDKBSignal::operator==(VDKBSignal& p) { return sender->Name() == p.sender->Name() && signal == p.signal && slot == p.slot; } VDKBObject* VDKBSignal::Sender() { return sender; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_slider.cc0000644000000000000000000003360507272557517014343 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.3 * July 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBSlider // put here vdk class name string #define VDK_CLASS "VDKSlider" // put here vdk class name #define VDK_ANCESTOR VDKSlider // put here here the widget will be named // (name+counter) #define VDK_WIDGET "slider" extern char* wi_widget_prompts[]; static char buff[128]; /* substitutes sep1 with sep2 in s */ void strreplace(char* s, char sep1, char sep2) { char* sp = s; while(s && *sp) { if(*sp == sep1) *sp = sep2; sp++; } } // used to autogenerate default // button names and captions int CLASS::Counter = 0; /* label button properties names */ static char* vdkslider_props[] = { SLIDER_DIGITS, SLIDER_STEP, SLIDER_LOWER, SLIDER_UPPER, SLIDER_UPDATE_POLICY, SLIDER_DEFVALUE, 0 }; char* vdkslider_signals[] = { SIGNAL_VALUE_CHANGED, 0 }; char* vdkslider_nicknames[] = { NICK_VALUE_CHANGED ,0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDKBEvSlider); DEFINE_EVENT_LIST(CLASS,VDKBEvSlider); /////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner, float def, float lower, float upper, float step): VDKBEvSlider(owner), VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties list // (Others props are prepended by VDKBObject constructor) for(t=0; vdkslider_props[t]; t++) proplist.add(VDKBProperty(vdkslider_props[t])); sprintf(buff,"%f",def); SetPropValue(SLIDER_DEFVALUE,buff); sprintf(buff,"%f",lower); SetPropValue(SLIDER_LOWER,buff); sprintf(buff,"%f",upper); SetPropValue(SLIDER_UPPER,buff); sprintf(buff,"%f",step); SetPropValue(SLIDER_STEP,buff); SetPropValue(SLIDER_UPDATE_POLICY,"0"); SetPropValue(SLIDER_DIGITS,"1"); // progress bar not expand SetPropValue(JUSTIFY_INTERNAL,"l_justify"); SetPropValue( EXPAND_INTERNAL,CHECK_FALSE); SetPropValue(FILL_INTERNAL,CHECK_FALSE); SetPropValue(PADDING_INTERNAL,CHECK_FALSE); for(t=0; vdkslider_signals[t]; t++) siglist.add(VDKBSignal(vdkslider_signals[t], this, vdkslider_nicknames[t])); // connects events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_SLIDER_LOWER,(char*) GetProp(SLIDER_LOWER)); fprintf(fp,"\n\t%s%s;", PROP_SLIDER_UPPER,(char*) GetProp(SLIDER_UPPER)); fprintf(fp,"\n\t%s%s;", PROP_SLIDER_STEP,(char*) GetProp(SLIDER_STEP)); fprintf(fp,"\n\t%s%s;", PROP_SLIDER_DIGITS,(char*) GetProp(SLIDER_DIGITS)); fprintf(fp,"\n\t%s%s;", PROP_SLIDER_UPDATE_POLICY,(char*) GetProp(SLIDER_UPDATE_POLICY)); fprintf(fp,"\n\t%s%s;", PROP_SLIDER_DEFVALUE,(char*) GetProp(SLIDER_DEFVALUE)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* slider = NULL; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else slider = new CLASS(buff,owner); // add widget to form return owner->AddToSelf(slider,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char lower[16],upper[16],step_inc[16],def[16]; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; // get default values if(parser.GetParam(arg,buffer,PROP_SLIDER_LOWER)) strcpy(lower,arg); else strcpy(lower,"0.0"); strreplace(lower,',','.'); if(parser.GetParam(arg,buffer,PROP_SLIDER_UPPER )) strcpy(upper,arg); else strcpy(upper,"1.0"); strreplace(upper,',','.'); if(parser.GetParam(arg,buffer,PROP_SLIDER_STEP)) strcpy(step_inc,arg); else strcpy(step_inc,"0.1"); strreplace(step_inc,',','.'); if(parser.GetParam(arg,buffer,PROP_SLIDER_DEFVALUE)) strcpy(def,arg); else strcpy(def,"0.0"); strreplace(def,',','.'); source = new char[4096]; sprintf(tmp,"\n%s = new %s(this,%s,%s,%s,%s);", obj_name,VDK_CLASS,def,lower,upper,step_inc); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } if(parser.GetParam(arg,buffer,PROP_SLIDER_DIGITS) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;", obj_name,SLIDER_DIGITS,arg); strcat(source,tmp); } if(parser.GetParam(arg,buffer,PROP_SLIDER_UPDATE_POLICY) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = (VDKUpdateType) %s;", obj_name,SLIDER_UPDATE_POLICY,arg); strcat(source,tmp); } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; float lower = 0.0, upper = 20, step_inc = 0.1, def = 0.0; char arg[64]; CLASS* slider = NULL; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; // get default values if(parser.GetParam(arg,buffer,PROP_SLIDER_LOWER)) lower = atof(arg); if(parser.GetParam(arg,buffer,PROP_SLIDER_UPPER)) upper = atof(arg); if(parser.GetParam(arg,buffer, PROP_SLIDER_STEP)) step_inc = atof(arg); if(parser.GetParam(arg,buffer,PROP_SLIDER_DEFVALUE)) def = atof(arg); VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { slider = new CLASS(obj_name,owner,def,lower,upper,step_inc); if(parser.GetParam(arg,buffer,PROP_SLIDER_DIGITS) && strcmp(arg,NIHIL_PROP)) { slider->SetDigits( atoi(arg)); slider->SetPropValue(SLIDER_DIGITS,arg); } if(parser.GetParam(arg,buffer,PROP_SLIDER_UPDATE_POLICY) && strcmp(arg,NIHIL_PROP)) { slider->SetUpdatePolicy((VDKUpdateType) atoi(arg)); slider->SetPropValue(SLIDER_UPDATE_POLICY,arg); } // pack widget to container return owner->PackToSelf(slider, container, buffer, parser); } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// static char* update_policy[] = {"continuous","discontinuos","delayed",0}; /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { inspector = isp; VDKCustomButton* button; int t=0; float bc = 0.1; VDKFrame* bframe = new VDKFrame(inspector,NULL, v_box,shadow_etched_in); VDKTable *table = new VDKTable(inspector,6,2); table->SetSize(219,-1); // lower bound setting button = new VDKCustomButton(inspector,_(wi_widget_prompts[52])); table->AddToCell(button,0,0); button->Parent(this); SignalConnect(button,"clicked",&CLASS::OnSetLower); lower = new VDKEntry(inspector,0,(char*) GetProp(SLIDER_LOWER)); lower->SetSize(100,-1); table->AddToCell(lower,0,1); // upper bound setting button = new VDKCustomButton(inspector,_(wi_widget_prompts[53])); table->AddToCell(button,1,0); button->Parent(this); SignalConnect(button,"clicked",&CLASS::OnSetUpper); upper = new VDKEntry(inspector,0,(char*) GetProp(SLIDER_UPPER)); upper->SetSize(100,-1); table->AddToCell(upper,1,1); // step increment setting button = new VDKCustomButton(inspector,_(wi_widget_prompts[54])); table->AddToCell(button,2,0); button->Parent(this); SignalConnect(button,"clicked",&CLASS::OnSetStep); bc = atof( (char*) GetProp(SLIDER_STEP)); step = new VDKSpinButton(inspector, bc,0,50,0.1,0 ); step->SetSize(100,-1); table->AddToCell(step,2,1); // update policy setting int abc = atoi((char*) GetProp(SLIDER_UPDATE_POLICY )); button = new VDKCustomButton(inspector,_(wi_widget_prompts[55])); table->AddToCell(button,3,0); button->Parent(this); SignalConnect(button,"clicked",&CLASS::OnSetUpdatePolicy); updatepolicy = new VDKCombo(inspector,NULL); updatepolicy->SetSize(100,-1); StringList sl; for(t = 0;update_policy[t];t++) sl.add(VDKString(update_policy[t])); updatepolicy->PopdownStrings = sl; updatepolicy->SelectItem(abc); table->AddToCell(updatepolicy,3,1); // precision digits setting button = new VDKCustomButton(inspector,_(wi_widget_prompts[56])); table->AddToCell(button,4,0); button->Parent(this); SignalConnect(button,"clicked",&CLASS::OnSetDigits); digits = new VDKEntry(inspector, 0, (char*) GetProp(SLIDER_DIGITS) ); digits->SetSize(100,-1); table->AddToCell(digits,4,1); // default value setting button = new VDKCustomButton(inspector,_(wi_widget_prompts[57])); table->AddToCell(button,5,0); button->Parent(this); SignalConnect(button,"clicked",&CLASS::OnSetDefValue); defvalue = new VDKEntry(inspector, 0, (char*) GetProp(SLIDER_DEFVALUE)); defvalue->SetSize(100,-1); table->AddToCell(defvalue,5,1); // finished bframe->Add(table,l_justify,false,false,false); return bframe; } /* */ bool CLASS::OnSetLower(VDKObject*) { if(strlen(lower->Text) > 0) { sprintf(buff,"%s",(char*) lower->Text); SetPropValue(SLIDER_LOWER,buff); inspector->FormNeedToBeChanged(); } return true; } /* */ bool CLASS::OnSetUpper(VDKObject*) { if(strlen(upper->Text) > 0) { sprintf(buff,"%s",(char*) upper->Text); strreplace(buff,',','.'); SetPropValue(SLIDER_UPPER,buff); inspector->FormNeedToBeChanged(); } return true; } /* */ bool CLASS::OnSetStep(VDKObject*) { sprintf(buff,"%f",(float) step->ValueAsFloat); // strreplace(buff,',','.'); SetPropValue(SLIDER_STEP,buff); inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetUpdatePolicy(VDKObject*) { int sel = updatepolicy->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); SetPropValue(SLIDER_UPDATE_POLICY,buff); inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetDigits(VDKObject*) { if(strlen(digits->Text) > 0) { sprintf(buff,"%s",(char*) digits->Text); SetPropValue(SLIDER_DIGITS,buff); inspector->FormNeedToBeChanged(); } return true; } /* */ bool CLASS::OnSetDefValue(VDKObject*) { if(strlen(defvalue->Text) > 0) { sprintf(buff,"%s",(char*) defvalue->Text); SetPropValue(SLIDER_DEFVALUE,buff); inspector->FormNeedToBeChanged(); } return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_tabledlg.cc0000644000000000000000000000232107252426265014617 /* vdkb_tabledlg Form implementation file:vdkb_tabledlg.cc */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include // Vdkb_tabledlg FORM CLASS /* form constructor */ Vdkb_tabledlgForm::Vdkb_tabledlgForm(VDKForm* owner, char* title, int* r, int* c): VDKForm(owner,title),r(r),c(c) { } /* form destructor */ Vdkb_tabledlgForm::~Vdkb_tabledlgForm() { } /* form setup */ void Vdkb_tabledlgForm::Setup(void) { GUISetup(); // vdkb gui setup // put your code below here gtk_window_position(GTK_WINDOW(Window()),GTK_WIN_POS_MOUSE); } // signal response method bool Vdkb_tabledlgForm::OnokClick(VDKObject* sender) { *r = atoi((char*) rows->Text); *c = atoi((char*) columns->Text); Close(); return true; } // signal response method bool Vdkb_tabledlgForm::OncancelClick(VDKObject* sender) { *r = 0; *c = 0; Close(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_tabledlg_gui.cc0000644000000000000000000000314207257645351015471 #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include DEFINE_SIGNAL_MAP(Vdkb_tabledlgForm,VDKForm) ON_SIGNAL(ok,clicked_signal,OnokClick), ON_SIGNAL(cancel,clicked_signal,OncancelClick) END_SIGNAL_MAP /* main form setup */ void Vdkb_tabledlgForm::GUISetup(void) { SetSize(196,77); // Modified by plm 02/09/2000 Title = _("Making a table"); Hbox9 = new VDKBox(this,h_box); Add(Hbox9,l_justify,true,true,true); Hbox9->BorderWidth(1); Label2 = new VDKLabel(this,_("Enter rows number ")); Label2->SetSize(125,22); Hbox9->Add(Label2,l_justify,true,true,true); rows = new VDKEntry(this,0," "); rows->SetSize(42,22); Hbox9->Add(rows,l_justify,true,true,true); Hbox11 = new VDKBox(this,h_box); Add(Hbox11,l_justify,true,true,true); Hbox11->BorderWidth(1); Label3 = new VDKLabel(this,_("Enter columns number")); Hbox11->Add(Label3,l_justify,true,true,true); columns = new VDKEntry(this,0," "); columns->SetSize(42,22); Hbox11->Add(columns,l_justify,true,true,true); Hbox13 = new VDKBox(this,h_box); Add(Hbox13,l_justify,true,true,true); Hbox13->BorderWidth(1); ok = new VDKCustomButton(this,_("Ok")); Hbox13->Add(ok,l_justify,true,true,true); cancel = new VDKCustomButton(this,_("Cancel")); Hbox13->Add(cancel,l_justify,true,true,true); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_templates.cc0000644000000000000000000007141007750722366015050 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include static char buff[1024]; extern char *ext_types[]; extern VDKBuilder* TheApp; static void WriteDependencies(FILE* fp, char* complete_name, char* avoid = NULL); extern char *source_prompts[]; ///////////////////////// bool VDKBProject::WriteMainHForConsole(FILE* fp) { char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; int len = strlen(Name); char* name = new char[len+1]; strcpy(name, Name); char* p = get_extension(name); if(p) *p = '\0'; // write developer header / gpl license // write file header time_t ltime; time(<ime); struct tm * lct = localtime(<ime); fprintf(fp,source_prompts[34],(char*)options.author); fprintf(fp,source_prompts[35],(char*)options.email); if(options.gpld) fprintf(fp,source_prompts[36]); fprintf(fp,source_prompts[37],(char*)options.author,1900+lct->tm_year); fprintf(fp,source_prompts[11],name); fprintf(fp,source_prompts[12],name,h_ext); fprintf(fp,"\n*/"); fprintf(fp,"\n#ifndef _%s_main_h_",name); fprintf(fp,"\n#define _%s_main_h_",name); fprintf(fp,"\n#include "); fprintf(fp,"\n"); fprintf(fp,"\n"); fprintf(fp,"\n#endif\n"); fprintf(fp,source_prompts[1], SOURCE_END_MARK, name, h_ext); fclose(fp); delete[] name; return true; } /* */ bool VDKBProject::WriteMainH(FILE* fp, int type) { char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; int len = strlen(Name); char* name = new char[len+1]; strcpy(name, Name); char* p = get_extension(name); bool isUpper = false; if(p) *p = '\0'; // write developer header / gpl license // write file header time_t ltime; time(<ime); struct tm * lct = localtime(<ime); fprintf(fp,source_prompts[34],(char*)options.author); fprintf(fp,source_prompts[35],(char*)options.email); if(options.gpld) fprintf(fp,source_prompts[36]); fprintf(fp,source_prompts[37],(char*)options.author,1900+lct->tm_year); fprintf(fp,source_prompts[13], name, type == vdk_project ? source_prompts[14]: source_prompts[15] ); fprintf(fp,source_prompts[12],name,h_ext); fprintf(fp,"\n*/"); fprintf(fp,"\n#ifndef _%s_main_form_h_",name); fprintf(fp,"\n#define _%s_main_form_h_",name); fprintf(fp,"\n#ifdef HAVE_CONFIG_H"); fprintf(fp,"\n#include "); fprintf(fp,"\n#endif"); #if USE_XDB fprintf(fp,"\n// vdkxdb support"); fprintf(fp,"\n#ifdef VDKXDB_SUPPORT"); fprintf(fp,"\n#include "); fprintf(fp, "\n/*\n\ Note: all tables and indexes files names\n\ are relative to XDB_DATA_PATH symbolic constant,\n\ change it if you need a path other than default ,\n\ however all data and index files should be\n\ contained into a single directory\n*/\n"); fprintf(fp,"\n#define XDB_DATA_PATH \"./\""); fprintf(fp,"\n#endif"); #endif fprintf(fp,"\n// vdk support"); fprintf(fp,"\n#include "); isUpper = isupper(name[0]); if(!isUpper) name[0] = toupper(name[0]); fprintf(fp,"\n// %s FORM CLASS",name); fprintf(fp,"\nclass %sForm: public %s", name, type == vdk_project ? "VDKForm" : "VDKGnomeForm"); fprintf(fp,"\n{"); fprintf(fp,source_prompts[16]); fprintf(fp,"\nprivate:"); fprintf(fp,source_prompts[16]); fprintf(fp,"\n\tvoid GUISetup(void);"); fprintf(fp,"\n"); fprintf(fp,"\npublic:"); fprintf(fp,"\n\t%sForm(%s* app, char* title);", name, type == vdk_project ? "VDKApplication" : "VDKGnomeApplication" ); fprintf(fp,"\n\t~%sForm();", name); fprintf(fp,"\n\tvoid Setup(void);"); fprintf(fp,source_prompts[18]); fprintf(fp,source_prompts[19]); if(!isUpper) name[0] = tolower(name[0]); fprintf(fp,"\n#include <%s_gui.%s>",name,h_ext); fprintf(fp,"\n};"); if(!isUpper) name[0] = toupper(name[0]); fprintf(fp,"\n\n\n// %s APPLICATION CLASS",name); fprintf(fp,"\nclass %sApp: public %s", name, type == vdk_project ? "VDKApplication" : "VDKGnomeApplication"); fprintf(fp,"\n{"); #if USE_XDB fprintf(fp,"\n#ifdef VDKXDB_SUPPORT"); fprintf(fp,"\nVDKXDatabase* xdb;"); fprintf(fp,"\n#endif"); #endif fprintf(fp,"\npublic:"); fprintf(fp,"\n%sApp(int* argc, char** argv, char* rc = NULL, bool have_locale = false);", name); fprintf(fp,"\n~%sApp();", name); #if USE_XDB fprintf(fp,"\n#ifdef VDKXDB_SUPPORT"); fprintf(fp,"\nvoid XDBSetup(void);"); fprintf(fp,"\nVDKXDatabase* TheXdb() { return xdb; }"); fprintf(fp,"\n#endif"); #endif fprintf(fp,"\nvoid Setup(void);"); fprintf(fp,"\n};\n"); fprintf(fp,"\n#endif\n"); if(!isUpper) name[0] = tolower(name[0]); fprintf(fp,source_prompts[1], SOURCE_END_MARK, name, h_ext); fclose(fp); delete[] name; return true; } /* bool VDKBProject::WriteGUISetup(FILE* fp, int type) { char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; int len = strlen(Name); char* name = new char[len+1]; bool nls_support = options.nls_support == VDKString("yes"); // write developer header / gpl license // write file header fprintf(fp,source_prompts[34],(char*)options.author); fprintf(fp,source_prompts[35],(char*)options.email); if(options.gpld) fprintf(fp,source_prompts[36]); if(nls_support) fprintf(fp,"#if HAVE_CONFIG_H\n\ #include \n#endif\n#if !HAVE_GNOME\n#if ENABLE_NLS\n\ #include \n#define _(str) gettext(str)\n#define N_(str) str\n\ #else\n#define _(str) str\n#define N_(str) str\n#endif\n#endif\n"); strcpy(name, Name); bool isUpper = isupper(name[0]); char* p = get_extension(name); if(p) *p = '\0'; fprintf(fp,"\n#include <%s.%s>",name,h_ext); if(!isUpper) name[0] = toupper(name[0]); fprintf(fp,source_prompts[20]); fprintf(fp,"\nvoid\n%sForm::GUISetup(void)\n{",name); if(nls_support) fprintf(fp,"\n\tTitle = _(\"%s\");",name); else fprintf(fp,"\n\tTitle = \"%s\";",name); fprintf(fp,"\n\tthis->SetSize(400,300);"); fprintf(fp,"\n}\n"); if(!isUpper) name[0] = tolower(name[0]); fprintf(fp,source_prompts[1], SOURCE_END_MARK, name, cc_ext); fclose(fp); delete[] name; return true; } */ /* */ bool VDKBEditor::WriteFormCC(char* fname, FILE* fp) { char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; char* name; char* memname = new char[strlen(fname)+1]; VDKBMainForm* owner = dynamic_cast (Owner()); VDKBProjectManager* prjman = NULL; if(owner) prjman = owner->PrjManager(); strcpy(memname,fname); char* p = get_shortfilename(memname); bool isUpper = false; if(p) name = p; else { delete[] memname; return false; } // write developer header / gpl license // write file header if(prjman) { /* fprintf(fp,source_prompts[34],(char*) prjman->Project()->Options()->author); fprintf(fp,source_prompts[35],(char*) prjman->Project()->Options()->email); if(prjman->Project()->Options()->gpld) fprintf(fp,source_prompts[36]); */ time_t ltime; time(<ime); struct tm * lct = localtime(<ime); fprintf(fp,source_prompts[34],(char*)prjman->Project()->Options()->author); fprintf(fp,source_prompts[35],(char*)prjman->Project()->Options()->email); if(prjman->Project()->Options()->gpld) fprintf(fp,source_prompts[36]); fprintf(fp,source_prompts[37], (char*)prjman->Project()->Options()->author,1900+lct->tm_year); } fprintf(fp,"/*\n%s Form",name); fprintf(fp,source_prompts[21],name,cc_ext); fprintf(fp,"\n*/"); fprintf(fp,"\n#include <%s.%s>",name,h_ext); isUpper = isupper(name[0]); if(!isUpper) name[0] = toupper(name[0]); fprintf(fp,"\n// %s FORM CLASS",name); fprintf(fp,source_prompts[22]); fprintf(fp,"\n%sForm::%sForm(VDKForm* owner, char* title):", name,name); fprintf(fp,"\n\tVDKForm(owner,title,v_box,%s)\n{\n}\n",DISPLAY_TYPE); fprintf(fp,source_prompts[23]); fprintf(fp,"\n%sForm::~%sForm()\n{\n}\n", name,name); fprintf(fp,source_prompts[24]); fprintf(fp,"\nvoid\n%sForm::Setup(void)\n{", name); fprintf(fp,"\n\tGUISetup();"); fprintf(fp,source_prompts[25]); fprintf(fp,"\n"); fprintf(fp,"\n}\n"); if(!isUpper) name[0] = tolower(name[0]); fprintf(fp,source_prompts[1], SOURCE_END_MARK, name, cc_ext); fclose(fp); delete memname; return true; } /* */ bool VDKBEditor::WriteFormH(char* fname,FILE* fp) { char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; char* name; VDKBMainForm* owner = dynamic_cast (Owner()); VDKBProjectManager* prjman = NULL; if(owner) prjman = owner->PrjManager(); char* memname = new char[strlen(fname)+1]; strcpy(memname,fname); char* p = get_shortfilename(memname); if(p) name = p; else { delete[] memname; return false; } bool isUpper = isupper(name[0]); // write developer header / gpl license // write file header if(prjman) { /* fprintf(fp,source_prompts[34],(char*) prjman->Project()->Options()->author); fprintf(fp,source_prompts[35],(char*) prjman->Project()->Options()->email); if((char*) prjman->Project()->Options()->gpld) fprintf(fp,source_prompts[36]); */ time_t ltime; time(<ime); struct tm * lct = localtime(<ime); fprintf(fp,source_prompts[34],(char*)prjman->Project()->Options()->author); fprintf(fp,source_prompts[35],(char*)prjman->Project()->Options()->email); if(prjman->Project()->Options()->gpld) fprintf(fp,source_prompts[36]); fprintf(fp,source_prompts[37], (char*)prjman->Project()->Options()->author,1900+lct->tm_year); } fprintf(fp,"/*\n%s Form",name); fprintf(fp,source_prompts[26],name,h_ext); fprintf(fp,"\n*/"); fprintf(fp,"\n#ifndef _%s_form_h_",name); fprintf(fp,"\n#define _%s_form_h_",name); fprintf(fp,"\n#ifdef HAVE_CONFIG_H"); fprintf(fp,"\n#include "); fprintf(fp,"\n#endif"); #if USE_XDB fprintf(fp,"\n#ifdef VDKXDB_SUPPORT"); fprintf(fp,"\n#include "); fprintf(fp,"\n#endif"); #endif fprintf(fp,"\n#include "); if(!isUpper) name[0] = toupper(name[0]); fprintf(fp,"\n// %s FORM CLASS",name); fprintf(fp,"\nclass %sForm: public VDKForm", name); fprintf(fp,"\n{"); fprintf(fp,source_prompts[16]); if(!isUpper) name[0] = toupper(name[0]); fprintf(fp,"\nprivate:"); fprintf(fp,source_prompts[17]); fprintf(fp,"\n\tvoid GUISetup(void);"); fprintf(fp,"\n"); fprintf(fp,"\npublic:"); fprintf(fp,"\n\t%sForm(VDKForm* owner, char* title);", name); fprintf(fp,"\n\t~%sForm();", name); fprintf(fp,"\n\tvoid Setup(void);"); fprintf(fp,"\n/*\n gui setup include "); fprintf(fp,source_prompts[19]); if(!isUpper) name[0] = tolower(name[0]); fprintf(fp,"\n#include <%s_gui.%s>",name,h_ext); fprintf(fp,"\n};"); fprintf(fp,"\n#endif\n"); if(!isUpper) name[0] = tolower(name[0]); fprintf(fp,source_prompts[1], SOURCE_END_MARK, name, h_ext); fclose(fp); delete[] memname; return true; } /* */ bool VDKBProject::WriteMainCC(FILE* fp, int type) { char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; int len = strlen(Name); char* name = new char[len+1]; strcpy(name, Name); bool isUpper = isupper(name[0]); char* p = get_extension(name); if(p) *p = '\0'; // write developer header / gpl license // write file header time_t ltime; time(<ime); struct tm * lct = localtime(<ime); fprintf(fp,source_prompts[34],(char*)options.author); fprintf(fp,source_prompts[35],(char*)options.email); if(options.gpld) fprintf(fp,source_prompts[36]); fprintf(fp,source_prompts[37],(char*)options.author,1900+lct->tm_year); fprintf(fp,"/*\n%s %s Application", name, type == vdk_project ? source_prompts[14] : source_prompts[15]); fprintf(fp,source_prompts[27],name,cc_ext); fprintf(fp,"\n*/"); fprintf(fp,"\n#include <%s.%s>",name,h_ext); if(!isUpper) name[0] = toupper(name[0]); fprintf(fp,source_prompts[28]); fprintf(fp,"\nint main (int argc, char *argv[])"); fprintf(fp,"\n{"); fprintf(fp,"\n// makes application"); fprintf(fp,"\n\%sApp app(&argc, argv);",name); fprintf(fp,"\n// runs application"); fprintf(fp,"\napp.Run();"); fprintf(fp,"\nreturn 0;"); fprintf(fp,"\n}\n"); fprintf(fp,"\n// %s MAIN FORM CLASS",name); fprintf(fp,source_prompts[29]); fprintf(fp,"\n%sForm::%sForm(%s* app, char* title):", name, name, type == vdk_project ? "VDKApplication" : "VDKGnomeApplication"); fprintf(fp,"\n\t%s(app,title,v_box,%s)\n{\n}\n", type == vdk_project ? "VDKForm" : "VDKGnomeForm",DISPLAY_TYPE); fprintf(fp,"\n/*\nmain form destructor\n*/"); fprintf(fp,"\n%sForm::~%sForm()\n{\n}\n", name,name); fprintf(fp,"\n/*\nmain form setup\n*/"); fprintf(fp,"\nvoid\n%sForm::Setup(void)\n{", name); fprintf(fp,"\n\tGUISetup();"); fprintf(fp,source_prompts[25]); fprintf(fp,"\n"); fprintf(fp,"\n}\n"); fprintf(fp,"\n// %s APPLICATION CLASS",name); fprintf(fp,source_prompts[30]); fprintf(fp,"\n%sApp::%sApp(int* argc, char** argv, char* rc, bool have_locale):", name,name); if(type == vdk_project) fprintf(fp,"\n\tVDKApplication(argc,argv, rc, have_locale)\n{"); else fprintf(fp,"\n\tVDKGnomeApplication(\"%s\",\"%s\",argc,argv, rc, have_locale)\n{", name,name); #if USE_XDB fprintf(fp,"\n#ifdef VDKXDB_SUPPORT"); fprintf(fp,"\nxdb = new VDKXDatabase;"); fprintf(fp,"\n#endif"); #endif fprintf(fp,"\n}\n"); fprintf(fp,source_prompts[31]); #if USE_XDB fprintf(fp, "\n%sApp::~%sApp()\n{ \n#ifdef VDKXDB_SUPPORT\nif(xdb) delete xdb; \n#endif\n}\n", name,name); #else fprintf(fp,"\n%sApp::~%sApp()\n{ }\n", name,name); #endif fprintf(fp,"\n/*\napplication setup\n*/\n"); fprintf(fp,"\nvoid\n%sApp::Setup(void)\n{", name); #if USE_XDB fprintf(fp,"\n#ifdef VDKXDB_SUPPORT"); fprintf(fp,"\n\tXDBSetup();"); fprintf(fp,"\n#endif"); #endif fprintf(fp,"\n\tMainForm = new %sForm(this,NULL);",name); fprintf(fp,"\n\tMainForm->Setup();"); fprintf(fp,"\n\tMainForm->Show(%sForm::%s);",name,WINPOS); fprintf(fp,"\n}\n"); if(!isUpper) name[0] = tolower(name[0]); fprintf(fp,source_prompts[1], SOURCE_END_MARK, name, cc_ext); fclose(fp); delete[] name; return true; } /* */ bool VDKBProject::WriteMainCCForConsole(FILE* fp) { char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; int len = strlen(Name); char* name = new char[len+1]; strcpy(name, Name); char* p = get_extension(name); if(p) *p = '\0'; // write developer header / gpl license // write file header time_t ltime; time(<ime); struct tm * lct = localtime(<ime); fprintf(fp,source_prompts[34],(char*)options.author); fprintf(fp,source_prompts[35],(char*)options.email); if(options.gpld) fprintf(fp,source_prompts[36]); fprintf(fp,source_prompts[37],(char*)options.author,1900+lct->tm_year); fprintf(fp,source_prompts[32],name); fprintf(fp,source_prompts[33],name,cc_ext); fprintf(fp,"\n*/"); fprintf(fp,"\n#include <%s.%s>",name,h_ext); fprintf(fp,source_prompts[28]); fprintf(fp,"\nint main (int argc, char *argv[])"); fprintf(fp,"\n{"); fprintf(fp,"\n"); fprintf(fp,"\n\treturn 0;"); fprintf(fp,"\n"); fprintf(fp,"\n}\n"); fprintf(fp,source_prompts[1], SOURCE_END_MARK, name, cc_ext); fclose(fp); delete name; return true; } /* */ #define THIS "this" bool VDKBEditor::WriteFrm(char* fname,FILE* fp) { char* name; char* memname = new char[strlen(fname)+1]; strcpy(memname,fname); char* p = get_shortfilename(memname); if(p) name = p; else { delete[] memname; return false; } fprintf(fp,"[%s]\ \n{\ \n\tclass:form;\ \n\t%s.this:%s;\ \n\t%s.NormalBackground:nihil;\ \n\t%s.Foreground:nihil;\ \n\t%s.Font:nihil;\ \n\t%s.Cursor:nihil;\ \n\t%s.Usize: 400, 300;\ \n\t%s.Title:\"%s Form\";\ \n}", name, name,name,name,name,name,name,name,name, name); fclose(fp); delete[] memname; return true; } /* */ bool VDKBProject::WriteDfmFile(FILE* fp, int type) { int len = strlen(Name); char* name = new char[len+1]; strcpy(name, Name); char* p = get_extension(name); if(p) *p = '\0'; fprintf(fp,"[%s]\ \n{\ \n\tclass:%s;\ \n\t%s.this:%s;\ \n\t%s.NormalBackground:nihil;\ \n\t%s.Foreground:nihil;\ \n\t%s.Font:nihil;\ \n\t%s.Cursor:nihil;\ \n\t%s.Usize: 400, 300;\ \n\t%s.Title:\"%s Main Form\";\ \n}", name, type == vdk_project ? "form" : "gnomeform", name,name,name,name,name,name,name,name, name); fclose(fp); delete[] name; return true; } /* */ bool VDKBProject::WriteMakefile(FILE* fp) { VDKString pathname = PathName; VDKString path = Path; VDKString name = Name; char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; char* c_ext = "c"; // check if some tables are in use /* #ifdef USE_XDB VDKXDatabase* xdb = TheApp->theXdb; TableList* tlist = xdb->TList(); if( (tlist->size() > 0) && (strstr((char*) options.defines,"VDKXDB_SUPPORT") == NULL) ) options.defines += " -DVDKXDB_SUPPORT"; #endif */ fprintf(fp,"# Makefile for building\n# %s\n\n####### Compiler, tools and options\ ", (char*) pathname); fprintf(fp,"\ \nC = %s\ \nCC = %s\ \nCFLAGS = %s\ ", (char*) options.c_compiler ? (char*) options.c_compiler : " ", (char*) options.cc_compiler ? (char*) options.cc_compiler : " ", (char*) options.c_flags ? (char*) options.c_flags : " "); fprintf(fp,"\nINCPATH = %s", (char*) options.includes ? (char*) options.includes : " "); fprintf(fp,"\ \nDEFD = %s\ ", (char*) options.defines ? (char*) options.defines : " " ); fprintf(fp,"\ \nLINK = %s\ \nLIBS = %s\ \n\ \n####### Files\ ", options.link.isNull() ? " " : (char*) options.link , options.libs.isNull() ? " " : (char*) options.libs ); /* DIRS */ // char* p; fprintf(fp,"\nPRJ_DIR =\t%s\n", (char*) path); /* HEADERS */ fprintf(fp,"\ \nHEADERS ="); int t = 0; UnitListIterator li(units); for(;li && t < units.size();li++,t++) { VDKBUnit * unit = li.current(); char* complete_name = new char[ strlen(unit->Header()) + 1]; strcpy(complete_name,unit->Header()); char* namepath = NULL; if(! access(complete_name,F_OK) ) { namepath = get_path(complete_name); if(namepath && !strcmp(namepath,(char*) path)) fprintf(fp,"\t$(PRJ_DIR)/%s\\\n",get_shortfilename(complete_name)); else fprintf(fp,"\t%s\\\n",complete_name); } if(namepath) delete[] namepath; delete[] complete_name; char* gui = unit->DfmHeader(); complete_name = new char[ strlen(gui) + 1]; strcpy(complete_name,gui); namepath = NULL; if(! access(gui,F_OK)) { namepath = get_path(complete_name); if(namepath && !strcmp(namepath,(char*) path)) fprintf(fp,"\t$(PRJ_DIR)/%s\\\n",get_shortfilename(complete_name)); else fprintf(fp,"\t%s\\\n",complete_name); } if(namepath) delete[] namepath; delete[] complete_name; } fprintf(fp,"\n\n"); /* SOURCES */ fprintf(fp,"\ \nSOURCES = "); t = 0; li.restart(); for(;li && t < units.size();li++,t++) { if(li.current()->IsSource()) { char* complete_name = new char[ strlen(li.current()->Source()) + 1]; strcpy(complete_name,li.current()->Source()); char* namepath = get_path(complete_name); if(namepath && !strcmp(namepath,(char*) path)) fprintf(fp,"\t$(PRJ_DIR)/%s\\\n", get_shortfilename(complete_name)); else fprintf(fp,"\t%s\\\n",li.current()->Source()); if(namepath) delete[] namepath; delete[] complete_name; char* gui = li.current()->GuiSource(); complete_name = new char[ strlen(gui) + 1]; strcpy(complete_name,gui); namepath = NULL; if(! access(gui,F_OK)) { namepath = get_path(complete_name); if(namepath && !strcmp(namepath,(char*) path)) fprintf(fp,"\t$(PRJ_DIR)/%s\\\n", get_shortfilename(complete_name)); else fprintf(fp,"\t%s\\\n",gui); } if(namepath) delete[] namepath; delete[] complete_name; } } fprintf(fp,"\n\n"); /* OBJECTS */ fprintf(fp,"\ \nOBJECTS ="); t = 0; li.restart(); for(;li && t < units.size();li++,t++) if(li.current()->IsSource()) { char* complete_name = new char[ strlen(li.current()->Name()) + 1]; strcpy(complete_name,li.current()->Name()); char* namepath = get_path(complete_name); if(namepath && !strcmp(namepath,(char*) path)) fprintf(fp,"\t$(PRJ_DIR)/%s.o\\\n", get_shortfilename(complete_name)); else fprintf(fp,"\t%s.o\\\n",li.current()->Name()); if(namepath) delete[] namepath; delete[] complete_name; char* gui = li.current()->Name(); complete_name = new char[ strlen(gui) + 1]; strcpy(complete_name,gui); namepath = NULL; if(! access(li.current()->GuiSource(),F_OK)) { namepath = get_path(complete_name); if(namepath && !strcmp(namepath,(char*) path)) fprintf(fp,"\t$(PRJ_DIR)/%s_gui.o\\\n", get_shortfilename(complete_name)); else fprintf(fp,"\t%s_gui.o\\\n",li.current()->Name()); } if(namepath) delete[] namepath; delete[] complete_name; } fprintf(fp,"\n\n"); /* OTHERS OBJECTS */ fprintf(fp,"\nOTHERS_OBJECTS ="); t = 0; li.restart(); for(;li && t < units.size();li++,t++) { if(li.current()->Type() == object_unit || li.current()->Type() == staticlib_unit ) { char* complete_name = new char[ strlen(li.current()->Name()) + 1]; strcpy(complete_name,li.current()->Name()); char* namepath = get_path(complete_name); if(namepath && !strcmp(namepath,(char*) path)) fprintf(fp,"\t$(PRJ_DIR)/%s.%s\\\n", get_shortfilename(complete_name), ext_types[li.current()->Type()]); else fprintf(fp,"\t%s.%s\\\n", li.current()->Name(), ext_types[li.current()->Type()]); if(namepath) delete[] namepath; delete[] complete_name; } } fprintf(fp,"\n\n"); /* TARGET */ VDKString executable = /* path + "/" + */ name; VDKString builder_exe = "./"; builder_exe+=name; char* p = get_extension ( (char*) executable); if(p) *p = '\0'; fprintf(fp,"\nTARGET =\t%s", (char*) executable); p = get_extension ( (char*) builder_exe); if(p) *p = '\0'; /* program args */ fprintf(fp,"\n\nPRG_ARGS =\t%s\n", (char*) options.runargs); /* RULES */ VDKString cwd; char* pw = getcwd(NULL,MAXPATHLEN); if(pw) { cwd = pw; free(pw); } fprintf(fp,"\ \n####### Implicit rules\ \n.SUFFIXES: .%s .%s\ \n\ \n.%s.o:\ \n\t$(CC) -c $(CFLAGS) $(INCPATH) $(DEFD) -o $@ $<\ \n\ \n.%s.o:\ \n\t$(C) -c $(CFLAGS) $(INCPATH) $(DEFD) -o $@ $<\ \n\ \n####### Build rules\ \n\ \nall: $(TARGET)\ \n\ \n$(TARGET): $(OBJECTS)\ \n\t$(LINK) -o $(TARGET) $(OBJECTS) $(OTHERS_OBJECTS) $(LIBS)\ \n\ \n####### Running (used by builder)\ \nrun: $(TARGET)\ \n\tcd %s\ \n\t%s $(PRG_ARGS)\ \n\tcd %s\ \n\ \nclean:\ \n\t-rm -f $(OBJECTS) $(TARGET)\ \n\t-rm -f *~ core\ \n\ \n####### Compile\ ", cc_ext,c_ext,cc_ext,c_ext,(char*) path, (char*) builder_exe,(char*) cwd); char* dependFile; fprintf(fp,"\n"); li.restart(); for(;li ;li++) { char* complete_name; char* namepath; fprintf(fp,"\n\n"); if(li.current()->IsSource()) { complete_name = new char[ strlen(li.current()->Name()) + 1]; strcpy(complete_name,li.current()->Name()); namepath = get_path(complete_name); if(namepath && !strcmp(namepath,(char*) path)) sprintf(buff,"$(PRJ_DIR)/%s.o : ", get_shortfilename(complete_name)); else sprintf(buff,"%s.o : ",li.current()->Name()); fprintf(fp,buff); if(namepath) delete[] namepath; delete[] complete_name; complete_name = new char[ strlen(li.current()->Source()) + 1]; strcpy(complete_name,li.current()->Source()); // for WriteDependencies() dependFile = new char[ strlen(li.current()->Source()) + 1]; strcpy(dependFile,li.current()->Source()); namepath = get_path(complete_name); if(namepath && !strcmp(namepath,(char*) path)) sprintf(buff,"$(PRJ_DIR)/%s",get_shortfilename(complete_name)); else sprintf(buff,"%s",li.current()->Source()); fprintf(fp,buff); if(namepath) delete[] namepath; delete[] complete_name; if(! access(li.current()->Header(),F_OK)) { complete_name = new char[ strlen(li.current()->Header()) + 1]; strcpy(complete_name,li.current()->Header()); namepath = get_path(complete_name); if(namepath && !strcmp(namepath,(char*) path)) ; else { sprintf(buff,"\\\n\t%s", li.current()->Header()); fprintf(fp,buff); } // dependencies WriteDependencies(fp,dependFile); WriteDependencies(fp,complete_name); delete[] dependFile; if(namepath) delete[] namepath; delete[] complete_name; } if(! access(li.current()->Dfm(),F_OK)) { complete_name = new char[ strlen(li.current()->Name()) + 1]; strcpy(complete_name,li.current()->Name()); namepath = get_path(complete_name); if(namepath && !strcmp(namepath,(char*) path)) { sprintf(buff,"\n\n$(PRJ_DIR)/%s_gui.o : ", get_shortfilename(complete_name)); fprintf(fp,buff); sprintf(buff,"$(PRJ_DIR)/%s_gui.%s", get_shortfilename(complete_name),cc_ext); fprintf(fp,buff); sprintf(buff,"\\\n\t$(PRJ_DIR)/%s_gui.%s\n", get_shortfilename(complete_name),h_ext); sprintf(buff,"\\\n\t$(PRJ_DIR)/%s.%s\\\n", get_shortfilename(complete_name),h_ext); fprintf(fp,buff); } else { sprintf(buff,"\n%s_gui.o : ", li.current()->Name()); fprintf(fp,buff); sprintf(buff,"%s_gui.%s",li.current()->Name(),cc_ext); fprintf(fp,buff); sprintf(buff,"\\\n\t%s_gui.%s\n", li.current()->Name(),h_ext); sprintf(buff,"\\\n\t%s.%s\\\n", li.current()->Name(),h_ext); fprintf(fp,buff); } sprintf(buff,"%s_gui.%s",complete_name,cc_ext); WriteDependencies(fp,buff); if(namepath) delete[] namepath; delete[] complete_name; } } } return true; } void WriteDependencies(FILE* fp, char* complete_name, char* avoid) { FILE* sfp = fopen(complete_name,"r"); char local[512]; char localbuff[512]; if(!sfp) return; while(fgets(local,511,sfp)) { if(strstr(local,"include")) { char tgt[256]; if( (ExtractWord(local,tgt,"<",">") || ExtractWord(local,tgt,"\"","\"")) && (!access(tgt,F_OK)) ) { if( (!avoid) || (avoid && strcmp(tgt,avoid)) ) { sprintf(localbuff,"\\\n\t$(PRJ_DIR)/%s",tgt); fprintf(fp,localbuff); // WriteDependencies(fp,tgt); } } } } fclose(sfp); } /* */ bool VDKBProject::WriteSourcesForAutomake(FILE* fp) { VDKString tmp; UnitListIterator li(units); for(;li;li++) { VDKBUnit * unit = li.current(); tmp = get_shortfilename((char*) unit->Header()); if(! access(unit->Header(),F_OK) ) fprintf(fp,"\\\n\t%s",(char*) tmp); tmp = get_shortfilename((char*) unit->DfmHeader()); if(! access(unit->DfmHeader(),F_OK)) fprintf(fp,"\\\n\t%s",(char*) tmp); } li.restart(); for(;li;li++) { if(li.current()->IsSource()) { if(! access(li.current()->Source(),F_OK)) { tmp = get_shortfilename((char*) li.current()->Source()); fprintf(fp,"\\\n\t%s",(char*) tmp); char* gui = li.current()->GuiSource(); tmp = get_shortfilename(li.current()->GuiSource()); if(! access(gui,F_OK)) fprintf(fp,"\\\n\t%s",(char*) tmp); } } } fprintf(fp,"\n\n"); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_table.cc0000644000000000000000000004161407453755735014152 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include //#include #include #include #include #include #include #include #include #include #include #include #include #include #include "./pixmaps/rowspace.xpm" /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBTable // put here vdk class name string #define VDK_CLASS "VDKTable" // put here vdk class name #define VDK_ANCESTOR VDKTable // put here here the widget will be named // (name+counter) #define VDK_WIDGET "table" //================================================================= extern char* wi_widget_prompts[]; static char buff[128]; int CLASS::Counter = 0; /* properties */ char* vdktable_props[] = { COLSPACING, ROWSPACING, ROWS_INTERNAL, COLUMNS_INTERNAL, HOMOGENEOUS, 0 }; DEFINE_EVENT_LIST(CLASS,VDKBEventContainer); DEFINE_SIGNAL_LIST(CLASS,VDKBEventContainer); /* */ bool CLASS:: DelBox(VDKObject* sender) { // destroy inner gtk+ placeholder widget gtk_widget_destroy(container); // call ancestor delete box VDKBEventContainer::DelBox(sender); // notify to inspector that object was deleted VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) prjman->objInspector->SetActive(NULL); } return true; } /* */ bool CLASS::SetBoxSize(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { ownerform->SetBoxSize(NULL); } return true; } /* */ bool CLASS::OnButtonPressed(VDKObject* sender, GdkEvent* event) { // pass to ancestor so widget will be marked VDKBEventContainer::OnButtonPressed(this,event); return true; } //=========================================== /* */ CLASS::CLASS(char* name, VDKForm* owner, int rows,int cols,bool homo): VDKBEventContainer(name,owner),rows(rows),cols(cols),homo(homo) { Counter++; VDKBObject::object = this; VDKBEventContainer::mode = mode; Init(); } /* */ CLASS::CLASS(char* name,VDKBEventContainer* outer, int rows,int cols,bool homo): VDKBEventContainer(name,outer->Owner()),rows(rows),cols(cols),homo(homo) { VDKBObject::object = this; Counter++; outerbox = outer; Init(); } /* */ void CLASS::Init() { int t; // add frame properties // names. (Others props are prepended by VDKBObject constructor) for(t=0; vdktable_props[t]; t++) proplist.add(VDKBProperty(vdktable_props[t])); SetPropValue(COLSPACING,"2"); SetPropValue(ROWSPACING,"2"); sprintf(buff,"%d",rows); SetPropValue(ROWS_INTERNAL,buff); sprintf(buff,"%d",cols); SetPropValue(COLUMNS_INTERNAL,buff); SetPropValue(HOMOGENEOUS,homo ? CHECK_TRUE : CHECK_FALSE); AddBox(name); // makes a pop menu popmenu = new VDKBContainerPopMenu(this); delBox = new VDKMenuItem(popmenu,_("Remove table")); setsize = new VDKMenuItem(popmenu,_(wi_widget_prompts[19])); selectparent = new VDKMenuItem(popmenu,_(wi_widget_prompts[20])); SignalConnect(selectparent,"activate", &CLASS::SelectParentContainer); SignalConnect(delBox,"activate",&CLASS::DelBox); SignalConnect(setsize,"activate",&CLASS::SetBoxSize); EventConnect("button_press_event", &CLASS::OnButtonPressed); EventConnect("button_release_event",&VDKBObject::ButtonReleased); EventConnect("enter_notify_event",&VDKBObject::OnEnter); EventConnect("leave_notify_event",&VDKBObject::OnLeave); /* assign this as parent so this can receive signals */ popmenu->Parent(this); popmenu->Setup(); /* better add it to owner, so will be surely destroyed even if never popped */ Owner()->AddItem(popmenu); } /* */ void CLASS::AddBox(char* name) { container = gtk_table_new(rows,cols,homo); gtk_table_set_row_spacings(GTK_TABLE(container),2); gtk_table_set_col_spacings(GTK_TABLE(container),2); gtk_container_add(GTK_CONTAINER(widget),container); gtk_widget_show(container); } /* we use justify for row and expand for col really only boxes should be added to a table here FIX ME: check obj class here !! extra args unused */ void CLASS::AddWidget(VDKObject* obj, int justify, int expand, int fill , int padding, bool forceArgs) { int row = justify; int col = expand; VDKBEventContainer::Add(obj,l_justify,true,fill,padding); gtk_table_attach(GTK_TABLE(container), obj->Widget(), col,col+1,row,row+1, GtkAttachOptions(GTK_FILL | GTK_EXPAND), GtkAttachOptions(GTK_FILL | GTK_EXPAND), padding,padding); VDKBObject* vdkbobj = dynamic_cast(obj); if(vdkbobj) { VDKBEventBox* box = dynamic_cast(vdkbobj); if(box) { sprintf(buff,"%d",row); box->SetPropValue(TABLEROW,buff); sprintf(buff,"%d",col); box->SetPropValue(TABLECOL,buff); box->PreviewFlag = true; box->Outerbox(this); } } } /* extra args used */ void CLASS::Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { AddWidget(wid); } /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable frame counter // to ensure unicity int result = 0; int r =3,c = 3; CLASS* table = NULL; // ask to user how many rows and cols for(sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; CLASS::Counter++) sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); Vdkb_tabledlgForm* dlg = new Vdkb_tabledlgForm(owner,NULL,&r,&c); dlg->Setup(); dlg->ShowModal(); // user cancelled if (!r || !c) return 3; if(owner->Active) { table = new CLASS(buff,owner,r,c,true); int y,z; for(y = 0; y < r; y++) for (z = 0; z < c; z++) { for(sprintf(buff,"vbox%d",VDKBEventBox::Counter); owner->ChildWithName(buff) != (VDKObject*) NULL; VDKBEventBox::Counter++) sprintf(buff,"vbox%d",VDKBEventBox::Counter); VDKBEventBox *box = new VDKBEventBox(buff,table); table->AddWidget(box,y,z); } VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { if(ev && dynamic_cast(container)) { GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); table->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); table->SetPropValue( EXPAND_INTERNAL,buff); // others than justify and flag unuseful container->AddWidget(table,int(event->x), int(event->y), true,true,true); } else container->AddWidget(table); table->outerbox = container; } else if(! owner->Active->AddToParent(table,ev)) // target isn't a container result = 2; } else // no active widget result = 3; // 0 on success if(result && table) table->Destroy(); return result; } //////////////////////////////////////////////////////////////////// /* */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { VDKBEventContainer::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_ROWS_INTERNAL, (char*) GetProp(ROWS_INTERNAL)); fprintf(fp,"\n\t%s%s;", PROP_COLUMNS_INTERNAL, (char*) GetProp(COLUMNS_INTERNAL)); fprintf(fp,"\n\t%s%s;", PROP_ROWSPACING, (char*) GetProp(ROWSPACING)); fprintf(fp,"\n\t%s%s;", PROP_COLSPACING, (char*) GetProp(COLSPACING)); fprintf(fp,"\n\t%s%s;", PROP_HOMOGENEOUS, (char*) GetProp(HOMOGENEOUS)); } /* */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char temp[256]; char bw[16]; char arg[16]; int rowspace = 2; int colspace = 2; // char arg[128]; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return NULL; else source = new char[1024]; // rows, columns, homogeneous int rows = 2,cols = 2; if(parser.GetParam(arg,buffer,PROP_ROWS_INTERNAL)) rows = atoi(arg); if(parser.GetParam(arg,buffer,PROP_COLUMNS_INTERNAL)) cols = atoi(arg); bool homogeneous = !strcmp(parser.GetParam(arg,buffer,PROP_HOMOGENEOUS),CHECK_TRUE); if(parser.GetParam(arg,buffer,PROP_ROWSPACING) && strcmp(arg,NIHIL_PROP)) rowspace = atoi(arg); if(parser.GetParam(arg,buffer,PROP_COLSPACING) && strcmp(arg,NIHIL_PROP)) colspace = atoi(arg); sprintf(temp,"\n%s = new VDKTable(this,%d,%d,%s);" , obj_name, rows,cols,homogeneous ? CHECK_TRUE : CHECK_FALSE); strcpy(source,temp); sprintf(temp,"\n%s->RowSpacing = %d;\n%s->ColSpacing = %d;", obj_name,rowspace,obj_name,colspace); strcat(source,temp); // get size VDKPoint size = parser.Size(buffer); if(size.X() > 0 || size.Y() > 0) { sprintf(temp,"\n%s->SetSize(%d,%d);",obj_name,size.X(),size.Y()); strcat(source,temp); } if(strcmp(obj_parent,NIHIL_PROP)) sprintf(temp,"\n%s->Add(%s",obj_parent,obj_name); else sprintf(temp,"\nAdd(%s",obj_name); strcat(source,temp); // prepares arguments for add widget to container char justify[16],expand[16],fill[16],padding[16]; if(parser.GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && parser.GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && parser.GetParam(fill,buffer,PROP_FILL_INTERNAL) && parser.GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(temp,",%s,%s,%s,%s);", justify,expand,fill,padding); strcat(source,temp); } else { sprintf(temp,");"); strcat(source,temp); } if(parser.GetParam(bw,buffer,PROP_BORDERWIDTH) && strcmp(bw,NIHIL_PROP)) { sprintf(temp,"\n%s->BorderWidth(%s);",obj_name,bw); strcat(source,temp); } return source; } /* */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[32]; CLASS* table; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return false; // get mode and size VDKPoint size = parser.Size(buffer); // get packing args int justification = l_justify; int expand=0,fill=0,padding=0,homogeneous; int bw; // border width int rowspace = 2; int colspace = 2; // int rows = 2,cols = 2; if(parser.GetParam(arg,buffer,PROP_ROWS_INTERNAL)) rows = atoi(arg); if(parser.GetParam(arg,buffer,PROP_COLUMNS_INTERNAL)) cols = atoi(arg); if(parser.GetParam(arg,buffer,PROP_JUSTIFY_INTERNAL)) justification = atoi(arg); if(parser.GetParam(arg,buffer,PROP_EXPAND_INTERNAL)) expand = atoi(arg); if(parser.GetParam(arg,buffer,PROP_FILL_INTERNAL)) fill = atoi(arg); if(parser.GetParam(arg,buffer,PROP_PADDING_INTERNAL)) padding = atoi(arg); homogeneous = !strcmp(parser.GetParam(arg,buffer,PROP_HOMOGENEOUS), CHECK_TRUE); if(parser.GetParam(arg,buffer,PROP_BORDERWIDTH) && strcmp(arg,NIHIL_PROP)) bw = atoi(arg); else bw = -1; if(parser.GetParam(arg,buffer,PROP_ROWSPACING) && strcmp(arg,NIHIL_PROP)) rowspace = atoi(arg); if(parser.GetParam(arg,buffer,PROP_COLSPACING) && strcmp(arg,NIHIL_PROP)) colspace = atoi(arg); // no parent, widget will be added to owner form innerbox if(!strcmp(obj_parent,NIHIL_PROP)) { table = new CLASS(obj_name,owner->InnerBox(),rows,cols,homogeneous); gtk_table_set_row_spacings (GTK_TABLE(table->Container()),rowspace); gtk_table_set_col_spacings (GTK_TABLE(table->Container()),colspace); owner->AddWidget(table,justification,expand,fill,padding); } // get parent container address else { VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { table = new CLASS(obj_name,container,rows,cols,homogeneous); gtk_table_set_row_spacings (GTK_TABLE(table->Container()),rowspace); gtk_table_set_col_spacings (GTK_TABLE(table->Container()),colspace); container->AddWidget(table,justification,expand, fill,padding,true); table->outerbox = container; } else // FIX ME: user warning return false; } // call ancestor to set common properties VDKBObject::CreateWidget(table,buffer,parser); if(size.X() > 0 || size.Y() > 0) table->ObjectFromVDK()->SetSize(size.X(),size.Y()); if(bw >= 0) { table->BorderWidth(bw); sprintf(buff,"%d",bw); table->SetPropValue(BORDERWIDTH,buff); } sprintf(buff,"%d",rowspace); table->SetPropValue(ROWSPACING,buff); sprintf(buff,"%d",colspace); table->SetPropValue(COLSPACING,buff); return true; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* This is called by object inspector when a widget is selected by user, thus to allow widget to set his own property controls. */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; int bw = 0; VDKBox* tframe = dynamic_cast(VDKBEventContainer::ExtraWidget(isp)); if(!tframe) return NULL; VDKTable *table = new VDKTable(inspector,2,2); homogeneous = new VDKCheckButton(inspector,_("Homogeneous")); table->AddToCell(homogeneous,0,0); homogeneous->Checked = GetProp("Homogeneous") == True; homogeneous->Parent(this); SignalConnect(homogeneous,"toggled",&CLASS::OnSetHomogeneous); VDKCustomButton* sbutton = new VDKCustomButton(inspector,(const char**) rowspace_xpm,NULL); sbutton->Relief = (GtkReliefStyle) 2; sbutton->SetTip(_("Change spacing")); table->AddToCell(sbutton,0,1,GTK_SHRINK); sbutton->Parent(this); SignalConnect(sbutton,"clicked",&CLASS::OnRowColSpacing); table->AddToCell(new VDKLabel(inspector,_("Rows & cols spacing:")),1,0); bw = atoi( (char*) GetProp(ROWSPACING)); VDKBox* hbox = new VDKBox(inspector,h_box); rowspacing = new VDKSpinButton(inspector, bw, 0, 20 , 1 ,0 ); hbox->Add(rowspacing,l_justify,false,false,0); bw = atoi( (char*) GetProp(COLSPACING)); colspacing = new VDKSpinButton(inspector, bw, 0, 20 , 1 ,0 ); hbox->Add(colspacing,l_justify,false,false,0); table->AddToCell(hbox,1,1); tframe->Add(table,l_justify,false,false,false); return tframe; } /* */ bool CLASS::OnSetHomogeneous(VDKObject*) { SetPropValue(HOMOGENEOUS, homogeneous->Checked ? CHECK_TRUE : CHECK_FALSE); homo = homogeneous->Checked ? true : false; gtk_table_set_homogeneous (GTK_TABLE(container), homogeneous->Checked ? true : false); inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnRowColSpacing(VDKObject*) { sprintf(buff,"%d",(int) rowspacing->ValueAsInt); SetPropValue(ROWSPACING,buff); gtk_table_set_row_spacings (GTK_TABLE(container), (int) rowspacing->ValueAsInt); sprintf(buff,"%d",(int) colspacing->ValueAsInt); SetPropValue(COLSPACING,buff); gtk_table_set_col_spacings (GTK_TABLE(container), (int) colspacing->ValueAsInt); inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_text.cc0000644000000000000000000003503210022114561014010 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * December 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #define vdkeCourier "-*-courier-medium-r-*-*-12-*-*-*-*-*-*-*" #define vdkeCourierBold "-*-courier-bold-r-*-*-12-*-*-*-*-*-*-*" #define vdkeCourierSlant "-*-courier-medium-o-*-*-12-*-*-*-*-*-*-*" DEFINE_SIGNAL_LIST(VDKBText,VDKEditor); DEFINE_EVENT_LIST(VDKBText, VDKEditor); static const char * mark_xpm[] = { "16 16 67 1", " c None", ". c #FEFEFE", "+ c #FEFEFD", "@ c #FCFCFC", "# c #C3C3C3", "$ c #ABAAA8", "% c #BABAB9", "& c #F6F6F6", "* c #F7F7F7", "= c #989488", "- c #E3D395", "; c #F7E8AA", "> c #EAD992", ", c #B1A578", "' c #D1D1D1", ") c #B5B4B3", "! c #EDDB98", "~ c #F8F2DB", "{ c #FAF6E8", "] c #F8EDB9", "^ c #F0DE8D", "/ c #99906F", "( c #FAFAFA", "_ c #B5B2A8", ": c #F4E29B", "< c #FAF5E7", "[ c #F9F4E2", "} c #F5EAB9", "| c #F5E494", "1 c #B4A66D", "2 c #D9D9D9", "3 c #B7B6B6", "4 c #E9D895", "5 c #F9F4E3", "6 c #F9EFCD", "7 c #F3E6AC", "8 c #F1DF8E", "9 c #978B5A", "0 c #EFEFEF", "a c #B5AA7A", "b c #F7F0D6", "c c #F2E4A9", "d c #E8D88F", "e c #CFBD76", "f c #979383", "g c #D0D0CD", "h c #918C79", "i c #AEA684", "j c #D2C07B", "k c #94895A", "l c #918F87", "m c #898987", "n c #9A9A96", "o c #949490", "p c #55544E", "q c #B2B2B0", "r c #FDFDFC", "s c #555554", "t c #959591", "u c #888885", "v c #5C5C5B", "w c #222220", "x c #494946", "y c #727271", "z c #828281", "A c #0C0C0B", "B c #60605D", " ", " ", " .+ ", " @#$%&. ", " *=-;>,'. ", " +)!~{]^/( ", " ._:<[}|12 ", " 34567890 ", " &abcdef. ", " ghijkl0 ", " mnopqr ", " stuv ", " wxyz ", " AB ", " ", " "}; //=================================== const unsigned int guessOffset = 1000; static char buff[1024]; extern VDKBuilder* TheApp; extern char *source_prompts[]; extern HintBTree* hint_tree; /* */ bool VDKBText::KeyEventAfter(VDKObject *sender,GdkEvent *event) { GdkEventKey *ev = (GdkEventKey*) event; // dispatch directly to text parent (VDKBnotebook) if(Changed) Parent()->SignalEmit("text_changed"); // others keys: switch(ev->keyval) { case GDK_Up: case GDK_Down: case GDK_Page_Up: case GDK_Page_Down: CurrentLine((int) Line+1); Parent()->SignalEmit("line_changed"); break; case GDK_F3: case GDK_F20: Parent()->SignalEmit("repeat_search_text"); break; } return false; //true; } /* */ char * VDKBText::MakeTip(char* word) { VDKHint hint(word,(char*) ""),*found; if( (found = hint_tree->find(hint))) sprintf(buff,found->hint); else sprintf(buff,_("%s: no tip available"),word); return buff; } /* */ bool VDKBText::KeyEventBefore(VDKObject *sender,GdkEvent *event) { GdkEventKey *ev = (GdkEventKey*) event; bool isAlt = false; bool isCtrl = false; char* word = NULL; // Action* action = NULL; if(! Editable) return false;//true; switch(ev->keyval) { case GDK_F16: case GDK_F4: if (! Undo()) Parent()->SignalEmit("no_more_undo"); break; case GDK_BackSpace: isAlt = ev->state & GDK_MOD1_MASK; if(isAlt && ! Undo()) Parent()->SignalEmit("no_more_undo"); break; case GDK_F5: ShowTipWindow(_("sorry, redo not yet implemented")); break; case GDK_F6: if(Hilite) Parent()->SignalEmit("hilite_text"); break; case GDK_F1: Parent()->SignalEmit("editor_help"); break; // hints case GDK_q: isCtrl = ev->state & GDK_CONTROL_MASK; if(isCtrl) { word = GetWord(); if(word) ShowTipWindow(MakeTip(word)); } break; default: break; } return false;//true; } /* */ bool VDKBText::ButtonPressEvent(VDKObject* obj, GdkEvent* ev) { char* p = Filename(); GdkEventButton* event = (GdkEventButton*) ev; if(event->button != 1) return false; if(p) { struct stat finfo; if(!stat(p,&finfo)) { if( (Mtime() != 0) && (finfo.st_mtime != Mtime()) ) { sprintf(buff,"%s\n%s",p,_("Changed from disk, reload ?")); if(Owner()->Application() ->VDKMessageBox(APPNAME, buff, VDK_ICONQUESTION|VDK_YESNO, _(user_messages[user_ok]), _(user_messages[user_no])) == VDK_IDYES) Load(p); } else { CurrentLine(Line+1); Parent()->SignalEmit("line_changed"); } } } return false;//true; } /* pop menu */ bool VDKBText::ButtonReleaseEvent(VDKObject* sender, GdkEvent *event) { // casts to button event GdkEventButton *ev = (GdkEventButton*) event; // pops menu on right button pressed if(ev->button == 2) { Parent()->SignalEmit("pop_menu"); return true; } return false; } /* */ bool VDKBText::Realized(VDKObject* sender) { char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; // this flag is set to false by constructor // so only one realized signal is catched if(!realized) { SetStyle(); // load from file if found // and hilites it if(!access(Filename(),F_OK) && Load(Filename()) && Hilite) Syntax = true; // create a new unit file if not empty filename else if(*Filename()) { // is a new unit file ? Changed = true; char *local = new char[strlen(Filename())+1]; strcpy(local,Filename()); char* ext = get_extension(local); // advance to jump '.' if(ext) { *ext = '\0'; ext++; // is a .cc file ? if(!strcmp(ext,cc_ext)) { sprintf(buff,"#include <%s.h>\n",local); TextInsert(buff); sprintf(buff,source_prompts[1], SOURCE_END_MARK, local, cc_ext); TextInsert(buff); } // is .h file ? else if(!strcmp(ext,h_ext)) { TextInsert("//\n"); sprintf(buff,"#ifndef _%s_h\n",local); TextInsert(buff); sprintf(buff,"#define _%s_h\n",local); TextInsert("// put your code below here\n"); TextInsert(buff); TextInsert("\n\n"); TextInsert("//\n"); TextInsert("#endif\n"); sprintf(buff,source_prompts[1], SOURCE_END_MARK, local, h_ext); TextInsert(buff); } } delete[] local; } realized = true; Pointer = 0; } return true; } /* set style */ void VDKBText::SetStyle() { VDKString Yes = CHECK_YES; char* font = (char*) VDKBuilder::ideDefaults.editor.font; char* bg_color = (char*) VDKBuilder::ideDefaults.editor.bg; char* fg_color = (char*) VDKBuilder::ideDefaults.editor.fg; char* color = NULL; VDKColor *key_color = NULL; VDKFont *key_font = NULL; VDKColor *gtk_color = NULL; VDKFont *gtk_font = NULL; VDKColor *macro_color = NULL; VDKFont *macro_font = NULL; VDKColor *preprocessor_color = NULL; VDKFont *preprocessor_font = NULL; VDKColor *const_color = NULL; VDKFont *const_font = NULL; VDKColor *comment_color = NULL; VDKFont *comment_font = NULL; // bool autoindent = VDKBuilder::ideDefaults.project.code_autoindent == Yes; // gtk_source_view_set_auto_indent(GTK_SOURCE_VIEW(WrappedWidget()),autoindent); int tabs = atoi(VDKBuilder::ideDefaults.editor.tab); TabStop = tabs; bool showline = VDKBuilder::ideDefaults.project.showln == Yes; ShowLineNumbers = showline; // defaults if(font) Font = new VDKFont(this,font); if(bg_color) NormalBackground = VDKRgb(bg_color); if(fg_color) Foreground = VDKRgb(fg_color); // keys attributes font = (char*) VDKBuilder::ideDefaults.editor.key_font; color = (char*) VDKBuilder::ideDefaults.editor.key_color; if(font) key_font = new VDKFont(this,font); if(color) key_color = new VDKColor(this,color); // gtk/vdk attributes font = (char*) VDKBuilder::ideDefaults.editor.gtk_font; color = (char*) VDKBuilder::ideDefaults.editor.gtk_color; if(font) gtk_font = new VDKFont(this,font); if(color) gtk_color = new VDKColor(this,color); // macro attributes font = (char*) VDKBuilder::ideDefaults.editor.macro_font; color = (char*) VDKBuilder::ideDefaults.editor.macro_color; if(font) macro_font = new VDKFont(this,font); if(color) macro_color = new VDKColor(this,color); // preprocessor attributes font = (char*) VDKBuilder::ideDefaults.editor.preprocess_font; color = (char*) VDKBuilder::ideDefaults.editor.preprocess_color; if(font) preprocessor_font = new VDKFont(this,font); if(color) preprocessor_color = new VDKColor(this,color); // const attributes font = (char*) VDKBuilder::ideDefaults.editor.const_font; color = (char*) VDKBuilder::ideDefaults.editor.const_color; if(font) const_font = new VDKFont(this,font); if(color) const_color = new VDKColor(this,color); // comment attributes font = (char*) VDKBuilder::ideDefaults.editor.comment_font; color = (char*) VDKBuilder::ideDefaults.editor.comment_color; if(font) comment_font = new VDKFont(this,font); if(color) comment_color = new VDKColor(this,color); // install syntax and patterns table InstallSyntaxTable ( key_color,key_font, // keywords gtk_color,gtk_font, // gtk+ names macro_color,macro_font, // macros preprocessor_color,preprocessor_font, // preprocessor directives const_color,const_font, // constants comment_color,comment_font); // remarks // install marker pixmaps AddMarkIcon(new VDKPixbuf(owner, mark_xpm),"mark",true); } ////////////////////////////////////// /* */ VDKBText::VDKBText(VDKForm* owner, bool editable, char* filename ): VDKEditor(owner),filename(filename), CurrentLine("CurrentLine",this,1) { mapped = false; lastGuessed = 0; realized = false; Hilite = false; // set max undo MaxUndo = 512; // setup event handler to intercept key press // intercepts undo/redo, stops signal in this case // and process undo/redo // "true" as last arg means connect after (default false) EventConnect("key_press_event",&VDKBText::KeyEventAfter);//,true); EventConnect("button_press_event",&VDKBText::ButtonPressEvent);//,true); EventConnect("button_release_event", &VDKBText::ButtonReleaseEvent);//,true); // EventConnect("map_event",&VDKBText::MappedEvent,true); SignalConnect("realize",&VDKBText::Realized,true,true); EventConnect("key_press_event",&VDKBText::KeyEventBefore); // load file last modification time if(filename) { struct stat finfo; if(!stat(filename,&finfo)) mtime = finfo.st_mtime; else mtime = 0; } else mtime = 0; } /* */ int VDKBText::Save(char* filename) { int result = FALSE; if(filename) { result = VDKEditor::SaveToFile(filename); if(result) { struct stat finfo; if(!stat(filename,&finfo)) mtime = finfo.st_mtime; else mtime = 0; } else mtime = 0; } else mtime = 0; return result; } /* */ int VDKBText::Load(char* filename) { int result = VDKEditor::LoadFromFile(filename); /* make a back-up file, using filename+~ */ VDKString Yes = CHECK_YES; if(result && filename && (VDKBuilder::ideDefaults.editor.backup == Yes) ) { char* ext = get_extension(filename); if(ext && (!strchr(ext,'~'))) { int success = 0; VDKString backup = filename; backup += "~"; success = VDKEditor::SaveToFile((char*) backup); if(! success) { sprintf(buff,_("Couldn't make %s backup file"),filename); TheApp->VDKMessageBox( APPNAME, buff, VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 5000); } } } if(result && filename) { struct stat finfo; if(!stat(filename,&finfo)) mtime = finfo.st_mtime; else mtime = 0; } else mtime = 0; return result; } /////////////////////////////////////// /* */ VDKBText::~VDKBText() { //action_stack.flush(); } /* */ char* VDKBText::ShortName() { char* p = (char*) filename; char* s = get_shortfilename(p); return s ? s : p; } /* */ char* VDKBText::Extension() { char* p = (char*) filename; return get_extension(p); } /* */ char* VDKBText::Filename(char* name) { if(name) filename = name; return (char*) filename; } bool VDKBText::GoToLine(int line) { //Line = line; if(line > 0) ScrollToLine(line-1,0); return true; } /* */ void VDKBText::ScrollTo(int pos) { // Pointer = pos; ScrollToPos(pos); } int VDKBText::Search(char* st,int from, bool select, bool bell) { GtkTextIter iter,match_start,match_end; int m_start = -1; int m_end = -1; gtk_text_buffer_get_iter_at_offset (GTK_TEXT_BUFFER(Buffer()), &iter, from); if(gtk_text_iter_forward_search (&iter, st, GTK_TEXT_SEARCH_TEXT_ONLY, &match_start, &match_end, NULL)) { m_start = gtk_text_iter_get_offset (&match_start); m_end = gtk_text_iter_get_offset (&match_end); ScrollToPos(m_start); if(select) SelectText(m_start,m_end); } else if(bell) gdk_beep(); return m_start; /* char* buf = GetChars(from,-1); int pos = -1; if(! buf) return 0; char* p = strstr(buf,st); if(p) { pos = from + (p-buf); ScrollToPos(pos); SelectText(pos,pos + strlen (st)); } else if(bell) gdk_beep(); g_free(buf); return pos; */ } vdkbuilder2-2.4.0/vdkbuilder/vdkb_textlabel.cc0000644000000000000000000002466007454574736015052 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBTextLabel // put here vdk class name string #define VDK_CLASS "VDKLabel" // put here vdk class name #define VDK_ANCESTOR VDKLabel // put here here the widget will be named // (name+counter) #define VDK_WIDGET "label" extern char* wi_widget_prompts[]; static char buff[128]; // used to autogenerate default // labelbutton names and captions int CLASS::Counter = 0; /* label properties names */ char* vdklabel_props[] = { CAPTION, CAPTIONWRAP, JUSTIFY,0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDKBEvLabel); DEFINE_EVENT_LIST(CLASS,VDKBEvLabel); /////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner, char* label): VDKBEvLabel(owner,label),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties list label button properties // names. (Others props are prepended by VDKBObject constructor) for(t=0; vdklabel_props[t]; t++) proplist.add(VDKBProperty(vdklabel_props[t])); if(label) SetPropValue(CAPTION,label); // connects events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s\"%s\";", PROP_CAPTION,(char*) GetProp(CAPTION)); fprintf(fp,"\n\t%s%s;", PROP_CAPTIONWRAP,(char*) GetProp(CAPTIONWRAP)); fprintf(fp,"\n\t%s%s;", PROP_JUSTIFY,(char*) GetProp(JUSTIFY)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* label = NULL; // autogenerate first suitable label counter // to ensure unicity // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // actually makes widget label = new CLASS(buff,owner,buff); // add widget to form return owner->AddToSelf(label,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char obj_caption[128]; bool nls_support = parser.CheckNLSSupport(); // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; if(parser.GetParam(obj_caption,buffer,PROP_CAPTION) && strcmp(obj_caption,NIHIL_PROP)) ; else strcpy(obj_caption," "); if(nls_support) sprintf(tmp,"\n%s = new %s(this,_(\"%s\"));", obj_name,VDK_CLASS,obj_caption); else sprintf(tmp,"\n%s = new %s(this,\"%s\");", obj_name,VDK_CLASS,obj_caption); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // get label button props if(parser.GetParam(arg,buffer,PROP_CAPTIONWRAP) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;", obj_name,CAPTIONWRAP,arg); strcat(source,tmp); } if(parser.GetParam(arg,buffer,PROP_JUSTIFY) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = (GtkJustification) %s;", obj_name,JUSTIFY,arg); strcat(source,tmp); } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char obj_caption[256]; char arg[64]; CLASS* label; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; // get caption if(parser.GetParam(obj_caption,buffer,PROP_CAPTION) && strcmp(obj_caption,NIHIL_PROP)) ; else strcpy(obj_caption," "); VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { label = new CLASS(obj_name,owner,obj_caption); if(parser.GetParam(arg,buffer,PROP_CAPTIONWRAP) && strcmp(arg,NIHIL_PROP)) { label->CaptionWrap = !strcmp(arg,CHECK_TRUE); label->SetPropValue(CAPTIONWRAP,arg); } if(parser.GetParam(arg,buffer,PROP_JUSTIFY) && strcmp(arg,NIHIL_PROP)) { label->Justify = (GtkJustification) atoi(arg); label->SetPropValue(JUSTIFY,arg); } // pack widget to container return owner->PackToSelf(label, container, buffer, parser); } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ static char *aligns[] = { "l_justify","r_justify","c_justify",0 }; /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); // FIX ME: lang support VDKTable* table = new VDKTable(inspector,2,3,false); table->SetSize(219,-1); VDKLabel* label = new VDKLabel(inspector,_(wi_widget_prompts[0])); table->AddToCell(label,0,0); VDKString c = (char*) GetProp(CAPTION); caption = new VDKEntry(inspector,0, strcmp((char*) c,NIHIL_PROP) ? (char*) c : NULL); caption->SetSize(100,-1); table->AddToCell(caption,0,1); caption->Parent(this); SignalConnect(caption,"activate",&CLASS::OnSetCaption); wrap = new VDKCheckButton(inspector,_(wi_widget_prompts[1])); wrap->Checked = CaptionWrap; table->AddToCell(wrap,1,1); wrap->Parent(this); SignalConnect(wrap,"toggled",&CLASS::OnSetCaptionWrap); set = new VDKCustomButton(inspector,_("Set justify")); table->AddToCell(set,2,0); set->Parent(this); SignalConnect(set,"clicked",&CLASS::OnSetJustify); int r = atoi(GetProp(JUSTIFY)); align = new VDKCombo(inspector,NULL); align->SetSize(100,-1); StringList sl; int t = 0; for(;aligns[t];t++) sl.add(VDKString(aligns[t])); align->PopdownStrings = sl; align->SelectItem(r); table->AddToCell(align,2,1); bframe->Add(table,false,false,false); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnSetCaptionWrap(VDKObject*) { SetPropValue(CAPTIONWRAP, wrap->Checked ? CHECK_TRUE : CHECK_FALSE); CaptionWrap = wrap->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetJustify(VDKObject*) { int sel = align->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); int r = atoi(buff); SetPropValue(JUSTIFY,buff); Justify = (GtkJustification) r; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetCaption(VDKObject*) { if(strlen(caption->Text)>0) sprintf(buff,"%s",(char*) caption->Text); else sprintf(buff,"%s",NIHIL_PROP); SetPropValue(CAPTION,buff); Caption = caption->Text; inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_textwidget.cc0000644000000000000000000002171407272557516015246 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBTextWidget // put here vdk class name string #define VDK_CLASS "VDKTextView" // put here vdk class name #define VDK_ANCESTOR VDKTextView // put here here the widget will be named // (name+counter) #define VDK_WIDGET "text" extern char* wi_widget_prompts[]; static char buff[128]; // used to autogenerate default // labelbutton names and captions int CLASS::Counter = 0; /* label properties names */ char* vdktextwidget_props[] = { EDITABLE,0 }; /* text widget signal names && nicknames Default response method name will be made by: On. For instance if object name = and nickname = default response method name will be: */ char* vdktextwidget_signals[] = { SIGNAL_REALIZED,0 }; char* vdktextwidget_nicknames[] = { NICK_REALIZED,0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner): VDK_ANCESTOR(owner),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties list label button properties // names. (Others props are prepended by VDKBObject constructor) for(t=0; vdktextwidget_props[t]; t++) proplist.add(VDKBProperty(vdktextwidget_props[t])); // add to VDKBObject signal list signals for(t=0; vdktextwidget_signals[t]; t++) siglist.add(VDKBSignal(vdktextwidget_signals[t], this, vdktextwidget_nicknames[t])); SetPropValue(EDITABLE,CHECK_TRUE); SetPropValue(WORDWRAP,CHECK_FALSE); // connects events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s\"%s\";", PROP_EDITABLE,(char*) GetProp(EDITABLE)); fprintf(fp,"\n\t%s%s;", PROP_WORDWRAP,(char*) GetProp(WORDWRAP)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* text = NULL; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else text = new CLASS(buff,owner); // add widget to form return owner->AddToSelf(text,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char obj_editable[16]; char arg[64]; char tmp[256]; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; if(parser.GetParam(obj_editable,buffer,PROP_EDITABLE) && strcmp(obj_editable,NIHIL_PROP)) ; else strcpy(obj_editable,CHECK_TRUE); sprintf(tmp,"\n%s = new %s(this);", obj_name,VDK_CLASS); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[64]; CLASS* text = NULL; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { text = new CLASS(obj_name,owner); /* if(parser.GetParam(arg,buffer,PROP_WORDWRAP) && strcmp(arg,NIHIL_PROP)) { text->WordWrap = !strcmp(arg,CHECK_TRUE); text->SetPropValue(WORDWRAP,arg); } */ // pack widget to container return owner->PackToSelf(text, container, buffer, parser); } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); /* wrap = new VDKCheckButton(inspector,_("WordWrap")); bframe->Add(wrap); wrap->Checked = GetProp(WORDWRAP) == True; // this after (so no signal hang) wrap->Parent(this); SignalConnect(wrap,"toggled",&CLASS::OnSetWordWrap); */ editable = new VDKCheckButton(inspector,_(wi_widget_prompts[2])); bframe->Add(editable); editable->Checked = GetProp(EDITABLE) == True; // this after (so no signal hang) editable->Parent(this); SignalConnect(editable,"toggled",&CLASS::OnSetEditable); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ /* bool CLASS::OnSetWordWrap(VDKObject*) { SetPropValue(WORDWRAP, wrap->Checked ? CHECK_TRUE : CHECK_FALSE); WordWrap = wrap->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } */ /* */ bool CLASS::OnSetEditable(VDKObject*) { SetPropValue(EDITABLE, editable->Checked ? CHECK_TRUE : CHECK_FALSE); Editable = editable->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_timebar.cc0000644000000000000000000000336107311204055014454 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.7 * September 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #include #include DEFINE_SIGNAL_LIST(VDKBTimebar,VDKProgressBar); /* */ VDKBTimebar::VDKBTimebar(VDKForm* owner, double min, double max,double tick): VDKProgressBar(owner,min,max) { timer = new VDKTimer(owner,tick,false); timeElapsed = 0; } VDKBTimebar::~VDKBTimebar() { timer->Stop(); timer->Destroy(); } /* */ void VDKBTimebar::Setup(void) { SetSize(120,20); NormalBackground = VDKRgb(255,255,255); PrelightBackground = VDKRgb(70,130,180); timer->Parent(this); SignalConnect(timer,"timer_tick_signal",&VDKBTimebar::OnTimer,false); timer->Start(); } bool VDKBTimebar::OnTimer(VDKObject*) { timeElapsed++; Value = double(timeElapsed%60); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_toolbar.cc0000644000000000000000000007006207454062533014510 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include //#include #include #include #include #include #include #include #include #include #include #include #include #include "./pixmaps/rright.xpm" #include "./pixmaps/style.xpm" /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBToolbar // put here vdk class name string #define VDK_CLASS "VDKToolbar" // put here vdk class name #define VDK_ANCESTOR VDKToolbar // put here here the widget will be named // (name+counter) #define VDK_WIDGET "toolbar" //================================================================= extern char* wi_widget_prompts[]; static char buff[128]; static GtkWidget* new_pixmap_file (char *pixfile, GdkWindow *window, GdkColor *background); static void gtk_toolbar_remove (GtkContainer *container, GtkWidget *widget); int CLASS::Counter = 0; /* properties */ char* vdktoolbar_props[] = { TBORIENTATION, TBSTYLE, /* RELIEF, TBSPACING, */ GLYPH_BYDATA, 0 }; char* vdktoolbar_signals[] = { "clicked_signal", 0 }; char* vdktoolbar_nicknames[] = { "Clicked",0 }; DEFINE_EVENT_LIST(CLASS,VDKBEventContainer); DEFINE_SIGNAL_LIST(CLASS,VDKBEventContainer); /* */ bool CLASS:: DelBox(VDKObject* sender) { // destroy inner gtk+ placeholder widget gtk_widget_destroy(container); // call ancestor delete box VDKBEventContainer::DelBox(sender); // notify to inspector that object was deleted VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) prjman->objInspector->SetActive(NULL); } return true; } /* */ bool CLASS::SetBoxSize(VDKObject* sender) { VDKBGuiForm* ownerform = dynamic_cast(Owner()); if(ownerform) { ownerform->SetBoxSize(NULL); } return true; } /* */ bool CLASS::RemoveButton(VDKObject* sender) { if( (buttonlist.size() <= 0) || (ButtonSelected < 0) ) return true; else if(ButtonSelected >= 0) { gtk_toolbar_remove (GTK_CONTAINER(container), buttonlist[ButtonSelected].button); buttonlist.unlink(ButtonSelected); removebutton->Enabled = buttonlist.size() > 0 ; ButtonSelected = -1; VDKBGuiForm* mform = dynamic_cast(Owner()); if(mform) mform->Changed = true; } return true; } /* */ bool CLASS::AddButton(VDKObject* sender) { ToolButtonData tbdata; GtkWidget *pixmap = NULL; GtkWidget *button; VDKString Nihil = NIHIL_PROP; Vdkb_tooldialogForm* dlg = new Vdkb_tooldialogForm(Owner(), NULL, &(tbdata.pix), &(tbdata.tip), &(tbdata.text)); dlg->Setup(); dlg->ShowModal(); if(tbdata.pix.isNull()) return true; else if (tbdata.pix != Nihil) pixmap = new_pixmap_file ( (char*) tbdata.pix, Owner()->Window()->window, &Widget()->style->bg[GTK_STATE_NORMAL]); button = gtk_toolbar_append_item (GTK_TOOLBAR (container), (tbdata.text.isNull() || tbdata.text == Nihil) ? NULL: (char*) tbdata.text, NULL, NULL, pixmap, GTK_SIGNAL_FUNC(CLASS::OnButtonSignal), (gpointer) this); // add button to button list tbdata.button = button; buttonlist.add(tbdata); removebutton->Enabled = buttonlist.size() > 0 ; // downcast to owner form VDKBGuiForm* mform = dynamic_cast(Owner()); if(mform) mform->Changed = true; return true; } /* set button insensitive to indicate button selected inelegant, but nothing better for now */ void CLASS::OnButtonSignal(GtkWidget *wid, gpointer gp) { int t = 0; g_return_if_fail(wid != NULL); g_return_if_fail(gp != NULL); CLASS* toolbar = reinterpret_cast (gp); if(toolbar->ButtonSelected >= 0) gtk_widget_set_sensitive(toolbar-> buttonlist[toolbar->ButtonSelected].button,true); TBDListIterator li(toolbar->buttonlist); for(;li;li++,t++) if(wid == li.current().button) break; if(t < toolbar->buttonlist.size()) toolbar->ButtonSelected = t; else toolbar->ButtonSelected = -1; if(toolbar->ButtonSelected >= 0) gtk_widget_set_sensitive(toolbar-> buttonlist[toolbar->ButtonSelected].button,false); return; } //=========================================== /* */ CLASS::CLASS(char* name, VDKForm* owner): VDKBEventContainer(name,owner) { Counter++; VDKBObject::object = this; VDKBEventContainer::mode = mode; Init(); } /* */ CLASS::CLASS(char* name,VDKBEventContainer* outer): VDKBEventContainer(name,outer->Owner()) { VDKBObject::object = this; Counter++; outerbox = outer; Init(); } /* */ void CLASS::Init() { int t; for(t=0; vdktoolbar_props[t]; t++) proplist.add(VDKBProperty(vdktoolbar_props[t])); for(t=0; vdktoolbar_signals[t]; t++) siglist.add(VDKBSignal(vdktoolbar_signals[t], this, vdktoolbar_nicknames[t])); ButtonSelected = -1; AddBox(); // makes a pop menu popmenu = new VDKBContainerPopMenu(this); addbutton = new VDKMenuItem(popmenu,_("Add a toolbar button")); removebutton = new VDKMenuItem(popmenu,_("Remove selected button")); popmenu->Separator(); removebutton->Enabled = (buttonlist.size() > 0) && (ButtonSelected >= 0) ; delBox = new VDKMenuItem(popmenu,_("Remove toolbar")); setsize = new VDKMenuItem(popmenu,_(wi_widget_prompts[19])); SignalConnect(addbutton,"activate",&CLASS::AddButton); SignalConnect(removebutton,"activate",&CLASS::RemoveButton); SignalConnect(delBox,"activate",&CLASS::DelBox); SignalConnect(setsize,"activate",&CLASS::SetBoxSize); CONNECT_COMMON_EVENTS; /* assign this as parent so this can receive signals */ popmenu->Parent(this); popmenu->Setup(); /* better add it to owner, so will be surely destroyed even if never popped */ Owner()->AddItem(popmenu); } /* */ void CLASS::AddBox() { // by default horizontal and shows both icon and etxt container = gtk_toolbar_new(/*GTK_ORIENTATION_HORIZONTAL,GTK_TOOLBAR_BOTH*/); /* gtk_toolbar_set_space_size(GTK_TOOLBAR(container),2); gtk_toolbar_set_button_relief (GTK_TOOLBAR (container), GTK_RELIEF_NONE); */ gtk_widget_set_size_request(GTK_WIDGET(container),-1,30); gtk_container_add(GTK_CONTAINER(widget),container); gtk_widget_show(container); } /* extra args unused */ void CLASS::AddWidget(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { gtk_toolbar_append_widget(GTK_TOOLBAR(container),wid->Widget(),NULL,NULL); gtk_widget_show(wid->Widget()); VDKBEventContainer::Add(wid,l_justify,expand,fill,padding); } /* extra args used */ void CLASS::Add(VDKObject* wid, int justify, int expand, int fill , int padding, bool forceArgs) { AddWidget(wid); } /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container 3 - no active widget */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable frame counter // to ensure unicity int result = 0; for(sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); owner->ChildWithName(buff)!= (VDKObject*) NULL; CLASS::Counter++) sprintf(buff,"%s%d",VDK_WIDGET,CLASS::Counter); CLASS* box = new CLASS(buff,owner); if(owner->Active) { VDKBEventContainer* container = dynamic_cast(owner->Active); if(container) { if(ev && dynamic_cast(container)) { GdkEventButton* event = (GdkEventButton*) ev; sprintf(buff,"%d",int(event->x)); box->SetPropValue(JUSTIFY_INTERNAL,buff); sprintf(buff,"%d",int(event->y)); box->SetPropValue( EXPAND_INTERNAL,buff); box->SetSize(30,30); // others than justify and flag unuseful container->AddWidget(box,int(event->x), int(event->y), true,true,true); } else container->AddWidget(box); box->outerbox = container; } else if(! owner->Active->AddToParent(box,ev)) // target isn't a container result = 2; } else // no active widget result = 3; // 0 on success if(result) box->Destroy(); return result; } //////////////////////////////////////////////////////////////////// /* */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { int t,last = buttonlist.size(); VDKBEventContainer::WriteOnFrm(fp,parentobj); // fprintf(fp,"\n\t%s%s;", PROP_TBSPACING,(char*) GetProp(TBSPACING)); fprintf(fp,"\n\t%s%s;", PROP_TBORIENTATION, (char*) GetProp(TBORIENTATION)); fprintf(fp,"\n\t%s%s;", PROP_TBSTYLE, (char*) GetProp(TBSTYLE)); // fprintf(fp,"\n\t%s%s;", PROP_RELIEF,(char*) GetProp(RELIEF)); fprintf(fp,"\n\tButtons:%d;", last); if(last) { fprintf(fp,"\n\tPixmaps:\""); for(t = 0; t < last-1 ; t++) fprintf(fp,"%s,", (char*) buttonlist[t].pix.isNull() ? NIHIL_PROP : (char*) buttonlist[t].pix); fprintf(fp,"%s\";", (char*) buttonlist[last-1].pix.isNull() ? NIHIL_PROP: (char*) buttonlist[last-1].pix); fprintf(fp,"\n\tTips:\""); for(t = 0; t < last-1 ; t++) fprintf(fp,"%s,", (char*) buttonlist[t].tip.isNull() ? NIHIL_PROP : (char*) buttonlist[t].tip); fprintf(fp,"%s\";", (char*) buttonlist[last-1].tip.isNull() ? NIHIL_PROP: (char*) buttonlist[last-1].tip); fprintf(fp,"\n\tTexts:\""); for(t = 0; t < last-1 ; t++) fprintf(fp,"%s,", (char*) buttonlist[t].text.isNull() ? NIHIL_PROP : (char*) buttonlist[t].text); fprintf(fp,"%s\";", (char*) buttonlist[last-1].text.isNull() ? NIHIL_PROP : (char*) buttonlist[t].text); } fprintf(fp,"\n\t%s%s;", PROP_GLYPH_BYDATA, (char*) GetProp(GLYPH_BYDATA)); } char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char temp[256]; char bw[16]; char arg[128]; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return NULL; else source = new char[8192]; sprintf(temp,"\n%s = new %s(this);",obj_name,VDK_CLASS); strcpy(source,temp); // get size VDKPoint size = parser.Size(buffer); if(size.X() > 0 || size.Y() > 0) { sprintf(temp,"\n%s->SetSize(%d,%d);",obj_name,size.X(),size.Y()); strcat(source,temp); } if(strcmp(obj_parent,NIHIL_PROP)) sprintf(temp,"\n%s->Add(%s",obj_parent,obj_name); else sprintf(temp,"\nAdd(%s",obj_name); strcat(source,temp); // prepares arguments for add widget to container char justify[16],expand[16],fill[16],padding[16]; if(parser.GetParam(justify,buffer,PROP_JUSTIFY_INTERNAL) && parser.GetParam(expand,buffer,PROP_EXPAND_INTERNAL) && parser.GetParam(fill,buffer,PROP_FILL_INTERNAL) && parser.GetParam(padding,buffer,PROP_PADDING_INTERNAL)) { sprintf(temp,",%s,%s,%s,%s);", justify,expand,fill,padding); strcat(source,temp); } else { sprintf(temp,");"); strcat(source,temp); } if(parser.GetParam(bw,buffer,PROP_BORDERWIDTH) && strcmp(bw,NIHIL_PROP)) { sprintf(temp,"\n%s->BorderWidth(%s);",obj_name,bw); strcat(source,temp); } /* if(parser.GetParam(arg,buffer,PROP_TBSPACING) && strcmp(arg,NIHIL_PROP)) { sprintf(temp,"\n%s->Spacing = %s;",obj_name,arg); strcat(source,temp); } */ // other props if(parser.GetParam(arg,buffer,PROP_TBORIENTATION) && strcmp(arg,NIHIL_PROP)) { sprintf(temp,"\n%s->Orientation = (GtkOrientation) %s;",obj_name,arg); strcat(source,temp); } if(parser.GetParam(arg,buffer,PROP_TBSTYLE) && strcmp(arg,NIHIL_PROP)) { sprintf(temp,"\n%s->Style = (GtkToolbarStyle) %s;",obj_name,arg); strcat(source,temp); } /* if(parser.GetParam(arg,buffer,PROP_RELIEF) && strcmp(arg,NIHIL_PROP)) { sprintf(temp,"\n%s->Relief = (GtkReliefStyle) %s;",obj_name,arg); strcat(source,temp); } */ // create buttons CLASS::CreateButtons(buffer,parser,source,obj_name); return source; } /* */ void CLASS::CreateButtons(char* buffer, VDKBParser& parser, char* source, char* obj_name) { char bydata[16]; TBDList buttonlist; VDKString Nihil = NIHIL_PROP; int n = 0, t = 0 ; char tmp[512]; char arg[16],*local,*p; if(parser.GetParam(arg,buffer,"Buttons:")) n = atoi(arg); if(!n) return ; bool nls_support = parser.CheckNLSSupport(); *tmp = '\0'; *arg = '\0'; *bydata = '\0'; local = new char[4096]; // now in local there are a list of pixmaps if(!parser.GetParam(local,buffer,"Pixmaps:")) { delete[] local; return ; } p = strtok(local,","); while(p) { ToolButtonData tbdata; tbdata.pix = p; buttonlist.add(tbdata); p = strtok(NULL,","); } // for safe if( buttonlist.size() != n) return ; // now in local there are a list of tips if(!parser.GetParam(local,buffer,"Tips:")) { delete[] local; return; } t = 0; p = strtok(local,","); while(p && (t < buttonlist.size())) { buttonlist[t].tip = p; t++; p = strtok(NULL,","); } // now in local there are a list of tips if(!parser.GetParam(local,buffer,"Texts:")) { delete[] local; return; } t = 0; p = strtok(local,","); while(p && (t < buttonlist.size())) { buttonlist[t].text = p; t++; p = strtok(NULL,","); } delete[] local; if(parser.GetParam(bydata,buffer,PROP_GLYPH_BYDATA) && strcmp(bydata,NIHIL_PROP)) ; else *bydata = '\0'; // write code to add button TBDListIterator li(buttonlist); for(;li;li++) { ToolButtonData tbd = li.current(); if(!strcmp(bydata,CHECK_YES)) { int z = 0; char* local = new char[strlen((char*) tbd.pix)+1], *p = NULL; if(tbd.pix != Nihil) { strcpy(local,(char*) tbd.pix); sprintf(buff,"\n#include \"%s\"",local); // refuses to include twice same file p = get_shortfilename(local); if(!p) p = local; VDKString symbol(p); if(parser.decSymbols.find(symbol)) *tmp = '\0'; else { strcpy(tmp,buff); parser.decSymbols.add(symbol); } // changes . to _ into symbol name for(; p[z];z++) { if((p[z] == '.') || (p[z] == '-') ) p[z] = '_'; } } if(nls_support) sprintf(buff,"\n%s->AddButton(%s,%s%s%s,%s%s%s);", obj_name, tbd.pix == Nihil ? "(char**) NULL" : p, tbd.tip == Nihil ? "" : "_(\"", tbd.tip == Nihil ? "NULL" : (char*) tbd.tip, tbd.tip == Nihil ? "" : "\")", tbd.text == Nihil ? "" : "_(\"", tbd.text == Nihil ? "NULL" : (char*) tbd.text, tbd.text == Nihil ? "" : "\")"); else sprintf(buff,"\n%s->AddButton(%s,%s%s%s,%s%s%s);", obj_name, tbd.pix == Nihil ? "(char**) NULL" : p, tbd.tip == Nihil ? "" : "\"", tbd.tip == Nihil ? "NULL" : (char*) tbd.tip, tbd.tip == Nihil ? "" : "\"", tbd.text == Nihil ? "" : "\"", tbd.text == Nihil ? "NULL" : (char*) tbd.text, tbd.text == Nihil ? "" : "\""); strcat(tmp,buff); *buff = '\0'; delete [] local; } else { if(nls_support) sprintf(tmp,"\n%s->AddButton(%s%s%s,%s%s%s,%s%s%s);", obj_name, tbd.pix == Nihil ? "" : "\"", tbd.pix == Nihil ? "(char*) NULL" : (char*) tbd.pix, tbd.pix == Nihil ? "" : "\"", tbd.tip == Nihil ? "" : "_(\"", tbd.tip == Nihil ? "NULL" : (char*) tbd.tip, tbd.tip == Nihil ? "" : "\")", tbd.text == Nihil ? "" : "_(\"", tbd.text == Nihil ? "NULL" : (char*) tbd.text, tbd.text == Nihil ? "" : "\")"); else sprintf(tmp,"\n%s->AddButton(%s%s%s,%s%s%s,%s%s%s);", obj_name, tbd.pix == Nihil ? "" : "\"", tbd.pix == Nihil ? "(char*) NULL" : (char*) tbd.pix, tbd.pix == Nihil ? "" : "\"", tbd.tip == Nihil ? "" : "\"", tbd.tip == Nihil ? "NULL" : (char*) tbd.tip, tbd.tip == Nihil ? "" : "\"", tbd.text == Nihil ? "" : "\"", tbd.text == Nihil ? "NULL" : (char*) tbd.text, tbd.text == Nihil ? "" : "\""); } strcat(source,tmp); *tmp = '\0'; } } /* */ bool CLASS::LoadButtons(char* buffer,VDKBParser& parser) { int n = 0, t = 0 ; char arg[16],*local,*p; if(parser.GetParam(arg,buffer,"Buttons:")) n = atoi(arg); if(!n) return false; local = new char[4096]; // now in local there are a list of pixmaps if(!parser.GetParam(local,buffer,"Pixmaps:")) { delete[] local; return false; } p = strtok(local,","); while(p) { ToolButtonData tbdata; tbdata.pix = p; buttonlist.add(tbdata); p = strtok(NULL,","); } // for safe if( buttonlist.size() != n) return false; // now in local there are a list of tips if(!parser.GetParam(local,buffer,"Tips:")) { delete[] local; return false; } t = 0; p = strtok(local,","); while(p && (t < buttonlist.size())) { buttonlist[t].tip = p; t++; p = strtok(NULL,","); } // now in local there are a list of tips if(!parser.GetParam(local,buffer,"Texts:")) { delete[] local; return false; } t = 0; p = strtok(local,","); while(p && (t < buttonlist.size())) { buttonlist[t].text = p; t++; p = strtok(NULL,","); } delete[] local; // add buttons to toolbar VDKString Nihil = NIHIL_PROP; for(t=0; t< buttonlist.size();t++) { GtkWidget *pixmap = NULL; if(buttonlist[t].pix != Nihil) pixmap = new_pixmap_file ( (char*) buttonlist[t].pix, Owner()->Window()->window, &Widget()->style->bg[GTK_STATE_NORMAL]); GtkWidget * button = gtk_toolbar_append_item (GTK_TOOLBAR (container), buttonlist[t].text == Nihil ? NULL: (char*) buttonlist[t].text, buttonlist[t].tip == Nihil ? NULL: (char*) buttonlist[t].tip, NULL, pixmap, GTK_SIGNAL_FUNC(CLASS::OnButtonSignal), (gpointer) this); buttonlist[t].button = button; } removebutton->Enabled = buttonlist.size() > 0 ; return true; } /* */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char bydata[16]; CLASS* box; // get name, mode and parent if ( !parser.GetParam(obj_name,buffer,"this:") || !parser.GetParam(obj_parent,buffer,"parent:") ) return false; // get mode and size VDKPoint size = parser.Size(buffer); // get packing args int justification = l_justify; int expand=0,fill=0,padding=0; int bw; // border width // int space; // spacing char arg[32]; if(parser.GetParam(arg,buffer,PROP_JUSTIFY_INTERNAL)) justification = atoi(arg); if(parser.GetParam(arg,buffer,PROP_EXPAND_INTERNAL)) expand = atoi(arg); if(parser.GetParam(arg,buffer,PROP_FILL_INTERNAL)) fill = atoi(arg); if(parser.GetParam(arg,buffer,PROP_PADDING_INTERNAL)) padding= atoi(arg); if(parser.GetParam(arg,buffer,PROP_BORDERWIDTH) && strcmp(arg,NIHIL_PROP)) bw = atoi(arg); else bw = -1; /* if(parser.GetParam(arg,buffer,PROP_TBSPACING) && strcmp(arg,NIHIL_PROP)) space = atoi(arg); else space = -1; */ // no parent, widget will be added to owner form innerbox if(!strcmp(obj_parent,NIHIL_PROP)) { box = new CLASS(obj_name,owner->InnerBox()); /* if(space>=0) { box->SetPropValue(TBSPACING,arg); // gtk_toolbar_set_space_size(GTK_TOOLBAR(box->Container()), space); } */ box->LoadButtons(buffer, parser); owner->AddWidget(box,justification,expand,fill,padding); } // get parent container address else { VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { box = new CLASS(obj_name,container); /* if(space>=0) { box->SetPropValue(TBSPACING,arg); // gtk_toolbar_set_space_size(GTK_TOOLBAR(box->Container()), // space); } */ box->LoadButtons(buffer, parser); container->AddWidget(box,justification,expand,fill,padding,true); box->outerbox = container; } else // FIX ME: user warning return false; } // others props if(parser.GetParam(arg,buffer,PROP_TBORIENTATION) && strcmp(arg,NIHIL_PROP)) { gtk_toolbar_set_orientation(GTK_TOOLBAR(box->Container()), (GtkOrientation) atoi(arg)); box->SetPropValue(TBORIENTATION,arg); } if(parser.GetParam(arg,buffer,PROP_TBSTYLE) && strcmp(arg,NIHIL_PROP)) { gtk_toolbar_set_style(GTK_TOOLBAR(box->Container()), (GtkToolbarStyle) atoi(arg)); box->SetPropValue(TBSTYLE,arg); } /* if(parser.GetParam(arg,buffer,PROP_RELIEF) && strcmp(arg,NIHIL_PROP)) { gtk_toolbar_set_button_relief(GTK_TOOLBAR(box->Container()), (GtkReliefStyle) atoi(arg)); box->SetPropValue(RELIEF,arg); } */ if(parser.GetParam(bydata,buffer,PROP_GLYPH_BYDATA) && strcmp(bydata,NIHIL_PROP)) box->SetPropValue(GLYPH_BYDATA,bydata); // call ancestor to set common properties VDKBObject::CreateWidget(box,buffer,parser); if(size.X() > 0 || size.Y() > 0) box->ObjectFromVDK()->SetSize(size.X(),size.Y()); if(bw >= 0) { char local[16]; box->BorderWidth(bw); sprintf(local,"%d",bw); box->SetPropValue(BORDERWIDTH,local); } return true; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* This is called by object inspector when a widget is selected by user, thus to allow widget to set his own property controls. */ static char *tb_orientation[] = { "horizontal","vertical",0 }; static char* tb_style[] = { "icons","text","both",0}; /* static char *reliefs[] = { "normal","half","none",0 }; */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKBox* tframe = dynamic_cast(VDKBEventContainer::ExtraWidget(isp)); if(!tframe) return NULL; VDKTable *table = new VDKTable(inspector,2,2); VDKBox* hbox = new VDKBox(inspector,h_box); VDKCustomButton* setorientation = new VDKCustomButton(inspector,(const char**) rright_xpm,NULL); setorientation->SetTip(_(wi_widget_prompts[49])); setorientation->Relief = (GtkReliefStyle) 2; hbox->Add(setorientation,l_justify,false,false,0); setorientation->Parent(this); SignalConnect(setorientation,"clicked",&CLASS::OnSetOrientation); int r = atoi(GetProp(TBORIENTATION)); orientation = new VDKCombo(inspector,NULL); orientation->SetSize(90,-1); StringList sl; int t = 0; for(;tb_orientation[t];t++) sl.add(VDKString(tb_orientation[t])); orientation->PopdownStrings = sl; orientation->SelectItem(r); hbox->Add(orientation,l_justify,false,false,0); table->AddToCell(hbox,0,0); VDKBox* hbox1 = new VDKBox(inspector,h_box); VDKCustomButton* setstyle = new VDKCustomButton(inspector,(const char**) style_xpm,NULL); setstyle->SetTip(_("Set style")); setstyle->Relief = (GtkReliefStyle) 2; hbox1->Add(setstyle,l_justify,false,false,0); setstyle->Parent(this); SignalConnect(setstyle,"clicked",&CLASS::OnSetStyle); r = atoi(GetProp(TBSTYLE)); style = new VDKCombo(inspector,NULL); style->SetSize(60,-1); StringList st; t = 0; for(;tb_style[t];t++) st.add(VDKString(tb_style[t])); style->PopdownStrings = st; style->SelectItem(r); hbox1->Add(style,l_justify,false,false,0); table->AddToCell(hbox1,0,1); VDKString s = GetProp(GLYPH_BYDATA); bydata = new VDKCheckButton(inspector,_(wi_widget_prompts[58])); bydata->SetTip(_(wi_widget_prompts[59])); table->AddToCell(bydata,1,0); bydata->Checked = !strcmp((char*) s, CHECK_YES); bydata->Parent(this); SignalConnect(bydata,"toggled",&CLASS::OnToggleBydata); tframe->Add(table,l_justify,false,false,false); return tframe; } /* */ bool CLASS::OnToggleBydata(VDKObject*) { SetPropValue(GLYPH_BYDATA, bydata->Checked ? CHECK_YES : CHECK_NO); inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetOrientation(VDKObject*) { int sel = orientation->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); int orient = atoi(buff); SetPropValue(TBORIENTATION,buff); gtk_toolbar_set_orientation(GTK_TOOLBAR(container), (GtkOrientation) orient); inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetStyle(VDKObject*) { int sel = style->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); int st = atoi(buff); SetPropValue(TBSTYLE,buff); gtk_toolbar_set_style(GTK_TOOLBAR(container), (GtkToolbarStyle) st); inspector->FormNeedToBeChanged(); return true; } /* bool CLASS::OnSetRelief(VDKObject*) { int sel = relief->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); int r = atoi(buff); SetPropValue("Relief",buff); // gtk_toolbar_set_button_relief(GTK_TOOLBAR(container), // (GtkReliefStyle) r); inspector->FormNeedToBeChanged(); return true; } */ /* bool CLASS::OnSetSpacing(VDKObject*) { sprintf(buff,"%d",(int) spacing->ValueAsInt); SetPropValue(TBSPACING,buff); // gtk_toolbar_set_space_size(GTK_TOOLBAR(container), // (int) spacing->ValueAsInt); inspector->FormNeedToBeChanged(); return true; } */ /* */ GtkWidget* new_pixmap_file (char *pixfile, GdkWindow *window, GdkColor *background) { GtkWidget *wpixmap; GdkPixmap *pixmap; GdkBitmap *mask; pixmap = gdk_pixmap_create_from_xpm (window, &mask, background, pixfile); wpixmap = gtk_pixmap_new (pixmap, mask); return wpixmap; } /* */ static void gtk_toolbar_remove (GtkContainer *container, GtkWidget *widget) { GtkToolbar *toolbar; GList *children; GtkToolbarChild *child; g_return_if_fail (container != NULL); g_return_if_fail (GTK_IS_TOOLBAR (container)); g_return_if_fail (widget != NULL); toolbar = GTK_TOOLBAR (container); for (children = toolbar->children; children; children = children->next) { child = (GtkToolbarChild *) children->data; if ((child->type != GTK_TOOLBAR_CHILD_SPACE) && (child->widget == widget)) { gboolean was_visible; was_visible = GTK_WIDGET_VISIBLE (widget); gtk_widget_unparent (widget); toolbar->children = g_list_remove_link (toolbar->children, children); g_free (child); g_list_free (children); toolbar->num_children--; if (was_visible && GTK_WIDGET_VISIBLE (container)) gtk_widget_queue_resize (GTK_WIDGET (container)); break; } } } vdkbuilder2-2.4.0/vdkbuilder/vdkb_tooldialog.cc0000644000000000000000000000604007252426324015174 /* vdkb_tooldialog Form implementation file:vdkb_tooldialog.cc */ #include #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include static char buff[256]; // Vdkb_tooldialog FORM CLASS /* form constructor */ Vdkb_tooldialogForm::Vdkb_tooldialogForm(VDKForm* owner, char* title, VDKString* pix, VDKString* tip, VDKString* text): VDKForm(owner,title), buttonpix(pix), buttontip(tip), buttontext(text) { } /* form destructor */ Vdkb_tooldialogForm::~Vdkb_tooldialogForm() { } /* form setup */ void Vdkb_tooldialogForm::Setup(void) { GUISetup(); // vdkb gui setup // put your code below here gtk_window_position(GTK_WINDOW(Window()),GTK_WIN_POS_MOUSE); } // signal response method bool Vdkb_tooldialogForm::OnbrowseClick(VDKObject* sender) { FileStringArray selections; VDKXpmBrowser *child = new VDKXpmBrowser(Owner(),&selections, _(file_dialog_prompts[0])); child->ShowModal(); if(selections.size() > 0) { pixfile->Text = (char*) selections[0]; copytodir->Enabled = true; } return true; } // signal response method bool Vdkb_tooldialogForm::OnCopyToDir(VDKObject* sender) { VDKString s = (char*) pixfile->Text; VDKString path; VDKBProject* project; VDKBProjectManager* prjman = dynamic_cast(Owner()->Owner()); if(prjman) { project = prjman->Project(); if(!project) return true; path = project->Path; sprintf(buff,"cp %s %s/",(char*) s, (char*) path); system(buff); char* p = get_shortfilename((char*) s); if(p) { VDKString short_name = p; pixfile->Text = (char*) short_name; copytodir->Enabled = false; } } return true; } // signal response method bool Vdkb_tooldialogForm::OnpixfileActivate(VDKObject* sender) { return true; } // signal response method bool Vdkb_tooldialogForm::OntipActivate(VDKObject* sender) { return true; } // signal response method bool Vdkb_tooldialogForm::OntextActivate(VDKObject* sender) { return true; } // signal response method bool Vdkb_tooldialogForm::OnokClick(VDKObject* sender) { if(strlen(pixfile->Text) > 0) *buttonpix = (char*) pixfile->Text; else *buttonpix = NIHIL_PROP; if(strlen(tip->Text) > 0) *buttontip = (char*) tip->Text; else *buttontip = NIHIL_PROP; if(strlen(text->Text) > 0) *buttontext = (char*) text->Text; else *buttontext = NIHIL_PROP; Close(); return true; } // signal response method bool Vdkb_tooldialogForm::OncancelClick(VDKObject* sender) { *buttonpix = ""; Close(); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_tooldialog_gui.cc0000644000000000000000000000476407257645350016062 #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include extern char* wi_widget_prompts[]; DEFINE_SIGNAL_MAP(Vdkb_tooldialogForm,VDKForm) ON_SIGNAL(browse,clicked_signal,OnbrowseClick), ON_SIGNAL(pixfile,activate_signal,OnpixfileActivate), ON_SIGNAL(tip,activate_signal,OntipActivate), ON_SIGNAL(text,activate_signal,OntextActivate), ON_SIGNAL(ok,clicked_signal,OnokClick), ON_SIGNAL(cancel,clicked_signal,OncancelClick), ON_SIGNAL(copytodir,clicked_signal,OnCopyToDir) END_SIGNAL_MAP /* main form setup */ void Vdkb_tooldialogForm::GUISetup(void) { SetSize(298,100); Title = _("Adding a toolbar button"); Hbox2 = new VDKBox(this,h_box); Add(Hbox2,l_justify,true,true,true); Hbox2->BorderWidth(0); Label0 = new VDKLabel(this,_("Pixmap file: ")); Label0->SetSize(66,25); Label0->Justify = (GtkJustification) 0; Hbox2->Add(Label0,l_justify,false,false,true); pixfile = new VDKEntry(this,0); Hbox2->Add(pixfile,l_justify,false,false,true); browse = new VDKCustomButton(this,_("Browse...")); browse->SetSize(66,25); browse->Relief = (GtkReliefStyle) 0; Hbox2->Add(browse,l_justify,false,false,true); Hbox4 = new VDKBox(this,h_box); Add(Hbox4,l_justify,true,true,true); Hbox4->BorderWidth(0); Label1 = new VDKLabel(this,_("Tip: ")); Label1->SetSize(66,23); Label1->Justify = (GtkJustification) 0; Hbox4->Add(Label1,l_justify,false,false,true); tip = new VDKEntry(this,0); tip->SetSize(225,23); Hbox4->Add(tip,l_justify,false,false,true); Hbox8 = new VDKBox(this,h_box); Add(Hbox8,l_justify,true,true,true); Hbox8->BorderWidth(0); Label2 = new VDKLabel(this,_("Text:")); Label2->SetSize(66,22); Hbox8->Add(Label2,l_justify,false,false,true); text = new VDKEntry(this,0); text->SetSize(225,22); Hbox8->Add(text,l_justify,false,false,true); Hbox11 = new VDKBox(this,h_box); Add(Hbox11,l_justify,true,true,true); copytodir = new VDKCustomButton(this,_(wi_widget_prompts[8])); copytodir->SetTip(_(wi_widget_prompts[9])); Hbox11->Add(copytodir,l_justify,true,true,true); copytodir->Enabled = false; ok = new VDKCustomButton(this,_("Ok")); Hbox11->Add(ok,l_justify,true,true,true); cancel = new VDKCustomButton(this,_("Cancel")); Hbox11->Add(cancel,l_justify,true,true,true); } vdkbuilder2-2.4.0/vdkbuilder/vdkb_unit.cc0000644000000000000000000000636507252426327014033 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * November 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include static char buff[512]; ////////////////////////// CLASS VDKBUNIT /* try to understand the unit type based on file extension. (i know isn't an elegant way, but till now i can't do better) */ char *ext_types[] = { NULL,"o","a","prj","c","form",NULL}; VDKBUnit::VDKBUnit(char* name, int status): Status("Status",this,status), name(name) { int t; ext_types[0] = (char*) VDKBuilder::ideDefaults.unit.cc_ext; ext_types[3] = (char*) VDKBuilder::ideDefaults.project.prj_ext; char* ext = get_extension(name); if(ext) { char* p = ext+1; for(t=0; ext_types[t];t++) if(!strcmp(p,ext_types[t])) break; if(ext_types[t]) type = t; else type = unknow_type; *ext = '\0'; VDKBUnit::name = name; } else type = unknow_type; } /* make an unit if you already know unit type */ VDKBUnit::VDKBUnit(char* name, int type, int status): Status("Status",this,status), name(name), type(type) { } /* */ VDKBUnit::~VDKBUnit() { } /* */ char* VDKBUnit::ShortName() { char* p = new char [strlen((char*) name)+1 ]; strcpy(p, (char*) name); return get_shortfilename(p); } // char* VDKBUnit::Name(char* name) { if(name) VDKBUnit::name = name; return (char*) VDKBUnit::name; } // char* VDKBUnit::Header() { char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; sprintf(buff,"%s.%s",(char*) name,h_ext); return buff; } // char* VDKBUnit::Gui() { sprintf(buff,"%s.%s",(char*) name,FORM_EXT); return buff; } /* */ char* VDKBUnit::GuiSource() { char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; sprintf(buff,"%s_gui.%s",(char*) name,cc_ext); return buff; } // // char* VDKBUnit::Dfm() { sprintf(buff,"%s.%s",(char*) name,FORM_EXT); return buff; } // char* VDKBUnit::DfmHeader() { char* h_ext = (char*) VDKBuilder::ideDefaults.unit.h_ext; sprintf(buff,"%s_gui.%s",(char*) name,h_ext); return buff; } // char* VDKBUnit::Source() { char* cc_ext = (char*) VDKBuilder::ideDefaults.unit.cc_ext; char* ext = NULL; if((type == source_unit) || (type == project_unit)) ext = cc_ext; else if (type == c_source_unit) ext = "c"; sprintf(buff,"%s.%s",(char*) name,ext); return buff; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_utils.cc0000644000000000000000000000677307462100142014202 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.0 * December 1998 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #include #include /* owner should delete returned address. (if not NULL) */ char* get_path(char* name) { int t; char *s = new char[strlen(name)+1], *p; strcpy(s,name); t = strlen(s)-1; p = &s[t]; for(; t >= 0 && *p != '/'; p--,t--) ; if(t >= 0) { s[t] = '\0'; return s; } else { delete[] s; return NULL; } } /* */ char* get_shortfilename(char* s) { int t = strlen(s)-1; char* p = &s[t]; for(; (s != p) && (*p != '/'); p--) ; return s != p ? ++p : static_cast(0); } char* get_extension(char* s) { int t = strlen(s)-1; char* p = &s[t]; for(; (s != p) && (*p != '.') && (*p != '/'); p--) ; return ( s!= p) && (*p != '/') ? p : static_cast(0); } /* */ void LoadSection(char* lines,char ** section, int n) { int t = 0; char *p = strtok (lines, "$"); if(p) { section[t] = new char[strlen(p)+1]; strcpy(section[t],p); } while ( (p = strtok (NULL, "$")) ) { if(t < n ) { t++; section[t] = new char[strlen(p)+1]; strcpy(section[t],p); } else break; } section[++t] = NULL; delete[] lines; } /* ExtractWord() estrae una parola dalla stringa compresa fra le parole chiave e e la mette in . e possono anche essere NULL ("") ma devono essere diverse */ char* ExtractWord( char* src, char* tgt, char* key1, char* key2) { char* p,*beg,*end; // rifiuta src vuote if(! src || !*src ) return (char*) 0; // trova inizio key1 se null inizio stringa beg = *key1 ? strstr(src,key1) : src; if(beg) src = beg; // trova key2 (se nullo va a fine stringa) end = *key2 ? strstr(src+1,key2) : beg+strlen(src); // controlla word isolata if(! beg || ! end) return (char*) 0; // avanza fino alla fine di key1 beg+= strlen(key1); // carica tgt p = tgt; while( beg < end && beg) *p++ = *beg++; *p = '\0'; return tgt; } /* get a portion of definition file, between section_begin key word and next section_end (excluded). Return a buffer pointer (user should destroy it). */ char * ExtractSection (char *buffer, char *section_begin, char* section_end) { char *end, *begin = buffer, *p; if (!buffer) return buffer; else if (!(begin = strstr (buffer, section_begin))) return (char *) 0; else begin += strlen (section_begin); if (!(end = strstr (begin, section_end))) return (char *) 0; else p = new char[end - begin + 2]; strncpy (p, begin, end - begin); p[end - begin] = '\0'; return p; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_widclip.cc0000644000000000000000000002037310022114666014467 /* * =========================== * VDK Builder * Version 1.0.3 * Revision: * November 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include /* into vdkb_design.cc given a class name returns class id */ static char buff[256]; extern int WidgetClassId(char* class_name); extern int MakeWidget(VDKBGuiForm* owner, int action_target, GdkEvent* ev); /* */ /* */ // in vdkb_parser.cc extern bool CreateWidget(VDKBGuiForm* owner, char* classname, char* buffer,VDKBParser& parser ); void VDKBWidgetClipboard::CopyWidget(VDKObject* source) { char* file = "$temp$.tmp"; VDKBObject* vdkbsource = dynamic_cast(source); // gets gui object owner (gui form) VDKBGuiForm* ownerform = dynamic_cast(source->Owner()); // gets source widget container VDKBEventContainer* container = dynamic_cast(source->Parent()); // make a temp file FILE* fp = fopen(file,"w+"); // some pre-conditions checks g_return_if_fail (vdkbsource != NULL); g_return_if_fail (ownerform != NULL); g_return_if_fail (container != NULL); g_return_if_fail (fp != NULL); // writes widget info into .frm // does not copy signal connections however vdkbsource->WriteOnFrm(fp,container); vdkbsource->WriteOnFrmEnd(fp); // container deep copying not yet implemented // VDKBEventContainer* box; // if( (box = dynamic_cast(vdkbsource)) ) // ownerform->RecursiveWriteBoxesOnFrm(vdkbsource,box->boxlist,fp); fclose(fp); // get a parser on that file VDKBParser parser(file); char arg[64]; char* object; char obj_name[128]; char obj_type[64]; char* p = parser.Buffer(); // scans .frm to reconstruct the widget copy while( (p = strstr(p,"[object]")) ) { sprintf(arg,"[object]{"); object = ExtractSection(p,arg,"}"); if(object) { if(parser.GetObjectClass(object,obj_type) && parser.GetObjectName(object,obj_name) ) // using global scope resolution operator ::CreateWidget(ownerform,obj_type,p,parser); p+=strlen(object); delete[] object; } } // retrieves new widget address // getting it from source parent child list // (it was added by CreateWidget) VDKObject *target = container->boxlist[container->boxlist.size()-1]; // solve here the problem of widget name clush int counter = 0; const int NAMESIZE = 127; char nameclush[NAMESIZE+1]; VDKBObject* vdkbtarget = dynamic_cast(target); strcpy(nameclush,vdkbtarget->Name()); while((ownerform->ChildWithName(nameclush) || ChildWithName(nameclush)) && (strlen(nameclush) < (unsigned int) NAMESIZE) ) { sprintf(buff,"%d",counter); nameclush[strlen(nameclush)-1] = '\0'; strcat(nameclush,buff); counter++; } vdkbtarget->Name(nameclush); // cut new widget and put it onto clipboard stack top CutWidget(target); // delete temp file // call with global scope resolution to avoid // conflict with value list unlink(). ::unlink(file); } /* */ VDKObject* VDKBWidgetClipboard::ChildWithName(char* name) { VDKBWidgetClipboardIterator li(*this); VDKString thisname = name; VDKObject *found = (VDKObject*) NULL; for(;li;li++) { VDKBObject* vdkobj = li.current().object; if(vdkobj && (vdkobj->Name() == thisname) ) { found = vdkobj->ObjectFromVDK(); if(found) break; } } return found; } /* copy a container and all contained widgets */ void VDKBWidgetClipboard::DeepCopyWidget(VDKObject* obj) { // to be implemented } void VDKBWidgetClipboard::RecursiveDeepCopyWidget(VDKObject* obj) { // to be implemented } /* */ void VDKBWidgetClipboard::CutWidget(VDKObject* cutted) { VDKBGuiForm* ownerform = dynamic_cast(cutted->Owner()); if(cutted->Parent() == ownerform->InnerBox()) { if( ownerform->Application()-> VDKMessageBox(APPNAME, _("Uhmmm.., cutting the outermost container you\n\ won't be able to recover it easily. Confirm ?"), VDK_ICONQUESTION|VDK_YESNO, _(user_messages[user_ok]), _(user_messages[user_no]), 9000 ) == VDK_IDNO) return; } // makes a new clipboard item VDKBWidgetClipboardItem clipboardItem ( dynamic_cast(cutted), dynamic_cast(cutted->Parent()), cutted->Widget() ); clipboardItem.parent = clipboardItem.widget->parent; if(clipboardItem.object && clipboardItem.container ) { if(GTK_IS_CONTAINER(clipboardItem.parent)) { // remove from gtk+ // referencing it or will be destroyed by gtk+ // (will be unreferenced again on pasting) gtk_widget_ref (clipboardItem.widget); gtk_container_remove ( GTK_CONTAINER(clipboardItem.parent), clipboardItem.widget); // remove from vdk owner // this is not really necessary since // will be added again to the same form if(ownerform) { ownerform->Items().remove(cutted); // remove from vdkbuilder gui clipboardItem.container-> boxlist.remove(cutted); // notify to inspector that object is to be deleted if(ownerform->Active == clipboardItem.object) ownerform->Active = NULL; ownerform->Changed = true; VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) { // disable WI prjman->objInspector->SetActive(NULL); // reload WI prjman->objInspector->LoadTree(ownerform); } // add to clipboard (used as stack) push(clipboardItem); } } } } /* */ void VDKBWidgetClipboard::PasteWidget(VDKObject* pasteWidget, int ndx, bool reset_wi) { if(size() > ndx) { VDKBGuiForm* ownerform = dynamic_cast(pasteWidget->Owner()); if(!ownerform) return; /* pasting across forms isn't allowed */ else if(ownerform != (*WidgetClipboard)[ndx].object->ObjectFromVDK()->Owner()) { ownerform->Application()-> VDKMessageBox(APPNAME, _("Pasting across forms isn't allowed"), VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 3000 ); return; } VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(ownerform->Active) { // decide what add to owner, a widget or a // container VDKBEventContainer* container = dynamic_cast((*this)[ndx].object); if(container) ownerform->AddContainerToSelf(container,NULL); else ownerform->AddToSelf((*this)[ndx].object,NULL); if(reset_wi && prjman && prjman->objInspector) { // disable WI prjman->objInspector->SetActive(NULL); // reload WI prjman->objInspector->LoadTree(ownerform); } if(reset_wi) ownerform->Active = NULL; ownerform->Changed = true; gtk_widget_unref ((*this)[ndx].widget); // * WARNING * this is potential inconsistency // since cutting an widget and pasting it // to a bin container could make the widget lost. unlink(ndx); } } } vdkbuilder2-2.4.0/vdkbuilder/vdkb_widpopmenu.cc0000644000000000000000000003245407453000114015222 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include "./pixmaps/trash.xpm" #include "./pixmaps/cut16.xpm" #include "./pixmaps/copy16.xpm" #include "./pixmaps/paste16.xpm" #include "./pixmaps/paste_others16.xpm" #include "./pixmaps/parent.xpm" extern char* wi_widget_prompts[]; static char buff[256]; extern VDKBWidgetClipboard* WidgetClipboard; DEFINE_SIGNAL_LIST(VDKBWidgetPopMenu,VDKMenu); /* */ bool VDKBWidgetPopMenu::MakeInspector(VDKObject*) { VDKBObject* vdkobj = dynamic_cast(parent_widget); if(vdkobj) vdkobj->PopObjectBrowser(); return true; } /* */ bool VDKBWidgetPopMenu::SelectParentContainer(VDKObject*) { VDKBEventContainer* container = dynamic_cast(parent_widget->Parent()); if(container) { VDKBGuiForm* ownerform = dynamic_cast(parent_widget->Owner()); if(ownerform) { ownerform->Active->ClearMark(); ownerform->Active = container; ownerform->Active->Mark(); VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) prjman->objInspector->SetActive(container); } } return true; } /* */ bool VDKBWidgetPopMenu::DelWidget(VDKObject*) { VDKBObject* parent; VDKBEventContainer* container = dynamic_cast(parent_widget->Parent()); if(container) { VDKBGuiForm* ownerform = dynamic_cast(parent_widget->Owner()); if(ownerform) { parent = dynamic_cast(parent_widget); if(ownerform->Active == parent) ownerform->Active = NULL; ownerform->Changed = true; // notify to inspector that object is to be deleted // so inspector will be disabled // and (eventually) signal disconnected. VDKBProjectManager* prjman = dynamic_cast(ownerform->Owner()); if(prjman && prjman->objInspector) { ownerform->DisconnectWidget(parent); prjman->objInspector->SetActive(NULL); } // removes it from gui widget list container->boxlist.remove(parent_widget); // removes it from his container container->RemoveObject(parent_widget); if(prjman && prjman->objInspector) prjman->objInspector->LoadTree(ownerform); } } return true; } /* */ bool VDKBWidgetPopMenu::SetWidgetSize(VDKObject*) { char buff[128]; VDKBGuiForm* ownerform = dynamic_cast(parent_widget->Owner()); if(ownerform && ownerform->Active) { sprintf(buff,"Setting %s size", (char*) ownerform->Active->Name()); VDKBPropSizeDialog *dlg = new VDKBPropSizeDialog(ownerform, ownerform->Active, buff); dlg->Setup(); dlg->ShowModal(); ownerform->Changed = true; } return true; } /* */ bool VDKBWidgetPopMenu::Cut(VDKObject*) { /* plm patch WidgetClipboard->CutWidget(parent_widget); return true; */ GtkWidget *widget = gtk_grab_get_current(); if (widget) gtk_grab_remove(widget); WidgetClipboard->CutWidget(parent_widget); return true; } /* */ bool VDKBWidgetPopMenu::Copy(VDKObject*) { WidgetClipboard->CopyWidget(parent_widget); return true; } /* */ bool VDKBWidgetPopMenu::Paste(VDKObject*) { // paste stack top widget WidgetClipboard->PasteWidget(parent_widget,0); return true; } /* paste others widgets on stack. An empty array is passed to dialog, it returns the array filled with widget to be pasted, or an empty array id user press cancel button. */ bool VDKBWidgetPopMenu::PasteOthers(VDKObject*) { VDKBWidgetClipboardArray cliparray; VDKBWidgetClipboardDialog* child = new VDKBWidgetClipboardDialog(parent_widget->Owner(), &cliparray, NULL); child->Setup(); child->ShowModal(GTK_WIN_POS_MOUSE); if(cliparray.size() > 0) { if(cliparray.size() == 1) { VDKBWidgetClipboardItem item = cliparray[0]; // finds widget ordinal position // into clipboard int ndx = WidgetClipboard->at(item); if(ndx >= 0) // paste widget resetting WI WidgetClipboard->PasteWidget(parent_widget,ndx, true); } else { int z = 0; for(; z < cliparray.size(); z++) { VDKBWidgetClipboardItem item = cliparray[z]; int ndx = WidgetClipboard->at(item); // finds widget ordinal position // into clipboard if(ndx >= 0) // reset WI only on last item WidgetClipboard->PasteWidget(parent_widget, ndx, z < (cliparray.size()-1) ? false: true); } } } return true; } /* Overridden popmenu, enable/disable pasting widget */ void VDKBWidgetPopMenu::Popup(guint button,guint32 activate_time) { VDKBGuiForm* targetform = dynamic_cast(parent_widget->Owner()); // enabled if clipboard contains almost one item pastewidget->Enabled = WidgetClipboard->size() > 0; // enabled if clipboard contains more than one item pasteothers->Enabled = WidgetClipboard->size() > 1; /* Allowing pasting between form needs more investigation and not seems very useful. These reasons suggest to deny pasting between forms: - if the cutted widget has some signals assigned is necessary to disconnect those signals , it can be done using Form::DisconnectWidget(VDKBobject*) - if the widget has the same name of a widget on target form is necessary to create a new widget name before inserting it. - there can be others not yet investigated interferences. */ if(pastewidget->Enabled) { VDKBGuiForm* sourceform = dynamic_cast ((*WidgetClipboard)[0].object->ObjectFromVDK()->Owner()); pastewidget->Enabled = targetform == sourceform; sprintf(buff,"Paste [%s]", pastewidget->Enabled ? (char*) (*WidgetClipboard)[0].object->Name() : "none"); pastewidget->Caption = buff; } // call ancestor VDKMenu::Popup(button,activate_time); } ///////////////////////////////////////////////// /* */ VDKBWidgetPopMenu::VDKBWidgetPopMenu(VDKObject* widget): VDKMenu(widget->Owner()),parent_widget(widget) { VDKBObject* self = dynamic_cast(parent_widget); sprintf(buff,"%s", self ? (char*) self->Name() : "Nop"); VDKMenuItem *nop = new VDKMenuItem(this,buff); Separator(); nop->Enabled = false; setsize = new VDKMenuItem(this,_(wi_widget_prompts[19])); Separator(); selectparent = new VDKMenuItem(this,_(wi_widget_prompts[20]),parent_xpm); delwidget = new VDKMenuItem(this,_("Remove"),trash_xpm); copywidget = new VDKMenuItem(this,_("Copy"),copy16_xpm); cutwidget = new VDKMenuItem(this,_("Cut"),cut16_xpm); pastewidget = new VDKMenuItem(this,_("Paste"),paste16_xpm); pasteothers = new VDKMenuItem(this,_("Paste others.."),paste_others16_xpm); SignalConnect(delwidget,"activate",&VDKBWidgetPopMenu::DelWidget); SignalConnect(setsize,"activate",&VDKBWidgetPopMenu::SetWidgetSize); SignalConnect(selectparent,"activate", &VDKBWidgetPopMenu::SelectParentContainer); SignalConnect(copywidget,"activate",&VDKBWidgetPopMenu::Copy); SignalConnect(cutwidget,"activate",&VDKBWidgetPopMenu::Cut); SignalConnect(pastewidget,"activate",&VDKBWidgetPopMenu::Paste); SignalConnect(pasteothers,"activate",&VDKBWidgetPopMenu::PasteOthers); /* better add it to owner, so will be surely destroyed even if never popped */ parent_widget->Owner()->AddItem(this); } ///////////////////////////////////////////////////////////// DEFINE_SIGNAL_LIST(VDKBContainerPopMenu,VDKMenu); /* */ VDKBContainerPopMenu::VDKBContainerPopMenu(VDKObject* widget): VDKMenu(widget->Owner()),parent_widget(widget) { VDKBObject* self = dynamic_cast(parent_widget); sprintf(buff,"%s", self ? (char*) self->Name() : "Nop"); VDKMenuItem *nop = new VDKMenuItem(this,buff); Separator(); nop->Enabled = false; } void VDKBContainerPopMenu::Setup() { bool canCut = true; VDKBEventContainer* box = dynamic_cast(parent_widget); if(box) { VDKBEventContainer* outerbox = box->Outerbox(); if(outerbox) canCut = (! dynamic_cast(outerbox)) && (! dynamic_cast(outerbox)) && (! dynamic_cast(outerbox)) && (! dynamic_cast(outerbox)) ; } // not yet implemented // copywidget = new VDKMenuItem(this,"Copy widget"); // copywidget->Enabled = false; cutwidget = new VDKMenuItem(this,_("Cut widget"),cut16_xpm); cutwidget->Enabled = canCut; pastewidget = new VDKMenuItem(this,_("Paste widget"),paste16_xpm); pasteothers = new VDKMenuItem(this,_("Paste others.."),paste_others16_xpm); SignalConnect(cutwidget,"activate",&VDKBContainerPopMenu::Cut); SignalConnect(pastewidget,"activate",&VDKBContainerPopMenu::Paste); SignalConnect(pasteothers,"activate",&VDKBContainerPopMenu::PasteOthers); // not yet implemented // SignalConnect(copywidget,"activate",&VDKBContainerPopMenu::Copy); } /* Overridden popmenu, enable/disable pasting widget */ void VDKBContainerPopMenu::Popup(guint button,guint32 activate_time) { VDKBGuiForm* targetform = dynamic_cast(parent_widget->Owner()); pastewidget->Enabled = WidgetClipboard->size() > 0; pasteothers->Enabled = WidgetClipboard->size() > 1; /* Allowing pasting between form needs more investigation and not seems very useful. Denies pasting between forms for several reasons: - if the cutted widget has sone signals assigned is necessary to disconnect those signals, it can be done using Form::DisconnectWidget(VDKBobject*) - if the widget has the same name of a widget on target form is necessary to create a new widget name before inserting it. - there can be others not yet investigated interferences. */ if(pastewidget->Enabled) { VDKBGuiForm* sourceform = dynamic_cast ((*WidgetClipboard)[0].object->ObjectFromVDK()->Owner()); pastewidget->Enabled = targetform == sourceform; sprintf(buff,_("Paste %s::%s"), (*WidgetClipboard)[0].object->VDKName(), (char*) (*WidgetClipboard)[0].object->Name()); pastewidget->Caption = buff; } else pastewidget->Caption = _("Paste"); sprintf(buff,_("Cut %s::%s"), targetform->Active ? targetform->Active->VDKName(): _("none"), targetform->Active ? (char*) targetform->Active->Name() : _("none")); cutwidget->Caption = buff; // call ancestor VDKMenu::Popup(button,activate_time); } /* */ bool VDKBContainerPopMenu::PasteOthers(VDKObject*) { VDKBWidgetClipboardArray cliparray; VDKBWidgetClipboardDialog* child = new VDKBWidgetClipboardDialog(parent_widget->Owner(), &cliparray, NULL); child->Setup(); child->ShowModal(GTK_WIN_POS_MOUSE); if(cliparray.size() > 0) { if(cliparray.size() == 1) { VDKBWidgetClipboardItem item = cliparray[0]; // finds widget ordinal position // into clipboard int ndx = WidgetClipboard->at(item); if(ndx >= 0) // paste widget resetting WI WidgetClipboard->PasteWidget(parent_widget,ndx, true); } else { int z = 0; for(; z < cliparray.size(); z++) { VDKBWidgetClipboardItem item = cliparray[z]; // finds widget ordinal position // into clipboard int ndx = WidgetClipboard->at(item); if(ndx >= 0) // reset WI only on last item WidgetClipboard->PasteWidget(parent_widget, ndx, z < (cliparray.size()-1) ? false: true); } } } return true; } /* */ bool VDKBContainerPopMenu::Paste(VDKObject*) { // paste stack top widget WidgetClipboard->PasteWidget(parent_widget,0); return true; } /* */ bool VDKBContainerPopMenu::Cut(VDKObject*) { /* plm patch WidgetClipboard->CutWidget(parent_widget); return true; */ GtkWidget *widget = gtk_grab_get_current(); if (widget) gtk_grab_remove(widget); WidgetClipboard->CutWidget(parent_widget); return true; } /* */ bool VDKBContainerPopMenu::Copy(VDKObject*) { // not yet implemented // WidgetClipboard->CopyWidget(parent_widget); return true; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_widsel.c0000644000000000000000000003160207376473421014174 /* * =========================== * VDK Builder * Version 0.1 * Revision 0.5 * August 1999 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * ======================================= WIDGET SELECTION STUFF (Some parts were shameless stolen to Damon Chaplin, glade author) ======================================= */ #include #include #include #include #include #define VERBOSE 0 const int CORNER_HEIGHT = 6; const int CORNER_WIDTH = 6; const int GRID_DOTS = 1; /* */ GtkWidget * get_event_widget (GtkWidget *widget, GdkWindow *window, gint x, gint y, gint * x_return, gint * y_return); GdkWindow* get_widget_window (GtkWidget *parent, GtkWidget *widget); void paint_selection (GdkWindow * window, GdkGC * gc, gint x, gint y, gint width, gint height); static void clear_child_windows (GdkWindow * window, gint x, gint y, gint w, gint h); void clear_widget_selection (GtkWidget * widget); void clear_widget_area (GtkWidget * widget, gint x, gint y, gint w, gint h); void fixed_draw_grid (GtkWidget *widget, int grid_horz_spacing, int grid_vert_spacing,int grid_style); /* in there is signal name to stop */ void StopSignal(GtkWidget *wid, gpointer gp) { #if VERBOSE printf("\n::StopSignal()"); fflush(stdout); #endif g_return_if_fail(wid != NULL); g_return_if_fail(gp != NULL); gtk_signal_emit_stop_by_name(GTK_OBJECT(wid), (char*) gp); } GdkWindow* get_widget_window (GtkWidget *parent, GtkWidget *widget) { if (parent) return parent->window; return widget->window; } void paint_selection (GdkWindow * window, GdkGC * gc, gint x, gint y, gint width, gint height) { GdkGCValues gc_values; // Paint the four corner handles, if there is enough room. if (width > CORNER_WIDTH && height > CORNER_HEIGHT) { gdk_draw_rectangle (window, gc, TRUE, x, y, CORNER_WIDTH, CORNER_HEIGHT); gdk_draw_rectangle (window, gc, TRUE, x, y + height - CORNER_HEIGHT, CORNER_WIDTH, CORNER_HEIGHT); gdk_draw_rectangle (window, gc, TRUE, x + width - CORNER_WIDTH, y, CORNER_WIDTH, CORNER_HEIGHT); gdk_draw_rectangle (window, gc, TRUE, x + width - CORNER_WIDTH, y + height - CORNER_HEIGHT, CORNER_WIDTH, CORNER_HEIGHT); } gdk_gc_get_values (gc, &gc_values); // Paint the box around the widget. gdk_gc_set_line_attributes(gc, gc_values.line_width, GDK_LINE_ON_OFF_DASH, gc_values.cap_style, gc_values.join_style); gdk_draw_rectangle (window, gc, FALSE, x, y, width - 1, height - 1); gdk_gc_set_line_attributes(gc, gc_values.line_width, gc_values.line_style, gc_values.cap_style, gc_values.join_style); } /* This clears all child windows which fall within the given rectangle. If the rectangle width is -1, then all children are cleared. */ void clear_child_windows (GdkWindow * window, gint x, gint y, gint w, gint h) { GList *children; GdkWindow *child_window; gint win_x, win_y, win_w, win_h; XWindowAttributes xwa; GdkRectangle area, child, intersection; area.x = x; area.y = y; area.width = w; area.height = h; children = gdk_window_get_children (window); while (children) { child_window = (GdkWindow *) children->data; gdk_window_get_position (child_window, &win_x, &win_y); gdk_window_get_size (child_window, &win_w, &win_h); child.x = win_x; child.y = win_y; child.width = win_w; child.height = win_h; if (gdk_rectangle_intersect (&area, &child, &intersection)) { /* We need to make sure this is not an InputOnly window, or we get a BadMatch. CList uses InputOnly windows - for resizing columns. FIXME: This may not be very efficient. */ XGetWindowAttributes (GDK_DISPLAY (), GDK_WINDOW_XWINDOW (child_window), &xwa); if (xwa.class != InputOnly) { /* Convert to the child's coordinate space. */ intersection.x -= child.x; intersection.y -= child.y; gdk_window_clear_area (child_window, intersection.x, intersection.y, intersection.width, intersection.height); clear_child_windows (child_window, intersection.x, intersection.y, intersection.width, intersection.height); } } children = children->next; } g_list_free (children); } void clear_widget_selection (GtkWidget * widget) { gint x, y, w, h; x = widget->allocation.x; y = widget->allocation.y; w = widget->allocation.width; h = widget->allocation.height; /* Don't try to refresh an area if the width or height is 0. */ if (w == 0 || h == 0) return; /* Clear the four corners. */ clear_widget_area (widget, x, y, CORNER_WIDTH, CORNER_HEIGHT); clear_widget_area (widget, x, y + h - CORNER_HEIGHT, CORNER_WIDTH, CORNER_HEIGHT); clear_widget_area (widget, x + w - CORNER_WIDTH, y, CORNER_WIDTH, CORNER_HEIGHT); clear_widget_area (widget, x + w - CORNER_WIDTH, y + h - CORNER_HEIGHT, CORNER_WIDTH, CORNER_HEIGHT); /* Clear the four lines along the edges. */ clear_widget_area (widget, x + CORNER_WIDTH, y, w - 2 * CORNER_WIDTH, 1); clear_widget_area (widget, x + CORNER_WIDTH, y + h - 1, w - 2 * CORNER_WIDTH, 1); clear_widget_area (widget, x, y + CORNER_HEIGHT, 1, h - 2 * CORNER_HEIGHT); clear_widget_area (widget, x + w - 1, y + CORNER_HEIGHT, 1, h - 2 * CORNER_HEIGHT); gtk_widget_draw (widget, NULL); } void clear_widget_area (GtkWidget * widget, gint x, gint y, gint w, gint h) { GdkWindow *window; GdkRectangle area; area.x = x; area.y = y; area.width = w; area.height = h; if (!GTK_WIDGET_DRAWABLE (widget)) return; /* Don't try to refresh an area if the width or height is 0. */ if (w == 0 || h == 0) return; window = get_widget_window (widget->parent, widget); if (widget->parent) { gdk_window_clear_area (window, x, y, w, h); clear_child_windows (window, x, y, w, h); } else { gdk_window_clear_area (window, x, y, w, h); clear_child_windows (window, x, y, w, h); } } /* draw grid into fixed */ void fixed_draw_grid (GtkWidget * widget, int grid_horz_spacing, int grid_vert_spacing, int grid_style) { GdkGC *gc = NULL; int width = 0,height = 0; int gridx = 0, gridy = 0; // g_return_if_fail(!GTK_OBJECT_DESTROYED(GTK_OBJECT(widget))); g_return_if_fail(GTK_IS_WIDGET(widget)); gc = widget->style->dark_gc[GTK_STATE_NORMAL]; width = widget->allocation.width; height = widget->allocation.height; if (grid_style == GRID_DOTS) { for (gridx = 0; gridx < width; gridx += grid_horz_spacing) { for (gridy = 0; gridy < height; gridy += grid_vert_spacing) gdk_draw_point (widget->window, gc, gridx, gridy); } } else { for (gridx = 0; gridx < width; gridx += grid_horz_spacing) gdk_draw_line (widget->window, gc, gridx, 0, gridx, height); for (gridy = 0; gridy < height; gridy += grid_vert_spacing) gdk_draw_line (widget->window, gc, 0, gridy, width, gridy); } } /* This function is passed a widget which has received a mouse event, and the coordinates of that event. It returns the widget which the event is really meant for (which could be a descendent of the given widget), and the position of the event in the widget's allocated area. */ /* Struct only used for find_child_at callback */ typedef struct _GbFindChildAtData GbFindChildAtData; struct _GbFindChildAtData { gint x; gint y; GtkWidget *found_child; }; /* Note: returns last found child if children overlap */ static void find_child_at (GtkWidget * widget, GbFindChildAtData * data) { #if VERBOSE printf ("\nIn find_child_at: %s X:%i Y:%i W:%i H:%i", gtk_widget_get_name (widget), widget->allocation.x, widget->allocation.y, widget->allocation.width, widget->allocation.height); fflush(stdout); #endif /* Notebook pages are visible but not mapped if they are not showing. */ if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_MAPPED (widget) && (widget->allocation.x <= data->x) && (widget->allocation.y <= data->y) && (widget->allocation.x + widget->allocation.width > data->x) && (widget->allocation.y + widget->allocation.height > data->y)) { #if VERBOSE printf ("found child:%s", gtk_widget_get_name (widget)); fflush(stdout); #endif data->found_child = widget; } } GtkWidget * get_event_widget (GtkWidget *widget, GdkWindow *window, gint x, gint y, gint * x_return, gint * y_return) { GbFindChildAtData data; gint win_x, win_y; GtkWidget *found_gbwidget = NULL; gint found_x = 0, found_y = 0; GdkWindow *parent_window; #if VERBOSE printf ("\nOriginal:%s X:%i Y:%i", gtk_widget_get_name (widget), x, y); if (widget->parent) printf ("\nParent: %s", gtk_widget_get_name (widget->parent)); fflush(stdout); #endif /* FIXME: GTK bug workaround? - need to translate coords if mouse button was pressed in a child window. */ /* Remember widgets can have other windows besides their main one, and when dragging the event may be sent to the parent's window? */ parent_window = widget->parent ? widget->parent->window : widget->window; while (window && window != parent_window) { gdk_window_get_position (window, &win_x, &win_y); x += win_x; y += win_y; window = gdk_window_get_parent (window); } if (window != parent_window) return NULL; /* We now have correct coordinates relative to the parent's window. Now we find out which widget this event is really for. We step down the widget tree, trying to find the widget at the given position. We have to translate coordinates for children of widgets with windows. We may need to use bin_window for viewport. */ if (1 /*GB_IS_GB_WIDGET (widget) || GB_IS_PLACEHOLDER (widget)*/) { found_gbwidget = widget; found_x = x; found_y = y; } /* I've added this mainly for the Combo widget's Entry. We don't want the Entry to get the signal first as it will add a grab which messes up our popup menu code. Before I added this we were letting the signal continue up the hierarchy, so the Entry got it first. */ else if (widget->parent /*&& GB_IS_GB_WIDGET (widget->parent)*/ && GTK_WIDGET_NO_WINDOW (widget->parent)) { found_gbwidget = widget->parent; found_x = x; found_y = y; } if (!GTK_WIDGET_NO_WINDOW (widget) && widget->parent) { /* SPECIAL CODE: use bin_window for viewport. */ if (GTK_IS_VIEWPORT (widget)) window = GTK_VIEWPORT (widget)->bin_window; else window = widget->window; gdk_window_get_position (window, &win_x, &win_y); x -= win_x; y -= win_y; } for (;;) { if (!GTK_IS_CONTAINER (widget) || GTK_IS_MENU_BAR (widget)) break; data.x = x; data.y = y; data.found_child = NULL; gtk_container_foreach (GTK_CONTAINER (widget), (GtkCallback) find_child_at, &data); /* SPECIAL CODE - Check for notebook tabs. */ if (GTK_IS_NOTEBOOK (widget)) ; //find_notebook_tab (widget, &data); if (data.found_child) { #if VERBOSE printf ("\nFound child:%s", gtk_widget_get_name (data.found_child)); fflush(stdout); #endif widget = data.found_child; if (1 /*GB_IS_GB_WIDGET (widget) || GB_IS_PLACEHOLDER (widget)*/) { found_gbwidget = widget; found_x = x; found_y = y; } } else break; if (!GTK_WIDGET_NO_WINDOW (widget)) { /* SPECIAL CODE; use bin_window for viewport. */ if (GTK_IS_VIEWPORT (widget)) window = GTK_VIEWPORT (widget)->bin_window; else window = widget->window; gdk_window_get_position (window, &win_x, &win_y); x -= win_x; y -= win_y; } } if (!found_gbwidget) return NULL; *x_return = found_x - found_gbwidget->allocation.x; *y_return = found_y - found_gbwidget->allocation.y; #if VERBOSE printf ("\nEvent widget: %s X:%i Y:%i", gtk_widget_get_name (found_gbwidget), *x_return, *y_return); fflush(stdout); #endif return found_gbwidget; } vdkbuilder2-2.4.0/vdkbuilder/vdkb_xcheckbutton.cc0000644000000000000000000003373210022113241015524 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if USE_XDB #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBXCheckButton // put here vdk class name string #define VDK_CLASS "VDKXCheckButton" // put here vdk class name #define VDK_ANCESTOR VDKXCheckButton // put here here the widget will be named // (name+counter) #define VDK_WIDGET "xcheckbutton" //================================================================= extern char *wi_widget_prompts[]; static char buff[128]; extern VDKBuilder* TheApp; extern void LoadTableList(VDKCustomList* tablelist, VDKXDatabase* xdb, char* tablename); extern void LoadFieldList(VDKCustomList *fieldlist, char* tablename, VDKXDatabase* xdb, char* fieldname); // used to autogenerate default int CLASS::Counter = 0; /* properties,signals and nicknames */ char* vdkxcheckbutton_props[] = { CAPTION,CAPTIONWRAP, ASSIGNTABLE,ASSIGNFIELD,0 }; char* vdkxcheckbutton_signals[] = { SIGNAL_TOGGLED,0 }; char* vdkxcheckbutton_nicknames[] = { NICK_TOGGLED,0 }; ////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); ////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner, char* label, char* tip): VDKXCheckButton(owner,label,tip),VDKBObject(name) { int t; // newly constructed widget counter is incremented Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties list for(t=0; vdkxcheckbutton_props[t]; t++) proplist.add(VDKBProperty(vdkxcheckbutton_props[t])); // add to VDKBObject signal list for(t=0; vdkxcheckbutton_signals[t]; t++) siglist.add(VDKBSignal(vdkxcheckbutton_signals[t], this, vdkxcheckbutton_nicknames[t])); // connects common events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); // if(label) SetPropValue( CAPTION,label); } ///////////////////////////////////// // // WRITE TO .FRM FILE // ///////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); //============================ // USER STUFF BEGINS HERE // writes specific properties fprintf(fp,"\n\t%s\"%s\";", PROP_CAPTION, (char*) GetProp( CAPTION)); fprintf(fp,"\n\t%s%s;", PROP_CAPTIONWRAP, (char*) GetProp( CAPTIONWRAP)); fprintf(fp,"\n\t%s%s;", PROP_ASSIGNTABLE, (char*) GetProp(ASSIGNTABLE)); fprintf(fp,"\n\t%s%s;", PROP_ASSIGNFIELD, (char*) GetProp(ASSIGNFIELD)); } //////////////////////////////////////// // // PREPARE GUI WIDGETS // //////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { // autogenerate first suitable counter // to ensure unicity CLASS* button; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // actually makes widget button = new CLASS(buff,owner,buff); // add widget to form return owner->AddToSelf(button,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char obj_caption[128]; char assigntable[256],assignfield[256]; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; bool nls_support = parser.CheckNLSSupport(); if(!parser.GetParam(obj_caption,buffer,PROP_CAPTION)) strcpy(obj_caption,"none"); parser.CheckXDBSupport(0); // checks for contructing if(nls_support) sprintf(tmp,"\n%s = new %s(this,_(\"%s\"));", obj_name, VDK_CLASS, obj_caption); else sprintf(tmp,"\n%s = new %s(this,\"%s\");", obj_name, VDK_CLASS, obj_caption); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // set widget specific properties // get label button props if(parser.GetParam(arg,buffer,PROP_CAPTIONWRAP) && strcmp(arg,NIHIL_PROP) ) { sprintf(tmp,"\n%s->%s = %s;",obj_name,CAPTIONWRAP,arg); strcat(source,tmp); } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); // get table and field to assign if(parser.GetParam(assigntable,buffer,PROP_ASSIGNTABLE) && strcmp(assigntable,NIHIL_PROP) && parser.GetParam(assignfield,buffer,PROP_ASSIGNFIELD) && strcmp(assignfield,NIHIL_PROP)) parser.WriteXDBAssignCode(obj_name, assigntable, assignfield, source, tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char obj_caption[256]; char arg[64]; char assigntable[256],assignfield[256]; CLASS* button; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; // get caption if(!parser.GetParam(obj_caption,buffer,PROP_CAPTION)) strcpy(obj_caption,"none"); VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { button = new CLASS(obj_name,owner,obj_caption); if( parser.GetParam(arg,buffer,PROP_CAPTIONWRAP) && strcmp(arg,NIHIL_PROP) ) { button->CaptionWrap = !strcmp(arg,CHECK_TRUE); button->SetPropValue(CAPTIONWRAP,arg); } if(parser.GetParam(assigntable,buffer,PROP_ASSIGNTABLE) && strcmp(assigntable,NIHIL_PROP) && parser.GetParam(assignfield,buffer,PROP_ASSIGNFIELD) && strcmp(assignfield,NIHIL_PROP)) { VDKXTable *table = NULL; button->SetPropValue(ASSIGNTABLE,assigntable); button->SetPropValue(ASSIGNFIELD,assignfield); // search for table on xdb TableList *tlist = TheApp->theXdb->TList(); TableListIterator li(*tlist); for(;li;li++) { char* dbname = (char*) li.current()->Name(); if(!strcmp(assigntable,get_shortfilename(dbname))) { table = li.current(); break; } } if(table && button->AssignTableField(table,assignfield) && table->Active && (table->First() == XB_NO_ERROR)) button->Read(); } // pack widget to container return owner->PackToSelf(button, container, buffer, parser); } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); // FIX ME: lang support VDKTable* table = new VDKTable(inspector,4,2); // table->SetSize(300,-1); VDKCustomButton* button = new VDKCustomButton(inspector,_(wi_widget_prompts[0])); table->AddToCell(button,0,0); button->Parent(this); SignalConnect(button,"clicked",&CLASS::OnSetCaption); caption = new VDKEntry(inspector,0,(char*) GetProp(CAPTION)); caption->SetSize(100,-1); table->AddToCell(caption,0,1); caption->Parent(this); SignalConnect(caption,"activate",&CLASS::OnSetCaption); wrap = new VDKCheckButton(inspector,_(wi_widget_prompts[1])); table->AddToCell(wrap,1,0); wrap->Parent(this); SignalConnect(wrap,"toggled",&CLASS::OnSetCaptionWrap); char* ttitle[2] = { N_("Tables"), 0 }; tablelist = new VDKCustomList(inspector,1,ttitle,GTK_SELECTION_SINGLE); // tablelist->SetSize(150,80); table->AddToCell(tablelist,2,0); tablelist->Parent(this); SignalConnect(tablelist,"select_row",&CLASS::OnTableListSelectRow,false); SignalConnect(tablelist,"unselect_row",&CLASS::OnTableListUnselectRow,false); char* ftitle[2] = { N_("Fields"), 0 }; fieldlist = new VDKCustomList(inspector,1,ftitle,GTK_SELECTION_SINGLE); // fieldlist->SetSize(105,80); table->AddToCell(fieldlist,2,1); fieldlist->Parent(this); assignButton = new VDKCustomButton(inspector,_("Assign to table field")); table->AddToCell(assignButton,3,0); assignButton->Parent(this); assignButton->Enabled = false; assignButton->SetTip(_("Selecting \"nihil\" will reset field assignement")); SignalConnect(assignButton,"clicked",&CLASS::OnAssignButtonClicked); bframe->Add(table,l_justify,false,false,false); ::LoadTableList(tablelist,TheApp->theXdb,GetProp(ASSIGNTABLE)); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnSetCaptionWrap(VDKObject*) { SetPropValue(CAPTIONWRAP, wrap->Checked ? CHECK_TRUE : CHECK_FALSE); CaptionWrap = wrap->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetCaption(VDKObject*) { if(strlen(caption->Text)>0) { sprintf(buff,"%s",(char*) caption->Text); SetPropValue(CAPTION,buff); Caption = caption->Text; inspector->FormNeedToBeChanged(); } return true; } /* */ bool CLASS::OnTableListSelectRow(VDKObject*) { int ndx = tablelist->Selected.Row(); if(ndx < 0) { assignButton->Enabled = false; return true; } else { Tuple tuple = tablelist->Tuples[ndx]; LoadFieldList(fieldlist,(char*) tuple[0],TheApp->theXdb, GetProp(ASSIGNFIELD)); assignButton->Enabled = true; } return true; } /* */ bool CLASS::OnTableListUnselectRow(VDKObject*) { fieldlist->Clear(); assignButton->Enabled = false; return true; } /* */ bool CLASS::OnAssignButtonClicked(VDKObject*) { VDKXTable* table = NULL; VDKXDatabase *xdb = TheApp->theXdb; int tndx = tablelist->Selected.Row(); int fndx = fieldlist->Selected.Row(); char* tname = NULL; char* fname = NULL; if( (tndx < 0) || (fndx < 0)) return true; // clears field Checked = false; Tuple ttuple = tablelist->Tuples[tndx]; Tuple ftuple = fieldlist->Tuples[fndx]; tname = (char*) ttuple[0]; fname = (char*) ftuple[0]; if(!strcmp(fname,NIHIL_PROP)) { SetPropValue(ASSIGNTABLE,NIHIL_PROP); SetPropValue(ASSIGNFIELD,NIHIL_PROP); return true; } table = (*xdb)[tname]; if(!table) return true; if(AssignTableField(table,fname)) { xbShort fno; if(table->Active && (table->First() == XB_NO_ERROR)) Read(); SetPropValue(ASSIGNTABLE,get_shortfilename(tname)); SetPropValue(ASSIGNFIELD,fname); fno = table->GetFieldNo(fname); if(fno >= 0) { xbShort flen = table->GetFieldLen(fno); sprintf(buff,"%d",flen); SetPropValue(MAXCHARS,buff); } inspector->FormNeedToBeChanged(); } else { sprintf(buff,_("Couldn't assign to field \"%s\" on table %s"), fname,tname); Owner()->Application()->VDKMessageBox( APPNAME, buff, VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 5000); // warns user } return true; } #endif vdkbuilder2-2.4.0/vdkbuilder/vdkb_xcustomlist.cc0000644000000000000000000005445410022113241015425 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if USE_XDB #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBXCustomList // put here vdk class name string #define VDK_CLASS "VDKXCustomList" // put here vdk class name #define VDK_ANCESTOR VDKXCustomList // put here here the widget will be named // (name+counter) #define VDK_WIDGET "xcustomlist" static char buff[128]; extern char* wi_widget_prompts[]; extern VDKBuilder* TheApp; extern void LoadTableList(VDKCustomList* tablelist, VDKXDatabase* xdb, char* tablename); extern void LoadFieldList(VDKCustomList *fieldlist, char* tablename, VDKXDatabase* xdb, char* fieldname); // used to autogenerate default // labelbutton names and captions int CLASS::Counter = 0; /* label properties names */ char* vdkxclist_props[] = { VPOLICY,HPOLICY, BORDERSHADOW,ROWHEIGHT, AUTORESIZE,SELECTIONMODE, ASSIGNTABLE,ASSIGNFIELD,0 }; static char *shadows[] = { "shadow_none","shadow_in","shadow_out","shadow_etched_in", "shadow_etched_out",0 }; char* vdkxclist_signals[] = { SIGNAL_SELECT_ROW,SIGNAL_UNSELECT_ROW, SIGNAL_CLICK_COLUMN,0 }; char* vdkxclist_nicknames[] = { NICK_SELECT_ROW ,NICK_UNSELECT_ROW, NICK_CLICK_COLUMN,0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// /* */ bool CLASS::OnColumnClicked(VDKObject*) { if(ColumnClicked() < 0) return true; else if(inspector) { inspector->SetActive(this); columnTitle->Text = column_titles[ColumnClicked()]; columnTitle->Enabled = true; assignButton->Enabled = true; OnTableListSelectRow(NULL); } return true; } ////////////////////////////////////////////////////////////// /* - constructor */ // default pixmap // defined in vdkb_local.cc extern char** default_pixmap; CLASS::CLASS(char* name, VDKForm* owner, int cols, char** titles, GtkSelectionMode mode): VDK_ANCESTOR(owner,cols,titles,mode),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties for(t=0; vdkxclist_props[t]; t++) proplist.add(VDKBProperty(vdkxclist_props[t])); // add to VDKBObject signal list signals for(t=0; vdkxclist_signals[t]; t++) siglist.add(VDKBSignal(vdkxclist_signals[t], this, vdkxclist_nicknames[t])); // make and load colums title array column_titles = TitlesArray(cols); for(t = 0 ; t < cols; t++) column_titles[t] = VDKString(titles[t]); // make and initialize assigned fields array assigned_fields = TitlesArray(cols); for(t = 0 ; t < cols; t++) assigned_fields[t] = NIHIL_PROP; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); // a reasonable size SetSize(100,100); SetPropValue(USIZE,"100,100"); CONNECT_COMMON_EVENTS; SignalConnect("click_column",&CLASS::OnColumnClicked,false); inspector = NULL; } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_SELECTIONMODE, (char*) GetProp(SELECTIONMODE)); fprintf(fp,"\n\t%s%s;", PROP_AUTORESIZE, (char*) GetProp(AUTORESIZE)); fprintf(fp,"\n\t%s%s;", PROP_BORDERSHADOW, (char*) GetProp(BORDERSHADOW)); // writes columns titles: fprintf(fp,"\n\t%s%d;",PROP_COLUMNS_INTERNAL,column_titles.size()); fprintf(fp,"\n\t%s\"",PROP_TITLES_INTERNAL); int t,last = column_titles.size(); for(t = 0; t < last-1 ; t++) fprintf(fp,"%s,", (char*) column_titles[t].isNull() ? NIHIL_PROP : (char*) column_titles[t]); fprintf(fp,"%s\";", (char*) column_titles[last-1].isNull() ? NIHIL_PROP : (char*) column_titles[last-1]); fprintf(fp,"\n\t%s%s;", PROP_ASSIGNTABLE, (char*) GetProp(ASSIGNTABLE)); fprintf(fp,"\n\t%s%s;", PROP_ASSIGNFIELD, (char*) GetProp(ASSIGNFIELD)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* clist; int columns = 0,t; // be sure target is a container (otherwise hangs -up ) if(!dynamic_cast(owner->Active)) return 2; // autogenerate first suitable pixmap counter // to ensure unicity if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; // columns should be asked to user Vdkb_clistdlgForm* dlg = new Vdkb_clistdlgForm(owner,NULL,&columns); dlg->Setup(); dlg->ShowModal(); columns = columns ? columns : 1; // autogenerates titles char **titles = new char*[columns]; for(t=0; t < columns;t++) { titles[t] = new char[32]; sprintf(titles[t],"Title#%d",t); } clist = new CLASS(buff, owner, columns, titles); // deletes titles for(t=0; t < columns; t++) delete[] titles[t]; delete[] titles; return owner->AddToSelf(clist,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ static void CreateTitles(char* source, char* obj_name, int obj_cols, char* obj_titles, bool nls_support) { char* p; char tmp[128]; int t = 0; sprintf(tmp,"\nchar* %sTitles[] = { ",obj_name); strcpy(source,tmp); p = strtok(obj_titles,","); while(p) { if(nls_support) sprintf(tmp,"\n_(\"%s\"),",strcmp(p,NIHIL_PROP) ? p : " "); else sprintf(tmp,"\n\"%s\",",strcmp(p,NIHIL_PROP) ? p : " "); t++; p = strtok(NULL,","); if(!p) // cut comma tmp[strlen(tmp)-1] = '\0'; strcat(source,tmp); } sprintf(tmp," };"); strcat(source,tmp); if( t!= obj_cols) ; // FIX ME: error to be noticed to user return; } /* */ extern VDKBuilder* TheApp; char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char arg[64]; char tmp[256]; char obj_titles[1024]; char obj_cols[32]; char selmode[16]; int smode = 0; char *assignfield; char assigntable[256]; // gets widget name, parent name, columns and titles if( (!parser.GetNameAndParent(buffer, obj_name, obj_parent)) || (!parser.GetParam(obj_cols,buffer,PROP_COLUMNS_INTERNAL)) || (!parser.GetParam(obj_titles,buffer,PROP_TITLES_INTERNAL)) ) return NULL; source = new char[4096]; if(parser.GetParam(selmode,buffer,PROP_SELECTIONMODE) && strcmp(arg,NIHIL_PROP)) { smode = atoi(selmode); } parser.CheckXDBSupport(0); // checks for contructing // create code for titles bool nls_support = parser.CheckNLSSupport(); CreateTitles(source,obj_name,atoi(obj_cols),obj_titles,nls_support); sprintf(tmp, "\n%s = new %s(this,%s,%sTitles,(GtkSelectionMode) %d);", obj_name,VDK_CLASS,obj_cols,obj_name,smode); strcat(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } /* this code is widget specific */ if(parser.GetParam(arg,buffer, PROP_AUTORESIZE) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;",obj_name,AUTORESIZE,arg); strcat(source,tmp); } // get shadow if(parser.GetParam(arg,buffer,PROP_BORDERSHADOW ) && strcmp(arg,NIHIL_PROP)) { int ndx = atoi(arg); ndx = (ndx >= 0) && (ndx <= 4) ? ndx : 0; sprintf(tmp,"\n%s->%s = (GtkShadowType) %s;", obj_name,BORDERSHADOW,shadows[ndx]); strcat(source,tmp); } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); // get table and fields to assign assignfield = new char[1024]; if(parser.GetParam(assigntable,buffer,PROP_ASSIGNTABLE) && strcmp(assigntable,NIHIL_PROP) && parser.GetParam(assignfield,buffer,PROP_ASSIGNFIELD) && strcmp(assignfield,NIHIL_PROP)) parser.WriteXDBClistAssignCode(obj_name, assigntable, assignfield, source, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ static char ** GenerateTitles(int obj_cols, char* obj_titles) { char* p, **titles; int t = 0; // generates titles if(obj_cols <= 0) return (char**) NULL; titles = new char*[obj_cols]; p = strtok(obj_titles,","); while(p) { titles[t] = new char[strlen(p)+1]; if(strcmp(p,NIHIL_PROP)) strcpy(titles[t],p); else strcpy(titles[t]," "); t++; p = strtok(NULL,","); } return t == obj_cols ? titles : (char**) NULL; } /* */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { VDKString True = CHECK_TRUE; char obj_name[128]; char obj_parent[128]; char arg[64]; char obj_titles[1024]; char obj_cols[32]; char selmode[16]; int smode = 0; char *assignfield; char assigntable[256]; //char arg[64]; CLASS* clist; // get name, and parent if( (!parser.GetNameAndParent(buffer, obj_name, obj_parent)) || (!parser.GetParam(obj_cols,buffer,PROP_COLUMNS_INTERNAL)) || (!parser.GetParam(obj_titles,buffer,PROP_TITLES_INTERNAL)) ) return false; if(parser.GetParam(selmode,buffer, PROP_SELECTIONMODE) && strcmp(arg,NIHIL_PROP)) smode = atoi(selmode); VDKObject* cont = owner->ChildWithName(obj_parent); VDKBEventContainer* container = cont ? dynamic_cast(cont) : (VDKBEventContainer*) NULL; if(container) { char** tit = GenerateTitles(atoi(obj_cols),obj_titles); clist = new CLASS(obj_name,owner, atoi(obj_cols), tit, (GtkSelectionMode) smode); if(tit) { int t = 0; int z = atoi(obj_cols); for( ; t < z; t++) delete[] tit[t]; delete[] tit; } if(parser.GetParam(selmode,buffer, PROP_SELECTIONMODE) && strcmp(arg,NIHIL_PROP)) clist->SetPropValue(SELECTIONMODE,selmode); // shadow if(parser.GetParam(arg,buffer,PROP_AUTORESIZE) && strcmp(arg,NIHIL_PROP)) { clist->SetPropValue(AUTORESIZE,arg); clist->AutoResize = !strcmp(arg,CHECK_TRUE); } if(parser.GetParam(arg,buffer,PROP_BORDERSHADOW) && strcmp(arg,NIHIL_PROP)) { clist->SetPropValue(BORDERSHADOW,arg); int sh = atoi(arg); clist->BorderShadow = (GtkShadowType) sh; } assignfield = new char[1024]; if(parser.GetParam(assigntable,buffer,PROP_ASSIGNTABLE) && strcmp(assigntable,NIHIL_PROP) && parser.GetParam(assignfield,buffer,PROP_ASSIGNFIELD) && strcmp(assignfield,NIHIL_PROP)) { VDKXTable *table = NULL; clist->SetPropValue(ASSIGNTABLE,assigntable); clist->SetPropValue(ASSIGNFIELD,assignfield); // search for table on xdb TableList *tlist = TheApp->theXdb->TList(); TableListIterator li(*tlist); for(;li;li++) { char* dbname = (char*) li.current()->Name(); if(!strcmp(assigntable,get_shortfilename(dbname))) { table = li.current(); break; } } if (table && table->Active ) { clist->AssignFieldsToColumn(assignfield,table); clist->Read(); } delete[] assignfield; } bool result = owner->PackToSelf(clist, container, buffer, parser); return result; } else return false; } /* */ void CLASS::AssignFieldsToColumn(char* assignfield,VDKXTable* table) { int t = 0; char* local = new char[strlen(assignfield)+1], *p; char fname[11]; strcpy(local,assignfield); p = strtok(local,","); while(p) { strcpy(fname,p); if(strcmp(fname,NIHIL_PROP)) AssignTableFieldToColumn(t, table,fname); assigned_fields[t] = fname; t++; p = strtok(NULL,","); } delete[] local; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* GTK_SELECTION_SINGLE, GTK_SELECTION_BROWSE, GTK_SELECTION_MULTIPLE, GTK_SELECTION_EXTENDED */ static char *selectionmodes[] = { "single","browse","multiple","extended",0 }; /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); VDKTable *table = new VDKTable(inspector,5,2); table->SetSize(300,-1); VDKCustomButton *setmode = new VDKCustomButton(inspector, _(wi_widget_prompts[10])); table->AddToCell(setmode,0,0); setmode->Parent(this); SignalConnect(setmode,"clicked",&CLASS::OnSetSelectionMode); selmode = new VDKCombo(inspector,NULL); selmode->SetSize(100,-1); StringList sm; int t = 0; for(;selectionmodes[t];t++) sm.add(VDKString(selectionmodes[t])); selmode->PopdownStrings = sm; table->AddToCell(selmode,0,1); int r = atoi(GetProp("SelectionMode")); selmode->SelectItem(r); table->AddToCell(new VDKLabel(inspector,_(wi_widget_prompts[11])),1,0); columnTitle = new VDKEntry(inspector,64); columnTitle->SetSize(100,-1); table->AddToCell(columnTitle,1,1); columnTitle->Parent(this); SignalConnect(columnTitle,"activate",&CLASS::OnSetColumnTitle); columnTitle->Enabled = false; assignButton = new VDKCustomButton(inspector,_("Assign column to table")); table->AddToCell(assignButton,2,0); assignButton->Parent(this); assignButton->Enabled = false; assignButton->SetTip(_("Selecting \"nihil\" will reset field assignement")); SignalConnect(assignButton,"clicked", &CLASS::OnAssignButtonClicked); autoresize = new VDKCheckButton(inspector, _(wi_widget_prompts[12])); table->AddToCell(autoresize,2,1); autoresize->Checked = GetProp(AUTORESIZE) == True; autoresize->Parent(this); SignalConnect(autoresize,"toggled",&CLASS::OnSetAutoResize); char* ttitle[2] = { N_("Tables"), 0 }; tablelist = new VDKCustomList(inspector,1,ttitle,GTK_SELECTION_SINGLE); // tablelist->SetSize(150,80); table->AddToCell(tablelist,3,0); tablelist->Parent(this); SignalConnect(tablelist,"select_row",&CLASS::OnTableListSelectRow,false); SignalConnect(tablelist,"unselect_row",&CLASS::OnTableListUnselectRow,false); char* ftitle[2] = { N_("Fields"), 0 }; fieldlist = new VDKCustomList(inspector,1,ftitle,GTK_SELECTION_SINGLE); //fieldlist->SetSize(105,80); table->AddToCell(fieldlist,3,1); fieldlist->Parent(this); VDKCustomButton *set = new VDKCustomButton(inspector, _(wi_widget_prompts[13])); table->AddToCell(set,4,0); set->Parent(this); SignalConnect(set,"clicked",&CLASS::OnSetShadow); shadow = new VDKCombo(inspector,NULL); shadow->SetSize(100,-1); StringList sl; t = 0; for(;shadows[t];t++) sl.add(VDKString(shadows[t])); shadow->PopdownStrings = sl; table->AddToCell(shadow,4,1); r = atoi(GetProp(BORDERSHADOW)); shadow->SelectItem(r); bframe->Add(table,l_justify,false,false,false); ::LoadTableList(tablelist,TheApp->theXdb,GetProp(ASSIGNTABLE)); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnSetColumnTitle(VDKObject*) { if(ColumnClicked() < 0) return true; else if(strlen(columnTitle->Text) <= 0) sprintf(buff,NIHIL_PROP); else sprintf(buff,"%s",(char*) columnTitle->Text); gtk_clist_set_column_title (GTK_CLIST(CustomWidget()), ColumnClicked(), strcmp(buff,NIHIL_PROP) ? buff : "No Title "); column_titles[ColumnClicked()] = buff; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetAutoResize(VDKObject*) { SetPropValue(AUTORESIZE, autoresize->Checked ? CHECK_TRUE : CHECK_FALSE); AutoResize = autoresize->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetShadow(VDKObject*) { int sel = shadow->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); SetPropValue(BORDERSHADOW ,buff); int shd = atoi(buff); BorderShadow = (GtkShadowType) shd; inspector->FormNeedToBeChanged(); return true; } bool CLASS::OnSetSelectionMode(VDKObject*) { int sel = selmode->Selected; sprintf(buff,"%d", sel >= 0 ? sel : 0); SetPropValue(SELECTIONMODE,buff); gtk_clist_set_selection_mode ( GTK_CLIST(CustomWidget()), (GtkSelectionMode) sel); inspector->FormNeedToBeChanged(); return true; } bool CLASS::OnTableListSelectRow(VDKObject*) { int ndx = tablelist->Selected.Row(); int cndx = ColumnClicked(); if(ndx < 0) { // assignTableButton->Enabled = false; assignButton->Enabled = false; return true; } else if ( cndx >= 0) { Tuple tuple = tablelist->Tuples[ndx]; LoadFieldList(fieldlist,(char*) tuple[0],TheApp->theXdb, assigned_fields[cndx]); // assignTableButton->Enabled = true; } assignButton->Enabled = true; return true; } /* */ bool CLASS::OnTableListUnselectRow(VDKObject*) { fieldlist->Clear(); assignButton->Enabled = false; return true; } /* */ bool CLASS::OnAssignButtonClicked(VDKObject*) { VDKXTable* table = NULL; VDKXDatabase *xdb = TheApp->theXdb; int tndx = tablelist->Selected.Row(); int fndx = fieldlist->Selected.Row(); char* tname = NULL,*p; char* fname = NULL; int ndx; if( (tndx < 0) || (fndx < 0)) return true; Tuple ttuple = tablelist->Tuples[tndx]; Tuple ftuple = fieldlist->Tuples[fndx]; tname = (char*) ttuple[0]; fname = (char*) ftuple[0]; VDKString fields; ndx = ColumnClicked(); if( ndx < 0) return true; else assigned_fields[ndx] = fname; SetPropValue(ASSIGNTABLE,get_shortfilename(tname)); // load all fields for(int t = 0; t < assigned_fields.size();t++) { fields += assigned_fields[t]; fields += ","; } p = (char*) fields; p[strlen(p)-1] = '\0'; SetPropValue(ASSIGNFIELD,(char*) fields); inspector->FormNeedToBeChanged(); // activate at design-time table = (*xdb)[tname]; if(table && AssignTableFieldToColumn(ndx, table,fname) && table->Active) { Read(); columnTitle->Text = fname; OnSetColumnTitle(NULL); } return true; } /* bool CLASS::OnResetTableButtonClicked(VDKObject*) { return true; } */ /* bool CLASS::OnAssignTableButtonClicked(VDKObject*) { VDKXTable* table = NULL; VDKXDatabase *xdb = TheApp->theXdb; int tndx = tablelist->Selected.Row(); char* tname = NULL; if( tndx < 0) return true; Tuple ttuple = tablelist->Tuples[tndx]; tname = (char*) ttuple[0]; table = (*xdb)[tname]; // clears field Clear(); if(!table) return true; else if (table->FieldCount() != Titles.size()) // checks field count against clist columns // they should match { sprintf(buff, _("VDKXTable field count and VDKXCustomList columns should match.\n\ Couldn't assign the table"), tname); Owner()->Application()->VDKMessageBox( APPNAME, buff, VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 5000); // warns user return true; } if(AssignTable(table)) { if(table->Active) Read(); SetPropValue(ASSIGNTABLE,get_shortfilename(tname)); SetPropValue(ASSIGNFIELD,NIHIL_PROP); for(int t = 0 ; t < assigned_fields.size(); t++) assigned_fields[t] = NIHIL_PROP; inspector->FormNeedToBeChanged(); } else { sprintf(buff,_("Couldn't assign to table \"%s\""), tname); Owner()->Application()->VDKMessageBox( APPNAME, buff, VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 5000); // warns user } return true; } */ #endif vdkbuilder2-2.4.0/vdkbuilder/vdkb_xentry.cc0000644000000000000000000004333310022113241014352 /* * =========================== * VDK Builder * Version 1.2 * Revision 0.1 * May 2000 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if USE_XDB #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBXEntry // put here vdk class name string #define VDK_CLASS "VDKXEntry" // put here vdk class name #define VDK_ANCESTOR VDKXEntry // put here here the widget will be named // (name+counter) #define VDK_WIDGET "xentry" static char buff[128]; extern char* wi_widget_prompts[]; extern VDKBuilder* TheApp; void LoadTableList(VDKCustomList* tlist, VDKXDatabase* xdb, char* tablename); void LoadFieldList(VDKCustomList *fieldlist, char* tablename, VDKXDatabase* xdb, char* fieldname); // used to autogenerate default // labelbutton names and captions int CLASS::Counter = 0; /* properties names */ char* vdkxentry_props[] = { TEXT,EDITABLE,HIDDEN,MAXCHARS,ASSIGNTABLE,ASSIGNFIELD,0 }; /* entry widget signal names && nicknames Default response method name will be made by: On. For instance if object name = and nickname = default response method name will be: */ char* vdkxentry_signals[] = { SIGNAL_ACTIVATE,SIGNAL_CHANGED, SIGNAL_FOCUS_IN,SIGNAL_FOCUS_OUT,0 }; char* vdkxentry_nicknames[] = { NICK_ACTIVATE,NICK_CHANGED , NICK_FOCUS_IN,NICK_FOCUS_OUT,0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); ////////////////////////////////////////////////// /* overridden ButtonPressed used in substitution of VDKBObject::ButtonPress */ bool VDKBXEntry::OverriddenButtonPressed(VDKObject* sender, GdkEvent* ev) { VDKBEventContainer* container; gtk_signal_emit_stop_by_name(GTK_OBJECT(sender->WrappedWidget()), "button_press_event"); container = dynamic_cast(sender->Parent()); if(container) // we pass instead // otherwise entry widget selection // is lost (don'y ask me why !) container->OnButtonPressed(this,ev); return true; } ////////////////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner, char* def): VDK_ANCESTOR(owner, 0, def),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties list label button properties // names. (Others props are prepended by VDKBObject constructor) for(t=0; vdkxentry_props[t]; t++) proplist.add(VDKBProperty(vdkxentry_props[t])); // add to VDKBObject signal list signals for(t=0; vdkxentry_signals[t]; t++) siglist.add(VDKBSignal(vdkxentry_signals[t], this, vdkxentry_nicknames[t])); //SetPropValue(TEXT,name); SetPropValue(MAXCHARS,"0"); SetPropValue(EDITABLE,"true"); // connects events. // an exception here EventConnect("button_press_event",&VDKBXEntry::OverriddenButtonPressed); // others kept from ancestor EventConnect("button_release_event",&VDKBObject::ButtonReleased); EventConnect("enter_notify_event",&VDKBObject::OnEnter); EventConnect("leave_notify_event",&VDKBObject::OnLeave); // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { char* text = (char*) GetProp(TEXT); // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); fprintf(fp,"\n\t%s%s;", PROP_EDITABLE, (char*) GetProp(EDITABLE)); fprintf(fp,"\n\t%s%s;", PROP_HIDDEN, (char*) GetProp(HIDDEN)); if(strcmp(text,NIHIL_PROP)) fprintf(fp,"\n\t%s\"%s\";", PROP_TEXT, text); else fprintf(fp,"\n\t%s%s;", PROP_TEXT, text); fprintf(fp,"\n\t%s%s;", PROP_MAXCHARS, (char*) GetProp(MAXCHARS)); fprintf(fp,"\n\t%s%s;", PROP_ASSIGNTABLE, (char*) GetProp(ASSIGNTABLE)); fprintf(fp,"\n\t%s%s;", PROP_ASSIGNFIELD, (char*) GetProp(ASSIGNFIELD)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* text; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else // actually makes widget text = new CLASS(buff,owner); // add widget to form return owner->AddToSelf(text,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ extern VDKBuilder* TheApp; char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char obj_editable[16]; char obj_text[256]; char obj_maxchars[16]; char arg[64]; char tmp[256]; char assigntable[256],assignfield[256]; *assigntable = '\0'; *assignfield = '\0'; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; // widget specifics if(parser.GetParam(obj_maxchars,buffer,PROP_MAXCHARS) && strcmp(obj_maxchars,NIHIL_PROP)) ; else strcpy(obj_maxchars,"0"); // if(parser.GetParam(obj_text,buffer,PROP_TEXT) && strcmp(obj_text,NIHIL_PROP)) ; else *obj_text = '\0'; parser.CheckXDBSupport(0); // checks for contructing if(*obj_text) sprintf(tmp,"\n%s = new %s(this,%s,\"%s\");", obj_name, VDK_CLASS, obj_maxchars, obj_text); else sprintf(tmp,"\n%s = new %s(this,%s);", obj_name, VDK_CLASS, obj_maxchars); strcpy(source,tmp); // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // if(parser.GetParam(obj_editable,buffer,PROP_EDITABLE) && strcmp(obj_editable,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;", obj_name,EDITABLE,obj_editable); strcat(source,tmp); } // get props if(parser.GetParam(arg,buffer,PROP_HIDDEN) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;",obj_name,HIDDEN,arg); strcat(source,tmp); } // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); // get table and field to assign if(parser.GetParam(assigntable,buffer,PROP_ASSIGNTABLE) && strcmp(assigntable,NIHIL_PROP) && parser.GetParam(assignfield,buffer,PROP_ASSIGNFIELD) && strcmp(assignfield,NIHIL_PROP)) parser.WriteXDBAssignCode(obj_name, assigntable, assignfield, source, tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[256]; char obj_text[256]; char assigntable[256],assignfield[256]; *assigntable = '\0'; *assignfield = '\0'; CLASS* text; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; if(parser.GetParam(obj_text,buffer,PROP_TEXT) && strcmp(obj_text,NIHIL_PROP)) ; else *obj_text = '\0'; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { text = new CLASS(obj_name,owner, *obj_text ? obj_text : NULL); if(parser.GetParam(arg,buffer,PROP_EDITABLE) && strcmp(arg,NIHIL_PROP)) text->SetPropValue(EDITABLE,arg); if(parser.GetParam(arg,buffer,PROP_HIDDEN) && strcmp(arg,NIHIL_PROP)) text->SetPropValue(HIDDEN,arg); if(parser.GetParam(arg,buffer,PROP_MAXCHARS) && strcmp(arg,NIHIL_PROP)) text->SetPropValue(MAXCHARS,arg); if(parser.GetParam(arg,buffer,PROP_TEXT) && strcmp(arg,NIHIL_PROP)) text->SetPropValue(TEXT,arg); if(parser.GetParam(assigntable,buffer,PROP_ASSIGNTABLE) && strcmp(assigntable,NIHIL_PROP) && parser.GetParam(assignfield,buffer,PROP_ASSIGNFIELD) && strcmp(assignfield,NIHIL_PROP)) { VDKXTable *table = NULL; text->SetPropValue(ASSIGNTABLE,assigntable); text->SetPropValue(ASSIGNFIELD,assignfield); // search for table on xdb TableList *tlist = TheApp->theXdb->TList(); TableListIterator li(*tlist); for(;li;li++) { char* dbname = (char*) li.current()->Name(); if(!strcmp(assigntable,get_shortfilename(dbname))) { table = li.current(); break; } } if(table && text->AssignTableField(table,assignfield) && table->Active && (table->First() == XB_NO_ERROR)) text->Read(); } // pack widget to container return owner->PackToSelf(text, container, buffer, parser); } else return false; return true; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); VDKTable *table = new VDKTable(inspector,3,2); // table->SetSize(300,-1); hidden = new VDKCheckButton(inspector,_(wi_widget_prompts[16])); table->AddToCell(hidden,0,0); hidden->Checked = GetProp(HIDDEN) == True; // this after (so no signal hang) hidden->Parent(this); SignalConnect(hidden,"toggled",&CLASS::OnSetHidden); editable = new VDKCheckButton(inspector,_(wi_widget_prompts[2])); table->AddToCell(editable,0,1); editable->Checked = GetProp(EDITABLE) == True; // this after (so no signal hang) editable->Parent(this); SignalConnect(editable,"toggled",&CLASS::OnSetEditable); char* ttitle[2] = { N_("Tables"), 0 }; tablelist = new VDKCustomList(inspector,1,ttitle,GTK_SELECTION_SINGLE); // tablelist->SetSize(150,80); table->AddToCell(tablelist,1,0); tablelist->Parent(this); SignalConnect(tablelist,"select_row",&CLASS::OnTableListSelectRow,false); SignalConnect(tablelist,"unselect_row",&CLASS::OnTableListUnselectRow,false); char* ftitle[2] = { N_("Fields"), 0 }; fieldlist = new VDKCustomList(inspector,1,ftitle,GTK_SELECTION_SINGLE); // fieldlist->SetSize(105,80); table->AddToCell(fieldlist,1,1); fieldlist->Parent(this); assignButton = new VDKCustomButton(inspector,_("Assign to table field")); table->AddToCell(assignButton,2,0); assignButton->Parent(this); assignButton->Enabled = false; assignButton->SetTip(_("Selecting \"nihil\" will reset field assignement")); SignalConnect(assignButton,"clicked",&CLASS::OnAssignButtonClicked); bframe->Add(table,l_justify,false,false,false); ::LoadTableList(tablelist,TheApp->theXdb,GetProp(ASSIGNTABLE)); return bframe; } /* These global functions are used by all xdb vdkbobjects wrappers */ void LoadTableList(VDKCustomList* tablelist,VDKXDatabase* xdb, char* tablename) { int t = 0, ndx = 0; TableList* tlist = xdb->TList(); if(!tlist || (!tlist->size()) ) return; TableListIterator li(*tlist); for(;li;li++,t++) { VDKXTable* table = li.current(); char* dbName = table->Name(); if(!strcmp(tablename,get_shortfilename(dbName))) ndx = t; tablelist->AddRow(&dbName); } tablelist->SelectRow(ndx,0); // should scroll into right position // but doesn't work well GtkCList* clist = GTK_CLIST(tablelist->CustomWidget()); if(!gtk_clist_row_is_visible (clist,ndx)) gtk_clist_moveto (clist,ndx,0,0.5,0.5); } void LoadFieldList(VDKCustomList *fieldlist, char* tablename, VDKXDatabase* xdb, char* fieldname) { int t = 0, ndx = 0; char name[11]; char* columns[1]; VDKXTable* table = NULL; fieldlist->Clear(); table = tablename ? (*xdb)[tablename] : NULL; if(!table) return ; columns[0] = NIHIL_PROP; fieldlist->AddRow(columns); int fn = table->FieldCount(); for(t = 0; t < fn; t++) { sprintf(name,"%s",table->GetFieldName(t)); if(!strcmp(name,fieldname)) ndx = t+1; columns[0] = name; fieldlist->AddRow(columns); } fieldlist->SelectRow(ndx,0); // should scroll into right position // but doesn't work well GtkCList* clist = GTK_CLIST(fieldlist->CustomWidget()); if(!gtk_clist_row_is_visible (clist,ndx)) gtk_clist_moveto (clist,ndx,0,0.5,0.5); return ; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnTableListSelectRow(VDKObject*) { int ndx = tablelist->Selected.Row(); if(ndx < 0) { assignButton->Enabled = false; return true; } else { Tuple tuple = tablelist->Tuples[ndx]; LoadFieldList(fieldlist,(char*) tuple[0],TheApp->theXdb, GetProp(ASSIGNFIELD)); assignButton->Enabled = true; } return true; } /* */ bool CLASS::OnTableListUnselectRow(VDKObject*) { fieldlist->Clear(); assignButton->Enabled = false; return true; } /* */ bool CLASS::OnAssignButtonClicked(VDKObject*) { VDKXTable* table = NULL; VDKXDatabase *xdb = TheApp->theXdb; int tndx = tablelist->Selected.Row(); int fndx = fieldlist->Selected.Row(); char* tname = NULL; char* fname = NULL; if( (tndx < 0) || (fndx < 0)) return true; Tuple ttuple = tablelist->Tuples[tndx]; Tuple ftuple = fieldlist->Tuples[fndx]; tname = (char*) ttuple[0]; fname = (char*) ftuple[0]; // clears field Text = ""; // reset the field if(!strcmp(fname,NIHIL_PROP)) { SetPropValue(ASSIGNTABLE,NIHIL_PROP); SetPropValue(ASSIGNFIELD,NIHIL_PROP); return true; } table = (*xdb)[tname]; if(!table) return true; if(AssignTableField(table,fname)) { xbShort fno; if(table->Active && (table->First() == XB_NO_ERROR)) Read(); SetPropValue(ASSIGNTABLE,get_shortfilename(tname)); SetPropValue(ASSIGNFIELD,fname); fno = table->GetFieldNo(fname); if(fno >= 0) { xbShort flen = table->GetFieldLen(fno); xbShort type = table->GetFieldType(fno); // two more bytes to dates for // mm-dd-yyyy format if(type == 'D') flen += 2; sprintf(buff,"%d",flen); SetPropValue(MAXCHARS,buff); } inspector->FormNeedToBeChanged(); } else { sprintf(buff,_("Couldn't assign to field \"%s\" on table %s"), fname,tname); Owner()->Application()->VDKMessageBox( APPNAME, buff, VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 5000); // warns user } return true; } /* */ bool CLASS::OnSetHidden(VDKObject*) { SetPropValue(HIDDEN, hidden->Checked ? CHECK_TRUE : CHECK_FALSE); Hidden = hidden->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } /* */ bool CLASS::OnSetEditable(VDKObject*) { SetPropValue(EDITABLE, editable->Checked ? CHECK_TRUE : CHECK_FALSE); Editable = editable->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } #endif vdkbuilder2-2.4.0/vdkbuilder/vdkb_xmemo.cc0000644000000000000000000003417710022113241014154 /* * =========================== * VDK Builder * Version 0.1.1 * Revision 0.0 * March 1999 * =========================== * * Copyright (C) 1998, Mario Motta * Developed by Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-130 */ #if HAVE_CONFIG_H #include #endif #if USE_XDB #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include #include #include #include #include #include #include #include /* ================================ symbolic constants to templatize a bit ================================ */ // for methods and other stuff #define CLASS VDKBXMemo // put here vdk class name string #define VDK_CLASS "VDKXMemo" // put here vdk class name #define VDK_ANCESTOR VDKXMemo // put here here the widget will be named // (name+counter) #define VDK_WIDGET "xmemo" extern char* wi_widget_prompts[]; static char buff[128]; extern VDKBuilder* TheApp; void LoadTableList(VDKCustomList* tlist, VDKXDatabase* xdb, char* tablename); void LoadFieldList(VDKCustomList *fieldlist, char* tablename, VDKXDatabase* xdb, char* fieldname); // used to autogenerate default // labelbutton names and captions int CLASS::Counter = 0; /* label properties names */ char* vdkxmemo_props[] = { EDITABLE,WORDWRAP,ASSIGNTABLE,ASSIGNFIELD,0 }; /* text widget signal names && nicknames Default response method name will be made by: On. For instance if object name = and nickname = default response method name will be: */ char* vdkxmemo_signals[] = { SIGNAL_REALIZED,0 }; char* vdkxmemo_nicknames[] = { NICK_REALIZED,0 }; ////////////////////////////////////////////////// // dynamic tables DEFINE_SIGNAL_LIST(CLASS,VDK_ANCESTOR); DEFINE_EVENT_LIST(CLASS,VDK_ANCESTOR); /////////////////////////////////////////////////// /* - constructor */ CLASS::CLASS(char* name, VDKForm* owner): VDK_ANCESTOR(owner),VDKBObject(name) { int t; // newly constructed widget counter is incremented // each time Counter++; // assign this to VDKBObject member. object = this; // add to VDKBObject properties list label button properties // names. (Others props are prepended by VDKBObject constructor) for(t=0; vdkxmemo_props[t]; t++) proplist.add(VDKBProperty(vdkxmemo_props[t])); // add to VDKBObject signal list signals for(t=0; vdkxmemo_signals[t]; t++) siglist.add(VDKBSignal(vdkxmemo_signals[t], this, vdkxmemo_nicknames[t])); SetPropValue(EDITABLE,CHECK_TRUE); SetPropValue(WORDWRAP,CHECK_FALSE); // connects events. CONNECT_COMMON_EVENTS; // makes a pop menu common to all widgets (in vdkb_widpopmenu.cc/h) // this pop menu will be popped at righ button press event. popmenu = new VDKBWidgetPopMenu(this); } //////////////////////////////////////////////////////////////// // // WRITER TO .FRM FILE // /////////////////////////////////////////////////////////////// /* Writes a .frm format representation of label button widget This virtual function is called by VDKBForm::WriteBoxesOnFrm() a recursive algorithm that scans VDKBForm widget tree. */ void CLASS::WriteOnFrm(FILE* fp, VDKBObject* parentobj) { // first of all call ancestor to write common properties VDKBObject::WriteOnFrm(fp,parentobj); /* fprintf(fp,"\n\t%s\"%s\";", PROP_EDITABLE,(char*) GetProp(EDITABLE)); */ /* fprintf(fp,"\n\t%s%s;", PROP_WORDWRAP,(char*) GetProp(WORDWRAP)); */ fprintf(fp,"\n\t%s%s;", PROP_ASSIGNTABLE, (char*) GetProp(ASSIGNTABLE)); fprintf(fp,"\n\t%s%s;", PROP_ASSIGNFIELD, (char*) GetProp(ASSIGNFIELD)); } ////////////////////////////////////////////////////////////////// // // PREPARE GUI WIDGETS // ////////////////////////////////////////////////////////////////// /* This method is called by global MakeWidget() in vdkb_design.cc MakeWidget() scans a table that maps class id's with each static MakeWidget() for each class. Class id's are generated during clicks on widget palette. On return: 0 - successfull 1 - unsupported widget 2 - target is not a container */ int CLASS::MakeWidget(VDKBGuiForm* owner, GdkEvent* ev) { CLASS* text = NULL; // widget name generation failed if(!owner->GenerateWidgetName(buff,VDK_WIDGET,&CLASS::Counter)) // unauthorized operation return 2; else text = new CLASS(buff,owner); // add widget to form return owner->AddToSelf(text,ev); } /* This is called by a global CreateSource() in vdkb_parser.cc. CreateSource() scans a table that maps class names with each static CreateSource() in widget class. */ char* CLASS::CreateSource(char* buffer,VDKBParser& parser) { char* source; char obj_name[128]; char obj_parent[128]; char obj_editable[16]; char arg[64]; char tmp[256]; char assigntable[256],assignfield[256]; // gets widget name and parent name if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return NULL; source = new char[4096]; /* if(parser.GetParam(obj_editable,buffer,PROP_EDITABLE) && strcmp(obj_editable,NIHIL_PROP)) ; else strcpy(obj_editable,CHECK_TRUE); */ parser.CheckXDBSupport(0); // checks for contructing // sprintf(tmp,"\n%s = new %s(this,%s);", obj_name,VDK_CLASS,obj_editable); sprintf(tmp,"\n%s = new %s(this);", obj_name,VDK_CLASS); strcpy(source,tmp); /////////////////////////////////////// // call ancestor to set common properties char* props = VDKBObject::CreateSource(buffer,parser,obj_name); if(props) { strcat(source,props); delete[] props; } // get label button props if(parser.GetParam(arg,buffer,PROP_WORDWRAP) && strcmp(arg,NIHIL_PROP)) { sprintf(tmp,"\n%s->%s = %s;", obj_name,WORDWRAP,arg); strcat(source,tmp); } // get table and field to assign if(parser.GetParam(assigntable,buffer,PROP_ASSIGNTABLE) && strcmp(assigntable,NIHIL_PROP) && parser.GetParam(assignfield,buffer,PROP_ASSIGNFIELD) && strcmp(assignfield,NIHIL_PROP)) parser.WriteXDBAssignCode(obj_name, assigntable, assignfield, source, tmp); // get code that adds widget to container parser.WriteCodeToPack(obj_parent,obj_name,source,buffer,tmp); /* visible property must be wrote after adding it to a parent container. That's the reason why is written here and not in vdkb_object class as should be. Written only if == false */ parser.WriteVisible( obj_name, arg, source,buffer, tmp); return source; } /* Invoked by VDKBGuiForm::MakeGuiObjects() during gui creation reading .frm file. MakeGuiObjects() scans .frm file and call a global CreateWidget() that scans a table that maps class names with each static CreateWidget() in widget class. */ bool CLASS::CreateWidget(VDKBGuiForm* owner, char* buffer,VDKBParser& parser) { char obj_name[128]; char obj_parent[128]; char arg[64]; char assigntable[256],assignfield[256]; CLASS* text = NULL; // get widget name and parent if(! parser.GetNameAndParent(buffer, obj_name, obj_parent)) return false; VDKObject* p = owner->ChildWithName(obj_parent); VDKBEventContainer* container = p ? dynamic_cast(p) : (VDKBEventContainer*) NULL; if(container) { VDKXTable *table = NULL; text = new CLASS(obj_name,owner); /* if(parser.GetParam(arg,buffer,PROP_WORDWRAP) && strcmp(arg,NIHIL_PROP)) { text->WordWrap = !strcmp(arg,CHECK_TRUE); text->SetPropValue(WORDWRAP,arg); } */ if(parser.GetParam(assigntable,buffer,PROP_ASSIGNTABLE) && strcmp(assigntable,NIHIL_PROP) && parser.GetParam(assignfield,buffer,PROP_ASSIGNFIELD) && strcmp(assignfield,NIHIL_PROP)) { text->SetPropValue(ASSIGNTABLE,assigntable); text->SetPropValue(ASSIGNFIELD,assignfield); // search for table on xdb TableList *tlist = TheApp->theXdb->TList(); TableListIterator li(*tlist); for(;li;li++) { char* dbname = (char*) li.current()->Name(); if(!strcmp(assigntable,get_shortfilename(dbname))) { table = li.current(); break; } } } // pack widget to container bool result = owner->PackToSelf(text, container, buffer, parser); // realize the widget before inserting text if(!GTK_WIDGET_REALIZED(text->WrappedWidget())) gtk_widget_realize(text->WrappedWidget()); if(result && GTK_WIDGET_REALIZED(text->WrappedWidget()) && table && text->AssignTableField(table,assignfield) && table->Active && (table->First() == XB_NO_ERROR) ) text->Read(); return result; } else return false; } ///////////////////////////////////////////////////// // OBJECT INSPECTOR MANAGEMENT //////////////////////////////////////////////////// /* */ /* */ VDKObjectContainer* CLASS::ExtraWidget(VDKBObjectInspector* isp) { VDKString True = CHECK_TRUE; inspector = isp; VDKFrame* bframe = new VDKFrame(inspector,NULL,v_box,shadow_etched_in); VDKTable *table = new VDKTable(inspector,3,2); table->SetSize(300,-1); wrap = new VDKCheckButton(inspector,_("WordWrap")); table->AddToCell(wrap,0,0); wrap->Visible = false; // wrap->Checked = GetProp(WORDWRAP) == True; // this after (so no signal hang) // wrap->Parent(this); // SignalConnect(wrap,"toggled",&CLASS::OnSetWordWrap); editable = new VDKCheckButton(inspector,_(wi_widget_prompts[2])); table->AddToCell(editable,0,1); editable->Visible = false; //editable->Checked = GetProp(EDITABLE) == True; // this after (so no signal hang) //editable->Parent(this); // SignalConnect(editable,"toggled",&CLASS::OnSetEditable); char* ttitle[2] = { N_("Tables"), 0 }; tablelist = new VDKCustomList(inspector,1,ttitle,GTK_SELECTION_SINGLE); // tablelist->SetSize(150,80); table->AddToCell(tablelist,1,0); tablelist->Parent(this); SignalConnect(tablelist,"select_row",&CLASS::OnTableListSelectRow,false); SignalConnect(tablelist,"unselect_row",&CLASS::OnTableListUnselectRow,false); char* ftitle[2] = { N_("Fields"), 0 }; fieldlist = new VDKCustomList(inspector,1,ftitle,GTK_SELECTION_SINGLE); // fieldlist->SetSize(105,80); table->AddToCell(fieldlist,1,1); fieldlist->Parent(this); assignButton = new VDKCustomButton(inspector,_("Assign to table field")); table->AddToCell(assignButton,2,0); assignButton->Parent(this); assignButton->Enabled = false; assignButton->SetTip(_("Selecting \"nihil\" will reset field assignement")); SignalConnect(assignButton,"clicked",&CLASS::OnAssignButtonClicked); bframe->Add(table,l_justify,false,false,false); ::LoadTableList(tablelist,TheApp->theXdb,GetProp(ASSIGNTABLE)); return bframe; } ////////////////////////////////////////////////////// // These response methods actually change both // properties on widget and gui widget properties ////////////////////////////////////////////////////// /* */ bool CLASS::OnSetWordWrap(VDKObject*) { /* SetPropValue(WORDWRAP, wrap->Checked ? CHECK_TRUE : CHECK_FALSE); WordWrap = wrap->Checked ? true : false; inspector->FormNeedToBeChanged(); */ return true; } /* */ bool CLASS::OnSetEditable(VDKObject*) { SetPropValue(EDITABLE, editable->Checked ? CHECK_TRUE : CHECK_FALSE); Editable = editable->Checked ? true : false; inspector->FormNeedToBeChanged(); return true; } bool CLASS::OnTableListSelectRow(VDKObject*) { int ndx = tablelist->Selected.Row(); if(ndx < 0) { assignButton->Enabled = false; return true; } else { Tuple tuple = tablelist->Tuples[ndx]; LoadFieldList(fieldlist,(char*) tuple[0],TheApp->theXdb, GetProp(ASSIGNFIELD)); assignButton->Enabled = true; } return true; } /* */ bool CLASS::OnTableListUnselectRow(VDKObject*) { fieldlist->Clear(); assignButton->Enabled = false; return true; } /* */ bool CLASS::OnAssignButtonClicked(VDKObject*) { VDKXTable* table = NULL; VDKXDatabase *xdb = TheApp->theXdb; int tndx = tablelist->Selected.Row(); int fndx = fieldlist->Selected.Row(); char* tname = NULL; char* fname = NULL; if( (tndx < 0) || (fndx < 0)) return true; Tuple ttuple = tablelist->Tuples[tndx]; Tuple ftuple = fieldlist->Tuples[fndx]; tname = (char*) ttuple[0]; fname = (char*) ftuple[0]; // clears field Clear(); // reset the field if(!strcmp(fname,NIHIL_PROP)) { SetPropValue(ASSIGNTABLE,NIHIL_PROP); SetPropValue(ASSIGNFIELD,NIHIL_PROP); return true; } table = (*xdb)[tname]; if(!table) return true; if(AssignTableField(table,fname)) { xbShort fno; if(table->Active && (table->First() == XB_NO_ERROR)) Read(); SetPropValue(ASSIGNTABLE,get_shortfilename(tname)); SetPropValue(ASSIGNFIELD,fname); fno = table->GetFieldNo(fname); if(fno >= 0) { xbShort flen = table->GetFieldLen(fno); sprintf(buff,"%d",flen); SetPropValue(MAXCHARS,buff); } inspector->FormNeedToBeChanged(); } else { sprintf(buff,_("Couldn't assign to field \"%s\" on table %s"), fname,tname); Owner()->Application()->VDKMessageBox( APPNAME, buff, VDK_ICONINFORMATION|VDK_OK, _(user_messages[user_ok]), NULL, 5000); // warns user } return true; } #endif vdkbuilder2-2.4.0/vdkbuilder/vdkb_xtDlg.cc0000644000000000000000000002771207365020767014140 /* * =========================== * VDK Builder * Version 1.2 * Revision 0.1 * May 2000 * =========================== * * Copyright (C) 1998,1999 Mario Motta * Developed by Mario Motta * * Based on VDK Library * Copyright (C) 1998, Mario Motta * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * */ #ifdef HAVE_CONFIG_H #include #endif #if USE_XDB #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include #include #include #include /* defining signal and events dynamics tables */ DEFINE_SIGNAL_LIST(Vdkb_xtDlgForm,VDKForm); DEFINE_EVENT_LIST(Vdkb_xtDlgForm,VDKForm); /* defining signal static table */ DEFINE_SIGNAL_MAP(Vdkb_xtDlgForm,VDKForm) ON_SIGNAL(close,clicked_signal,OncloseClick), ON_SIGNAL(addTable,clicked_signal,OnaddTableClick), ON_SIGNAL(addIndex,clicked_signal,OnaddIndexClick), ON_SIGNAL(editTable,clicked_signal,OneditTableClick), ON_SIGNAL(dbTree,select_node_signal,OnSelectNode), ON_SIGNAL(removeTable,clicked_signal,OnRemoveClick), ON_SIGNAL(dbTree,unselect_node_signal,OnUnselectNode) END_SIGNAL_MAP /* statics */ VDKXDatabase* theXdb; extern VDKBuilder* TheApp; static char buff[256]; /* main form GUI setup */ void Vdkb_xtDlgForm::GUISetup(void) { SetSize(400,400); Title = _("VDKXDatabase Dialog"); vbox1 = new VDKBox(this,v_box); Add(vbox1,0,1,1,0); vbox2 = new VDKBox(this,v_box); vbox1->Add(vbox2,0,1,1,0); vbox2->BorderWidth(0); char* dbtitles[2], *ftitles[4]; // tricky way for i18n dbtitles[0] = _("Tables/Indexes"); dbtitles[1] = _("Index Key"); ftitles[0] = _("Field name"); ftitles[1] = _("Type"); ftitles[2] = _("Length"); ftitles[3] = _("Dec"); // dbTree = new VDKCustomTree(this,2, dbtitles, (GtkSelectionMode) 0); dbTree->SetSize(-1,200); dbTree->AutoResize = true; vbox2->Add(dbTree,0,1,1,0); fieldList = new VDKCustomList(this,4, ftitles, GTK_SELECTION_EXTENDED); fieldList->SetSize(-1,100); fieldList->AutoResize = true; vbox2->Add(fieldList,0,1,1,0); separator1 = new VDKSeparator(this,h_separator); vbox1->Add(separator1,0,0,0,0); hbox3 = new VDKBox(this,h_box); hbox3->SetSize(330,30); vbox1->Add(hbox3,0,0,0,0); hbox3->BorderWidth(0); addTable = new VDKCustomButton(this,(char*) NULL, _("Add a table") ,16,(GtkPositionType) 1); addTable->SetTip(_("Add a table to xdb")); hbox3->Add(addTable,0,1,1,0); removeTable = new VDKCustomButton(this,(char*) NULL, _("Remove") ,16,(GtkPositionType) 1); removeTable->Enabled=false; removeTable->SetTip(_("Remove table or index")); hbox3->Add(removeTable,0,1,1,0); addIndex = new VDKCustomButton(this,(char*) NULL, _("Add index"), 16,(GtkPositionType) 1); addIndex->Enabled=false; addIndex->SetTip(_("Add an index to table")); hbox3->Add(addIndex,0,1,1,0); editTable = new VDKCustomButton(this,(char*) NULL, _("Active/inactive") ,16,(GtkPositionType) 1); editTable->SetTip(_( "Setting table \"active\" makes vdkbuilder generate\n\ the code to open the table at run time")); editTable->Enabled=false; hbox3->Add(editTable,0,1,1,0); close = new VDKCustomButton(this,(char*) NULL, _("Close") ,16,(GtkPositionType) 1); close->SetTip(_("Close dialog")); hbox3->Add(close,0,1,1,0); statusbar = new VDKStatusbar(this); statusbar->SetSize(330,25); Add(statusbar,r_justify,false,false,0); } /* main form constructor */ Vdkb_xtDlgForm::Vdkb_xtDlgForm(VDKForm* owner, char* title): VDKForm(owner,title) { Changed = false; } /* main form destructor */ Vdkb_xtDlgForm::~Vdkb_xtDlgForm() { } /* main form setup */ void Vdkb_xtDlgForm::Setup(void) { GUISetup(); // put your code below here theXdb = TheApp->theXdb; // load tables if any LoadTables(); } /* */ static char* node_type = "TI"; // T for tables, I for indices void Vdkb_xtDlgForm::LoadTables() { TableList* tlist = theXdb->TList(); // clears tree dbTree->Clear(); if(!tlist->size()) { statusbar->Push(_("No tables loaded")); return; } TableListIterator li(*tlist); dbTree->Freeze(); for(;li;li++) { // add each table as root one VDKTreeNode node; VDKXTable* table = li.current(); IndexList* nlist = table->NdxList(); char* dbName = table->Name(); char* dbKey = table->Active ? (char*) _("ACTIVE") : (char*)_("NOT ACTIVE"); char* columns[2]; columns[0] = dbName; columns[1] = dbKey; node = dbTree->AddNode(columns,(VDKTreeNode) NULL,true,false); // sets 'T' as node data gtk_ctree_node_set_row_data(GTK_CTREE(dbTree->CustomWidget()), node, (gpointer) &node_type[0]); if(node && (nlist->size() > 0) ) { IndexListIterator ln(*nlist); for(;ln;ln++) { char* ndxName = ln.current()->Name(); char* ndxKey = (char*) ln.current()->Key(); columns[0] = ndxName; columns[1] = ndxKey; VDKTreeNode index_node = dbTree->AddNode(columns, node,true,true); // sets 'I' as node data gtk_ctree_node_set_row_data(GTK_CTREE(dbTree->CustomWidget()), index_node, (gpointer) &node_type[1]); } } } dbTree->Thaw(); sprintf(buff,_("%3d tables loaded"),tlist->size()); statusbar->Push(buff); } /* */ bool Vdkb_xtDlgForm::OnSelectNode(VDKObject* sender) { VDKTreeNode node = dbTree->SelectedNode; bool isTable = false; if(!node) return true; else { char* type = (char*) gtk_ctree_node_get_row_data( GTK_CTREE(dbTree->CustomWidget()), node); isTable = *type == 'T'; addIndex->Enabled = isTable; editTable->Enabled = isTable; removeTable->Enabled = true; } fieldList->Clear(); if(isTable) // load fields { int t = 0; char name[11],type[2],length[8],decimal[32]; char* columns[4]; xbShort fn = 0; VDKXTable* table = NULL; char* dbname = dbTree->Key(node); table = dbname ? (*theXdb)[dbname] : NULL; if(!table) return true; fn = table->FieldCount(); for(; t < fn; t++) { sprintf(name,"%s",table->GetFieldName(t)); columns[0] = name; type[0] = table->GetFieldType(t); type[1] = '\0'; columns[1] = type; sprintf(length,"%d",table->GetFieldLen(t)); columns[2] = length; sprintf(decimal,"%d",table->GetFieldDecimal(t)); columns[3] = decimal; fieldList->AddRow(columns); } } return true; } /* */ bool Vdkb_xtDlgForm::OnUnselectNode(VDKObject* sender) { addIndex->Enabled = false; removeTable->Enabled = false; editTable->Enabled = false; return true; } //signal response method bool Vdkb_xtDlgForm::OneditTableClick(VDKObject* sender) { VDKTreeNode node = dbTree->SelectedNode; if(!node) return true; else { char* dbname = dbTree->Key(node); VDKXTable* table = (*theXdb)[dbname]; // toggle table active flag if(table) { table->Active = table->Active ? false : true; char* text = table->Active ? (char*)_("ACTIVE") : (char*) _("NOT ACTIVE"); gtk_ctree_node_set_text(GTK_CTREE(dbTree->CustomWidget()), node,1,text); Changed = true; } } return true; } //signal response method bool Vdkb_xtDlgForm::OnaddIndexClick(VDKObject* sender) { VDKTreeNode node = dbTree->SelectedNode; FileStringArray selections; VDKXTable* table = NULL; char* dbname; if(!node) return true; else { dbname = dbTree->Key(node); table = (*theXdb)[dbname]; } if(!table) return true; VDKFileDialog *dlg = new VDKFileDialog(this, &selections, (char*) _("VDKXTableIndex opening")); dlg->Filter = "*.ndx"; dlg->ShowModal(); for( int t = 0; t < selections.size(); t++) { // store only relative path // absolute path will be composed with // XDB_DATA_PATH symbolic constant // during code generation /* char* local = new char[strlen((char*) selections[t])+1]; strcpy(local,(char*) selections[t]); char* relative = get_shortfilename(local); */ VDKXTableIndex *index = new VDKXTableIndex(table,(char*) selections[t] /*relative*/); xbShort rc = index->Open(); if(rc != XB_NO_ERROR) table->RemoveIndex((char*) selections[t]/*relative*/); else { LoadTables(); Changed = true; } // delete[] local; } return true; } /* */ bool Vdkb_xtDlgForm::OnRemoveClick(VDKObject* sender) { VDKTreeNode node = dbTree->SelectedNode; bool isTable = false; if(!node) return true; else { char* type = (char*) gtk_ctree_node_get_row_data( GTK_CTREE(dbTree->CustomWidget()), node); isTable = *type == 'T'; } if(isTable) { char* dbname = dbTree->Key(node); if(theXdb->RemoveTable(dbname)) { sprintf(buff,_("Table:%s removed"),dbname); statusbar->Push(buff); LoadTables(); Changed = true; } } else { // get parent node VDKTreeNode parent= GTK_CTREE_ROW(node)->parent; if(parent) { char* ndxname = dbTree->Key(node); char* dbname = dbTree->Key(parent); VDKXTable* table = (*theXdb)[dbname]; if(table && table->RemoveIndex(ndxname)) { sprintf(buff,_("Index:%s removed"),ndxname); statusbar->Push(buff); LoadTables(); Changed = true; } } } return true; } //signal response method bool Vdkb_xtDlgForm::OnaddTableClick(VDKObject* sender) { FileStringArray selections; VDKFileDialog *dlg = new VDKFileDialog(this, &selections, (char*) _("VDKXTable opening")); dlg->Filter = "*.dbf"; dlg->ShowModal(); for( int t = 0; t < selections.size(); t++) { // store only relative path // absolute path will be composed with // XDB_DATA_PATH symbolic constant // during code generation /* char* local = new char[strlen((char*) selections[t])+1]; strcpy(local,(char*) selections[t]); char* relative = get_shortfilename(local); */ VDKXTable *table = new VDKXTable(theXdb,selections[t]/*relative*/); xbShort rc = table->Open(); if(rc != XB_NO_ERROR) theXdb->RemoveTable(selections[t]/*relative*/); else { LoadTables(); Changed = true; } // delete[] local; } return true; } //asks user before closing extern int AskUserToSaveFile(char* name); extern bool SaveXdbOptions(VDKXDatabase* db, char* filename); bool Vdkb_xtDlgForm::CanClose(void) { if(Changed) { VDKBMainForm* vdkb = dynamic_cast(Owner()); if(vdkb) { VDKBProjectManager* prjman = vdkb->PrjManager(); if(prjman) { VDKBProject* prj = prjman->Project(); sprintf(buff,"%s.prj.xdb",(char*) prj->PathName); if(AskUserToSaveFile(buff)) { SaveXdbOptions(theXdb, (char*) prj->PathName); // massively invalidates all GUI designer GuiFormListIterator li(*(prjman->FormList())); for(;li;li++) li.current()->Changed = true; } } } } return true; } //signal response method bool Vdkb_xtDlgForm::OncloseClick(VDKObject* sender) { Close(); return true; } #endif vdkbuilder2-2.4.0/vdkbuilder/vdkxpmbrowser.cc0000644000000000000000000000312207252426372014747 #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include //#define _(str) gettext(str) #define _(str) \ ( g_utf8_validate(gettext(str),-1,NULL) ? \ gettext(str) : \ g_locale_to_utf8(gettext(str),-1,NULL,NULL,NULL) ) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #else #include #endif #include DEFINE_SIGNAL_MAP(VDKXpmBrowser,VDKFileDialog) ON_SIGNAL(filelist,select_row_signal,OpenClick) END_SIGNAL_MAP VDKXpmBrowser::VDKXpmBrowser(VDKForm* owner, FileStringArray* selections, char* title, GtkWindowType display): VDKFileDialog(owner,selections,title,display) { gtk_clist_set_selection_mode (GTK_CLIST(filelist->CustomWidget()), GTK_SELECTION_SINGLE); VDKFrame* frame = new VDKFrame(this,_("Preview"),h_box, shadow_in); pixmap = new VDKPixmap(this,(char*) NULL); pixmap->SetSize(-1,50); frame->Add(pixmap); Add(frame); Filter = "*.xpm"; gtk_signal_connect( GTK_OBJECT(filelist->CustomWidget()), "select_row", GTK_SIGNAL_FUNC(VDKXpmBrowser::XpmSelected), (gpointer) this); } /* */ void VDKXpmBrowser::XpmSelected(GtkWidget* , gint row, gint column, GdkEvent *event, gpointer gp) { static char buff[256]; VDKXpmBrowser *browser = reinterpret_cast(gp); int j = browser->filelist->Selected.Row(); if(j >= 0) { sprintf(buff,"%s/%s",(char*) browser->pcwd, (char*) browser->filelist->Tuples[j][0]); browser->pixmap->SetPixmap(buff); } } /* stops signal here */ bool VDKXpmBrowser::OpenClick(VDKObject*) { return true; } vdkbuilder2-2.4.0/vdkbuilder/pixmaps/0000777000000000000000000000000010052402421013247 5vdkbuilder2-2.4.0/vdkbuilder/pixmaps/Makefile.in0000644000000000000000000002446210052401333015241 # Makefile.in generated by automake 1.7.8 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GENCAT = @GENCAT@ GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLBISON = @INTLBISON@ INTLLIBS = @INTLLIBS@ INTLOBJS = @INTLOBJS@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PLUGINS_LIBDIR = @PLUGINS_LIBDIR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_NLS = @USE_NLS@ VDK_CFLAGS = @VDK_CFLAGS@ VDK_CONFIG = @VDK_CONFIG@ VDK_LIBS = @VDK_LIBS@ VDK_VERSION_MAJOR = @VDK_VERSION_MAJOR@ VDK_VERSION_MICRO = @VDK_VERSION_MICRO@ VDK_VERSION_MINOR = @VDK_VERSION_MINOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ vdkxdbpath = @vdkxdbpath@ EXTRA_DIST = \ acsupport.xpm\ activate_big.xpm\ add.xpm\ addtoprj.xpm\ addtoprj_d.xpm\ app_wiz.xpm\ app_wizh.xpm\ apple.xpm\ button.xpm\ c_src.xpm\ canvas.xpm\ checkbutton.xpm\ classdecl.xpm\ classdef.xpm\ colorseldialog.xpm\ combo.xpm\ compo_wiz.xpm\ compo_wizh.xpm\ coolbar.xpm\ cube.xpm\ cursor.xpm\ emacs.xpm\ entry.xpm\ exec.xpm\ exech.xpm\ fileclose.xpm\ filesaveas.xpm\ finish.xpm\ fixed.xpm\ fontseldialog.xpm\ formprops.xpm\ frame.xpm\ ghost.xpm\ gnome.xpm\ gnome_wiz.xpm\ gnomededit.xpm\ gnomeentry.xpm\ gnome-search.xpm\ grid.xpm\ h_src.xpm\ handlebox.xpm\ hbox.xpm\ hpaned.xpm\ hrbgroup.xpm\ hseparator.xpm\ label.xpm\ leftarrow.xpm\ list.xpm\ loadfile.xpm\ loadprj.xpm\ logo.xpm\ jumpto.xpm\ maker.xpm\ makerkill.xpm\ menu.xpm\ menubar.xpm\ new.xpm\ new_prj_big.xpm\ newform.xpm\ mininewform.xpm\ newprj.xpm\ newunit.xpm\ notebook.xpm\ open.xpm\ openfiledlg.old.xpm\ openfiledlg.xpm\ openprj.xpm\ packer.xpm\ pixbutton.xpm\ pixmap.xpm\ prj_node.xpm\ progressbar.xpm\ quit.xpm\ radiobutton.xpm\ rbgroup.xpm\ redo.xpm\ refresh.xpm\ remfromprj.xpm\ remove_big.xpm\ repeatsearch.xpm\ rightarrow.xpm\ run.xpm\ savefile.xpm\ savefiledlg.xpm\ saveprj.xpm\ scale.xpm\ scrolledwindow.xpm\ search.xpm\ selector.xpm\ simpson1.orig.xpm\ simpson1.xpm\ simpson2.xpm\ simpson3.xpm\ simpson4.xpm\ simpson5.xpm\ showln.xpm\ showmsg.xpm\ spinbutton.xpm\ statusbar.xpm\ stock_button_ok.xpm\ stop.xpm\ table.xpm\ terminal.xpm\ text.xpm\ tick.xpm\ timer.xpm\ togglesyntax.xpm\ tree.xpm\ togglech.xpm\ toggleformunits.xpm\ toolbar.xpm\ undo.xpm\ unit_node.xpm\ vbox.xpm\ vdkb.xpm\ viewforms.xpm\ viewunits.xpm\ vpaned.xpm\ vseparator.xpm\ wizard_wiz.xpm\ wizard_wizh.xpm\ class.xpm\ private.xpm\ public.xpm\ protected.xpm\ addfunc.xpm\ \ help.xpm\ options.xpm\ convert.xpm\ project16.xpm\ debug.xpm\ edit.xpm\ copy.xpm\ cut.xpm\ paste.xpm\ paste_others.xpm\ trash.xpm\ trash16.xpm\ cut16.xpm\ copy16.xpm\ paste16.xpm\ paste_others16.xpm\ parent.xpm\ font16.xpm\ setcolor16.xpm\ widname.xpm\ repack.xpm\ calltip.xpm\ tag.xpm\ border.xpm\ shadow.xpm\ rowspace.xpm\ rright.xpm\ style.xpm\ caption.xpm\ relief.xpm\ dock.xpm subdir = vdkbuilder/pixmaps ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = DIST_SOURCES = DIST_COMMON = $(srcdir)/Makefile.in Makefile.am all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu vdkbuilder/pixmaps/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: tags: TAGS TAGS: ctags: CTAGS CTAGS: DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: info: info-am info-am: install-data-am: install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am install-info \ install-info-am install-man install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vdkbuilder2-2.4.0/vdkbuilder/pixmaps/Makefile.am0000644000000000000000000000433407475376557015266 EXTRA_DIST = \ acsupport.xpm\ activate_big.xpm\ add.xpm\ addtoprj.xpm\ addtoprj_d.xpm\ app_wiz.xpm\ app_wizh.xpm\ apple.xpm\ button.xpm\ c_src.xpm\ canvas.xpm\ checkbutton.xpm\ classdecl.xpm\ classdef.xpm\ colorseldialog.xpm\ combo.xpm\ compo_wiz.xpm\ compo_wizh.xpm\ coolbar.xpm\ cube.xpm\ cursor.xpm\ emacs.xpm\ entry.xpm\ exec.xpm\ exech.xpm\ fileclose.xpm\ filesaveas.xpm\ finish.xpm\ fixed.xpm\ fontseldialog.xpm\ formprops.xpm\ frame.xpm\ ghost.xpm\ gnome.xpm\ gnome_wiz.xpm\ gnomededit.xpm\ gnomeentry.xpm\ gnome-search.xpm\ grid.xpm\ h_src.xpm\ handlebox.xpm\ hbox.xpm\ hpaned.xpm\ hrbgroup.xpm\ hseparator.xpm\ label.xpm\ leftarrow.xpm\ list.xpm\ loadfile.xpm\ loadprj.xpm\ logo.xpm\ jumpto.xpm\ maker.xpm\ makerkill.xpm\ menu.xpm\ menubar.xpm\ new.xpm\ new_prj_big.xpm\ newform.xpm\ mininewform.xpm\ newprj.xpm\ newunit.xpm\ notebook.xpm\ open.xpm\ openfiledlg.old.xpm\ openfiledlg.xpm\ openprj.xpm\ packer.xpm\ pixbutton.xpm\ pixmap.xpm\ prj_node.xpm\ progressbar.xpm\ quit.xpm\ radiobutton.xpm\ rbgroup.xpm\ redo.xpm\ refresh.xpm\ remfromprj.xpm\ remove_big.xpm\ repeatsearch.xpm\ rightarrow.xpm\ run.xpm\ savefile.xpm\ savefiledlg.xpm\ saveprj.xpm\ scale.xpm\ scrolledwindow.xpm\ search.xpm\ selector.xpm\ simpson1.orig.xpm\ simpson1.xpm\ simpson2.xpm\ simpson3.xpm\ simpson4.xpm\ simpson5.xpm\ showln.xpm\ showmsg.xpm\ spinbutton.xpm\ statusbar.xpm\ stock_button_ok.xpm\ stop.xpm\ table.xpm\ terminal.xpm\ text.xpm\ tick.xpm\ timer.xpm\ togglesyntax.xpm\ tree.xpm\ togglech.xpm\ toggleformunits.xpm\ toolbar.xpm\ undo.xpm\ unit_node.xpm\ vbox.xpm\ vdkb.xpm\ viewforms.xpm\ viewunits.xpm\ vpaned.xpm\ vseparator.xpm\ wizard_wiz.xpm\ wizard_wizh.xpm\ class.xpm\ private.xpm\ public.xpm\ protected.xpm\ addfunc.xpm\ \ help.xpm\ options.xpm\ convert.xpm\ project16.xpm\ debug.xpm\ edit.xpm\ copy.xpm\ cut.xpm\ paste.xpm\ paste_others.xpm\ trash.xpm\ trash16.xpm\ cut16.xpm\ copy16.xpm\ paste16.xpm\ paste_others16.xpm\ parent.xpm\ font16.xpm\ setcolor16.xpm\ widname.xpm\ repack.xpm\ calltip.xpm\ tag.xpm\ border.xpm\ shadow.xpm\ rowspace.xpm\ rright.xpm\ style.xpm\ caption.xpm\ relief.xpm\ dock.xpm vdkbuilder2-2.4.0/vdkbuilder/pixmaps/acsupport.xpm0000644000000000000000000000103207252426375015753 /* XPM */ static char *acsupport_xpm[]={ "16 16 11 1", ". c None", "h c #808080", "c c #c0c000", "d c #c0c0c0", "b c #808000", "# c #000000", "a c #ffffc0", "e c #0000ff", "f c #585858", "i c #a0a0a4", "g c #ffffff", ".....##...#.....", "...##aa###a##...", ".##aa#bbcbaaa##.", "#aa#bbbbcccbaaa#", "##b#########c###", ".#a#deeedfd#a#..", ".#a#ggggggd###..", ".#a#dgggggg#g#..", ".#a#ggggggd#d##.", ".#a#ddgdgdg#gh#.", ".#a#########di#.", ".#aaaa#dgdgdgi#.", ".#caaa##iiiiii#.", "..##caaa#######.", "....##ca##......", "......##........"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/activate_big.xpm0000644000000000000000000000256407334252124016355 /* XPM */ char *activate_big_xpm[] = { /* width height num_colors chars_per_pixel */ " 45 23 8 1", /* colors */ ". c #000000", "# c #000080", "a c #008000", "b c #00ff00", "c c #808080", "d c #none", "e c #ffff00", "f c #ffffff", /* pixels */ "ddddddddddddddddddddddddddddddddddddddddddddd", "ddddddddddddddddddddddddddddddddddddddddddddd", "ddddddddddddddddbbbbbbbbbbbbbbbbddddddddddddd", "dddddddddddddddbaaaaaaaaaaaaaaaabdddddddddddd", "dddddddddddddddbaccccccccccccc.abdddddddddddd", "dddddddddddddddbac###########d.abdddddddddddd", "ddddddddddddddbbac###########d.abdddddddddddd", "dddddddddddddbaaacfdfdfdfdfdfd.abdddddddddddd", "dddddddddddddbaccccccccfdfdfdd.abdddddddddddd", "dddddddddddddbacefefefcdfdfdfd.abdddddddddddd", "dddddddddddddbacfcccccccdfdfdd.abdddddddddddd", "dddddddddddddbacecfffffdfdfdfd.abdddddddddddd", "dddddddddddddbacfcf####ddfdfdd.abdddddddddddd", "dddddddddddddbacecfffffdfdfdfd.abdddddddddddd", "dddddddddddddbacfcf####ddddddd.abdddddddddddd", "dddddddddddddbacecfffffd.......abdddddddddddd", "dddddddddddddba..cf####d.aaaaaaabdddddddddddd", "dddddddddddddbaaacdddddd.abbbbbbddddddddddddd", "ddddddddddddddbba........abdddddddddddddddddd", "dddddddddddddddbaaaaaaaaaabdddddddddddddddddd", "ddddddddddddddddbbbbbbbbbbddddddddddddddddddd", "ddddddddddddddddddddddddddddddddddddddddddddd", "ddddddddddddddddddddddddddddddddddddddddddddd" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/add.xpm0000644000000000000000000001036307374710425014467 /* XPM */ static char * add_xpm[] = { "24 24 190 2", " c None", ". c #000000", "+ c #030303", "@ c #F6F5F0", "# c #F3E4AE", "$ c #E1BB66", "% c #DEB65B", "& c #F3E7B9", "* c #EED680", "= c #D1940C", "- c #F2E4AD", "; c #F3ECCD", "> c #F5EBC1", ", c #F3EDD1", "' c #986B07", ") c #EFE7C1", "! c #8F6406", "~ c #EFE4B6", "{ c #6A6C6A", "] c #EFE5BA", "^ c #1C211C", "/ c #455345", "( c #4C4F4C", "_ c #B8C1B8", ": c #7E907E", "< c #165116", "[ c #C0AF73", "} c #A3B5A3", "| c #7D927D", "1 c #3B5C3B", "2 c #BCC6BC", "3 c #798979", "4 c #255425", "5 c #005100", "6 c #B5C6B5", "7 c #AEC0AE", "8 c #9EB29E", "9 c #889E88", "0 c #6D836D", "a c #476647", "b c #CED6CE", "c c #98A498", "d c #446444", "e c #002F00", "f c #002B00", "g c #002500", "h c #A9BDA9", "i c #ABBDAB", "j c #A6B9A6", "k c #9BAF9B", "l c #87A087", "m c #799379", "n c #7C927C", "o c #627C62", "p c #B5B9B5", "q c #C6D3C6", "r c #B8C3B8", "s c #859685", "t c #516D51", "u c #3B623B", "v c #376237", "w c #345F34", "x c #3B643B", "y c #95AC95", "z c #93AB93", "A c #8DA68D", "B c #7D987D", "C c #718F71", "D c #759175", "E c #8FA38F", "F c #416241", "G c #7C7E7C", "H c #D2DDD2", "I c #E7EDE7", "J c #E3EAE3", "K c #D2DBD2", "L c #A9B6A9", "M c #7E937E", "N c #617D61", "O c #547454", "P c #517251", "Q c #819C81", "R c #7D977D", "S c #7E987E", "T c #899F89", "U c #8CA08C", "V c #798F79", "W c #5F7A5F", "X c #475647", "Y c #293029", "Z c #CBD9CB", "` c #E2EAE2", " . c #EBF0EB", ".. c #E9EFE9", "+. c #D5E0D5", "@. c #BFCDBF", "#. c #A2B4A2", "$. c #5F7C5F", "%. c #718D71", "&. c #889F88", "*. c #92A992", "=. c #91A691", "-. c #809780", ";. c #718971", ">. c #668066", ",. c #5A755A", "'. c #5A775A", "). c #003E00", "!. c #8C9E8C", "~. c #CCD6CC", "{. c #E4EBE4", "]. c #E0E9E0", "^. c #D7E3D7", "/. c #CFDDCF", "(. c #C9D6C9", "_. c #B8C8B8", ":. c #5C775C", "<. c #ABBBAB", "[. c #99AE99", "}. c #90A790", "|. c #839B83", "1. c #759075", "2. c #6F886F", "3. c #6C856C", "4. c #648064", "5. c #004D00", "6. c #363E35", "7. c #8C9C8C", "8. c #C2CCC2", "9. c #CED8CE", "0. c #D0DCD0", "a. c #CCDACC", "b. c #BECCBE", "c. c #718571", "d. c #5F795F", "e. c #627962", "f. c #92A492", "g. c #819981", "h. c #748F74", "i. c #627D62", "j. c #2B582B", "k. c #30362F", "l. c #2B542B", "m. c #758875", "n. c #A1B0A1", "o. c #B0BFB0", "p. c #647964", "q. c #7A927A", "r. c #345A34", "s. c #546A54", "t. c #859785", "u. c #6A856A", "v. c #2B562B", "w. c #1A1E19", "x. c #547254", "y. c #4D6C4D", "z. c #004700", "A. c #819881", "B. c #375A37", "C. c #4F644F", "D. c #003700", "E. c #001600", "F. c #91A68F", "G. c #90A78F", "H. c #758F75", "I. c #617C61", "J. c #6D876D", "K. c #8CA28C", "L. c #4A6C4A", "M. c #3E623E", "N. c #001F00", "O. c #003400", "P. c #164D16", "Q. c #536052", "R. c #8FA48D", "S. c #88A088", "T. c #7E977E", "U. c #95AD95", "V. c #567556", "W. c #375F37", "X. c #1F511F", "Y. c #164F16", "Z. c #8CA38C", "`. c #92AA92", " + c #9FB69F", ".+ c #587758", "++ c #416641", "@+ c #9CB29B", "#+ c #000200", "$+ c #050605", " . . . . . . . ", " + @ # # $ % . ", " . & * * = = . ", " . . . . - * * = = . . . . ", " . ; > , * * = = = ' . ", " . ) * * * = = ! . ", " . ~ * * = ! . ", " . { . ] * ' ^ / ", " ( . { _ : < . [ . } | 1 / ", " . { 2 3 4 . . 5 . 6 7 8 9 0 a / ", " . b c d e f g f 5 h i j k l m n o . . ", " + p q r s t u v w x y z A B C D E F . ", " G H I J K L M N O P Q B R S T U V W X ^ ", " Y Z ` ...J +.@.#.n $.%.&.*.=.-.;.>.,.'.).. ", " . !.~.{.{.].^./.(._.:.<.[.}.|.1.2.3.4.5.. ", " 6.7.8.9.0.a.b.c.d.e.f.&.g.h.i.j.. . ", " k.l.m.n.o.p.l.q.r.s.t.u.v.. . . ", " w.M x.y.t z.:.A.u B.C.D.. E.e . ", " . F.G.H.P I.J.K.L.M.z.N.g O.P.. ", " . Q.R.S.|.T.U.V.L.W.X.Y.. . ", " . Q.Z.`. +$..+++. . ", " . Q.@+'.. #+ ", " $+. ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/addtoprj.xpm0000644000000000000000000000145207334252132015535 /* XPM */ static char *addtoprj_xpm[] = { /* width height num_colors chars_per_pixel */ " 23 21 6 1", /* colors */ ". c #000000", "# c #000080", "a c #808080", "b c #none", "c c #ffff00", "d c #ffffff", /* pixels */ "bbbbbbbbbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbbbb##bbb", "bbbbbbbbbbbbbbbbbb##bbb", "bbbaaaaaaaaabbbb######b", "bbbaddddddd..bbb######b", "bbbaddddddd.d.bbbb##bbb", "bbbadaaaaad.dd.bbb##bbb", "bbbaddddddd....bbbbbbbb", "ba.adaaaaadddd.bbbbbbbb", "b.dadddddddddd.bbbbbbbb", "b.cadaaaaaaaad.bbbbbbbb", "b.dadddddddddd.bbbbbbbb", "b.cadddddd.......bbbbbb", "b.dad.....acacaca.bbbbb", "b.ca.acacacacacac.bbbbb", "b.da.cacacacacac.bbbbbb", "b.c.cacacacacaca.bbbbbb", "b.d.acacacacaca.bbbbbbb", "b..acacacacacac.bbbbbbb", "ba.............bbbbbbbb", "bbbbbbbbbbbbbbbbbbbbbbb" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/addtoprj_d.xpm0000644000000000000000000000204207252426376016050 /* XPM */ char *addtoprj_d_xpm[] = { /* width height num_colors chars_per_pixel */ " 23 21 23 1", /* colors */ ". c #202080", "# c #404040", "a c #505050", "b c #555580", "c c #5f5f4f", "d c #606060", "e c #6f6f60", "f c #707070", "g c #777767", "h c #777777", "i c #7f7f5f", "j c #7f7f7f", "k c #none", "l c #878747", "m c #9f9f9f", "n c #a7a738", "o c #a7a777", "p c #afaf9f", "q c #b7b738", "r c #bfbf40", "s c #bfbfbf", "t c #c7c7c7", "u c #cfcfcf", /* pixels */ "kkkkkkkkkkkkkkkkbbbbkkk", "kkkkkkkkkkkkkkkkbbbbkkk", "kkkkkkkkkkkkkkkkbbbbkkk", "kkkkttttmmmmjjjj....bbb", "kkkkttttmmmmjjjj....bbb", "kkkkttttmmmmjjjj....bbb", "kkkkttttmmmmjjjj....bbb", "gggguuuusssshhhhkkkkkkk", "gggguuuusssshhhhkkkkkkk", "gggguuuusssshhhhkkkkkkk", "gggguuuusssshhhhkkkkkkk", "iiiippppoooolllleeeekkk", "iiiippppoooolllleeeekkk", "iiiippppoooolllleeeekkk", "iiiippppoooolllleeeekkk", "ccccqqqqrrrrnnnnffffkkk", "ccccqqqqrrrrnnnnffffkkk", "ccccqqqqrrrrnnnnffffkkk", "ccccqqqqrrrrnnnnffffkkk", "dddd########aaaakkkkkkk", "dddd########aaaakkkkkkk" };vdkbuilder2-2.4.0/vdkbuilder/pixmaps/app_wiz.xpm0000644000000000000000000000235407252426376015415 /* XPM */ char *app_wiz_xpm[] = { /* width height num_colors chars_per_pixel */ " 34 27 6 1", /* colors */ ". c #000000", "# c #0000ff", "a c #808080", "b c #c0c0c0", "c c #none", "w c #ffffff", /* pixels */ "cccccccccccccccccccccccccccccccccc", "cccccccccccccccccccccccccccccccccc", "c............................ccccc", "c.####################.b.b.b.acccc", "c............................acccc", "c.wwwwwwwwwwwwwwwwwwwwwwwwww.acccc", "c.w...bw...wb...bwbwbwbwbwbw.acccc", "c.wbwbwbwbwbwbwbwbwbwbwbwbwb.acccc", "c............................acccc", "c.wwwwwwwwwwwwwwwwwwwwwwwwww.acccc", "c.wbwbwbwbww....................wc", "c.wwbwbwbwbw.############.b.b.b.ac", "c.wbwbwbwbww....................ac", "c.wwbwbwbwbw.wwwwwwwwwwwwwwwwww.ac", "c.wbwbwbwbww.wwwwwwwwwwwwwwwwww.ac", "c.wwbwbwbwbw.wwwwwwwwwwwwwwwwww.ac", "c.wbwbwbwbww.wwwwwwwwwwwwwwwwww.ac", "c.bwbwbwbwbw.wwwwbbbbbbwbbbbbbw.ac", "c.wbwbwbwbww.wwwwbwwww.wbwwwwww.ac", "c.wwbwbwbwbw.wwwwb.....wb.....w.ac", "c.wbwbwbwbww.wwwwwwwwwwwwwwwwww.ac", "c.wwbwbwbwbw....................ac", "c.wbwbwbwbwbwaaaaaaaaaaaaaaa.aaaac", "c.wwbwbwbwbwbwbwbwbwbwbwbwbw.acccc", "c............................acccc", "ccaaaaaaaaaaaaaaaaaaaaaaaaaaaacccc", "cccccccccccccccccccccccccccccccccc" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/app_wizh.xpm0000644000000000000000000000235307252426376015564 /* XPM */ char *app_wizh_xpm[] = { /* width height num_colors chars_per_pixel */ " 34 27 6 1", /* colors */ ". c green", "# c #0000ff", "a c #808080", "b c #c0c0c0", "c c #none", "w c #ffffff", /* pixels */ "cccccccccccccccccccccccccccccccccc", "cccccccccccccccccccccccccccccccccc", "c............................ccccc", "c.####################.b.b.b.acccc", "c............................acccc", "c.wwwwwwwwwwwwwwwwwwwwwwwwww.acccc", "c.w...bw...wb...bwbwbwbwbwbw.acccc", "c.wbwbwbwbwbwbwbwbwbwbwbwbwb.acccc", "c............................acccc", "c.wwwwwwwwwwwwwwwwwwwwwwwwww.acccc", "c.wbwbwbwbww....................wc", "c.wwbwbwbwbw.############.b.b.b.ac", "c.wbwbwbwbww....................ac", "c.wwbwbwbwbw.wwwwwwwwwwwwwwwwww.ac", "c.wbwbwbwbww.wwwwwwwwwwwwwwwwww.ac", "c.wwbwbwbwbw.wwwwwwwwwwwwwwwwww.ac", "c.wbwbwbwbww.wwwwwwwwwwwwwwwwww.ac", "c.bwbwbwbwbw.wwwwbbbbbbwbbbbbbw.ac", "c.wbwbwbwbww.wwwwbwwww.wbwwwwww.ac", "c.wwbwbwbwbw.wwwwb.....wb.....w.ac", "c.wbwbwbwbww.wwwwwwwwwwwwwwwwww.ac", "c.wwbwbwbwbw....................ac", "c.wbwbwbwbwbwaaaaaaaaaaaaaaa.aaaac", "c.wwbwbwbwbwbwbwbwbwbwbwbwbw.acccc", "c............................acccc", "ccaaaaaaaaaaaaaaaaaaaaaaaaaaaacccc", "cccccccccccccccccccccccccccccccccc" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/apple.xpm0000644000000000000000000000412407455512336015037 /* XPM */ static char * apple_xpm[] = { "16 16 94 2", " c None", ". c #000000", "+ c #FEFEFE", "@ c #FDFDFD", "# c #E0E0E0", "$ c #C1C1C1", "% c #F1F1F1", "& c #C3C3C3", "* c #FBFBFB", "= c #A8A8A8", "- c #404040", "; c #7396B9", "> c #8FAABD", ", c #DCE4C4", "' c #7B9CB9", ") c #161616", "! c #7E9EBE", "~ c #EBEEC7", "{ c #FEFEDF", "] c #DAE2D0", "^ c #C5C5C5", "/ c #88A6C3", "( c #83A0BC", "_ c #435261", ": c #99B1C0", "< c #EAEFC8", "[ c #A3BACB", "} c #C4C4C4", "| c #93AEC9", "1 c #2F2414", "2 c #5E8858", "3 c #1F1C12", "4 c #8FA9C4", "5 c #90ADC9", "6 c #8DABC9", "7 c #6687A6", "8 c #1B2126", "9 c #72869C", "0 c #6D757C", "a c #587650", "b c #668C60", "c c #5E8658", "d c #2D2720", "e c #9EB6CE", "f c #54779A", "g c #212110", "h c #557549", "i c #0B0D0E", "j c #8195A8", "k c #4E5048", "l c #658D5D", "m c #658E5F", "n c #669663", "o c #648756", "p c #222713", "q c #413309", "r c #607346", "s c #64905E", "t c #5F8454", "u c #090807", "v c #C0C0C0", "w c #608356", "x c #66905F", "y c #638E5D", "z c #649562", "A c #678E5C", "B c #668C59", "C c #649260", "D c #678C5C", "E c #688C5C", "F c #66915E", "G c #4F7547", "H c #BFBFBF", "I c #638B56", "J c #639461", "K c #62915D", "L c #668B58", "M c #668552", "N c #648B56", "O c #678A56", "P c #6A8653", "Q c #697E4F", "R c #668252", "S c #5F8653", "T c #BEBEBE", "U c #BDBDBD", "V c #E6E6E6", "W c #E5E5E5", "X c #E4E4E4", "Y c #E3E3E3", "Z c #BBBBBB", "` c #C2C2C2", " . c #BCBCBC", ".. c #A0A0A0", " . . . . . . . . . ", " . + + + + + + @ # $ . ", " . + % % % % % % & * = . ", ". . . . . . . . . . . . . - . ", ". ; ; ; ; ; > , ' ; ; ; . ) . ", ". ! ! ! ! ! ~ { ] ! ! ! . ^ . ", ". / ( _ ( / : < [ / / / . } . ", ". | 1 2 3 4 5 6 7 8 9 | . & . ", ". 0 a b c d e f g h i j . $ . ", ". k l m n o p q r s t u . v . ", ". w x y z A B C D E F G . H . ", ". I J K L M N O P Q R S . T . ", ". . . . . . . . . . . . . U . ", " . @ V W W W X X Y Y Y Z . ", " . ` U U U . .Z Z Z Z ... ", " . . . . . . . . . . . "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/button.xpm0000644000000000000000000000130007454257370015245 /* XPM */ static char *button_xpm[] = { /* columns rows colors chars-per-pixel */ "21 21 5 1", " c Black", ". c #7b7b7b", "X c Gray74", "o c Gray100", "O c None", /* pixels */ "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "Ooooooooooooooooooo O", "OoOOOOOOOOOOOOOOOO. O", "OoOOOOOOOOOOOOOOOO. O", "OoOOO OOO OOO OO. O", "OoOO OOO OO OO OOO. O", "OoOO OOO OO O OOOO. O", "OoOO OOO OO OOOOO. O", "OoOO OOO OO O OOOO. O", "OoOO OOO OO OO OOO. O", "OoOOO OOO OOO OO. O", "OoOOOOOOOOOOOOOOOO. O", "OoOOOOOOOOOOOOOOOO. O", "OoOOOOOOOOOOOOOOOO. O", "Oo................. O", "O O", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/c_src.xpm0000644000000000000000000000233107252426400015014 /* XPM */ /* Drawn by Mark Donohoe for the K Desktop Environment */ /* See http://www.kde.org */ char *c_src_xpm[]={ "32 25 14 1", "# c #000000", "a c #ffffff", "j c #808080", "g c #c0c0c0", "h c #000080", "f c #a0a0a4", "i c #585858", "k c #0000c0", "d c #404000", "l c #808000", "b c #c0c000", "c c #ffffc0", "e c #ffdca8", ". c None", ".................##.............", "................#aa##...........", "...............#aaaaa##.........", "..............#aaaaaaaa##.......", ".............#aaabbaaaaaa##.....", "............#aaaaaabbaaaaaa##...", "...........#aaabbaaaabbaaaaaa##.", "..........#aaaaaabbaaaaaaaaaaa#.", ".........#caabbaaaabbaaaaaaaad#.", "........#aaaccaaaaaaabbaaaaadb#.", ".......#aacefgfgcaaaaaaaaaadb#..", "......#accghhhhifaaaaaaaaadb#...", ".....#ccafihhjjkhjcacaaaadb#....", "....#ccccjhhccafhkcaaaaadb#.....", "...#cccccfhhgabcffcaaacdb#......", "..#lccccccihhihgccaacadb#.......", "..#bllcccccbiiibaaccadb#........", "..##bbllccccccbcccaadb#.........", "....##bbllcccccccccdb#..........", "......##bbllccccccdb#...........", "........##bbllcccdb#............", "..........##bblldb#.............", "............##bbb#..............", "..............###...............", "................................"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/canvas.xpm0000644000000000000000000000161507334252131015201 /* XPM */ static char *canvas_xpm[] = { /* width height num_colors chars_per_pixel */ " 24 24 6 1", /* colors */ ". c #000000", "# c #000080", "a c #none", "b c #none", "c c #none", "d c #ffff00", /* pixels */ "cbbbccccccccccccccccccca", "cbbbcbbbbbbbbbbbbbbba#ba", "cbbbcbbbbbbbbbbb#bba#aba", "cbbbcbbbbbbbbb##ba##abba", "cbbbcbbbbbbbb########bba", "cbbbcbbbbba.########abba", "cbbbcbbbbb.#c..##.##bbba", "cbbbcbbbba.##cccc..#bbba", "cbbbcbbbb.####c###.bbbba", "cbbbcbbba.#######.abbbba", "cbbbcbbb.a######a.bbbbba", "cbbbcbb.baa####a#abbbbba", "cbbbcb.cdcbaa#a.aabbbbba", "cbbbcb.bbddcba.aabbbbbba", "cbbbaa.bdbbda.aaaaaaaaaa", "cbbbbb.cba.b.aabbbbbbbbb", "cbbbb.cba###aabbbbbbbbbb", "cbbb.dba#aaabbbbbbbbbbbb", "cbb.dba#abbbbbbbbbbbbbbb", "cbb.a.#abbbbbbbbbbbbbbbb", "cbb..#abbbbbbbbbbbbbbbbb", "cbbbbbbbbbbbbbbbbbbbbbbb", "cbbbbbbbbbbbbbbbbbbbbbbb", "aaaaaaaaaaaaaaaaaaaaaaaaa" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/checkbutton.xpm0000644000000000000000000000130507252426400016234 /* XPM */ static char *checkbutton_xpm[] = { /* columns rows colors chars-per-pixel */ "21 21 5 1", " c Black", ". c #7b7b7b", "X c Gray74", "o c Gray100", "O c None", /* pixels */ "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOoooooooooooOOOOO", "OOOOOoOOOOOOOOO OOOOO", "OOOOOoOOOOOOOO. OOOOO", "OOOOOoOOOOOOOO. OOOOO", "OOOOOoOOOOOOOO. OOOOO", "OOOOOoOOOOOOOO. OOOOO", "OOOOOoOOOOOOOO. OOOOO", "OOOOOoOOOOOOOO. OOOOO", "OOOOOoOOOOOOOO. OOOOO", "OOOOOoO........ OOOOO", "OOOOOo OOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/classdecl.xpm0000644000000000000000000000766607374752057015717 /* XPM */ static char *classdecl_xpm[]={ "24 24 170 2", "Qt c None", ".# c #000000", "aN c #000100", ".j c #0080ff", "az c #030000", "aJ c #030500", "#L c #040000", "aw c #050000", "#Y c #060100", "#x c #070000", "aq c #080000", "ay c #080100", ".v c #090600", "aM c #090806", "aK c #0b0505", "ax c #0c0303", "#a c #131210", "aL c #14100f", "aj c #201a1a", "aA c #282523", ".k c #303030", "a# c #332c2b", ".1 c #4f4d4a", ".E c #574f4f", ".L c #575050", "ak c #57514f", "ao c #585251", "aB c #5a5a5a", ".p c #5c5c5c", "aa c #5d5954", ".7 c #615c5b", "am c #625a53", "al c #625c59", ".Z c #625c5b", "#b c #636363", ".2 c #646464", "ap c #696764", "an c #6b625a", ".J c #6b6b6b", ".S c #6d6767", "af c #706760", "#7 c #716860", "#j c #736961", ".9 c #746c67", ".3 c #747474", "#i c #766d68", ".G c #777777", "ag c #787878", "ab c #79736c", "#v c #7b7975", "#c c #7c7c7c", ".H c #7e7e7e", "#U c #7f766d", "#r c #84817a", "aC c #868686", "#w c #878786", ".o c #8a8a8a", "#0 c #8c8782", "ad c #8d8379", ".i c #8d8d8d", "#t c #908c86", "#V c #909090", ".m c #919191", "#I c #928c84", "#6 c #948a7f", "ac c #958c80", "#K c #959595", "#p c #97938e", ".u c #979797", "ae c #988d82", "#e c #98948f", "ar c #989898", "au c #999999", ".C c #9a9a9a", "av c #9d9897", ".I c #9d9d9d", ".U c #9e9e9e", "#g c #a09489", ".6 c #a0a0a0", "#k c #a3a3a2", ".w c #a3a3a3", ".N c #a5a5a5", "#l c #a6a6a6", "#B c #a8a199", "#J c #a8a8a8", "a. c #a9a9a8", "at c #afafaf", "as c #b0b0b0", ".V c #b5b5b5", "#3 c #b8ab9d", ".O c #b9b9b9", "#4 c #baad9e", "aD c #bababa", ".Y c #bcbcbc", "#5 c #beb0a2", "#2 c #bfb4a6", "#Z c #c0bdba", ".e c #c1c1c1", "#1 c #c2b5a7", "ai c #c2c2c2", ".f c #c3c3c3", ".y c #c4c4c4", ".x c #c5c5c5", ".g c #c6c6c6", "#n c #c7c7c7", "#D c #c8bfb4", ".h c #c8c8c8", "#S c #c9bbac", ".l c #cacaca", "#8 c #cccccc", ".t c #cecece", ".d c #d0d0d0", ".z c #d1d1d1", ".A c #d2d2d1", ".B c #d2d2d2", "#X c #d3d3d3", "#E c #d5ccbf", ".R c #d5d5d5", ".4 c #d6d6d5", "#O c #d7c8b8", ".X c #d7d7d7", "#Q c #d8c9b9", "aG c #d8d1d0", "#N c #d9cabb", "#T c #d9cec2", "#M c #d9d5d2", ".W c #d9d9d9", "#G c #dad3c9", "#m c #dbdbdb", "#H c #ddcfc4", "#z c #dddddd", "#P c #decfbf", "aF c #ded7d5", "#F c #dfd7cd", ".5 c #dfdfdf", "aH c #e0dbd7", "#A c #e2dfdc", "#9 c #e2e2e2", "#R c #e3d3c2", "ah c #e4e4e4", "#o c #e8e5e2", ".D c #e8e8e8", "aI c #e9e6e3", ".s c #eaeaea", "aE c #ece4e2", ".K c #ececec", ".Q c #ededed", ".P c #eeeeee", ".n c #efefef", "#C c #f0e0ce", "#u c #f1ede7", "#W c #f1f1f1", "#d c #f3f2f2", ".b c #f5f5f5", "#q c #f6e9d8", ".c c #f6f6f6", ".q c #f8f8f8", ".0 c #f9eee4", "#f c #f9efe3", ".8 c #f9f0e4", ".T c #f9f1ea", "#y c #fafafa", "#s c #fbf3ea", ".r c #fcfbfa", ".M c #fdfaf8", ".F c #fdfdfc", ".a c #fdfdfd", "#. c #fefdfc", "#h c #fefdfd", "## c #fffefd", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQt.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#QtQt", "QtQt.#.a.b.b.b.b.b.b.b.c.c.c.c.c.c.c.c.c.d.#QtQt", "QtQt.#.b.e.e.e.f.f.f.f.g.g.g.g.g.h.h.h.h.i.#QtQt", "QtQt.#.c.j.j.k.g.g.j.j.k.h.h.h.h.l.l.l.l.m.#QtQt", "QtQt.#.n.j.j.k.o.o.j.j.k.i.i.i.i.m.m.m.m.p.#QtQt", "QtQt.#.q.j.j.k.r.r.j.j.k.s.s.s.s.s.s.s.s.l.#QtQt", "QtQt.#.c.j.j.j.j.j.j.j.k.t.t.t.t.d.d.d.d.u.#QtQt", "QtQt.#.c.j.j.j.j.j.j.j.k.v.w.x.y.z.A.z.B.C.#QtQt", "QtQt.#.D.j.j.k.u.u.j.j.E.F.#.G.H.i.I.I.I.J.#QtQt", "QtQt.#.q.j.j.k.K.K.j.j.L.M.#.N.O.d.P.P.Q.g.#QtQt", "QtQt.#.q.j.j.k.B.R.j.j.S.T.#.m.U.V.W.W.W.w.#QtQt", "QtQt.#.q.R.R.R.R.X.X.Y.Z.0.1.#.2.#.3.U.4.w.#QtQt", "QtQt.#.5.6.6.6.6.w.G.#.7.8.9#..####a.##b#c.#QtQt", "QtQt.#.q.b.n.n.n.P.##d#e#f#g#h#i#.#j#k.##l.#QtQt", "QtQt.#.q#m#m#m#m#n.##o#p#q#r#s#t#u#v#w#x.w.#QtQt", "QtQt.##y#z#z#z#z.f.##A#B#C#D#E#F#G#H#I#x.U.#QtQt", "QtQt.#.s#J#J#J#J#K#L#M#N#O#P#Q#R#S#T#U#x#V.#QtQt", "QtQt.##y.b#W#W#W#X#Y#Z#0#1#2#3#4#5#6#7#x#8.#QtQt", "QtQt.##y#9#9#9#9.Ra.a#aaabacad#6aeaf.#ag.V.#QtQt", "QtQt.##y#9#9#9#9ahaiagajakalamanaoapaqar.V.#QtQt", "QtQt.##9asasasasasatauavawaxaqayazaAaBaCaD.#QtQt", "QtQt.#.#.#.#.#.#.#.#.##LaEaFaGaHaI.raJ.#.#.#QtQt", "QtQtQtQtQtQtQtQtQtQtQt#LaKawaLazaM.#aNQtQtQtQtQt"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/classdef.xpm0000644000000000000000000000772507374752073015540 /* XPM */ static char *classdef_xpm[]={ "24 24 172 2", "Qt c None", ".# c #000000", "aP c #000100", "aB c #030000", "aL c #030500", "#P c #040000", "ay c #050000", "#1 c #060100", "#B c #070000", "as c #080000", "aA c #080100", ".w c #090600", "aO c #090806", "aM c #0b0505", "az c #0c0303", "#e c #131210", "aN c #14100f", "al c #201a1a", "aC c #282523", ".o c #303030", "ab c #332c2b", ".5 c #4f4d4a", ".H c #574f4f", ".Q c #575050", "am c #57514f", "aq c #585251", "aD c #5a5a5a", ".p c #5c5c5c", "ac c #5d5954", "## c #615c5b", "ao c #625a53", "an c #625c59", ".3 c #625c5b", "#f c #636363", ".6 c #646464", "ar c #696764", "ap c #6b625a", ".M c #6b6b6b", ".Y c #6d6767", "ah c #706760", "a. c #716860", "#n c #736961", "#b c #746c67", ".7 c #747474", "#m c #766d68", ".J c #777777", "ai c #787878", "ad c #79736c", "#z c #7b7975", "#g c #7c7c7c", ".K c #7e7e7e", "#Y c #7f766d", "#v c #84817a", "aE c #868686", "#A c #878786", ".m c #878787", "#3 c #8c8782", "af c #8d8379", ".i c #8d8d8d", "#x c #908c86", "#Z c #909090", ".k c #919191", "#M c #928c84", ".G c #939393", "#9 c #948a7f", ".F c #949494", "ae c #958c80", "#O c #959595", "#t c #97938e", ".u c #979797", "ag c #988d82", "#i c #98948f", "at c #989898", "aw c #999999", ".D c #9a9a9a", "ax c #9d9897", ".L c #9d9d9d", ".0 c #9e9e9e", "#k c #a09489", "#. c #a0a0a0", ".v c #a1a1a1", "#o c #a3a3a2", ".x c #a3a3a3", ".S c #a5a5a5", "#p c #a6a6a6", "#F c #a8a199", "#N c #a8a8a8", "aa c #a9a9a8", "av c #afafaf", "au c #b0b0b0", ".1 c #b5b5b5", "#6 c #b8ab9d", ".T c #b9b9b9", "#7 c #baad9e", ".X c #bababa", "#8 c #beb0a2", "#5 c #bfb4a6", "#2 c #c0bdba", ".e c #c1c1c1", "#4 c #c2b5a7", "ak c #c2c2c2", ".f c #c3c3c3", ".z c #c4c4c4", ".y c #c5c5c5", ".g c #c6c6c6", "#r c #c7c7c7", "#H c #c8bfb4", ".h c #c8c8c8", "#W c #c9bbac", ".j c #cacaca", ".s c #cccccc", ".t c #cecece", ".P c #cfcfcf", ".d c #d0d0d0", ".A c #d1d1d1", ".B c #d2d2d1", ".C c #d2d2d2", "#0 c #d3d3d3", "#I c #d5ccbf", ".W c #d5d5d5", ".8 c #d6d6d5", "#S c #d7c8b8", "#U c #d8c9b9", "aH c #d8d1d0", "#R c #d9cabb", "#X c #d9cec2", "#Q c #d9d5d2", ".2 c #d9d9d9", "#K c #dad3c9", "#q c #dbdbdb", "#L c #ddcfc4", "#D c #dddddd", "#T c #decfbf", "aG c #ded7d5", "#J c #dfd7cd", ".9 c #dfdfdf", "aI c #e0dbd7", "#E c #e2dfdc", "a# c #e2e2e2", "#V c #e3d3c2", "aj c #e4e4e4", "#s c #e8e5e2", ".E c #e8e8e8", "aJ c #e9e6e3", ".r c #eaeaea", "aF c #ece4e2", ".O c #ececec", ".V c #ededed", ".U c #eeeeee", ".l c #efefef", "#G c #f0e0ce", "#y c #f1ede7", ".N c #f1f1f1", "#h c #f3f2f2", ".b c #f5f5f5", "#u c #f6e9d8", ".c c #f6f6f6", ".q c #f8f8f8", ".4 c #f9eee4", "#j c #f9efe3", "#a c #f9f0e4", ".Z c #f9f1ea", "#C c #fafafa", "#w c #fbf3ea", "aK c #fcfbfa", ".R c #fdfaf8", ".I c #fdfdfc", ".a c #fdfdfd", "#c c #fefdfc", "#l c #fefdfd", ".n c #ff0000", "#d c #fffefd", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQt.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#QtQt", "QtQt.#.a.b.b.b.b.b.b.b.c.c.c.c.c.c.c.c.c.d.#QtQt", "QtQt.#.b.e.e.e.f.f.f.f.g.g.g.g.g.h.h.h.h.i.#QtQt", "QtQt.#.c.f.f.f.g.g.g.g.h.h.h.h.h.j.j.j.j.k.#QtQt", "QtQt.#.l.m.m.n.n.n.n.n.n.o.i.i.i.k.k.k.k.p.#QtQt", "QtQt.#.q.r.n.n.n.n.n.n.n.o.r.r.r.r.r.r.r.j.#QtQt", "QtQt.#.c.j.n.n.o.s.s.s.s.t.t.t.t.d.d.d.d.u.#QtQt", "QtQt.#.c.s.n.n.o.t.t.t.v.w.x.y.z.A.B.A.C.D.#QtQt", "QtQt.#.E.F.n.n.o.u.u.G.H.I.#.J.K.i.L.L.L.M.#QtQt", "QtQt.#.q.N.n.n.o.O.O.P.Q.R.#.S.T.d.U.U.V.g.#QtQt", "QtQt.#.q.C.n.n.o.W.W.X.Y.Z.#.k.0.1.2.2.2.x.#QtQt", "QtQt.#.q.W.n.n.n.n.n.n.3.4.5.#.6.#.7.0.8.x.#QtQt", "QtQt.#.9#.#..n.n.n.J.####a#b#c.##d#e.##f#g.#QtQt", "QtQt.#.q.b.l.l.l.U.##h#i#j#k#l#m#c#n#o.##p.#QtQt", "QtQt.#.q#q#q#q#q#r.##s#t#u#v#w#x#y#z#A#B.x.#QtQt", "QtQt.##C#D#D#D#D.f.##E#F#G#H#I#J#K#L#M#B.0.#QtQt", "QtQt.#.r#N#N#N#N#O#P#Q#R#S#T#U#V#W#X#Y#B#Z.#QtQt", "QtQt.##C.b.N.N.N#0#1#2#3#4#5#6#7#8#9a.#B.s.#QtQt", "QtQt.##Ca#a#a#a#.Waaabacadaeaf#9agah.#ai.1.#QtQt", "QtQt.##Ca#a#a#a#ajakaialamanaoapaqarasat.1.#QtQt", "QtQt.#a#auauauauauavawaxayazasaAaBaCaDaE.X.#QtQt", "QtQt.#.#.#.#.#.#.#.#.##PaFaGaHaIaJaKaL.#.#.#QtQt", "QtQtQtQtQtQtQtQtQtQtQt#PaMayaNaBaO.#aPQtQtQtQtQt"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/colorseldialog.xpm0000644000000000000000000000142607252426400016731 /* XPM */ static char *colorseldialog_xpm[] = { /* columns rows colors chars-per-pixel */ "21 21 11 1", " c Black", ". c #00007b", "X c #7b7b7b", "o c Blue", "O c Green", "+ c Cyan", "@ c Red", "# c Yellow", "$ c Gray74", "% c Gray100", "& c None", /* pixels */ "&&&&&&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&&&&&&", "&&XXXXXXXXXXXXXXXX&&&", "&&X.@#...........X &&", "&&X.+O.%%%....& &X &&", "&&XXXXXXXXXXXXXXXX &&", "&&X%%%%%%%%%%%%%%X &&", "&&X%%%%%%%%%%%%%%X &&", "&&X%%@@@OOOooo%%%X &&", "&&X%%@@@OOOooo%%%X &&", "&&X%%@@@OOOooo%%%X &&", "&&X%%@@@OOOooo%%%X &&", "&&X%%%%%%%%%%%%%%X &&", "&&X%%%%%%%%%%%%%%X &&", "&&XXXXXXXXXXXXXXXX &&", "&&& &&", "&&&&&&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&&&&&&" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/combo.xpm0000644000000000000000000000134607334252126015032 /* XPM */ static char *combo_xpm[] = { /* width height num_colors chars_per_pixel */ " 22 20 5 1", /* colors */ ". c #000000", "# c #000080", "a c #000000", "b c #none", "c c #none", /* pixels */ "bbbbbbbbbbbbbbbbbbbbbb", "baaaaaaaaaaaaaa......b", "baccccccccccccc.cccb.b", "bac###########c.c..b.b", "baccccccccccccc.caab.b", "baccccccccccccc.bbbb.b", "ba...................b", "bbb.cccccccccccccccc.b", "bbb.cc############cc.b", "bbb.cccccccccccccccc.b", "bbb.cc###########ccc.b", "bbb.################.b", "bbb.##cccccccccccc##.b", "bbb.################.b", "bbb.cc###########ccc.b", "bbb.cccccccccccccccc.b", "bbb.cc############cc.b", "bbb.cccccccccccccccc.b", "bbb..................b", "bbbbbbbbbbbbbbbbbbbbbb" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/compo_wiz.xpm0000644000000000000000000000225407334252121015733 /* XPM */ char *compo_wiz_xpm[] = { /* width height num_colors chars_per_pixel */ " 31 27 7 1", /* colors */ ". c #000000", "# c #008000", "a c #808000", "b c #808080", "c c #c0c0c0", "d c #ffff00", "e c #none", /* pixels */ "eeeeeeeeeeeeeeee..eeeeeeeeeeeee", "eeeeeeeeeeeeeee..e.eeeeeeeeeeee", "eeeeeeeeeee.....e..bb..eeeeeeee", "eeeeeeeeeb..e.ee......e.eeeeeee", "eeeeeeeee..eb.ed..e..e..eeeeeee", "eeeeeeee.ee.b.dd.b.ee.....eeeee", "eeeeeee.b.ed.dddd.ed...e.e.eeee", "eeeeeb.bb.eddddddddd..e.e..eeee", "eeeee.e..eddddddddddd..e..beeee", "eeeee.eeeddddddddddddde..beeeee", "eeeeeb.dddddddddddddddd.b....ee", "eeee#...dddddd...ddddd.bcce..ee", "eeee...eddddd.ec..dddde......ee", "eee.eeeddddd.ec...dddddeee..#ee", "eee.edddddd.ec....dddddddd.eeee", "eeee...ddd.eb....dadddd...beeee", "eeeeeeb.dd.ee...dadadd.bbc.eeee", "eeeeee.edd.ee..dadadade.c..eeee", "eeeee.edddd...dddadadade.eeeeee", "eeeee.c..dddddddddada..e.eeeeee", "eeeeee..b.ddddddddda....beeeeee", "eeeeeeeeb.dd.dddd.dd...eeeeeeee", "eeeeeeee.ed...dd...de.eeeeeeeee", "eeeeeeeee...e.dd..b..eeeeeeeeee", "eeeeeeeeeeeee.ee.eeeeeeeeeeeeee", "eeeeeeeeeeeeeb..beeeeeeeeeeeeee", "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/compo_wizh.xpm0000644000000000000000000000225207252426401016104 /* XPM */ char *compo_wizh_xpm[] = { /* width height num_colors chars_per_pixel */ " 31 27 7 1", /* colors */ ". c green", "# c #008000", "a c #808000", "b c #808080", "c c #c0c0c0", "d c #ffff00", "e c #none", /* pixels */ "eeeeeeeeeeeeeeee..eeeeeeeeeeeee", "eeeeeeeeeeeeeee..e.eeeeeeeeeeee", "eeeeeeeeeee.....e..bb..eeeeeeee", "eeeeeeeeeb..e.ee......e.eeeeeee", "eeeeeeeee..eb.ed..e..e..eeeeeee", "eeeeeeee.ee.b.dd.b.ee.....eeeee", "eeeeeee.b.ed.dddd.ed...e.e.eeee", "eeeeeb.bb.eddddddddd..e.e..eeee", "eeeee.e..eddddddddddd..e..beeee", "eeeee.eeeddddddddddddde..beeeee", "eeeeeb.dddddddddddddddd.b....ee", "eeee#...dddddd...ddddd.bcce..ee", "eeee...eddddd.ec..dddde......ee", "eee.eeeddddd.ec...dddddeee..#ee", "eee.edddddd.ec....dddddddd.eeee", "eeee...ddd.eb....dadddd...beeee", "eeeeeeb.dd.ee...dadadd.bbc.eeee", "eeeeee.edd.ee..dadadade.c..eeee", "eeeee.edddd...dddadadade.eeeeee", "eeeee.c..dddddddddada..e.eeeeee", "eeeeee..b.ddddddddda....beeeeee", "eeeeeeeeb.dd.dddd.dd...eeeeeeee", "eeeeeeee.ed...dd...de.eeeeeeeee", "eeeeeeeee...e.dd..b..eeeeeeeeee", "eeeeeeeeeeeee.ee.eeeeeeeeeeeeee", "eeeeeeeeeeeeeb..beeeeeeeeeeeeee", "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" };vdkbuilder2-2.4.0/vdkbuilder/pixmaps/coolbar.xpm0000644000000000000000000000140507451070653015353 /* XPM */ static char *coolbar_xpm[]={ "26 20 8 1", "e c #000000", "# c #004040", "c c #008080", "b c #404000", "f c #800000", "d c #808000", ". c #dcdcdc", "a c #ffffff", "..........................", ".########################.", ".aaaaaaaaaaaaaaaaaaaaaaa#.", "........................#.", "........................#.", ".aaaaaaaaaaaaa.aaaaaaaa##.", ".a...........#.a.......#..", ".a..bbbb.....#.a......c#..", ".a..bdddb....#.a.cccccc#..", ".a..bddddb...#.a.eeeeee#..", ".a..bdddddb..#.a.efcfcf#..", ".a..bdddddb..#.a.ecfcff#..", ".a..bdddddb..#.a.efeeee#..", ".a..bdddddb..#.a.eeddd##..", ".a..bdddddb..#.a.ecccc#...", ".a..bbbbbbb..#.a.eeee##...", ".a...........#.a.....#....", ".a...........#.a.....#....", ".#############.#######....", ".........................."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/cube.xpm0000644000000000000000000001656507252426403014662 /* XPM */ static char *cube_xpm[] = { /* width height num_colors chars_per_pixel */ " 42 38 253 2", /* colors */ ".. c #a995b1", ".# c #aa96b2", ".a c #a894b0", ".b c #5c4775", ".c c #a893ba", ".d c #a78fb9", ".e c #a28dab", ".f c #5b4870", ".g c #a18ca9", ".h c #cfbadc", ".i c #ad9ab5", ".j c #57406e", ".k c #a490ac", ".l c #7d6397", ".m c #a691af", ".n c #a28fa9", ".o c #644e7c", ".p c #584271", ".q c #7c6493", ".r c #c2afce", ".s c #aa97b2", ".t c #5f4875", ".u c #766090", ".v c #9a81ac", ".w c #796192", ".x c #786092", ".y c #7d6494", ".z c #a692ae", ".A c #533d69", ".B c #9078a8", ".C c #93809d", ".D c #534363", ".E c #55436c", ".F c #937cab", ".G c #c6b3d2", ".H c #c2add5", ".I c #5b4371", ".J c #594372", ".K c #554068", ".L c #58436c", ".M c #bda7ce", ".N c #907aa7", ".O c #60487a", ".P c #60516e", ".Q c #7d6598", ".R c #9c87a4", ".S c #64507a", ".T c #9f88b5", ".U c #bfaacb", ".V c #8d76a6", ".W c #9984a7", ".X c #755d8f", ".Y c #ab98be", ".Z c #b9a5c5", ".0 c #887097", ".1 c #796293", ".2 c #8870a2", ".3 c #9a85b1", ".4 c #706078", ".5 c #816a98", ".6 c #7c667c", ".7 c #7a6a7f", ".8 c #7e6a94", ".9 c #58446d", "#. c #7f6b82", "## c #b49fc8", "#a c #816797", "#b c #9680a6", "#c c #82708d", "#d c #cfbed9", "#e c #8b7b98", "#f c #c1adcd", "#g c #c2acd2", "#h c #937ea1", "#i c #ae9cc2", "#j c #9582a1", "#k c #6e5782", "#l c #b9a3c7", "#m c #9985a4", "#n c #ae9abf", "#o c #937ca3", "#p c #907b9b", "#q c #534068", "#r c #d1bde3", "#s c #8e769e", "#t c #b4a2c3", "#u c #4f3f62", "#v c #6a5581", "#w c #846e92", "#x c #78657e", "#y c #4d3762", "#z c #a38eb2", "#A c #836d9d", "#B c #f8f3fa", "#C c #705b7d", "#D c #362343", "#E c #4d3c5d", "#F c #463457", "#G c #74657c", "#H c #7f6e8a", "#I c #675673", "#J c #ae98c0", "#K c #503c67", "#L c #412c52", "#M c #5b476f", "#N c #8a779e", "#O c #8a739e", "#P c #fdfafd", "#Q c #95849f", "#R c #f7ebfc", "#S c #cbb5dc", "#T c #ddc8eb", "#U c #7c668f", "#V c #baa6c9", "#W c #7a657d", "#X c #5a4c69", "#Y c #725d78", "#Z c #887394", "#0 c #8a7794", "#1 c #57476a", "#2 c #725d88", "#3 c #5c4b73", "#4 c #b59fc2", "#5 c #644e77", "#6 c #9c88b1", "#7 c #776186", "#8 c #b29dbe", "#9 c #9e8aa7", "a. c #eadff4", "a# c #7a6395", "aa c #e4d5ee", "ab c #efe6f3", "ac c #786277", "ad c #9c87b0", "ae c #614d74", "af c #b39fbe", "ag c #9c88a9", "ah c #8972a3", "ai c #74617c", "aj c #9b85a8", "ak c #725b8d", "al c #7a677e", "am c #baa9c9", "an c #f1ecf3", "ao c #ebd8fc", "ap c #796693", "aq c #f1e1fb", "ar c #d7c8e3", "as c #7e6799", "at c #8a74a4", "au c #c6b0d3", "av c #5b4475", "aw c #837295", "ax c #695878", "ay c #826b8e", "az c #d4c3e2", "aA c #7b6294", "aB c #b9a3cd", "aC c #b7a2c6", "aD c #8e799d", "aE c #fdf5fd", "aF c #7f6791", "aG c #e1cfef", "aH c #846b99", "aI c #6a5b78", "aJ c #847593", "aK c #a38daf", "aL c #b19bbc", "aM c #88709e", "aN c #856d9e", "aO c #ccb7dd", "aP c #f8effb", "aQ c #b19bc5", "aR c #baa5cd", "aS c #6f5983", "aT c #9684aa", "aU c #c7b9d4", "aV c #9f8caf", "aW c #c8b5d7", "aX c #907ca6", "aY c #7e677e", "aZ c #d5bfe8", "a0 c #9f89af", "a1 c #b39dc7", "a2 c #5c4575", "a3 c #ab95b9", "a4 c #8e78a7", "a5 c #d2bedd", "a6 c #fdfdfc", "a7 c #c7b0da", "a8 c #9d85b2", "a9 c #ac95c1", "b. c #826a9c", "b# c #553f6e", "ba c #775e92", "bb c #9681ad", "bc c #836c9d", "bd c #9e8ca6", "be c #957dac", "bf c #856f9e", "bg c #ad98b4", "bh c #967fae", "bi c #675279", "bj c #947faa", "bk c #695283", "bl c #604b74", "bm c #c7b3db", "bn c #bea9ce", "bo c #8d74a4", "bp c #c0aad3", "bq c #57416f", "br c #9982b1", "bs c #a289b6", "bt c #584572", "bu c #9f8cb6", "bv c #a38cb9", "bw c #5e4376", "bx c #5a456e", "by c #a390b5", "bz c #a392b7", "bA c #553d6d", "bB c #7f689a", "bC c #5b4572", "bD c #7d6698", "bE c #a895ba", "bF c #5a446f", "bG c #9b83b2", "bH c #594272", "bI c #81689b", "bJ c #a58eb7", "bK c #9179a9", "bL c #584072", "bM c #5f4577", "bN c #c4aed7", "bO c #614b7b", "bP c #5b4074", "bQ c #7f6696", "bR c #7d647b", "bS c #b7a0ca", "bT c #7d648a", "bU c #c3afd7", "bV c #a792ba", "bW c #af9cb7", "bX c #664e7f", "bY c #a08baa", "bZ c #cfbae4", "b0 c #7b6292", "b1 c #5d4877", "b2 c #5e4677", "b3 c #a793ae", "b4 c #a895ad", "b5 c #a093a2", "b6 c #aa96ae", /* pixels */ "#D.Ebtbt.J.E.E.L.K#q.E.p.K.K#q.K.K.K.K.E.K.K#q.K#q.K.K#q.K#q#q#q#q.K.D.K#q#u#u#q#u#K", "#LbtbMbMbMb2b2b2b2bwb2bObwbPbwbwavav.I.IbwbPbPbPbLbPbPbLbLbPbLbHbHbq.L.KbLb#bL.jb#bA", "#FbOblae#C#3aS.O.t#k.u#UbX#2bObX.S#5bC#C.tbk.t.A.K.LbC#y#F.b#k.E#q.j.J#X#EbO.f.pbq.j", "#E#5.obObZaqamaoax#7#H#daI#7aG#r.P.D.f#j#IaJafaq.D#1#taq.hao#taq#ua1bX#d#E.faqbt.L.L", ".K.o#5.S#v.PaJ.k#2apaqaJ.8bEbzaI#G#1.ta0.D#maq#I.P#I#Xa5.4.k#Fby#EaD.Aaz.D#X#E.p.pbq", "#M.o.SbX.obO.X#vbf#Aatawbha4bf.8#N.9.tblaS#q.S.o.E.9#Eao.D#3ae#L#E#MbX#1#v#1.L.A.pbq", "bx.o.SbXbkak.Qb.aN.2.2.V.Vatahbfbua4bObO.t.t.b.b.b.b.bbCa2bC.JbCbC.J.J.J.I.I.p.pbqb#", "bx.obX.oakaAaNahboa4.NbKbK.V.NbvbV.3.5bObl.t.b.b.b.ba2.pavbFbxbC.J.J.J.J.J.J.pbq.jbA", "bxbXbXbkbabc.V.VbK.Fbebhat.Vaha9#ibu.Fbt.t.b.b.b.bavav.9#MbCbF.I.Jbtbtbt.9.E.L.j.A.A", "blbkbkak.QatbKbhbrbjbr.3bbbbaXaRa1.Y.3bD.O.O.O.ObO.Ob2.tbCavavbwbwavbCbwbH.j.pb#.A#K", "#5aSak.ubca4bha8bsbs.dbVbVbjaObm.M##bEbrbO.o#3.D#X#5#X#X.D#1aI.D.f#y.Pax#uaI#E.A#K#F", "biakbaa#atbh.Tbs.c.c.Y.YbE#JaO#SaW#g#Rbu#5bX#X#BanaIaaanabanab#B#R.faranb5aE#RbA#F#L", "#Cba.l.2bebvbVaQaQaB#laCaC#i#r#rbm.s#P.Gbbbial.6b4#..6#xac.6#.#Ian.6#.anaY#G#E#K#L#L", "bTa#aNbKa8.da1#V#V.MaRaBaRaR#TaZaZ.Z#P#Pam#2.4acabaI#Q#2#W#0aI#.abacacanaY.D.E#F#L#L", "bTbB.Bbra9aQ#l#laRaR##a1#i#i##aa#T#S#Pa6am#UalbRaU#0aE#2.6.7#IbR#I#ebR.4anaJ#u#y#u#E", "ayaNbhbsaQaCaC#Ja9bJbsad.3br#6aqaqa7#Pa6.G#N#0#..4alaP#O.6.7.7bR#cb5#.#Y#Qab.P#M#1#1", "aM#sbbbvaQ.dadbjbj.NbjbbbebbahaP#Pa9#Ra6aU#Z#NalaY#G#H#0.6.7#cbRac#cac#.acab#X#C#C#C", "a0#b.3bJ.va0a0aVbJ#zbJby#n.Ya9#Pa6buaU#P#d#MbkbT.6#caebi#..7.4.6.7#.#H.7aYb5#PaxaIaI", "#taVbzaVaQ#gaO#SaW.h.h.h.G.UaB#Ra6aRa5#Pam#N#7aiaY#RbT#7.6.6.Zaca5#W#HabaY#.ab#c#.#H", "#7aVaJbE#t#n#4#la5aLaVaw#w#N.V#harby#paaag#z#pa3#G#H#s#HaY#c.6#H#caY#H#DaYac#F#D#D#D", "#iag#0#b.mbJbybNbm#r#lbsaSblaebl#e#O#s#p#zao#z#faL#r#haV#haW.g#w.Z#.af.R#m.D#I#l#9.P", "#NaT.3bb.Y.c.0#2#7#O#7aSbTbi#MaF.0#ObG#NaT#0#Va5#d#gaWaZ.H.Z#tar#d.rbdbdbd#earaa#d.U", "bpaT#NbzbzaQ.cbbbr.Ta8.vbsbsbJbJ.dbsbr#N#oaWaR.Zaf#fau.U#daz.h#lafbg.z.kb6b4bd.k.g.k", "brbu#Naqbna1##.Vbobo.B#b#o#b#b#bbb.Natbf#Oa7bU#f.U#8#t.Mbp#l.Y.cbT.R.R#Z#vbx#Mbx#CbT", "#l.c#N#RaabZbSaQ.5aHaHaHaH.0aMaMaMaNb.aNaMau.r.U.U.U.Zam.ram#ta3a3aK#j.C#h.0#wbTbT#U", "aW#Jbj.7#Rbhbpa1.5aHaH#a#a.5aHaHb..q.Qb.ataaaraG#Tarara5#da5.rafafbWbW.ibg.m.#.i...e", ".r##bG#Han.TbZbp.q#a#abQbQ#a#a#abQ.yasbc.Vamam.Z.ZaL#8#8#iaL.ebY.e.g.gbdbdbY.k.#bWaf", "ambp.F#N#PaQaZa7bZ.l.lbQ.l.l.l.lb0.qas.2aMa8.3.3.3ad.vbb.3aw#Uay#w.0#s#p#0#hajbY.e.z", ".da1br.2aGaBaoaZaBbQ.q.qb0#a.u.qb0.ybQaNbhbebhbhbrbbbGbh.V#w#w.0aH.0#o#b#j#m#9.e.k.a", ".V#2a8ahat.H#raGao.5.y.qb0.w.X.wb0.ybQaNbe.2.2.2at.V.BaH.qaFayaw.0aDaD#m.RbYaK.m.#bg", ".V.Va9.2#AbK#Rao#a#a.y.y.y.u.u.wb0bQbQaNa4bKbKbebebb#o.0.0#s#h#j.Wag.e#zaKaKaK.e.g.e", "bebr.8bG.5bDaS#7bc.l.w.Q.Xb0.w.ub0.Q#a.Va9bVbva9bVa3bY.Wa0aV.e.m.eaKaKaK.e.e.k.e.g.e", "bvbvbvbVah.Qb.bIbI.Q.lbQa#.y.waA.ubD.5bSa1##a1aC##.Y..a3a3.s.s.s.s.#.#...#.z.k.z.z.z", "bVa9bVa9bKbB.Q.Qas.Q.y.8.q.Q.QaA.QbB.vbp#f.rauaua7aLbWafaLbWbWbW.i.sbg.z.......#.#.#", "aBaB#VaBaQ.VbBbaa#aAb0#v#2a#.l.wa##wbm#SaWaW#Sau#4aLbWbW.i.ibg...#.#...z.a.#b3.#....", "#g.H#g#gbp.F.2a#.X#2#2#v#2ak.X.1.5.hbnau.Hau#f#4aL..bg.#.#.s.#.#.#.#..b3.a.a.n.k.k.g", "#S#S#S#S#SaObb#A.x#2akas.X.ubDaN#Ja7au.HbN#g.Z..b3b3b3.z.z.k.k.z.z.k.k.g.g#9.g.R.R.R", ".h.h.h.h.h#r#TaT#A.q.Xa#a#ap.8bZ#SbU#g#g#gbn.a.a.k.k.k.e.k#9.g.eaKbY#9.R.R#m#j.C.C.C" };vdkbuilder2-2.4.0/vdkbuilder/pixmaps/cursor.xpm0000644000000000000000000000140307252426403015242 /* XPM */ static char *cursor_xpm[] = { /* width height num_colors chars_per_pixel */ " 29 17 4 1", /* colors */ ". c #000000", "# c #ffffff", "a c #none", "b c #ffffff", /* pixels */ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaa.b.aaaaaaaaaaaaaaaa", "aaaaaaaaaa.bb.aaaaaaaaaaaaaaa", "aaaaaaaaaa.bbb.aaaaaaaaaaaaaa", "aaaaaaaaaa.bbbb.aaaaaaaaaaaaa", "aaaaaaaaaa.bbbbb.aaaaaaaaaaaa", "aaaaaaaaaa.bbbbbb.aaaaaaaaaaa", "aaaaaaaaaa.bbbbbbb.aaaaaaaaaa", "aaaaaaaaaa.bbbbb....aaaaaaaaa", "aaaaaaaaaa.bbbbb.aaaaaaaaaaaa", "aaaaaaaaaa.b..bb.aaaaaaaaaaaa", "aaaaaaaaaa..ba.bb.aaaaaaaaaaa", "aaaaaaaaaa.bab.bb.aaaaaaaaaaa", "aaaaaaaaaaaaaab.bb.aaaaaaaaaa", "aaaaaaaaaaaaaaa.bb.aaaaaaaaaa", "aaaaaaaaaaaaaaaa..baaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", };vdkbuilder2-2.4.0/vdkbuilder/pixmaps/emacs.xpm0000644000000000000000000000637207451112210015014 /* XPM */ static char *emacs_xpm[]={ "24 22 133 2", "Qt c None", ".p c #000000", ".x c #000202", ".t c #000808", ".V c #000c0c", ".q c #001f1f", ".U c #002727", "#b c #004000", ".# c #004040", ".a c #008080", ".y c #060600", ".s c #080c0c", ".d c #082f2f", ".r c #090909", ".w c #0b2b2b", ".m c #0d0d0d", ".u c #0f1212", ".o c #101010", "#h c #111111", ".W c #131616", "#. c #131b1b", ".8 c #132a24", ".e c #161d1d", ".v c #170808", "#l c #191919", ".k c #1a1a1b", ".9 c #1b1b18", ".H c #1f1f20", "#6 c #202020", ".n c #203334", ".D c #234949", ".G c #272727", "#W c #2b2b2b", ".z c #2c2c20", ".J c #2f4f4a", "a# c #313131", ".C c #315758", ".l c #404000", ".T c #404040", ".F c #434c4e", ".b c #4f4f51", ".5 c #545455", "#s c #575758", ".I c #57575a", ".c c #575b5d", ".E c #597f7f", ".f c #5a5a5c", ".A c #5c5c5c", ".j c #5e5e60", "#C c #6d6d6f", "#g c #6e6e5d", "#2 c #727272", "ac c #737373", "#9 c #747474", ".g c #757578", "#k c #777777", ".i c #77777a", "#P c #797979", ".h c #7a7a7d", "#c c #800000", ".M c #80806d", "#x c #89897b", ".2 c #8e8e8e", ".1 c #8f8f91", ".R c #919191", ".B c #919b9d", "#o c #93938b", "aa c #959595", ".Q c #9d9d9d", "#M c #9f9f9f", "#y c #a0a0a0", "#3 c #a2a2a2", "#z c #a5a5a6", "#r c #a6a6a9", "#N c #a7a7a8", "#t c #a8a8a8", ".P c #a9a9a9", "#I c #ababad", "#R c #acacac", "a. c #adadae", "#7 c #afafaf", "#V c #afafb1", "#S c #b2b2b3", "#u c #b4b4b4", "#L c #bbbbbd", "#O c #bcbcbc", ".O c #bdbdbd", "#p c #bebebe", "#0 c #bebebf", "#1 c #bfbfbf", ".7 c #bfcbcb", "#T c #c1c1c2", "#a c #c3c3c3", "#q c #c3c3c4", "#D c #c4c4c4", "#U c #c5c5c8", "#j c #c7c7c7", "#8 c #cacaca", "#m c #cccccc", ".0 c #cdcdcb", ".K c #cfcfc5", "#J c #cfcfcf", "#5 c #cfcfd1", ".X c #cfd2d2", "#G c #d2d2d2", "#4 c #d2d2d3", "ab c #d4d4d4", "#X c #d6d6d6", ".S c #d7d7d8", "#A c #d8d8d8", "#F c #d9d9d9", ".Z c #dcffff", "#e c #dfdfdf", "#w c #e0e0d8", ".3 c #e3e3e3", "#v c #e3e3e4", "#n c #e6e6e2", ".N c #e7e7e8", "#B c #e8e8e8", "#H c #ebebeb", "#Z c #ebebec", ".6 c #ececec", "#f c #eeeeee", ".4 c #efefef", "#d c #f0f0f0", "#Q c #f2f2f2", "#K c #f3f3f3", "#i c #f6f6f6", ".L c #f7f7f7", "#E c #f8f8f8", "#Y c #fcfcfc", ".Y c #fefefe", "## c #ffffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQt.#.#.#.#.#.#.#QtQtQtQtQtQt.a.#.#.#.#.#.bQt", "QtQt.c.d.e.f.g.h.i.jQtQtQtQtQtQt.a.a.a.#.#.#.#Qt", ".a.k.l.m.b.a.a.a.a.aQtQtQtQtQtQtQtQt.a.a.#.#.#.i", ".a.n.l.o.aQtQt.a.a.p.p.p.p.p.p.p.pQtQt.a.a.#.#.i", ".a.q.l.p.aQt.a.p.p.r.s.t.u.v.w.t.t.xQtQt.a.#.#.i", ".a.q.l.p.a.a.y.z.A.l.#.#.B.C.D.E.l.F.GQt.p.p.H.I", ".a.q.l.p.p.p.J.K.L.l.M.N.O.P.Q.R.l.S.T.p.p.p.l.a", "Qt.a.U.l.V.W.X.Y.Z.l.0.1.2.3.4.5.l.6.7.8.9.a.a.a", "QtQt.a#..l.l.Y.Y##.l#a#b#c#d.Y#c.l#e#f#g.l.aQtQt", "QtQtQt.a#h.l.Y.Y.l.l#i#j#b#i.Y#b#k.l.Y.#.a.aQtQt", "QtQtQt.a#l#m#i.l.l.l#####n#o#p#e#q#r.l.#.aQtQtQt", "QtQtQt.a#s#t#u.##v###f#i#w#x#y#z#A#B.#.a.aQtQtQt", "QtQtQt.a.o#C#B.##D###E#F#G#H#I#J#K#L.#.aQtQtQtQt", "QtQtQt.a.a.p.4#M.#.4#####N.4.Y.Y#O.#.a.aQtQtQtQt", "QtQtQtQt.a.a#P#Q#R.######F#S#T#U#V.#.aQtQtQtQtQt", "QtQtQtQtQt.a#W#X##.##G#Y#Y#Z#0#F#1.#.aQtQtQtQtQt", "QtQtQtQtQtQt.a#2#E#3.##4.Y#5.l.l.#.aQtQtQtQtQtQt", "QtQtQtQtQtQt.a#6#7#8#9.##e.4a..l.#.aQtQtQtQtQtQt", "QtQtQtQtQtQtQt.a.ra#aa.G.#ab#m.l.#.aQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.a.a.p.a.#ac.l.l.#.aQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.#QtQtQtQtQtQtQtQt"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/entry.xpm0000644000000000000000000000127707252426404015100 /* XPM */ static char *entry_xpm[] = { /* columns rows colors chars-per-pixel */ "21 21 5 1", " c Black", ". c #7b7b7b", "X c Gray74", "o c Gray100", "O c None", /* pixels */ "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "....................o", ". Oo", ". oooooooooooooooooOo", ". ooooooooooooooo oOo", ". oooooooo oooooo oOo", ". oooooooo oooooo oOo", ". ooo oo O ooo oOo", ". oo OoO o o. oo oOo", ". oooooo o ooo oo oOo", ". ooo o ooo oo oOo", ". oo Ooo o ooo oo oOo", ". oo Ooo o oo. oo oOo", ". ooo o ooo oOo", ". ooooooooooooooo oOo", ". oooooooooooooooooOo", ".OOOOOOOOOOOOOOOOOOOo", "ooooooooooooooooooooo", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/exec.xpm0000644000000000000000000000164307453512421014656 /* XPM */ char * gear_xpm[] = { "22 22 21 1", " c None", ". c #394248", "+ c #1C60AB", "@ c #BABABA", "# c #C0C0C0", "$ c #CBCBCB", "% c #D0CFD0", "& c #D3D4D3", "* c #DBDBDB", "= c #E2E2E2", "- c #EBEBEB", "; c #B1B0B0", "> c #929292", ", c #9B9B9B", "' c #F2F3F3", ") c #707070", "! c #E7E7E8", "~ c #F8F7F8", "{ c #FDFDFD", "] c #4A4A4A", "^ c #A3A3A3", " ", " ", " ", " ................ ", " .++++++++++++++. ", " .++++++++++++++. ", " ................ ", " .@@@@@@@###$%&*. ", " .@@@@@@##$%&**=. ", " .@@@@##$$&&**=-. ", " .@@#;>,>#**=--'. ", " .@##>,)),=!-'~~. ", " .#$%,){)]%^,^={. ", " .%&&,))]^^,))^{. ", " .&**$,]^&,){)]{. ", " .*=!-''~{^))]^{. ", " .=-''~{{{=^]^={. ", " .-'~{{{{{{{{{{{. ", " ................ ", " ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/exech.xpm0000644000000000000000000000070107252426405015023 /* XPM */ char *exech_xpm[]={ "16 16 6 1", "# c green", "d c #a0a0a4", "a c #ffffff", "b c #585858", "c c #c0c0c0", ". c None", "................", ".....######.....", "..###abcaba###..", ".#cabcbaababaa#.", ".#cccaaccaacaa#.", ".###accaacca###.", "#ccccca##aaccaa#", "#dd#ccc##cca#cc#", "#d#dccccccacc#c#", "##adcccccccccd##", ".#ad#c#cc#d#cd#.", ".#a#ad#cc#dd#d#.", ".###ad#dd#dd###.", "...#ad#cc#dd#...", "...####cc####...", "......####......"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/fileclose.xpm0000644000000000000000000001250607355077040015703 /* XPM */ static char *fileclose_xpm[]={ "32 32 201 2", "Qt c None", ".# c #000000", ".D c #161616", ".s c #404040", ".C c #4b4b49", "bg c #5d5d5c", ".r c #5d5d5d", "ao c #646462", "an c #646463", "ab c #656563", "am c #656564", "#4 c #666665", "#2 c #667357", "al c #676766", "#S c #686866", "#L c #696968", "#y c #6a6a69", "#r c #6b6b6a", "#q c #6c6c6b", "#G c #6c6c6c", "a# c #6c7d6f", "#p c #6d6d6c", "#o c #6e6e6d", "#n c #6e6e6e", "#m c #6f6f6e", "#R c #6f7f77", "aa c #6f8073", "#J c #707c69", ".6 c #727271", ".q c #767676", ".Q c #800000", "be c #83837f", "a0 c #838380", "bf c #848482", ".B c #858585", "#x c #8594a3", "#w c #8595a3", "#v c #8696a4", "aF c #878785", "#u c #8796a5", "aX c #888886", "bd c #898989", "bc c #8b8b89", "aA c #8c8c8a", "#K c #8c9baa", "bb c #8d8d89", "ag c #8d8d8c", "aj c #8e8e8c", "az c #8e8e8d", "ai c #8f8f8d", "#H c #8f9eac", "aC c #929290", ".8 c #939393", "a3 c #949490", "a2 c #949491", "aU c #949492", "#W c #949493", ".7 c #959594", "#O c #96a5b4", "#l c #979796", "#k c #989898", "ba c #999995", ".2 c #9a9a99", "af c #9b9b9a", "#3 c #9baab9", "aE c #9c9c9a", "aW c #9d9d9b", ".H c #9d9d9d", "#0 c #9dacbb", "aD c #9e9e9b", ".G c #9e9e9e", "#Q c #9f9c64", "b# c #9f9f9b", "b. c #9f9f9d", ".5 c #9f9f9e", "a4 c #9f9f9f", "a9 c #a0a09d", "#V c #a0a09f", "ar c #a1a1a0", "aS c #a2a2a0", "#7 c #a2a2a1", "#h c #a2a2a2", ".K c #a3a3a2", ".1 c #a3a3a3", ".Y c #a4a4a3", ".0 c #a4a4a4", ".I c #a5a5a4", "#Y c #a7a7a6", ".h c #a8a8a8", "#X c #a9a9a8", ".j c #aaaaaa", "aI c #ababa7", ".p c #adadad", "aH c #afafac", ".3 c #afafae", "a6 c #b1b1af", "#C c #b1b1b0", "#j c #b3b3b3", "a8 c #b4b4b1", "a7 c #b4b4b3", "#i c #b4b4b4", "aV c #b6b6b4", "ak c #b9b9b6", ".F c #b9b9b9", "ah c #bcbcbb", "#I c #bdb895", "#Z c #bdbdbb", ".c c #c1c1c1", ".g c #c3c3c3", "#E c #c5c5c4", "#D c #c7c7c6", ".L c #c9c9c8", "a. c #cbc59d", "aR c #ccccc7", "aK c #ccccc8", "#1 c #cdc496", "a5 c #cdcdc9", "aJ c #cdcdca", "a1 c #cececa", ".Z c #cecece", "ay c #cfcfcb", "aQ c #cfcfcc", "ax c #d0d0cd", ".l c #d0d0d0", "aP c #d1d1cd", "aq c #d1d1ce", ".i c #d1d1d1", "aw c #d2d2ce", "#P c #d3c78d", "aO c #d3d3cf", "ap c #d3d3d0", ".k c #d3d3d3", "ad c #d4d4d1", "aZ c #d5d5d1", "aG c #d5d5d2", "ac c #d6d6d2", "aY c #d6d6d3", "#6 c #d7d7d4", "#5 c #d8d8d5", "aN c #d9d9d6", "#U c #dadad7", "aM c #dadad8", "#T c #dbdbd8", "aL c #dcdcd9", "#N c #dcdcda", "av c #ddddda", "aB c #dddddb", "#M c #dededb", "au c #dededc", "#A c #dfdfdd", "aT c #e0e0dd", "at c #e0e0de", ".b c #e0e0e0", "#z c #e1e1de", "as c #e1e1df", "#t c #e2e2e0", ".A c #e2e2e2", "#s c #e3e3e1", "#9 c #e4e4e2", "#g c #e5e5e3", "#f c #e6e6e4", "#8 c #e7e7e5", "#. c #e7e7e6", "#e c #e8e8e6", ".9 c #e9e9e7", "#d c #e9e9e8", ".X c #eaeae8", "ae c #eaeae9", "#c c #ebebe9", ".W c #ececea", "#b c #ececeb", ".P c #ededeb", ".V c #ededec", "#F c #eeeeec", ".O c #eeeeed", ".U c #efefee", "#a c #f0f0ee", ".N c #f0f0ef", ".4 c #f1f1f0", ".M c #f2f2f1", "## c #f3f3f2", ".T c #f4f4f3", ".z c #f4f4f4", ".S c #f5f5f4", "#B c #f5f5f5", ".y c #f6f6f5", ".J c #f6f6f6", ".o c #f7f7f6", ".x c #f7f7f7", ".R c #f8f8f8", ".n c #f9f9f8", ".w c #f9f9f9", ".f c #fafaf9", ".m c #fafafa", ".v c #fbfbfa", ".e c #fbfbfb", ".u c #fcfcfc", ".d c #fdfdfd", ".t c #fefefe", ".E c #ff0000", ".a c #ffffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQt.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#QtQtQtQtQtQtQtQt", "QtQtQtQtQtQt.#.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.b.c.#QtQtQtQtQtQtQt", "QtQtQtQtQtQt.#.a.a.a.a.a.a.a.a.a.a.a.a.d.e.f.g.e.h.#QtQtQtQtQtQt", "QtQtQtQtQtQt.#.a.a.i.j.k.a.k.a.j.j.d.l.m.n.o.p.q.r.s.#QtQtQtQtQt", "QtQtQtQtQtQt.#.a.a.a.a.a.a.a.a.t.u.v.w.x.y.z.A.B.C.D.#QtQtQtQtQt", "QtQtQtQtQtQt.#.a.a.E.F.k.k.t.h.G.H.I.J.K.L.M.N.O.P.H.#QtQtQtQtQt", "QtQtQtQtQtQt.#.a.a.Q.E.a.d.e.f.R.o.S.T.M.N.U.V.W.X.Y.#QtQtQtQtQt", "QtQtQtQtQtQt.#.a.a.j.Q.E.Z.n.0.1.2.3.4.5.6.7.8.9#..0.#QtQtQtQtQt", "QtQtQtQtQtQt.#.a.t.u.v.Q.E.y.z##.4#a.O#b#c#d#e#f#g#h.#QtQtQtQtQt", "QtQtQtQtQtQt.#.a.e#i#j.J.Q.E#k#l.O#m#n#o#p#q#r#s#t#h.#QtQtQtQtQt", "QtQtQtQtQtQt.#.a.R.o.S.T.M.Q.E.V.W#o#u#v#w#x#y#z#A.K.#QtQtQtQtQt", "QtQtQtQtQtQt.#.a#B#C#k#D#E#F.Q.E.9#G#H#I#J#K#L#M#N.K.#QtQtQtQtQt", "QtQtQtQtQtQt.#.a##.4#a.O#b#c#d.Q.E#r#O#P#Q#R#S#T#U#V.#QtQtQtQtQt", "QtQtQtQtQtQt.#.a.N.K.7#W#X.2#Y#Z.Q.E#0#1#2#3#4#5#6#7.#QtQtQtQtQt", "QtQtQtQtQtQt.#.a.V.W.X.9#8#g#9#t#z.Q.Ea.a#aaabacad#7.#QtQtQtQtQt", "QtQtQtQtQtQt.#.aaeafag#fahaiajak#Mal.Q.Eamanaoapaqar.#QtQtQtQtQt", "QtQtQtQtQtQt.#.a#e#f#g#sasatauav#T#U#5.Q.Eapawaxay#V.#QtQtQtQtQt", "QtQtQtQtQtQt.#.a#g#lazagaAaBaCaDaEaFaGaH.Q.EaIaJaK#7.#QtQtQtQtQt", "QtQtQtQtQtQt.#.a#t#z#A#MaLaMaN#6acadaOaPaQ.Q.EaRaRaS.#QtQtQtQtQt", "QtQtQtQtQtQt.#.aaTaUaV#TaWaXaYaZaAaia0a1a2a3aRaRaRa4.#QtQtQtQtQt", "QtQtQtQtQtQt.#.aav#T#U#5aYaGapawaxaya5aRaRaRaRaRaR#V.#QtQtQtQtQt", "QtQtQtQtQtQt.#.la6a7a8a9a9b.b.b#babbbcbcbcbdbdbebfbg.#QtQtQtQtQt", "QtQtQtQtQtQt.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#QtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/filesaveas.xpm0000644000000000000000000000543107352076436016064 /* XPM */ static char * filesaveas_xpm[] = { "24 24 96 2", " c None", ". c #000000", "+ c #F4CB34", "@ c #E3A445", "# c #E79E3C", "$ c #574C2A", "% c #F6F9FF", "& c #ABD5FF", "* c #CCCCCC", "= c #5F542E", "- c #C5E1FF", "; c #6699CC", "> c #999999", ", c #524828", "' c #B4D9FF", ") c #FFFFFF", "! c #203141", "~ c #E3A647", "{ c #2C4258", "] c #223446", "^ c #646464", "/ c #35506B", "( c #2B4258", "_ c #656565", ": c #8D8D8D", "< c #45678A", "[ c #3A5876", "} c #D2AA71", "| c #6B6B6B", "1 c #8C8C8C", "2 c #9E9E9A", "3 c #4E769D", "4 c #4E4015", "5 c #696966", "6 c #686868", "7 c #7C7C7C", "8 c #B5B5B5", "9 c #EFEFEF", "0 c #060605", "a c #AAAAAA", "b c #A7A7A7", "c c #C6C6C6", "d c #E7E7E7", "e c #5C8AB8", "f c #EBF1F8", "g c #F5F5F5", "h c #BBCAD7", "i c #6496C8", "j c #5C8BB9", "k c #5B89B7", "l c #5A87B5", "m c #6598CB", "n c #8EA4BC", "o c #B8B8B8", "p c #C2C2C2", "q c #DFDFDF", "r c #72787D", "s c #2E465F", "t c #436587", "u c #6090C0", "v c #263A4F", "w c #304961", "x c #CBCBCB", "y c #25394C", "z c #4A7095", "A c #426385", "B c #6294C5", "C c #C1C1C1", "D c #2E455D", "E c #436688", "F c #B3B3B3", "G c #233648", "H c #486D91", "I c #556B81", "J c #5E8EBD", "K c #C0C0C0", "L c #293E54", "M c #466A8E", "N c #B4B4B4", "O c #9F9F9F", "P c #233649", "Q c #496E93", "R c #3A5977", "S c #4A5B6C", "T c #3C5B7A", "U c #919191", "V c #B2B2B2", "W c #808080", "X c #7D7D7D", "Y c #777777", "Z c #626262", "` c #575757", " . c #192735", ".. c #344E69", "+. c #36516D", "@. c #263A4E", " ", " . . ", " . + @ . ", " . . . . . . . . . . . . . . + # $ . ", " . % & * * * * * * * * * * . + # = . ", " . - ; > > > > > > > > > . + # , . . ", " . ' ; ) ) ) ) ) ) ) ) . + # , . ! . ", " . ' ; ) ) ) ) ) ) ) . + ~ = . { ] . ", " . ' ; ) * * * * * . + # = . ^ / ( . ", " . ' ; ) ) ) ) ) . + # $ . _ : < [ . ", " . ' ; ) ) ) ) ) . } = . | 1 2 3 [ . ", " . ' ; ) * * * . 4 . . 5 6 7 8 3 [ . ", " . ' ; ) ) ) 9 0 . a b 8 c d d e [ . ", " . ' ; f ) g d d d d d d d d h e [ . ", " . ' ; ; i j e e e e e k l e e e [ . ", " . ' ; m n o o p q d * r s t e e [ . ", " . ' ; u o o v w d x o a y z A e [ . ", " . ' B e o C D E C o o F G H E e [ . ", " . I J e K q L M o o N O P Q E e R . ", " . S T U V W W X Y Z ` .w ..+.@.. ", " . . . . . . . . . . . . . . . ", " ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/finish.xpm0000644000000000000000000000134507451177706015224 /* XPM */ static char *finish_xpm[]={ "22 22 8 1", ". c None", "d c #008080", "a c #00c0c0", "b c #030003", "# c #0c3c54", "e c #303030", "f c #dcdcdc", "c c #ffffff", "......................", "......................", ".........##...........", ".........#ab......cc..", ".........#aab.....cd..", ".........#adab....cd..", ".........#addab...cd..", "...#######adddab..cd..", "...#aaaaaaaddddab.cd..", "...#adddddddddddabcd..", "...#addddddddddddecd..", "...#addddddddddddecd..", "...#addddddddddddbcd..", "...#adddddddddddb.cd..", "...#bbbbbbdddddb..cd..", ".........bddddb...cd..", ".........bdddb....cd..", ".........bddb.....cd..", ".........bdb......cd..", ".........bb........fff", "......................", "......................"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/fixed.xpm0000644000000000000000000000124607450725170015034 /* XPM */ static char *fixed_xpm[]={ "21 21 7 1", "# c None", "c c #000000", "b c #008000", "e c #808000", ". c #808080", "d c #c0c000", "a c #ffffff", ".....................", ".###################.", ".###################.", ".#aaaaaaaa##aaaaaaa#.", ".#a######b##a#####b#.", ".#a######b##a#####b#.", ".#abbbbbbb##abbbbbb#.", ".###################.", ".#aaaaaaaaaaa#######.", ".#a#########c#######.", ".#a##ddddd##c#######.", ".#a##deeed##c#######.", ".#a##deeed##c#######.", ".#a##deeed##c#######.", ".#a##deeed##c#######.", ".#a##deeed##c#######.", ".#a##ddddd##c#######.", ".#a#########c#######.", ".#acccccccccc#######.", ".###################.", "....................."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/fontseldialog.xpm0000644000000000000000000000142707252426407016571 /* XPM */ static char *fontseldialog_xpm[] = { /* columns rows colors chars-per-pixel */ "21 21 11 1", " c Gray0", ". c #00007b", "X c #7b7b7b", "o c Green", "O c Cyan", "+ c Red", "@ c Yellow", "# c Gray74", "$ c Gray87", "% c Gray100", "& c None", /* pixels */ "&&&&&&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&&&&&&", "&&XXXXXXXXXXXXXXXX&&&", "&&X.+@...........X &&", "&&X.Oo.%%%....& &X &&", "&&XXXXXXXXXXXXXXXX &&", "&&X%%%%%%%%%%%%%%X &&", "&&X%%%%%%%X &%%%X &&", "&&X%%%%%%$ %X%%%X &&", "&&X%%%%% %%%%%%X &&", "&&X%%%%%% %%%%%X &&", "&&X%%% $ %%%%%%%X &&", "&&X%%%& X%%%%%%%X &&", "&&X%%%%%%%%%%%%%%X &&", "&&XXXXXXXXXXXXXXXX &&", "&&& &&", "&&&&&&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&&&&&&&" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/formprops.xpm0000644000000000000000000000076507252426407015772 /* XPM */ char *form_props_xpm[]={ "16 16 9 1", "e c #808080", "b c #0000c0", ". c None", "d c #000080", "f c #ffffc0", "a c #c0c0c0", "g c #a0a0a4", "# c #000000", "c c #ffffff", ".###############", ".##abbbbbbb#ac##", ".###ddddddd#####", ".#aaaaaaaaaaaaa#", ".#e###########e#", ".#efffffffff#ee#", ".#effffa##af#ge#", ".#effff#aa#f#ge#", ".#effff#ac#f#ce#", ".#efa##a##af#ee#", ".#ef#aa#ffff##e#", ".#ef#ac#ffff#ge#", ".#efa##affff##e#", ".#efffffffff#ee#", ".#aaaaaaaaaaaaa#", ".###############"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/frame.xpm0000644000000000000000000000527007453042307015025 /* XPM */ static char *frame_xpm[]={ "21 21 108 2", "Qt c None", ".e c #000000", ".3 c #111111", ".F c #24241b", "#a c #313130", ".Z c #383838", ".9 c #393939", ".N c #3b3b3a", ".a c #585858", ".8 c #5d5d44", ".B c #5f5f5e", ".0 c #6a6a4e", ".D c #6b6b4f", "## c #787877", ".b c #7b7b7b", ".# c #800000", "#P c #808080", "#b c #828280", "#. c #848484", "#g c #8e8e8d", "#y c #939392", "#w c #959593", "#v c #959594", "#m c #979796", "#x c #9c9c9a", "#f c #a0a078", ".z c #a3a37a", "#d c #a4a4a4", "#i c #a6a6a4", ".7 c #a7a77d", "#u c #a7a7a5", "#h c #a7a7a6", ".2 c #a8a87e", "#z c #a8a8a5", ".o c #b4b487", "#J c #b4b4b2", ".C c #b4b4b4", "#L c #b6b6b4", "#I c #b6b6b5", ".A c #babab9", "#j c #bbbbb8", "#H c #bbbbba", "#K c #bcbcb9", "#o c #bdbdbb", ".1 c #bebe8e", "#t c #bebebd", ".c c #c0c000", "#e c #c4c49c", "#n c #c4c4c2", "#c c #c4c4c4", "#M c #c6c6c3", "#G c #c6c6c4", "#l c #cbcbca", ".6 c #cccc99", "#p c #ccccc9", "#A c #d2d2cf", ".V c #d3d3a8", "#F c #d3d3d2", ".5 c #d4d4aa", "#B c #d4d4d1", ".y c #d5d5ab", "#O c #d5d5d1", ".s c #d5d5d5", ".K c #d6d6ad", ".E c #d7d7af", ".O c #d7d7be", "#N c #d7d7d4", "#s c #d8d8d6", ".n c #dadab5", ".X c #dbdbb9", ".W c #dcdcba", ".R c #ddddbb", ".x c #ddddbd", "#r c #dddddc", ".P c #dedebd", ".Q c #dedebf", "#k c #dedede", ".v c #dfdfc0", ".U c #dfdfc1", "#E c #dfdfdd", ".Y c #e0e0c1", ".w c #e0e0c3", ".m c #e1e1c4", ".l c #e2e2c6", ".M c #e2e2c7", ".u c #e3e3c8", "#D c #e3e3e2", ".H c #e4e4cc", ".L c #e5e5cc", ".J c #e6e6d0", ".k c #e9e9d5", ".i c #e9e9d6", ".I c #eaead7", ".T c #ebebd7", ".4 c #ebebd9", ".j c #ececda", ".t c #ececdd", ".G c #ededdf", ".r c #ededec", ".S c #eeeedd", ".h c #f0f0ef", ".q c #f2f2f1", ".p c #f4f4f3", ".g c #f5f5f4", ".f c #f6f6f6", "#q c #f7f7f7", "#C c #fefefe", ".d c #ffffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQt.#.#.#Qt.#QtQtQtQtQtQtQtQtQtQtQt", "Qt.a.b.bQt.#Qt.#.c.#.#.#.c.a.a.a.a.a.a.dQt", "Qt.a.d.dQt.#.#.#.c.#Qt.#.c.d.d.d.d.d.a.dQt", "Qt.a.dQtQt.#Qt.#.c.#.#.#.cQtQtQtQtQt.a.dQt", "Qt.a.dQtQtQtQt.c.cQtQt.c.cQtQtQtQtQt.a.dQt", "Qt.a.dQt.e.d.d.e.e.e.e.e.e.e.e.e.f.g.a.d.h", "Qt.a.dQt.e.d.d.e.i.j.k.l.m.n.o.e.p.q.a.d.r", "Qt.a.d.e.e.e.s.e.t.u.v.w.x.y.z.e.A.e.e.B.C", "Qt.a.e.D.k.E.e.F.G.H.I.J.K.c.c.F.e.L.M.D.N", "Qt.a.e.O.P.Q.R.R.S.T.U.K.V.y.W.W.X.Y.c.c.Z", "Qt.a.e.0.1.2.e.3.4.5.K.6.6.c.7.e.e.c.c.8.9", "Qt.a.d.e.e.e#..e.P.c.c.c.c.c.7.e##.e.e#a#b", "Qt.a.dQt.e#c#d.e#e.7.7.7.7.7#f.e#g#h.a#i#j", "Qt.a.dQt.e#k#l.e.e.e.e.e.e.e.e.e#m#n.a#o#p", "Qt.a.dQt.e#q#r#s#t#u#v#w#v#v#x#y#z#A.a.d#B", "Qt.a.dQt.e#C#D#E#F#G#H#o#I#J#K#L#M#N.a.d#O", "Qt.a.dQtQtQtQtQtQtQtQtQtQtQtQtQtQt#P.a.dQt", "Qt.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.dQt", "Qt.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.dQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/ghost.xpm0000644000000000000000000000056507252426407015065 /* XPM */ static char* ghost_xpm[]={ "16 14 3 1", ". c None", "# c #000000", "a c #ffffff", ".....####.......", "....#aaaa#......", "...#aaaaaa#.....", "...#aaaaaa#.....", "..##a#aa#a###...", ".#aaa#aa#a#aa#..", ".#aaaaaaaaaaa#..", "..#aaaaaaaaa#...", "...#aaaaaaa#....", "...#aaaaaaa#....", "...#aaaaaaa#....", "..#aaaaaaaaa#...", ".#aaa#aaa#aaa#..", "..####a###a##..."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/gnome.xpm0000644000000000000000000001620507252426411015037 /* XPM */ static char * gnome_xpm[] = { "50 50 128 2", " c None", ". c #FFFFFF", "+ c #968A7C", "@ c #928678", "# c #9A8E80", "$ c #998D7F", "% c #988C7E", "& c #918577", "* c #94887A", "= c #978B7D", "- c #9D9183", "; c #A39789", "> c #8B7F73", ", c #8D8175", "' c #9B8F83", ") c #A3978B", "! c #988C80", "~ c #9A8E82", "{ c #978B7F", "] c #95897D", "^ c #998D81", "/ c #968A7E", "( c #94887C", "_ c #95897B", ": c #938779", "< c #8F8375", "[ c #908476", "} c #9E9284", "| c #9B8F81", "1 c #9D9185", "2 c #9C9084", "3 c #918579", "4 c #8F8377", "5 c #93877B", "6 c #8E8276", "7 c #8E8274", "8 c #9F9387", "9 c #908478", "0 c #867A6E", "a c #807468", "b c #74685C", "c c #877B6F", "d c #9C9082", "e c #A29688", "f c #A09486", "g c #84786C", "h c #7C7064", "i c #7B6F63", "j c #73675B", "k c #8C8074", "l c #92867A", "m c #8C8072", "n c #85796D", "o c #706458", "p c #776B5F", "q c #8B7F71", "r c #75695D", "s c #A19589", "t c #AEA296", "u c #AA9E92", "v c #8D8173", "w c #897D71", "x c #7F7367", "y c #A2968A", "z c #A5998D", "A c #A69A8E", "B c #A4988C", "C c #817569", "D c #8A7E70", "E c #FEFEFF", "F c #E5E5F2", "G c #A99D91", "H c #ACA094", "I c #B2A69A", "J c #B4A89C", "K c #A89C8E", "L c #A4988A", "M c #A19587", "N c #ADA195", "O c #B3A79B", "P c #8A7E72", "Q c #AB9F93", "R c #B7AB9D", "S c #A69A8C", "T c #A09488", "U c #9E9286", "V c #887C70", "W c #B5A99D", "X c #B1A599", "Y c #B2A698", "Z c #7E7266", "` c #6E6256", " . c #7D7165", ".. c #B6AA9E", "+. c #786C60", "@. c #897D6F", "#. c #ACA092", "$. c #AFA395", "%. c #A99D8F", "&. c #9F9385", "*. c #796D61", "=. c #B1A597", "-. c #AEA294", ";. c #AA9E90", ">. c #766A5E", ",. c #82766A", "'. c #A89C90", "). c #A79B8F", "!. c #83776B", "~. c #72665A", "{. c #6B5F53", "]. c #605448", "^. c #685C50", "/. c #6D6155", "(. c #695D51", "_. c #7A6E62", ":. c #AFA397", "<. c #6F6357", "[. c #B0A498", "}. c #BAAEA2", "|. c #837769", "1. c #84786A", "2. c #AB9F91", "3. c #B8ACA0", "4. c #BCB0A4", "5. c #A79B8D", "6. c #A5998B", "7. c #D9D9E6", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". + @ + # $ % $ & * + = - ; - @ > , ' ) ' ! ~ { ] ! ^ { { ! / ( $ = + _ * * : @ . . . . . . . . . . ", ". < [ + $ + * _ * % $ % # } | * 1 { ' 2 3 4 5 6 , 5 ^ ~ ^ ^ ~ ' 7 < & _ % $ = _ . . . . . . . . . . ", ". [ + - } $ + % % # # = = $ % _ ! { 8 8 9 0 a b a c 3 ] ] ( { ~ * * + $ d # * 7 . . . . . . . . . . ", ". = - e f # $ d # = * : + % = * 3 ( 1 { g h i j g 0 k l ( 5 ( ! d d d - } | * 7 . . . . . . . . . . ", ". # d } # _ + | % & m [ = # + @ ~ ^ { n o p 4 ^ ' / ] ~ 2 ! / ! = % $ | d | $ % . . . . . . . . . . ", ". - | | % * + # @ m q : # # + : { ^ ! 0 r g s t u ) 8 s 1 5 6 9 @ + $ $ + * _ = . . . . = . . . . . ", ". $ + = = _ * = m v : | d + * + k 9 ( w x 6 y z A B A z / C i C D * d d * < & _ . . . . $ . . . . . ", ". 7 q < @ [ 7 7 E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | . . . . . ", ". = = + @ v < * E E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F . . $ . . . . . ", ". = = % + _ $ f E E | % : @ _ $ 6 6 ! 2 ] ^ A G H I J y k l ) B K L } $ _ : _ = F F . . + . . . . . ", ". : : _ + _ # M E E d $ _ * = | 3 4 ' ) ~ / 8 B N O I 2 P ^ H Q R S = * : @ * # F F . . + . . . . . ", ". & @ + = _ + # E E - - # = _ _ ] 5 T z 9 x C 0 ] U T 9 V T W X Y - m v & & _ d F F . . % . . . . . ", ". & * | - # = % E E # # % = + + ~ { U ^ Z ` r .n 6 ] 4 6 A ..t $ < m _ d $ + + F F . . | . . . . . ", ". v & $ - # = % E E : [ & * $ - 1 / l 0 b +.> ( / ! 1 ^ l ^ 2 4 @.@ f #.$.%.- _ F F . . = . . . . . ", ". 7 7 * % = _ + E E & < & + d &.{ , g *.*.3 A z H B A z ^ 3 V i v M =.Y -.;.e = F F . . + . . . . . ", ". % * + $ = = % E E : _ = # | | 6 n h >.,.) I ) N y A t A ' 5 w _ %.Y ; % | d + F F . . + . . . . . ", ". 1 2 ^ / ] { ^ E E 4 3 ~ 8 ! > n ! h i U '.u t ).B z ).A s T y ] V { ^ ] ~ 5 ] F F . . = . . . . . ", ". { / ! ~ ~ { ( E E / ) ) ] P V 4 ~ h Z 8 ) y B B y y z z s y A a +.3 2 8 A U U F F . . % . . . . . ", ". ( 5 { 2 2 / 6 E E ] 2 9 h Z 4 { / +.!.z ).A ).A B B A z y z u P g 8 Q H t T 2 F F . . % . . . . . ", ". / ] { ~ ~ ] 9 E E 8 ~ , n l A U 5 >.c ).G Q H u '.'.'.A ) ).t s { Q X H Q ~ ( F F . . _ . . . . . ", ". { { { { { ^ ~ E E ~ 4 P l ^ ' ^ k r c 8 s '.A A z ).'.A B u I y l 8 s U ) ^ { F F . . : . . . . . ", ". ( / / / ! 1 s E E ~ c V ^ 2 l x i ~.0 ^ T N ).U 8 B ).A z H W ) 6 ] ( 5 2 / { F F . . { . . . . . ", ". ( ( / ! ^ ^ ! E E {.].^.>.>./.` +.Z l 1 z O A T ) '.Q '.z Q J G 5 { ( 3 ! 3 3 F F . . l . . . . . ", ". / ( / ~ ! 3 P E E (.*.P 6 g _.+.> { z B A :.' G H X I H A G X z 9 ] ( 3 { 6 k F F . . 5 . . . . . ", ". 1 1 4 ~ ^ a <.E E ~ A u Q ).s ] ' ) G u G '.).'.H Q y T ).:.X ~ , k / ( V w { F F . . ( . . . . . ", ". 2 ' ! U k ~.<.E E [.X ).U ! 5 B G t X :.H G '.B ).'.A ).H Q ).1 l 9 ! ] w w ( F F . . l . . . . . ", ". ! { 1 1 .(._.E E :.'.~ ( / ~ t X J J [.H G '.T B ).Q :.:.A ' ' ( ( ~ { 6 6 { F F . . ( . . . . . ", ". ! / { 3 b <.9 E E s ! l / ) t Q N t N u ).A A y A H [.[.u 8 ] ] 5 / ' ^ ( / 1 F F . . { . . . . . ", ". U ^ > C j h y E E ) 1 1 y u [.A ).).z y s s y G H X [.u T ^ { 5 / ^ ^ { ] ^ U F F . . 5 . . . . . ", ". ) ~ n x _.n B E E z G N H u G ).).A ) T T y B :.:.:.H y ! / ~ / ' 2 { l l { ~ F F . . 0 . . . . . ", ". 8 5 V , V w 8 E E ) u t Q G u A A A B B A Q :.O H A ) 1 / ] ^ ] 1 1 5 , 9 { ^ F F . . { . . . . . ", ". ] w 6 U ( P 2 E E z '.).B '.[.y ) B z ).N J }.J ).U 1 2 { ] { l ~ ~ 9 P 3 ^ 2 F F . . z . . . . . ", ". % # d _ @.|.1.E E e } e #.$.2.A ) u 3.4.I G '.2 / ^ ~ 5 ] ^ 5 = & 7 : % = * * F F . . A . . . . . ", ". = = | # * & @ E E | d M 5.%.S N u u t t A U ~ 2 ] ! ! 3 ( ^ ( # & q < _ % # d F F . . s . . . . . ", ". + + # d # # d E E e 2.=.Y =.=.H Q ).T 1 2 { 3 ' ( / / 4 l ! ( # & m @ $ | $ % F F . . U . . . . . ", ". = # # % + = # E E _ e ;.6.e L 1 y 8 / ( ~ ^ l ~ 5 ( ( 6 3 ! ( * [ @ | M | & q F F . . ' . . . . . ", ". = &.- + @ * = E E m $ } % _ = 3 ! ^ 5 ( ' 1 { ^ l ( ] 6 l { 5 [ < * - M # [ D F F . . ^ . . . . . ", ". _ &.- % _ = % E E + d } # $ # l / ! ] ] ! ^ ^ { 3 ( / 9 5 { l 7 7 : # | % = $ F F . . = . . . . . ", ". * % = = # $ _ E E = + : : * : ~ ! ! { ( 3 5 ^ ] 9 / ^ 5 ] ! l m [ % } d % # f F F . . + . . . . . ", ". . . . . . . . E E 7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.F . . % . . . . . ", ". . . . . . . . E 7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.. . : . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/gnome_wiz.xpm0000644000000000000000000001347507252426412015737 /* XPM */ static char * gnome_wiz_xpm[] = { "32 33 228 2", " c None", ". c #EAE9E9", "+ c #D6D1CC", "@ c #736961", "# c #AFA8A2", "$ c #CECBC9", "% c #E8E7E5", "& c #C5C0BC", "* c #6D635B", "= c #1B1815", "- c #E5E3E1", "; c #B4AAA2", "> c #5E534A", ", c #C3C0BF", "' c #DBD6D3", ") c #ACA299", "! c #6A5F56", "~ c #0C0B09", "{ c #A7A29E", "] c #C6BFBA", "^ c #A89E95", "/ c #4D443D", "( c #423C37", "_ c #A6A09A", ": c #B6ACA4", "< c #918277", "[ c #5E544B", "} c #050504", "| c #000000", "1 c #91847B", "2 c #695E56", "3 c #1C1816", "4 c #0F0D0C", "5 c #514842", "6 c #6B5F56", "7 c #5D5249", "8 c #2B2622", "9 c #010100", "0 c #4E463F", "a c #211D1A", "b c #020202", "c c #332D28", "d c #241F1C", "e c #060505", "f c #E8E8E7", "g c #C6C1BD", "h c #010101", "i c #322F2C", "j c #201D1B", "k c #D1CECD", "l c #9F9791", "m c #3D3731", "n c #D8D8D7", "o c #DCDAD8", "p c #C6C2BF", "q c #968B82", "r c #7B6F64", "s c #92867D", "t c #625952", "u c #0E0D0B", "v c #DFDEDD", "w c #EAE7E5", "x c #DDD9D7", "y c #D7D2CE", "z c #C0BAB5", "A c #ACA199", "B c #8D7F74", "C c #3F3831", "D c #36312B", "E c #040303", "F c #DDDBD9", "G c #EBE9E7", "H c #D4CECA", "I c #BFB6AF", "J c #A0968E", "K c #887F77", "L c #76695F", "M c #171412", "N c #D2D2D1", "O c #EEECEB", "P c #AB9F95", "Q c #9C8E83", "R c #9D9085", "S c #9A8C81", "T c #7B6E65", "U c #3E3731", "V c #030303", "W c #E9E7E6", "X c #CBC4BF", "Y c #665C54", "Z c #E4E2E0", "` c #E7E4E2", " . c #BBB2AA", ".. c #9A8B80", "+. c #998B80", "@. c #A09288", "#. c #9B8D83", "$. c #7C6F65", "%. c #26221E", "&. c #9A918A", "*. c #887E77", "=. c #39322D", "-. c #292521", ";. c #E3E0DD", ">. c #C7C1BB", ",. c #A3978D", "'. c #9B8D82", "). c #97897E", "!. c #81746A", "~. c #080706", "{. c #3B352F", "]. c #221D1A", "^. c #050404", "/. c #13100E", "(. c #A7A29F", "_. c #D6D1CD", ":. c #B7AEA6", "<. c #998E84", "[. c #867A71", "}. c #877A70", "|. c #5D524A", "1. c #27231F", "2. c #A8A29D", "3. c #D7D1CD", "4. c #B8AEA6", "5. c #A6998F", "6. c #8B7F75", "7. c #584E47", "8. c #0E0C0B", "9. c #A39C95", "0. c #CAC3BC", "a. c #BBB1A9", "b. c #A09287", "c. c #85786D", "d. c #2C2723", "e. c #D5D2CF", "f. c #CDC9C5", "g. c #A99F98", "h. c #C2BAB4", "i. c #BDB4AC", "j. c #9D8F84", "k. c #6C6056", "l. c #161311", "m. c #DBD7D4", "n. c #E4E0DE", "o. c #DFDBD8", "p. c #D1CBC5", "q. c #AA9F96", "r. c #534942", "s. c #B8AFA8", "t. c #6B5F55", "u. c #14110F", "v. c #9F968E", "w. c #B1A69E", "x. c #B4A9A1", "y. c #7F7269", "z. c #25201D", "A. c #AFA69E", "B. c #BCB2AA", "C. c #A19388", "D. c #74665C", "E. c #2B2521", "F. c #91867D", "G. c #ADA197", "H. c #665B51", "I. c #100E0C", "J. c #82776F", "K. c #A19489", "L. c #8E7F74", "M. c #71645A", "N. c #554B43", "O. c #BAB7B6", "P. c #CBC4BE", "Q. c #9C8F84", "R. c #4F463F", "S. c #030202", "T. c #86786E", "U. c #998B7F", "V. c #918276", "W. c #88796E", "X. c #988B80", "Y. c #B7AFA9", "Z. c #C4BEB8", "`. c #E4E2E1", " + c #EFEDEC", ".+ c #CAC2BC", "++ c #91847A", "@+ c #6B5E55", "#+ c #8B7E74", "$+ c #998C80", "%+ c #95877B", "&+ c #AFA49B", "*+ c #C1B8B1", "=+ c #D5CFCA", "-+ c #C9C2BC", ";+ c #A79B92", ">+ c #5E544C", ",+ c #0B0908", "'+ c #655950", ")+ c #807368", "!+ c #9D8E83", "~+ c #998A7F", "{+ c #A3968B", "]+ c #A4988E", "^+ c #7F7268", "/+ c #292420", "(+ c #3A322D", "_+ c #524840", ":+ c #6D6157", "<+ c #8B7D72", "[+ c #9E9186", "}+ c #97897D", "|+ c #9D8E84", "1+ c #8D8076", "2+ c #443C36", "3+ c #28231F", "4+ c #352F29", "5+ c #483F38", "6+ c #60554C", "7+ c #6C6057", "8+ c #71655A", "9+ c #695E55", "0+ c #3C352F", "a+ c #090807", "b+ c #0F0D0B", "c+ c #120F0E", "d+ c #151210", "e+ c #040404", " ", " ", " ", " . + @ ", " # $ % & * = ", " - ; > , ' ) ! ~ ", " { ] ^ / ( _ : < [ } | ", " 1 2 3 4 5 6 7 8 9 | ", " 0 a b | c d e | ", " f g h | i j ", " k l m n o p q r ", " s t u h v w x y z A B C ", " D E b F G H I ^ J K L M ", " N O + P Q R S T U V | ", " W X Y Z ` ...+.@.#.$.%.9 ", " &.*.=.-. ;.>.,.S '.).!.=.~.| ", " {.].^./.(._.:.<.[.}.|.1.V | ", " | ~.2.3.4.5.6.7.8.h | | ", " 9.0.a.b.c.d.| | e.f.g. ", " h.i.j.k.l.| m.n.o.p.q.r. ", " s.4.b.t.u.| v.w.x.5.y.z.h ", " A.B.C.D.E.e F.G.'.H.I.| ", " J.K.b.L.M.N. O.P.Q.R.S.| ", " T.#.U.V.W.X.Y.Z.`. +.+++8 | ", " @+#+$+%+j.5.&+*+=+-+;+>+,+| ", " '+)+V.!+5.~+{+]+5.^+/+h | ", " (+_+:+<+[+}+Q |+1+2+^.| ", " 3+4+5+6+7+8+9+0+a+| ", " b+c+d+l.4 e+| | ", " | | | | ", " ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/gnomededit.xpm0000644000000000000000000000131107252426413016043 /* XPM */ static char *gnomededit_xpm[]={ "21 21 9 1", "c c #808080", "d c #a0a0a0", "f c #c3c3c3", "b c #000000", "e c #303030", "g c #0000ff", ". c None", "# c #7b7b7b", "a c #ffffff", ".....................", ".....................", "####################a", "#bbbbbbbbbbbbbbbbbb.a", "#baaaaaaaaaaaaacddd.a", "#baaaaaaaaaaaaacddd.a", "#baaaaaaaaaaaaacddd.a", "#baeaaaaaeaaaeecddd.a", "#beeaaaaeeaaaaaceee.a", "#baeaeeaaeaeeaaceee.a", "#baeaaaaaeaaaaacded.a", "#baeaaaaaeaaaaecddd.a", "#beeeaaaeeeaaeecddd.a", "#baaaaaaaaaaaaacddd.a", "#baaaaaaaaaaaaacddd.a", "#baaaaaaaaeeeeeeeeeee", "#baaaaaaaaefaggaagffe", "#.........eaaffaagffe", "aaaaaaaaaaefaaffagffe", "..........effffffaffe", "..........eeeeeeeeeee"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/gnomeentry.xpm0000644000000000000000000000127207252426413016121 /* XPM */ static char* gnomeentry_xpm[]={ "21 21 8 1", "e c #a0a0a0", "d c #c3c3c3", "b c #000000", "f c #303030", ". c None", "c c #585858", "# c #7b7b7b", "a c #ffffff", ".....................", ".....................", "####################a", "#bbbbbbbbbbbbbbbbbb.a", "#baaaaaaaaaaaacdeee.a", "#baaaaaaaaaaaacdeee.a", "#bafaaaaaaaaaacdeee.a", "#bafaaaaaaaaaacdeee.a", "#bafaaaaaaaaaacffff.a", "#bafaaaaaaaafacffff.a", "#baffffaafffaacdffa.a", "#bafaafaafaaaacdfae.a", "#bafaafaafaaaacdeee.a", "#baffffaafffaacdeee.a", "#baaaaaaaaaaaacdeee.a", "#baafffffffffffffffff", "#baafaaaaaaaaafaaaaaf", "#cccfafafaaffaffaaaaf", "aaaafaffaaafaafffaaaf", ".aaafaaaaaaaaaaaaaaaf", "....fffffffffffffffff"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/gnome-search.xpm0000644000000000000000000000322407252426413016301 /* XPM */ static char * gnome_search_xpm[] = { "16 16 87 1", " c None", ". c #917C28", "+ c #BCAA5D", "@ c #D0C475", "# c #C9C164", "$ c #37321D", "% c #9C9169", "& c #B0B0AF", "* c #AFAFAE", "= c #AEAEAE", "- c #AEAEAB", "; c #BBB072", "> c #705F1E", ", c #2C2C2C", "' c #AA974D", ") c #9F9F9E", "! c #AAAAAA", "~ c #ADADAC", "{ c #ADADAD", "] c #ACACAB", "^ c #AE994A", "/ c #575757", "( c #AF9E54", "_ c #A3A3A2", ": c #B0B0B0", "< c #B1B1B1", "[ c #AEAEAD", "} c #B7AE82", "| c #3B3B3B", "1 c #CBBE6D", "2 c #B4B4B4", "3 c #B7B7B6", "4 c #B6B6B6", "5 c #B5B5B5", "6 c #C0B98C", "7 c #313131", "8 c #DED57B", "9 c #C0BEB2", "0 c #C0C0C0", "a c #C2C2C1", "b c #C1C1C1", "c c #C0C0BF", "d c #BEBEBE", "e c #C2B26B", "f c #3A3728", "g c #DDDBC1", "h c #CBBC66", "i c #C9C6BA", "j c #CCCCCC", "k c #CBCBCB", "l c #CACACA", "m c #C5BC96", "n c #BEAC66", "o c #979797", "p c #E4E0CB", "q c #BCA960", "r c #CCBA6B", "s c #D4C878", "t c #CDBA62", "u c #CCBF83", "v c #CEBA4B", "w c #A39392", "x c #212121", "y c #6F6F6F", "z c #FBFBFB", "A c #F6F6F6", "B c #F1F1F1", "C c #EBEBEB", "D c #E5E5E5", "E c #BDBDBD", "F c #6E4E4E", "G c #A47875", "H c #232323", "I c #FFFFFF", "J c #FEFEFE", "K c #F4F4F4", "L c #A7A7A7", "M c #464646", "N c #000000", "O c #030101", "P c #673737", "Q c #A57875", "R c #898989", "S c #747474", "T c #181818", "U c #723B3C", "V c #A0716F", " ", " ", " ", " .+@# ", " $%&*=-;> ", " ,')!~{]]^ ", " /(_{:<[[} ", " |1=234526 ", " 7890abcdef ", " ghijklmno ", " c #2D2D25", ", c #23241D", "' c #9D9F90", ") c #C6CAA6", "! c #C4C9A5", "~ c #C6CBA7", "{ c #C7CCA8", "] c #C9CEA9", "^ c #555847", "/ c #1A1B15", "( c #20201A", "_ c #D4D6C2", ": c #BEC2A0", "< c #B3B896", "[ c #B0B595", "} c #B3B797", "| c #B6BB99", "1 c #BBC09E", "2 c #BCC19F", "3 c #81856C", "4 c #3E3F32", "5 c #010101", "6 c #DADDC8", "7 c #AFB494", "8 c #AAAF8F", "9 c #A3A789", "0 c #A6AA8B", "a c #A9AD8E", "b c #A7AB8D", "c c #A4A88A", "d c #A1A588", "e c #AAAD96", "f c #B3B5A5", "g c #B8BBAA", "h c #BABCAB", "i c #C1C3B2", "j c #C7CAB7", "k c #CACDBB", "l c #BABDA8", "m c #0C0C09", "n c #DDDFCB", "o c #969B7E", "p c #9DA286", "q c #95987C", "r c #96997E", "s c #9A9D81", "t c #999D80", "u c #9DA184", "v c #A5AA8B", "w c #A4A98A", "x c #A3A889", "y c #A2A588", "z c #A2A587", "A c #9FA386", "B c #9B9E83", "C c #898D74", "D c #D8DBC9", "E c #84866E", "F c #7D8169", "G c #151612", "H c #D7DAC9", "I c #797D67", "J c #3D3F34", "K c #E0E0D9", "L c #EBEDDD", "M c #E8EBD9", "N c #E7EAD8", "O c #E3E6D4", "P c #DEE1D0", "Q c #DADCCC", "R c #DADCD1", "S c #2B2C28", "T c #D7DAC6", "U c #6F735E", "V c #0D0D0D", "W c #F4F4EC", "X c #CACFAB", "Y c #C6CBA8", "Z c #C2C6A4", "` c #ABB091", " . c #23251E", ".. c #494B3D", "+. c #DCDCD4", "@. c #EAECDD", "#. c #CDD2AD", "$. c #CCD1AC", "%. c #CACFAA", "&. c #BABF9D", "*. c #B5B999", "=. c #81836C", "-. c #070806", ";. c #D5D8C4", ">. c #161616", ",. c #F2F2EA", "'. c #C9CEAA", "). c #C8CDA9", "!. c #C4C9A6", "~. c #C1C5A3", "{. c #BCC09F", "]. c #B6BB9A", "^. c #B0B494", "/. c #9DA185", "(. c #535445", "_. c #B6B8A7", ":. c #747470", "<. c #ECECE2", "[. c #C3C8A5", "}. c #C2C7A4", "|. c #C0C5A2", "1. c #BFC4A1", "2. c #BDC2A0", "3. c #B9BD9C", "4. c #B9BE9D", "5. c #A9AD8F", "6. c #A3A78A", "7. c #80836D", "8. c #020201", "9. c #A6A998", "0. c #B8BC9B", "a. c #AFB394", "b. c #ACB091", "c. c #A8AC8E", "d. c #A6AA8C", "e. c #9FA286", "f. c #9B9F83", "g. c #9A9D82", "h. c #8A8D75", "i. c #4F5243", "j. c #070705", "k. c #9E9F91", "l. c #E5E6DA", "m. c #ADB192", "n. c #A5A98C", "o. c #9FA387", "p. c #999D81", "q. c #95987E", "r. c #92957B", "s. c #8C8F76", "t. c #8A8D74", "u. c #71735F", "v. c #080908", "w. c #E3E5D9", "x. c #C0C3AF", "y. c #94987C", "z. c #8F9379", "A. c #8B8F75", "B. c #8A8E74", "C. c #888C73", "D. c #858970", "E. c #868971", "F. c #82866E", "G. c #80836C", "H. c #7D8069", "I. c #797C66", "J. c #727560", "K. c #717460", "L. c #71745F", "M. c #6A6D59", "N. c #434538", "O. c #080907", "P. c #050504", " ", " ", " ", " . . . . . . . ", " + @ # # # # # $ % ", " & * = = = - - ; > ", ", ' * ) ! ~ { ] ] ^ / ", "( _ : < [ } | 1 2 3 4 5 . . . . . . . ", ", 6 7 8 9 0 8 a b c d e f g h i j k l . ", "m n o p q r s t r u v w x y 9 z A B C . ", ". D E F G . . . . . . . . . . . . . . . 5 5 ", ". H I J K L M M M M M M M M M M M N O P Q R S ", ". T U V W = = = = = = = = = - - - X Y Z 1 ` . ", ". T ..+.@.#.- - #.- #.#.#.#.#.$.%.Y Z &.*.=.-. ", ". ;.>.,.X %.X %.'.%.'.{ ).).Y !.~.{.].^./.(.m ", ". _.:.<.[.}.}.Z |.Z 1.2.|.2.3.4.} [ 5.6.7.8. ", ". 9.+.0.0.*.} } [ [ a.a.a.b.c.d.e.f.g.h.i.j. ", ". k.l.m.5.d.n.6.6.d o.e.f.p.q.r.s.t.t.u.v. ", ". w.x.y.z.A.B.C.C.D.E.F.G.H.I.J.K.L.M.N.O. ", " . . . . . . . . . . . . . . . . . . P. ", " ", " ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/loadprj.xpm0000644000000000000000000001000707452564442015370 /* XPM */ static char * loadprj_xpm[] = { "24 24 175 2", " c None", ". c #000000", "+ c #B5B8A5", "@ c #E4E7D2", "# c #878A76", "$ c #33342B", "% c #0B0B0B", "& c #E2E5CF", "* c #CFD4AF", "= c #CED3AE", "- c #B2B696", "; c #2D2D25", "> c #22231C", ", c #9D9F90", "' c #C6CAA6", ") c #C4C9A5", "! c #C6CBA7", "~ c #C7CCA8", "{ c #C9CEA9", "] c #555847", "^ c #191A15", "/ c #20201A", "( c #D4D6C2", "_ c #BEC2A0", ": c #B3B896", "< c #B0B595", "[ c #B3B797", "} c #B6BB99", "| c #BBC09E", "1 c #BCC19F", "2 c #81856C", "3 c #3E3F32", "4 c #23241D", "5 c #DADDC8", "6 c #AFB494", "7 c #AAAF8F", "8 c #A3A789", "9 c #A6AA8B", "0 c #A9AD8E", "a c #A7AB8D", "b c #A4A88A", "c c #A1A588", "d c #AAAD96", "e c #B3B5A5", "f c #B8BBAA", "g c #BABCAB", "h c #C1C3B2", "i c #C7CAB7", "j c #CACDBB", "k c #BABDA8", "l c #0C0C09", "m c #DDDFCB", "n c #969B7E", "o c #9DA286", "p c #95987C", "q c #96997E", "r c #9A9D81", "s c #999D80", "t c #9DA184", "u c #A5AA8B", "v c #A4A98A", "w c #A3A889", "x c #A2A588", "y c #A2A587", "z c #9FA386", "A c #9B9E83", "B c #898D74", "C c #D8DBC9", "D c #84866E", "E c #7D8169", "F c #151612", "G c #D7DAC9", "H c #797D67", "I c #3D3F34", "J c #E0E0D9", "K c #EBEDDD", "L c #E8EBD9", "M c #E7EAD8", "N c #E3E6D4", "O c #DEE1D0", "P c #DADCCC", "Q c #DADCD1", "R c #2B2C28", "S c #D7DAC6", "T c #6F735E", "U c #0D0D0D", "V c #F4F4EC", "W c #010101", "X c #C6CBA8", "Y c #C2C6A4", "Z c #ABB091", "` c #23251E", " . c #494B3D", ".. c #DCDCD4", "+. c #EAECDD", "@. c #CDD2AD", "#. c #0A0A08", "$. c #050504", "%. c #BAB9B6", "&. c #090908", "*. c #090907", "=. c #6F715D", "-. c #080806", ";. c #D5D8C4", ">. c #161616", ",. c #F2F2EA", "'. c #CACFAB", "). c #CACFAA", "!. c #C9CEAA", "~. c #878883", "{. c #727270", "]. c #484641", "^. c #9F9D96", "/. c #888781", "(. c #23241E", "_. c #040403", ":. c #0D0D0A", "<. c #B6B8A7", "[. c #747470", "}. c #ECECE2", "|. c #C3C8A5", "1. c #C2C7A4", "2. c #C0C5A2", "3. c #BFC4A1", "4. c #C8C7C2", "5. c #B6B5AF", "6. c #908E86", "7. c #97958E", "8. c #807D74", "9. c #A6A998", "0. c #B8BC9B", "a. c #B5B999", "b. c #AFB394", "c. c #8C8F76", "d. c #080907", "e. c #595854", "f. c #605E57", "g. c #898883", "h. c #76746B", "i. c #030303", "j. c #9E9F91", "k. c #E5E6DA", "l. c #ADB192", "m. c #A9AD8F", "n. c #A6AA8C", "o. c #A5A98C", "p. c #A3A78A", "q. c #43423F", "r. c #282724", "s. c #363430", "t. c #6D6B63", "u. c #E3E5D9", "v. c #C0C3AF", "w. c #94987C", "x. c #8F9379", "y. c #8B8F75", "z. c #8A8E74", "A. c #888C73", "B. c #858970", "C. c #010100", "D. c #8C8B89", "E. c #21201E", "F. c #0A0908", "G. c #181816", "H. c #E6E6E4", "I. c #65635C", "J. c #161614", "K. c #DFDEDC", "L. c #B0AFA9", "M. c #D5D4D1", "N. c #93918B", "O. c #ABA9A3", "P. c #5D5C55", "Q. c #494943", "R. c #42413C", " ", " ", " . . . . . . . ", " . + @ @ @ @ @ # $ ", " % & * * * = = - ; ", "> , & ' ) ! ~ { { ] ^ ", "/ ( _ : < [ } | 1 2 3 . . . . . . . . ", "4 5 6 7 8 9 7 0 a b c d e f g h i j k . ", "l m n o p q r s q t u v w x 8 y z A B . ", ". C D E F . . . . . . . . . . . . . . . . . ", ". G H I J K L L L L L L L L L L L M N O P Q R ", ". S T U V * * * * * * * * * = W W W X Y | Z ` ", ". S ...+.@.= = @.= @.< #.#.b $.%.$.A &.*.=.-. ", ". ;.>.,.'.).'.).!.).!.#.~.{.#.].^.].*./.(._.:. ", ". <.[.}.|.1.1.Y 2.Y 3.&.4.5.^.^.^.6.7.8.].. ", ". 9...0.0.a.[ [ < < b.c.d.^.^.e.f.g.8.h.i.$. ", ". j.k.l.m.n.o.p.p.c W W ].^.f.q.r.s.^.t.].W . ", ". u.v.w.x.y.z.A.A.B.C.D.5.^.e.E.F.G.H.8.I.f.. ", " . . . . . . . . . . . ].^.g.s.J.D.K.I.].. . ", " C.L.8.5.H.M.N.I.. ", " . 5.O.^.8.8.h.h.P.].. ", " . W e.. ].h.].. Q.. . ", " . . . R.. . . ", " . . . "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/logo.xpm0000644000000000000000000064212207252426514014701 /* XPM */ static char *logo[] = { /* width height num_colors chars_per_pixel */ " 306 224 248 2", /* colors */ ".. c #243a04", ".# c #5cbe04", ".a c #943c04", ".b c #245e04", ".c c #9c9604", ".d c #946b04", ".e c #5c2604", ".f c #cc4204", ".g c #1ccee0", ".h c #6c6404", ".i c #c4d1d4", ".j c #945404", ".k c #5c4204", ".l c #2c96bf", ".m c #c4aa04", ".n c #cc6704", ".o c #7498b4", ".p c #b44604", ".q c #948604", ".r c #2c62ac", ".s c #7c3104", ".t c #7c80ac", ".u c #24b2cc", ".v c #84c804", ".w c #343b9c", ".x c #cc5204", ".y c #7c4204", ".z c #c4c2c4", ".A c #6cd1d4", ".B c #944704", ".C c #5c8104", ".D c #b45204", ".E c #2c7cb4", ".F c #c4be04", ".G c #74b4c4", ".H c #bc6704", ".I c #5c3404", ".J c #14ecf4", ".K c #cc8204", ".L c #acb604", ".M c #24a6cc", ".N c #947704", ".O c #7c6804", ".P c #b47e04", ".Q c #7c5204", ".R c #244e04", ".S c #fc3904", ".T c #b44a04", ".U c #2c70ac", ".V c #7c3a04", ".W c #24c5dc", ".X c #a44804", ".Y c #a4c804", ".Z c #3450a4", ".0 c #fc5204", ".1 c #fcb404", ".2 c #6c3504", ".3 c #547a04", ".4 c #945f04", ".5 c #645204", ".6 c #a43d04", ".7 c #b4ac04", ".8 c #14e2ec", ".9 c #74a8bd", "#. c #2c69ac", "## c #bc5e04", "#a c #6cc6ce", "#b c #5c7504", "#c c #a45204", "#d c #fc6804", "#e c #949204", "#f c #fc8104", "#g c #24aecc", "#h c #b49604", "#i c #a47204", "#j c #744304", "#k c #fc9704", "#l c #7c8cb4", "#m c #7c4e04", "#n c #8c8204", "#o c #2c8cbc", "#p c #0cf9fc", "#q c #fcc404", "#r c #542604", "#s c #6c2a04", "#t c #cc4a04", "#u c #c4fefc", "#v c #24a2c4", "#w c #c44304", "#x c #8c3604", "#y c #24bcd4", "#z c #64dedc", "#A c #944e04", "#B c #749204", "#C c #c45304", "#D c #5c3a04", "#E c #bcb804", "#F c #2ca8c4", "#G c #a47804", "#H c #8c5204", "#I c #444d04", "#J c #fc4404", "#K c #c44e04", "#L c #8c3a04", "#M c #1ccadc", "#N c #a44e04", "#O c #b4c604", "#P c #3458a4", "#Q c #fc5b04", "#R c #fc8c04", "#S c #fca904", "#T c #74c004", "#U c #944204", "#V c #546d04", "#W c #947204", "#X c #1cd8e4", "#Y c #c4dcdc", "#Z c #74a0bc", "#0 c #ac7f04", "#1 c #7c3604", "#2 c #34489c", "#3 c #d45604", "#4 c #c4cad4", "#5 c #6c8204", "#6 c #74bcc7", "#7 c #8c6c04", "#8 c #7c5a04", "#9 c #743a04", "a. c #549204", "a# c #443904", "aa c #c47904", "ab c #fc7a04", "ac c #445a04", "ad c #9cc604", "ae c #c4c604", "af c #448604", "ag c #cc9204", "ah c #a49204", "ai c #745204", "aj c #544a04", "ak c #644e04", "al c #b49f04", "am c #6c4e04", "an c #2c84b4", "ao c #fcbc04", "ap c #547404", "aq c #8c4204", "ar c #543a04", "as c #d4ca04", "at c #548604", "au c #ac9604", "av c #c47e04", "aw c #8c4e04", "ax c #c49204", "ay c #6ccad4", "az c #5c2e04", "aA c #bc5a04", "aB c #0cf2f4", "aC c #a4be04", "aD c #a44204", "aE c #14e6ec", "aF c #5c7a04", "aG c #a45a04", "aH c #04fefc", "aI c #b4be04", "aJ c #a48604", "aK c #c4d6dc", "aL c #7c86af", "aM c #6cd6dc", "aN c #74aec4", "aO c #945a04", "aP c #34429c", "aQ c #fc3e04", "aR c #2c76ac", "aS c #fc5604", "aT c #fc6e04", "aU c #fc8604", "aV c #fc9e04", "aW c #7c92b4", "aX c #2c92bc", "aY c #fcca04", "aZ c #c45a04", "a0 c #445204", "a1 c #fc4a04", "a2 c #fc6204", "a3 c #fc9204", "a4 c #fcae04", "a5 c #74c604", "a6 c #345fa4", "a7 c #3468aa", "a8 c #9c3e04", "a9 c #9c6e04", "b. c #642a04", "b# c #d44404", "ba c #746604", "bb c #d46904", "bc c #bc4404", "bd c #843204", "be c #d45204", "bf c #844304", "bg c #c4c6d4", "bh c #9c4604", "bi c #648204", "bj c #643504", "bk c #846a04", "bl c #845204", "bm c #bc4a04", "bn c #843b04", "bo c #ac4604", "bp c #acca04", "bq c #743304", "br c #1ce0ec", "bs c #c46004", "bt c #ac5204", "bu c #ac6e04", "bv c #742e04", "bw c #2c9fc4", "bx c #ac7904", "by c #bcc204", "bz c #748604", "bA c #4c3604", "bB c #ccca04", "bC c #4c8204", "bD c #744d04", "bE c #a49604", "bF c #bc5204", "bG c #bc7e04", "bH c #bc9604", "bI c #844e04", "bJ c #d44a04", "bK c #9c4e04", "bL c #643a04", "bM c #24cadc", "bN c #ac4e04", "bO c #9c4204", "bP c #9c7204", "bQ c #843604", "bR c #ac9204", "bS c #14f2f4", "bT c #ac4204", "bU c #647a04", "bV c #ac5a04", "bW c #ac8604", "bX c #1cd2e4", "bY c #2c9ac4", "bZ c #24b6d4", "b0 c #c4c6cc", "b1 c #24aacc", /* pixels */ ".z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z", ".z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z", ".z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z", ".z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z", ".z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z", ".z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.w", ".z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.z.z.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.z.z.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.z.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.z.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.waP.waP.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.waPaP.w.w.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.waPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPao#qao#qao#q#qaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP.waPaPaP.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z#2.waPaP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waPaPaoaoaoaoaoao#qaoaoaobo.XaP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waP.waPaPaPaP.w.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.w#2aP#2aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP.1.1.1.1.1.1.1#C#C#C#C#2#2aPaPaPaP#2aPaoaoao#qao#qaoao#q#qao#q.pbo#2#2aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP#2aP#2.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z#2aPaPaPaP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aPa4a4a4a4a4.1.1a4.1.1.1.1.1.1.1.1.x#3.x.xbFaPaP#2aP#2aoaoaoaoaoao#qao#qaoao#qao#q.T.X#2aPaP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aP#2aPaP.w.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.w#2#2#2aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP#2aP#Sa4#Sa4a4a4a4.1a4a4.1.1.1.1.1.1.1ao.1#3.x#3.xbe#C#C#C#Caoaoaoao#qaoaoao#qao#q#qao#qao.p.pbo#2#2aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP#2aP#2#2.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z#2#2aP#2aP#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2aP#2a4#Sa4a4a4a4.1a4.1a4.1.1.1.1.1.1.1.1.1.1.xbe.x#3.x#3be.xbeaoaoaoaoaoao#qaoao#qaoao#qao#q.T.T.p.X#2aP#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2aP#2aP#2.w.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.w#2#2#2aP#2aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP#2#2#2#S#Sa4a4a4a4a4a4.1a4.1a4.1.1.1.1.1.1ao.1#3be.x#3.xbe.xbe.xaoaoaoao#qaoaoao#qaoao#q#qao#qaobc.T.T.p#2#2aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP#2aP#2#2#2#2#2.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z#2#2aP#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#Sa4a4#Sa4a4a4a4a4a4.1a4.1a4.1.1.1.1.1.1be.x#3.xbe.x#3.x#3aoaoaoaoaoaoao#qaoao#qao#qao#qao.T.T.p.T.p.X#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2aP.z.z.z.z.z.z.t", ".z.z.z.z.z.z.zaP#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2.B#S#Sa4a4a4a4a4a4.1a4.1a4.1.1.1.1.1.1.1bebe.xbe.x#3.xbe.xbeaoaoaoaoaoao#qaoao#qaoao#qao#qaobm.T.p.T.p.Tbo#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2aP#2aP#2#2#2#2.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z#2.Z#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#R#Ra3#Ra3a3a3a3a3#k#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2.X#N#S#Sa4#Sa4a4a4a4.1a4.1a4.1.1.1.1.1.1#3.x#3.x#3.x#3.xbeaoaoaoaoaoaoaoaoaoaoaoao#qao#qao#q.p.T.p.Tbc.Tbo#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2aP.z.z.z.z.z.z.t", ".z.z.z.z.z.z.zaP#2#2.Z#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#R#R#R#Ra3a3#ka3a3#k#k#k#k#k#k#k#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2.Z#2bK.X#N#Sa4#Sa4a4a4a4.1a4.1.1a4.1.1.1.1be.xbe.xbe.xbe.x#3aoaoaoaoaoaoaoao#qao#qao#qaoao#qaobm.p.T.p.T.T.p.T.p#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2.Z#2#2.Z#2.Z#2.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.Z#2.Z#2#2#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2#R#R#Ra3#Ra3a3a3a3a3a3a3#k#k#k#k#k#k#k.R.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2#2#2.X.X.XaD#Sa4a4a4a4a4.1a4.1a4.1.1.1.1.1#3.x#3.x#3.x#3.xbe.1aoaoaoaoaoaoaoaoaoao#qaoao#qaoao.p.T.p.Tbc.T.p.Tbo#2#2#2#2#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2.Z#2#2#2.Z#2#2#2#2.z.z.z.z.z.zaL", ".z.z.z.z.z.z.z#2#2.Z#2.Z#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2#RaU#R#R#R#R#R#Ra3a3a3a3#k#k#k#k#k#k#kaVaV#k#k#I#2#2.Z#2#2#2.Z#2#2#2.Z#2.Z#2.Zbh.XaDaDaDaDa4a4a4a4.1a4.1.1a4.1.1.1.1be.xbe.xbe.xbe.xaoaoaoaoaoaoaoaoao#qaoao#qao#qao#qao.T.Tbc.T.T.p.T.p.Tbo#2.Z#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2#2.Z#2#2.Z#2.Z#2#2.Z#2.Z#2.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.Z.Z#2.Z#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2.Z#f#RaU#RaU#R#R#Ra3#Ra3a3a3a3a3#ka3#k#k#kaV#k#kaVaVaV.R.Z#2#2.Z#2#2.Z#2.Z#2#2#2.Z#2.ZaDaDaD.6aD#Sa4.1a4a4.1a4.1.1.1.1.1.1#3.x#3.x#3.xbeao.1ao.1aoaobebe#3aoaoaoao#qaoao#qao.xbc.T.T.p.T.p.T.p.T.T.X#2#2#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2#2.Z#2#2.Z#2.Z#2.Z.Z#2.z.z.z.z.z.zaL", ".z.z.z.z.z.z.z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z#2aU#f#RaU#RaU#R#R#R#R#R#R#Ra3a3a3a3#ka3#k#k#k#kaVaV#kaV#kaV#I.Z.Z.Z.Z.Z#2.Z.Z.Z.Z.Z#2.Z#2bO.6aDaDaDaDa4a4a4.1a4.1a4.1.1.1.1.1aDaDaDaD.xbeao.1ao.1ao.1be.xbe.x#3ao#qaoao#qaoao#q.x.T.p.T.pbm.p.Tbc.T.p.T#2.Z.Z#2.Z.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.Z.Z.Z.Z.Z#2#2.Z#2.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2#2.Z.Z#2.Z.Z#f#faU#faU#RaU#RaU#R#R#R#R.x#3#Ra3a3a3a3#k#k#k#kaV#k#kaVaVaVaV#k.Z.Z#2#2.Z#2.Z#2.Z#2.Z#2.Z.Z#2aDaDaDaD#ca4a4a4a4.1a4.1.1.1.1.1.1aDaD.6aD.xbeao.1aoaoaobe#3.x#3.xbeaoao#qaoao#qao.x.x.T.p.T.p.T.p.T.T.p.T.T.X#2#2.Z.Z#2.Z#2.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2.Z#2.Z.Z#2.Z.Z#2#2.Z.Z#2.Z.Z#2.Z.Z.Z.Z#2.z.z.z.z.z.z#l", ".z.z.z.z.z.z.z#2.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z#f#f#faUaUaUaU#RaU#RaU#RaUbe.x.xbmbm.T.T#ka3#k#k#k#k#kaVaVaV#kaVaVaVaj.Z.Z.Z#2.Z.Z.Z.Z.Z.Z.Z.Z.Z#2.Z.6aD#Na4a4a4.1a4.1a4.1a4.1.1.1.6aDaDaDaDbeao.1ao.1.1be.xbe.xbe.x#3aoaoaoao#qao.x.x.x.pbm.p.T.p.T.p.T.p.T.p.Tbo.Z#2.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z#P.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z#P.Z#P.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z#d#d#d#d#dawbI.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Zab#f#f#f#f#faU#f#RaUaU#RaU#RaU.x.x.xbm#K.p.pbo.pa3#k#k#k#k#k#kaV#kaVaVaVaV#Saj.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z#N#c#ca4a4a4a4a4.1a4.1.1.1a4.1aDaD.6aDaD.1ao.1ao.1ao#3.x#3.x#3.x#3aoao#qaoao.x.x.x.x.T.p.T.p.Tbc.T.pbm.p.T.Tbo#2.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z#P.Z.Z.z.z.z.z.z.z#l", ".z.z.z.z.z.z.z.Z.Z#P.Z#P.Z#P.Z.Z#P.Z.Z#P.Z.Z#P.Z.Z.Z#P.Z.Z#P.Z.Z.Z#P.Z.Z#P.Z.Z#P.Z.Z.Z#P.Z.Z#P.Z.Z.Z#P.Z.Z#P.Z.Z.Z#P.Z.Z#P.Z.Z#P.Z.Z.Z#P.Z.Z#P.Z.Z.Z#P.Z.Z#P.Z.Z.Z#P.Z.Z#P.Z.Z#P.Z.ZaSaS#Q#QaS#QaA#C#C#C#C#P.Z#P.Z.ZaA#d#d#d#d#daTaT#d#Haw.Z.Z.Z.Z.Z#P.Z.Z#P.Z.Z#Pabab#f#f#f#faUaU#faUaUaU#RaU#RaU#R.x.xbm#KbmboboaDaD.T#k#k#k#kaV#kaVaVaVaVaVaVaVaia0.Z.Z.Z.Z#P.Z.Z#P.Z.Z#P.Z.Z.Z#c#c.1a4a4a4.1a4.1a4.1a4.1a4.1aDaDaD.x.1ao.1ao.1bebe.xbe.xbe.xbe.xaoao.x.x.x.x.x.x.x.p.Tbc.T.T.p.T.p.T.p.T.T.Z.Z.Z.Z.Z#P.Z.Z#P.Z.Z#P.Z.Z.Z#P.Z.Z#P.Z.Z#P.Z.Z.Z#P.Z.Z#P.Z.Z.Z#P.Z.Z#P.Z.Z.Z#P.Z.Z#P.Z.Z#P.Z.Z#P.Z.Z#P.Z.Z.Z#P.Z#P.Z#P.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P#P.Z#P.Z#P.Z#P#P.Z#P.Z#P.Z#P.Z#P#P.Z#P.Z#P.Z#P#P.Z#P.Z#P.Z#P#P.Z#P.Z#P.Z#P.Z#P.Z#P#P.Z#P.Z#P.Z#P#P.Z#P.Z.Z.Z#P.Z.Z.0.0.0.0.0.0aSaSaS#QaSaS#Q#Q#Qbe.x#3.x.x#C#C#C.x#d#d#d#d#daTaT#daT.j.jbl.Z.Z#P.Z#P.Z#P.Z#P#Pabab#fab#f#f#f#faU#faUaUaU#RaU#RaU.x.x#K#Kbmbm.T.p.6.X.p#k#k#k#k#k#kaV#kaVaVaVaVaVai.5.Z.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P#P#P#ca4#S.1a4a4.1a4.1.1a4.1.1.1aDaD.6ao.1ao.1ao.xbe.x#3.x#3.x#3.xbe#3.x.x.x.x.x.x.x.x.x.p.T.T.p.T.p.T.pbm.pbo.Z.Z.Z#P#P.Z#P.Z#P.Z#P.Z#P#P.Z#P.Z#P.Z#P.Z#P.Z#P#P.Z#P.Z#P.Z#P#P.Z#P.Z#P.Z#P#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P#P.Z#P.Z#P.Z.Z.z.z.z.z.z.z#l", ".z.z.z.z.z.z.z.Z#P#P#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z.Z#P.Z#P.Z.Z.ZaS.0.0.0.0aSaS.0aSaS#QaS#Q#Q#Q#Q#Qbe.xbe.x#3.xbe.x#d#d#d#d#daT#daTaT#daT.j.j#H.Z.Z#P.Z#P.Z#P#Pbt#fabab#f#f#f#faU#faU#f#RaU#RaU#RaU.x#Kbm#Kbm#K.T.pbobo.pbm#k#k#kaV#kaVaVaVaVaVaVaVaV.5.5#P.Z.Z#P.Z#P.Z#P.Z#P.Z#P#P#P.j.1a4a4a4.1a4.1a4.1.1a4.1.1.1.1.1.1ao.1ao.1#3.x#3.xbe.xbe.x#3.x.x.x.x.x.x.x#t.x.x.x.p.p.Tbc.T.pbm.p.T.p.T.Z#P.Z.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z.Z#P.Z#P.Z#P.Z.Z#P.Z#P.Z#P.Z.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P#P#P#P.Z.z.z.z.z.z.z.t", ".z.z.z.z.z.z.z#P#P#P.Z#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P.Z#P#P#P#P#P#P#P#P#P#P#P#P.Z#P#P#P#P#P#P#P.Z#P#P#P#P#P.Z#P#P#P#P#P#P#P#P#P#P#P#P#P.Z#P#P#P#P#P#P#P.Z#P.Z#P.0.0.0.0.0aS.0aSaSaS#QaSaS#Q#Q#Q#Q#Q.x#3.xbe.x#3.xbe#d#d#d#d#d#daT#daTaT#d.ja8.abn.Z.Z#P.Z#P.ZaAaAabab#fab#f#f#f#faU#faUaUaUaUaUaU.x#K#Kbm#Kbm#Kbmbm.pbo.p.T#k#k#kaV#kaV#kaVaVaVaVaVaV.Qaia0.Z.Z#P.Z#P#P#P#P#P#P#P.Z#PbVa4a4.1a4a4.1a4.1.1a4.1.1.1.1.1ao.1.1ao.1aobe.xbe.x#3.x#3.xbe.x.x.x.x.x.x.x#K.x.x.x.x.p.T.T.p.T.p.T.p.Tbo#P.Z#P#P#P#P#P#P#P#P#P#P.Z#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P.Z#P#P#P.Z#P.Z#P.Z.z.z.z.z.z.z#l", ".z.z.z.z.z.z.z.Z#P#P#P#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P#P#P.Z#P.Z#P#P.Z#P.Z#P#P#P#P#P.Z#P.Z#P#P#P#P#P.Z#P.Z#P#P#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P#P#P.Z#P.Z#P#P#P#P.Z#P.0.0.0.0.0.0aS.0aSaSaSaS#QaS#Q#Q#Q#Qbebe.x#3.x#3.xbe.x#d#d#d#d#daTaTaT#daTaTa8.a.a.a.a#P.Z.r.ZblaA#Cabababab#f#f#faU#faU#f#RaUaUaUaU#K.6aDbTaD#Kbm#Kbmbm.T.p.T#k#k#k#kaVaVaVaVaVaVaV#SaVbl#9.2a##P.Z#P#P.Z#P.Z#P.Z#P#P#P.ja4a4a4a4.1a4.1a4.1.1.1.1.1.1.1.1ao.1ao.1aobe.x#3.xbe.xbe.x#3.x.x.x.x#K.x.x.x.x.x.x.x.x.p.pbm.p.T.p.T.p.T.Z#P#P.Z#P.Z#P.Z#P.Z#P#P#P#P.Z#P.Z#P.Z#P.Z#P#P.Z#P.Z#P.Z#P#P.Z#P.Z#P.Z#P#P.Z#P.Z#P.Z#P.Z#P.Z#P.Z#P#P#P#P#P.Z#P#P#P#P#P#P.z.z.z.z.z.zaL", ".z.z.z.z.z.z.z.r#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P.Z#P#P#P#P#P#P#P.Z#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P.Z#P.Z.0.0.0.0.0.0.0.0aS.0aSaS#QaS#QaSaSaS.x#3.xbe.xbe.x#3.x#3be#d#d#d#daTaT#daTaT#d.a.aa8.a.a#Lbl#P.jaO#CaAaZaZab#f#f#f#f#faU#faUaUaUaU#RaUbTaDbTaDaD.p#Kbm#Kbmbmbm#Kbe#k#k#k#kaV#kaVaVaVaVaVaVbn#1.2.I.Z#P#P#P#P#P#P#P#P#P#P#PaGa4a4a4a4a4.1a4.1.1a4.1.1.1.1.1.1.1ao.1ao.1be.xbe.x#3.x#3.xbe.x.x.x.x.x.x.x.x.x#K.x.x.x.x.T.p.Tbc.T.p.T.Z#P#P#P#P#P#P#P#P#P#P#P.Z#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P.Z#P#P#P#P#P#P#P.r.Z.z.z.z.z.z.z#l", ".z.z.z.z.z.z.z.Z#P.r#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P.r#P#P#P#P#P#P#P.r#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P.0a1.0.0.0.0.0aS.0aSaSaSaSaS#QaS#Q#Qbe.x#3.x#3.x#3.xbe.xbe#d#d#d#daT#daTaT#daTa8.a.a.a.aa8.a.BaO.j.j#Cbm#Kbmab#f#f#faU#faU#f#RaUaUaUaUbTaDaDbTaDaDbmbm#Kbm#Kbm.x.x#k#kaV#kaVaVaVaVaVaVaVaV#LbQbq.2.I#P.Z#P#P#P.r#P#P.r#P#Pa4a4a4.1a4.1a4.1a4.1.1.1.1.1.1.1ao.1.1ao.1aoaobe.xbe.xbe.xbe.xbe.x.x#K.x.x#t.x.x.x.x.x.x.x.p.p.T.T.p.T.p#P#P#P#P#P#P#P.r#P#P.r#P.r#P#P#P#P#P#P#P#P#P#P#P.r#P#P.r.Z.r#P#P.r#P#P#P#P#P.r#P#P.r#P#P#P#P#P#P#P#P.r#P#P#P#P#P#P#P#P#P.r.z.z.z.z.z.zaL", ".z.z.z.z.z.z.z.r.r.Z.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P#P#P#P.r#P#P.r#P#P.Z.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P#P#P#Na1.0.0.0.0.0.0.0aS.0aSaSaS#QaS#QaSbebe.xbe.xbe.xbe.x#3.xbe#daT#d#daTaTaT#daT#d.a.a.aa8.a.a.a.a.a.B.jbm#Kbm#KaZ#f#f#f#faU#faUaUaUaUaU#RaDbTaDbTaDbTaDbmbm#Kbm#K.xbe#k#k#k#kaV#kaVaVaVaVaVaV.abQ.sbv.2bA#P#P#P#P#P#P#P#P#Pa6a4a4a4a4a4a4.1a4.1.1.1.1.1.1.1.1ao.1ao.1ao.1ao.1ao#3.x#3.x#3.xbe.x.x.x.x.x#K.x.x.x#K.x.x.x.x.T.p.T.p.Tbo#P#P#P#P.r#P#P#P#P#P#P#P.Z.r.Z.r#P#P.r#P#P.r#P#P#P#P#P#P#P#P#P#P#P#P#P.r#P#P#P#P#P#P#P#P.r#P#P.r#P#P#P#P#P#P.r#P#P.r#P.r.Z.z.z.z.z.z.z#l", ".z.z.z.z.z.z.z.Z#P.r#P#P.r.Z.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P.r#P.r#P#P#P.r#P#P.r#P.r#P#P.r.Z.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P.r#P#P#P#NbN.0a1.0.0.0.0aS.0aSaSaS#QaSaS#QaSbe.x#3.x#3.x#3.xbe.x#3.x#d#d#d#daT#daTaTaT#da8.a.a.aa8.aa8.aa8.abK#A#Kbm#K###f#f#faU#faU#f#RaU#RaUaUbTaDaDbTaDaDbTaD#Kbm#K#K#C.x#k#kaV#kaVaVaVaVaV#SaVaV.a#xbQ.sbq.2a#.Z.r#P#P.r#P.r#P.r#Sa4a4.1a4.1a4.1a4.1.1.1.1.1.1.1.1ao.1ao.1ao.1aoao.1#3.xbe.x#3.xbe.x.x.x.x.x.x.x.x.x.x#t.x.x.x.pbm.p.T.D#P.r#P.r.Z.r#P.r#P.r#P.r#P#P.r#P#P.r.Z.r#P#P.r#P.r#P.r#P.r#P.r#P.r#P#P#P.r#P.r#P.r#P.r#P#P#P.r.Z.r#P.r#P.r#P#P.r#P#P#P#P.r.z.z.z.z.z.zaL", ".z.z.z.z.z.z.z.r.r#P.r#P#P.r#P#P.r.Z.r#P#P#P.r.Z.r#P#P#P.r.Z.r#P#P#P.r.Z.r.Z.r#P.r#P#P.r.Z.r#P#P.r#P.r#P#P.r.Z.r#P#P#P.r.Z.r#P#P#P.r.Z.r#P#P#P.r.Z.r#P#PbN.Da1a1.0.0.0.0.0aS.0aSaSaSaS#QaS#Q.x#3.xbe.xbe.x#3.xbe.xbe#d#d#d#daTaTaT#daT.a.aa8.aa8.a.a.a.a.a.a.a#A.B#KaAbs#f#f#f#faU#faUaUaUaUaUbTaDaDbTaDaDbTaDbTaD#Kbm.x.xbe#k#kaV#kaV#kaVaVaVaVaVaVa8#LbQbQ#1#s.I#P#P#P.r.Z.r#P.ra6a4a4a4a4a4a4.1a4.1a4.1.1.1ao.1.1ao.1ao.1ao.1ao.1aoaoaoao.xbe.xbe.x.x.x#t.x.x.x#K#t.x.x#K.x.x.x.p.T.p.p#P.r#P#P#P.r#P.r#P#P#P#P#P#P.r.Z.r#P#P.r#P#P.r.Z.r.Z.r.Z.r#P#P#P.r.Z.r#P.r#P#P#P#P#P#P#P#P.r#P#P.r#P.r#P#P#P.r#P#P.r#P.r.r#P.z.z.z.z.z.z#l", ".z.z.z.z.z.z.z#P#P.r#P.r#P.r#P.r#P.r#P.r.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.rbobN.Da1.0.0.0.0aS.0aSaSaS#QaS#QaSaSbe.a.a.abe.x#3.xbe.x#3.x#d#d#d#daT#daT#daTa8.a.a.a.a.aa8.aa8.aa8.aa8.B#AaZ#f#f#f#faU#faU#f#RaUaUaUbTaDbTaDbTaDaDbTaDaDbTbm#K.x.x#k#k#kaVaVaVaVaVaVaVaVaVa8.a#xbQbQ.sbqbj#P.r#P.r#P#P.r.ra4a4a4.1a4.1a4.1.1.1.1.1.1.1.1.1.1ao.1ao.1aoaoaoaoaoaoaoaobe.x#3.xbe.x.x.x.x.x.x.x.x.x.x.x.x.x.x.D.D.D#P#P.r#P.r#P#P.r#P.r.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r.r#P.r.r#P.r#P.r#P.r#P#P.r#P.r#P.r#P.r#P.r#P.r.z.z.z.z.z.zaL", ".z.z.z.z.z.z.z.r.r.r.r.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r.r#P.r.r#P.r.r#P.r.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r.r#P.r.r#P.r.r#P.r.r#P.r.r#P.r.r#P.r.r#P.r#P.ra6#PbN.T.D.0.0.0.0.0aS.0aSaSaSaS#QaS#Q.a.a.a.a.abe.x#3.x#3.xbe#d#daT#daT#daTaT#d.a.a.aa8.aa8.a.a.a.a.a.a.a.a#AaZ#f#f#f#f#faUaU#faUaU#RaUaDbTaDaDbTaDbTaDaDbTaDaD#K.x.x#k#k#k#kaV#kaVaVaVaVaVaVa8.a#L#xbQbQ.s.2.I#P#P#P.r.ra6.ra4a4a4a4a4a4.1a4.1a4.1.1.1.1.1.1.1ao.1ao.1ao.1aoaoaoaoaoaoao#3.xbe.xbe.x#K#t.x.x#K.x.x.x#K.x.x.x.D.D.D.r.r#P.r#P.r#P.r#P.r#P.r#P.r.r#P.r.r#P.r#P.r#P.r#P.r.r#P.r#P.r.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r#P.r.r#P.r#P.r#P.r.r#P.r.z.z.z.z.z.zaW", ".z.z.z.z.z.z.z.r.r.ra6.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r#P.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r#P.r.r.r.r.r#P.r.r.r.r.r#P.r.r.r.r.r.r.r.ra6#NbN.D.D.0.0.0aS.0aSaSaS#QaS#QaSaS.a.a.a.a.a.abe.xbe.xbe.x#d#d#d#daTaT#daTaTa8.aa8#xa8.a.aa8.aa8.aa8.aa8.a.4#f#f#f#faU#faUaUaUaUaUaUbTaDbTaDaDbTaDbTaDbTaDbTaD.x.x#k#kaV#kaVaVaVaVaVaVaVaVaDa8.a.a#xbQbQbq.2..#P.r#P.r.r#.a4a4a4a4.1.1a4.1.1.1.1.1.1.1.1ao.1.1ao.1aoao.1aoao.1aoaoaoaoaobe.x#3.xbe.x.x.x.x.x.x#t.x.x.x.x.x.D.D#P#P.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.z.z.z.z.z.zaL", ".z.z.z.z.z.z.z.r.r.r.r.r.r.r.r.r.r.r.r.ra6.r.r.r.r.ra6.r.r.r.r.r.ra6.ra6.r.r.r.ra6.r.r.r.r.r.r.r.r.r.r.ra6.r.r.r.r.ra6.r.r.r.r.ra6.r.r.r.r.ra6.r.r.ra6.r.ra6btbt.D.0.0.0.0aS.0aSaSaS#QaS#QaSa8#xa8.a.a.a.a#3.x#3.x#3#d#d#d#daT#daTaT#d.a.a.aa8#xa8.a.a.a.a.a.a.a.a.aaG#f#f#f#f#faU#faUaUaUaU#RaDaDbTaDbTaDaDbTaDaDbTaD.6#K.x#k#k#k#kaV#kaVaVaV#SaVaVa8a8.a.a#L#xbd#1bq.2a6.ra6.r.r.ha4a4a4a4a4a4.1a4a4.1.1.1.1.1.1.1ao.1ao.1ao.1aoaoaoaoaoaoaoaoaoao#3.xbe.x.x#K.x.x.x#K.x.x.x#K#t.x.D#P.r.r.r.r.r.r.r.r.r.r.r.r.r.ra6.ra6.ra6.r.r.r.r.r.r.ra6.ra6.ra6.ra6.r.r.r.ra6.ra6.r.r.r.r.r.ra6.r.ra6.r.r.ra6.r.r.r.r.r.r.r.r.r.z.z.z.z.z.zaW", ".z.z.z.z.z.z.z.r.r#..r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r#..r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r#..r.r.r.r.r#..r.r.r.r.r#..r.r.r.r.r.r.r.r.ra6#..Dbt.0.0.0aS.0aSaSaSaS#QaSaS#Q.aa8#xa8#xa8.a.a.abe.xbebe#d#d#daTaT#daT#da8.aa8.aa8.a.aa8.aa8.aa8.a.a.a.4#f#f#f#faU#faU#f#RaUaUaUbTaDaDbTaDbTaDaDbTaDaDbTaDaD.x#k#kaV#kaVaVaVaVaVaVaVaV.X.6.a.a.a#x#LbQ.sbqbj#P.r.ra7#Sa4a4a4a4a4.1a4.1.1a4.1.1.1.1.1.1.1ao.1ao.1ao.1aoaoaoaoaoaoaoaoaobb.x#3.x.x.x.x.x.x.x.x.x.x.x.x.x.r.r.ra6#..r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.ra7#..r#..z.z.z.z.z.z#l", ".z.z.z.z.z.z.z#..ra7.ra7#.a6#.a7.ra7#.a6#.a7.ra7#.a6#.a7.ra7.ra7.ra7#.#.a6#.a7.r#.a7.ra7#.a6#.a7.ra7#.a6#.a7#.a6#.a7.r#.a7.ra7.r#.a7#.a6#.a7.r#.a7#.a6#.a7#.a6.r.D.0.0aS.0aS.0aSaS#QaS#QaSaSa8#xa8.a.aa8#x.a.a.a#3.x#3#daT#d#daTaT#daT.a.a.a.a.a.aa8#x.a.aa8#xa8.aa8.4#f#f#f#f#faUaU#faU#faUbTaDbTaDaDbTaDaDbTaDbTaDbTaDbT.x#k#kaV#kaV#kaVaVaVaVaVaVaDaDa8a8.a.a.abQ#1#1bqbLa6.r.ha4a4a4a4.1a4a4.1a4.1.1.1.1.1ao.1.1ao.1ao.1ao.1aoaoaoaoaoaoaoaoaoaoaobb.nbe.x.x.x.x.x.x#K.x.x.x#Ka6#.a6#.#.a6#.a6#.a7a6#.a7a6#.a6#.a7.r#.#..r#.a7#.a6#.a7.ra7#..r#.#..r#.#.a7.ra7#..r#.#.a7.ra7#.a6#.#..r#.#.a7.r#.a7.ra7#.a6#..r.r.r.z.z.z.z.z.zaW", ".z.z.z.z.z.z.z.r#.#.a7.ra7#.a6#.a6#..ra7#..ra7.r#.a6#..ra7.r#.a6#..ra6#.#.a6#.a6#..ra7.ra7#.a6#.a6#..ra7.r.ra7.r#.a6#.a6#..ra7.ra7.r.ra7.r#.a6#..ra6#..ra6#..ra7bt.0.0.0aS.0aSaSaSaSaS#QaSaS.aa8#xa8#xa8.a.a#xa8.xbe.x#d#d#d#daT#daTa8.aa8.aa8#xa8.aa8a8.a.aa8.a.a.aab#f#f#f#faU#faU#faUaU#fbTaDaDbTaDaDbTaDbTaDaDbTaDaDaD#K#k#k#kaVaVaV#kaVaVaVaVaVbo.6aDa8a8.a.a#xbQbQ#1.2.h.hbaa4a4a4a4a4a4.1a4.1a4.1.1.1.1.1.1.1.1ao.1ao.1ao.1aoaoaoaoaoaoaoaoaoaoaobb.n.n.x.x#K.x.x.x.x.x.x.r#.a6#.a6#.#.a6#.a6#.#.a6#.#.a6#..ra7.ra7a6#.a6#.a6#.a6#..ra7.ra7a6#.a6a7.r.ra7.ra6#.a6#..ra7.r#.a6#.a6a7.ra6#..ra7.ra7.ra7.ra7#.#.#..z.z.z.z.z.z.o", ".z.z.z.z.z.z.z#.a7#.#.a7#.#.#.a7#.#.a7#.#.a7#.#.a7#.#.a7#.#.a7#.a7#.a7#.a7#.#.#.a7#.#.a7#.#.#.a7#.#.a7#.#.a7#.#.a7#.a7#.#.a7#.a7#.#.a7#.a7#.a7#.a7#.#.a7#.#.a6#.a6aS.0aS.0aS.0aSaS#QaS#QaS.aa8#xa8.a.aa8#x.aa8.a.a#3#d#d#d#d#daTaT#d.a.aa8#xa8.aa8.a.a.a.a.a.a.a.aa8ab#f#f#f#f#faUaU#faU#faUaDbTaDbTaDbTaDbTaDaDbTaDbTaDbT#K#k#kaV#k#kaVaVaVaVaVaVbobTaD.6a8a8a8.a.a#xbQbQ.2#9ba.O#Sa4a4a4a4a4a4.1a4.1.1a4.1.1.1.1.1ao.1.1ao.1aoaoao.1aoaoaoaoaoaoaoaoaobb.n.n.n.n.x.x.x.x.x#Ca6#.a7#.#.a7#.a7#.#.#.#.a7#.#.a7#.#.a7#.a7#.#.a7#.#.#.a7#.#.a7#.a7#.#.a7#.#.a7#.#.a7#.#.a7#.a7#.#.a7#.a7#.#.a7#.#.a7#.#.#.a7#.#.#.a7#..r.z.z.z.z.z.zaW", ".z.z.z.z.z.z.z.r#.#.a7#.#.a7#.#.a7#.a7#.a7#.a7#.a7#.a7#.a7#.#.a7#.#.a7#.#.a7#.a7#.a7#.#.a7#.a7#.#.a7#.a7#.a7#.a7#.#.#.a7#.a7#.#.a7#.a7#.#.a7#.#.a7#.a7#.a7#.#.a7#..0aS.0aS.0aSaSaSaSaS#QaS.a.aa8#xa8#xa8.aa8#x.a.abe#d#d#daT#d#d#dbm.aa8.aa8.a.a.a.aa8#xa8a8.aa8.a.aab#f#f#f#faU#faU#faUaU#fbTaDaDbTaDaDbTaDaDbTaDaDbTaDaD#k#k#k#kaVaVaVaVaVaV#SaV.pboaDaDaDa8a8.a.a#x#xbQ.V.V.Obka4a4a4a4a4.1.1a4.1a4.1a4.1.1.1.1.1.1ao.1ao.1ao.1aoaoaoaoaoaoaoaoao#qaoaobb#.#..r#..r.x.x.ra7#.#.a7#.a7#.#.a7#.a7#.a7#.#.a7#.a7#.#.a7#.#.a7#.#.a7#.#.a7#.a7#.#.a7#.#.a7#.#.a7#.#.a7#.#.a7#.a7#.#.a7#.#.a7#.#.a7#.a7#.a7#.#.a7#.#.#.#..z.z.z.z.z.z.o", ".z.z.z.z.z.z.z#..Ua7#.#.a7#.a7#.a7#.#.a7#.#.a7#.#.a7#.#.a7#.a7#.#.a7#.#.a7#.a7#.a7#.#.a7#.a7#.#.a7#.a7#.#.a7#.#.a7#.a7#.a7#.#.a7#.a7#.#.a7#.a7#.a7#.#.a7#.#.a7#.a6aS.0aS.0aS.0aSaSaS#QaS#Q#xa8#xa8#xa8#xa8#xa8.a.abe#d#d#d#d#d#d#dbm.a.a.a.aa8#xa8.a.aa8a8#x.a.a.aa8ab#f#f#f#f#faUaU#faU#faUaDaDbTaDaDbTaDaDbTaDaDbTaDaDbT#k#k#k#k#kaV#kaVaVaVaVaV.pbobTaDaDaD.6a8.a.a.a#Lbnbnbkbka4a4a4a4a4a4a4.1a4.1a4.1.1a4aDaDaD.1.1ao.1ao.1aoaoaoaoaoaoaoaoaoaoao#qao#qa7#.a7#.a7#.#.a7#.#.a7#.a7#.#.a7#.a7#.a7#.#.a7#.a7#.#.a7#.a7#.#.a7#.a7#.a7#.a7#.#.a7#.#.a7#.#.a7#.a7#.a7#.a7#.#.a7#.a7#.#.a7#.#.a7#.#.a7#.#.a7#.a7#.a7#.#..z.z.z.z.z.zaW", ".z.z.z.z.z.z.z#.#.#.a7.U#.a7.U#.a7.Ua7#.a7.U#.a7.U#.a7.U#.a7.Ua7#.a7.Ua7#..U#.a7.U#.a7#.#.#.a7.Ua7.U#.a7.U#.a7.U#.a7.U#.#.a7.Ua7#..Ua7#.a7.U#.a7.Ua7.U#.a7.Ua7#.#.aS.0aS.0aS.0aSaS#QaSaS#Qa8.aa8#xa8.a.a.aa8#xa8#x#d#d#d#daT#d#dbmbmbm.a.aa8.aa8.a.aa8#xa8.aa8.a.a.aab#f#f#f#faU#faU#faUaU#fbTaDbTaDbTaDbTaDbTaDbTaDbTaDbT#k#k#kaV#kaVaVaVaVaVaVaV.pbobobTaDaDa8aDa8.a.a#Lbnbnbk#7#Sa4a4a4a4a4.1a4.1a4.1a4.6aDaDaD#x#x#x.1ao.1ao.1aoaoaoaoaoaoao#qaoaoaoaoao#V.Ua7.Ua7.Ua7.U#.a7.U#..Ua7#.a7.U#.a7.Ua7#..Ua7#..Ua7#..Ua7#.a7.U#.a7.U#.a7.U#.a7.Ua7#..Ua7.Ua7.U#.a7.U#.a7.Ua7#..Ua7#.a7.Ua7.Ua7#.a7.Ua7#..Ua7.U#.a7.U#..z.z.z.z.z.z.o", ".z.z.z.z.z.z.z.U.U.Ua7#.a7.U#.a7#..Ua7#..Ua7.Ua7#.a7.Ua7#..Ua7#..Ua7#..Ua7#.a7.U#.a7.Ua7.Ua7.Ua7.U#.a7.Ua7.Ua7#.a7.U#.a7.Ua7#..Ua7.Ua7#..Ua7#..Ua7#..Ua7.Ua7#..Ua7.0aS.0aS.0aSaSaS#QaS#QaS#xa8#xa8.aa8#xa8#xa8#xa8#d#d#d#d#d#d#K.Tbm.Ta8.a.aa8#xa8.a.aa8.aa8#xa8.aa8ab#f#f#f#f#faU#faU#faUaDbTaDbTaDaDbTaDaDbTaDaDbTaDaDbT#k#k#kaV#kaV#kaVaVaVaVaV.pbobTboaDbTaDa8a8a8.a.a#L#L#7.da4a4a4a4.1a4a4.1a4.1a4.1aDaDaDbQ#xbQbQ#x.1ao.1aoaoaoaoaoaoaoaoaoao#qao#qaoao.Ua7#..Ua7#.#.a7.Ua7#.a7.Ua7#..Ua7#..Ua7#.a7.U#.a7.U#.a7.Ua7#..Ua7#..Ua7.U#.a7.Ua7#..Ua7#.a7.U#.a7#..Ua7#.a7.U#.a7.Ua7#..Ua7#..Ua7.U#.a7.Ua7#..Ua7.U#.#..z.z.z.z.z.zaW", ".z.z.z.z.z.z.z#..U.U.U.U.Ua7.U.U.Ua7.U.Ua7.U.U.U.U.U#..Ua7.U.U.Ua7.U.Ua7.U.U.Ua7.U.U#..U.U#..U#..Ua7.U.U#..U.U.U.Ua7.U.U.U.Ua7.U#..U.Ua7.U.U.Ua7.U.Ua7.U.U.Ua7#.a7aSaS.0aS.0aSaSaSaS#QaSaSa8.a.a.a#xa8.a.aa8#xa8a2#d#d#d#daT#d#Kbm.Tbmbm.a.a.aa8.a.aa8#xa8.aa8.a.aab#f#f#f#f#faU#faUaU#faUbTaDaDaDbTaDaDbTaDaDbTaDaDbTaDaD#k#k#k#kaVaVaVaVaVaVaVbm.p.pbobobTaDbTaDa8a8a8.a.aaq#7.da4a4a4a4a4a4.1a4.1a4.1.6aD.6bO#xbQ#xbQ.sbdbQ.1ao.1aoaoaoaoaoaoaoaoaoaoao#qao#V.Ua7#..U.U.U.U.U.U.U.U#..U.Ua7.U.Ua7.U.U.Ua7.U.U#.a7.U.U.U.Ua7.U.Ua7.U.Ua7.U.U.U.Ua7.U.U.U#.a7.U.Ua7.U.U.U#.a7.U.U.U.Ua7.U.Ua7.U.Ua7.U.U#.a7.U.Ua7.U.U.z.z.z.z.z.z.o", ".z.z.z.z.z.z.z.U.Ua7.Ua7#..U.Ua7#..U.U#..U.Ua7.Ua7.Ua7.U.U.Ua7.U.U#..U.U.Ua7#..U.Ua7.Ua7.Ua7.Ua7.U.U.Ua7.Ua7.Ua7#..U#..Ua7.U#..U.Ua7#..U.Ua7#..U.U#..U.Ua7#..U.Ua7aS.0aS.0aS.0aSaSaS#QaS#Q#xa8#x.aa8.aa8#x.a.aa8a2#d#d#d#d#d#dbm.Tbmbm.Tbc.aa8#xa8.a.aa8.a.aa8#xa8#fab#f#f#f#f#faU#faU#faUaDbTaDbTaDbTaDbTaDbTaDbTaDbTaDbT#k#k#k#k#kaV#kaV#kaV#k.T.T.p.pbobTboaDaD.6aDa8a8#U.a.dbP#Sa4a4a4a4a4a4.1a4.1a4aDbOaDaDaD#xbQbQ.s.s.sbd.1aoaoaoaoaoaoaoao#qao#qaoaoao#b#V.Ua7.Ua7.Ua7.Ua7.Ua7.Ua7#..U.U#..U.Ua7#..U.Ua7.U.U#..Ua7.U.U#..U.Ua7#..U#..Ua7#..U#..Ua7.U.Ua7.U.U#..Ua7.U.U#..Ua7#..U.U#..U.U#..U.Ua7.U.Ua7.U.U.U#..z.z.z.z.z.z.o", ".z.z.z.z.z.z.z.U.UaRaR.U.U.Ua7aR.Ua7.U.Ua7.U.U.U.U.U.U.Ua7.U.U.Ua7.U.Ua7.U.U.U.Ua7aR.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.Ua7.U.U.Ua7.U.U.U.Ua7aR.Ua7.U.U.U.U.U.U.U.Ua7aS.0aS.0aS.0aSaSaS#QaSaSa8.aa8#xa8#xa8.aa8#xa2a2#d#d#d#d#d#K#Kbm.Tbmbm.Tbm.aa8.a.aa8#xa8.a.aa8.aabab#f#f#f#faU#faUaU#faUbTaDbTaDaDbTaDaDbTaDaDaDbTaDbT#k#k#k#kaV#kaVaVaVaVaVaVbm.p.pbo.pbobTbTboaDbO.6bO#U#Ua9bPa4a4a4a4a4.1.1a4.1a4.1.6aD.6bOaDaD#xbQbd#1.sbv.s.1aoaoaoaoaoaoaoaoaoao#qao#qao#V.U.U#..U.U.U.U.U.U.U.U.U.U.Ua7.U.U.U.U.Ua7.U.U.U.U.Ua7.U.Ua7.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.Ua7.U.U.U.U.U.U.U.U.U.Ua7.U.Ua7.U.U.U.U.U.U.UaR.U.UaR.z.z.z.z.z.z.o", ".z.z.z.z.z.z.zaR.U.U.U.UaR.UaR.U.UaRaR.UaRaR.U.U.U.U.UaR.UaR.U.UaR.UaR.UaR.UaR.UaR.U.U.UaR.U.UaR.U.U.U.U.U.U.UaR.UaR.UaR.UaR.UaRaR.UaR.UaR.U.UaR.UaR.U.U.U.U.U.U.U.0aS.0aS.0aSaSaSaS#QaS#Q#xa8#xa8.aa8#xa8#xa8#da2#d#d#d#d#dbm#Kbmbm.Tbmbm.Tbc.aa8.a.aa8.a.a.a.aa8#fab#f#f#f#f#faU#faU#faUaDbTaDaDbTaDaDbTaDaDbTaDaDbTaD#k#k#k#k#kaV#kaV#kaV#kaVbc.T.p.pbo.pbobobTaDaDaDa8a8bOa9#Ga4a4a4a4a4#S.1a4.1a4.1aDbOaDaD.6aDbQ#xbQ.s.sbvbv.sbdaoaoaoaoaoaoao#qaoao#qaoao#b#V.U.U.U.U.U.U.U.U.UaR.UaR.UaR.UaR.U.UaRaR.UaR.U.U.UaR.UaRaR.UaR.U.UaR.UaR.U.UaR.UaR.U.U.U.UaR.UaRaR.UaR.U.U.U.UaR.UaR.UaR.UaRaR.UaR.U.UaR.U.UaR.U.U.z.z.z.z.z.z.o", ".z.z.z.z.z.z.z.UaR.EaR.U.UaR.UaR.U.U.UaR.U.UaR.UaR.U.U.UaR.U.UaR.UaR.UaR.U.U.UaR.UaR.U.U.UaR.U.UaR.UaR.UaR.UaR.U.U.UaR.UaR.U.U.U.U.U.UaR.UaR.UaR.U.UaR.UaR.U.U.U.U.0aS.0aS.0aSaSaS#QaS#QaSa8.a.a#xa8#xa8.aa8#xa2a2#d#da2#d#K#Kbm#Kbmbm.Tbmbm.Tbm.p.aa8.a.aa8.a.a.aab#f#f#f#f#faU#faUaU#faUbTaDbTaDbTaDbTaDbTaDbTaDbTaDaDa3#k#k#k#kaVaV#kaVaVaVbmbm.T.p.T.p.pbTbobTbTaDaDaDbOaDa9#G#Sa4a4a4.1a4.1a4.1a4.1.6aDaDbOaDbOaD#xbQbQ.s.sbv#sbvbvaoaoaoao#qaoaoao#qao#qao#qapap.U.U.UaR.UaR.U.U.U.U.UaR.UaR.U.UaR.U.U.U.UaR.UaR.UaR.U.UaR.U.UaR.U.U.UaR.U.U.U.UaR.UaR.U.UaR.U.U.U.UaR.UaR.U.UaR.U.U.U.U.U.U.U.UaR.U.UaRaRaRaR.E.z.z.z.z.z.z.o", ".z.z.z.z.z.z.zaRaRaRaR.EaRaRaRaRaR.EaRaRaRaRaRaRaRaR.EaRaRaRaRaRaRaRaRaRaR.EaRaRaRaRaR.EaRaR.EaRaRaRaRaRaRaRaRaR.EaRaRaRaRaRaR.EaR.EaRaRaRaRaRaRaRaRaRaRaRaRaR.U.UaS.0aS.0aS.0aSaS#QaSaS#Q#xa8#xa8.aa8#xa8#x#da2#da2#d#d#d#Kbm#Kbm#Kbmbmbm.Tbm.Tbmbc.a.aa8#xa8.aa8abab#f#f#f#faU#faU#faUbTaDaDbTaDaDbTaDaDbTaDaDbTaDaDbT#k#k#k#k#k#kaVaV#kaV#kbmbmbmbm.p.pbo.p.pbobobTaDaDbOaD#i#Sa4a4a4a4a4a4a4.1a4.1a4aDbOaD.6aD.6aDbO#x#x.s.sbvbvb.b..saoaoaoaoaoao#qaoao#qaoaoap#b.UaR.U.UaRaRaR.EaR.EaRaRaRaRaRaRaRaRaR.EaRaRaRaRaRaRaRaRaRaRaRaRaR.EaRaRaRaR.EaRaRaRaR.EaRaRaRaR.EaRaRaRaR.EaRaRaRaR.EaR.EaR.EaRaR.EaRaRaRaRaR.U.z.z.z.z.z.z.o", ".z.z.z.z.z.z.z.U.EaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaR.UaS.0aS.0aS.0aSaSaS#QaS#Qa8.aa8#xa8#xa8.aa8a2a2a2a2a2a2#K#Kbm#Kbm#Kbm#K.Tbmbmbm.Tbmbm.a.aa8.a.aab#fab#f#f#f#f#faU#faU#fbTaDbTaDbTaDaDbTaDaDbTaDaDbTaDbT#k#k#k#kaV#kaVaVaVaVaV#Kbm.p.T.T.p.p.pbobobobTbobTaD.X#ia4#Sa4a4a4a4.1a4.1a4.1a4aDaDaDbOaDaDbO.6aDbQ#x.s.sbvb.b.b.bdaoaoao#qaoao#qaoao#qaoao#bap.U.U.EaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaR.EaR.EaR.z.z.z.z.z.z.o", ".z.z.z.z.z.z.z.EaR.EaR.EaR.EaR.EaRaR.EaR.EaR.EaR.EaRaR.EaR.EaR.EaR.EaR.EaRaR.EaR.EaR.EaRaRaRaRaR.EaR.EaR.EaR.EaRaR.EaR.EaR.EaR.EaRaR.EaR.EaR.EaR.EaR.EaR.EaRaR.E.U.0aS.0aS.0aSaSaSaSaS#QaS#xa8#xa8.a.a.a.aa2a2#da2#da2#d#K#Kbm#Kbm#Kbm#Kbmbm.Tbm.Tbm.Tbca8.a.abmababab#f#f#f#faU#faUaUaUbTaDaDbTaDaDbTaDbTaDbTaDbTaDaDbT#k#k#k#kaV#kaV#kaV#k#Kbmbmbmbmbmbm.T.p.p.pbobobTbT.XbTbx#Sa4a4a4a4a4a4.1a4.1a4.1aDaD.6aDbO.6aDaDaD#xbQbQ.sbvbv.eb.bvaoaoaoaoaoaoao#qao#qao#q#bap#baRaRaRaR.EaRaRaR.EaR.EaR.EaR.EaR.EaR.EaR.EaR.EaR.EaR.EaR.EaR.EaRaR.EaR.EaR.EaR.EaRaR.EaR.EaR.EaR.EaR.EaRaR.EaR.EaR.EaRaRaRaRaRaRaR.EaRaRaRaR.z.z.z.z.z.z#Z", ".z.z.z.z.z.z.zaR.EaR.EaRaRaRaRaR.EaRaRaRaRaRaRaRaR.EaRaR.EaR.EaRaRaRaRaR.EaRaRaRaRaRaR.EaR.EaR.EaRaR.EaRaRaRaR.EaRaRaRaRaRaRaRaR.EaRaRaRaRaRaR.EaR.EaR.EaR.EaRaRaRaS.0aS.0aS.0aSaS#QaS#QaSa8.a.a#xa8#xa8#xa2a2#da2a2#d#K#K#K#Kbm#Kbm#Kbm#Kbmbmbm.Tbmbm.Tbmbmbmbmab#fab#f#f#f#f#faU#faU#fbTaDbTaDbTaDaDbTaDaDbTaDaDbTaD#ka3#k#k#k#kaV#kaVaVaV#Kbmbmbmbm.p.T.p.T.p.pbobobobobTbobx#Sa4a4a4a4a4a4.1a4.1a4.1a4aDbOaDaDaDbO.6bOaD#xbQbdbdbvbv#s.e.saoao#qao#qaoao#qaoao#qbU#bapaRaR.EaRaR.EaRaRaRaRaR.EaR.EaR.EaRaRaR.EaR.EaRaRaRaRaRaRaRaRaR.EaRaRaRaRaRaRaRaR.EaRaRaRaRaRaRaRaRaRaR.EaRaRaRaRaRaR.EaR.EaR.EaR.EaR.E.E.E.E.z.z.z.z.z.z.o", ".z.z.z.z.z.z.z.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.EaR.E.E.E.EaR.E.E.E.E.E.E.E.E.E.E.E.EaR.E.E.EaR.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.EaR.EaR.E.EaR.EaR.0aS.0aS.0aSaSaSaS#QaSaSa8#xa8.aa8.aa8#Qa2a2a2#da2a2#K#K#K#Kbm#Kbm#Kbm#Kbm#K.Tbmbm.Tbm.Tbm.Tbmab#fab#f#f#faU#faUaU#faUaDbTaDaDbTaDbTaDaDbTaDaDbTaDbTa3#k#k#k#k#k#kaV#k#k#K#K#Kbmbmbmbmbmbm.T.p.p.p.pbTbobobobxa4#Sa4a4a4.1a4a4.1a4.1a4.1.1.x.x.x.xaDaDaDa8aD#x#x.s.s#s#sb.bvbQaoaoaoao#qaoao#q#qaoaoaF#bbUaRaR.EaR.E.E.E.E.E.E.E.EaR.EaR.E.E.E.E.EaR.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.EaR.E.E.E.E.EaR.E.E.E.EaR.z.z.z.z.z.z#Z", ".z.z.z.z.z.z.zaR.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.EaRaS.0aS.0aS.0aSaS#QaS#QaS.a.a#xa8#xa8.aa2a2#da2a2#d#K#K#K#K#K#K#Kbm#Kbm#Kbm#Kbmbm.Tbmbm.Tbm.Tbmabab#f#f#f#f#f#faU#faU#fbTaDbTaDaDbTaDbTaDbTaDbTaDaDbT#k#k#k#k#kaV#k#kaV#k#K#K#Kbmbmbmbmbc.Tbm.p.T.pbo.pbobobo#S#Sa4a4a4a4a4a4.1a4.1a4.1a4.1a4be.x.x.x.xaDaDaDbfbQbQ#1bv.eazb.bqao#qaoao#qao#qaoao#q#q#baFap.3aRaR.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.z.z.z.z.z.z.o", ".z.z.z.z.z.z.zan.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.0aS.0aS.0aSaSaS#QaSaS#Q#xa8a8#xa8.a#Qa2a2a2a2#da2#K#K#K#K#K#K#K#Kbm#Kbm#Kbm#Kbmbm.Tbm.Tbmbmbmabab#fab#f#faU#faU#faUbTaDaDbTaDbTaDaDbTaDaDbTaDaDbTa3#ka3#k#k#kaV#kaV#k.x#K#Kbm#K#Kbmbmbmbmbm.T.T.p.p.pbo.p.P#S#Sa4a4a4a4a4a4a4.1a4.1a4.1.1.1.1.xbe.xbe.xa8aD.6aqbQbqbj.Iaz.ebj.qaoao#qaoaoao#qao#qao#x#D.e#DaR.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.EaR.z.z.z.z.z.z#Z", ".z.z.z.z.z.z.zaR.Ean.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.EaRaS.0aS.0aS.0aSaSaS#QaS#Qa8#xa8.a.a.a#Qa2a2a2a2a2.x#K#K#K#K#K#K#K#Kbm#Kbm#Kbm#Kbm#Kbm.Tbmbm.Tabab#fab#f#f#f#f#faU#f#fbTaDbTaDaDbTaDbTaDbTaDaDbTaDbTa3#ka3#k#k#k#k#kaV#k.x#K#K#K#Kbmbmbmbmbm.pbm.p.T.p.T.p.T#S#Sa4#Sa4a4a4a4.1.1a4.1.1.1a4.1.1.1be.x.x.x.xbe#cbOaqbf.yarbA.IaraFbi#naoaoao#qao#qaoao.a#Lbj.e.e.e.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.Ean.Ean.z.z.z.z.z.z.o", ".z.z.z.z.z.z.zanan.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.E.E.E.0aS.0aS.0aSaSaSaS#QaSaS.aa8#xa8#xa8a2a2a2a2a2a2#K.x#K#K#K#K#K#K#K#Cbm#Kbm#Kbm#Kbmbmbmbm.T#Kabab#fab#f#f#f#f#faU#faUaDbTaDaDbTaDbTaDaDbTaDbTaDaDbTa3a3#k#k#k#k#k#k#k.x#K#K#K#K#K#K#K#Kbmbmbm.Tbmbm.Tbm.T#S#S#Sa4a4a4a4a4a4a4a4.1a4.1a4.1.1.1.1.x.x.xbe.x.x.x#c#cblai.E.E.EbCbC.C#n.qao#qaoaoaoao#L#L#x#L.e.e.e.I.E.E.E.E.E.E.E.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.E.Ean.EanananaR.z.z.z.z.z.z#Z", ".z.z.z.z.z.z.z.Eananananan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Ean.Ean.EaS.0aS.0aS.0aSaS#QaS#QaS.a.aa8.a.a#Q#Qa2a2a2a2.x#K#K#K#K#K#K#K#K#K#K#K#K#Kbm#Kbm#K#Kbmbm#Kbmabab#fab#f#f#f#faU#faU#fbTaDbTaDaDbTaDaDbTaDaDbTaDbTaDa3#k#k#k#k#k#k#k.x.x.x#K#K#K#Kbm#Kbmbmbmbmbmbc.Tbc.TbG#S#Sa4#Sa4a4a4a4a4a4.1a4.1.1.1a4.1.1be.xbe.x.x.xbe.x.x#cbl.E.EananananbC.C#n#n#n.q#L#L.a#x#L#x#Lbj.e.e#r.E.E.Eanananananan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eanan.Eananananan.z.z.z.z.z.z.o", ".z.z.z.z.z.z.zananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananan.E.0aS.0aS.0aSaSaSaSaSaS.aa8#x.a#xa8a2#Qa2a2a2a2#K.x#K.x#K#K#K#K#K#K#K#K#K#Kbm#Kbm#Kbm#Kbm#Kaa#fab#fab#f#f#faU#f#faU#faDaDbTaDbTaDaDbTaDaDbTaDaDbTa3a3#ka3#k#k#k#k#k.x.x.x#K.x#K#K#K#K#K#Kbmbmbmbmbmbm#K#S#S#Sa4a4#Sa4a4a4.1a4a4.1a4a4.1.1a4be.x.x.x.xbe.x.x.x.x#cbl.Eananan.Eananan.C#n#n#x#L#x#x#L#x#L#x#L.e.e.ebjan.E.Eanananananananananananananananananananananananananananananananananananananananananananananananananananananananananan.Eanan.E.z.z.z.z.z.z#Z", ".z.z.z.z.z.z.zananananan.Eananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananan.Ean.EaS.0aS.0aS.0aSaSaSaSaS.a.aa8.aa8#x#Qa2#Qa2#Q.x#K.x#K#K.x#K#K#K#K#K#K#K#K#K#C#Kbm#Kbm#Kbm#KbGabab#fab#f#f#f#f#faU#faUbTaDaDbTaDbTaDbTaDbTaDbTaDaDa3#ka3#k#k#k#k#kbe.x#K.x.x#K#K#K#K#Kbm#Kbm#Kbmbmbmbm#S#S#S#S#Sa4a4a4a4a4a4a4a4.1a4.1a4.1be.x.xbe.x.x.xbe.xbe.x.x#canan.Eanananananan#n#L#L#x.a#x#x.a#x#L#xbL.e.e#r.Eananan.Eanan.Eanananananananananananananananananananananananananananananananananananananananananananananananananananananananan#o.z.z.z.z.z.z#Z", ".z.z.z.z.z.z.zanananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananan.0aS.0aS.0aSaSaSaSaS.0a8#xa8#x.aa2#Qa2#Qa2#Q.x#K#t#K.x#K#K#K#K#K#K#K#K#K#K#K#K#Kbm#Kbm#Kbmaaabab#fab#f#f#f#faU#f#faDbTaDbTaDaDbTaDaDbTaDaDbTaDbTa3a3#ka3#k#k#k#k.x.x.x#K.x#K.x#K#K#K#K#Kbm#Kbmbm#K#K#S#S#S#S#S#Sa4#Sa4a4a4a4a4.1a4.1a4be.x.x.x.xbe.xbe.x.x.x.x.x.x.Eananananananananan.a#x#L#x#x#L#x#x#L#x#xb..eb.#D.Eanananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananan.E.z.z.z.z.z.z#Z", ".z.z.z.z.z.z.zan#o#oananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananan.0aS.0aS.0aSaSaSaSaSaS.aa8#xa8a8#Qa2#Qa2a2.x#K#K#K.x#K.x#K.x#K#K#K#K#K#K#K#K#K#Kbm#Kbm#CbGaa#fab#fab#f#f#f#f#faU#fbTaDaDbTaDbTaDbTaDaDbTaDaDbTa3a3a3#k#ka3#k#kbe.x.x.x.x#t.x#K.x#K#K#K#K#K#Kbm#Kbm#K#S#S#S#S#S#Sa4a4#Sa4a4a4a4a4a4be.x.x.xbe.x.x.x.x.xbe.xbe.xbe.x.xanananananananananan#x#L#x#L#x#L.a#x#L#x#x.ebjaranananananananananananananananananananananananananananananananananananananananananananananananananananananananananananan#o#o#o#o.z.z.z.z.z.z#Z", ".z.z.z.z.z.z.z#o#oan#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#oanananaS.0aS.0aS.0aSaSaSaS.0a8#xa8.a.a#Qa2#Qa2#Q#K.x#K.x#K#K#K.x#K#K#K#K#K#K#K#K#K#K#K#Cbm#Cbmaaaa#fab#fab#f#f#f#f#f#faUaDaDbTaDaDbTaDaDbTaDbTaDbTaDa3#ka3#ka3#ka3be.x.x.x.x.x#K.x.x#K.x#K#K#K#K#K#K#K#Kbm#K#S#S#S#S#S#Sa4bTaDbTaDbTaDbTaDaDbe.x.xbe.xbe.xbe.x.x.x.x.x.xbeanananan#o#o#o#o#oanan#x#L#x.a#x#x#L#x#L#x#DbL.I#Dananan#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#oan#o#o#oan#oanan.z.z.z.z.z.z.9", ".z.z.z.z.z.z.zan#o#o#oan#oanan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#oan#o#o#oan.0aS.0aS.0aSaSaSaSaSaS.aa8#xa8#Q#Qa2a2#Q.x#K.x#K#K.x#K.x#K#K.x#K.x#K#K#K#K#K#K#K#K#KbmavbGabab#fabab#f#f#f#faU#f#faUbTaDbTaDaDbTaDaDbTaDaDbTa3a3a3a3a3a3#k#kbe.x.x.x.x.x.x.x#K.x#K.x#K#K#K#Kbm#K#Kbm#KbcaDbTaDbTaDbTaDaDaDaDaDaDaDbTaDaD.xbe.x.x.x.x.xbe.xbe.xbe.x.x.xanan#oan#oan#oan#o#oan.a#x#x#L#x#L#x.a#x#Lbj#D.Ianan#oan#oanan#oanan#oanan#oanan#oanan#oanan#oanan#oanan#oanan#oanan#oanan#oanan#oanan#oanan#oanan#oanan#oan#o#oan#oan#o#o#o#o.z.z.z.z.z.z#Z", ".z.z.z.z.z.z.zaX#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#oananaS.0aS.0aS.0aSaSaSaSaS.a.aa8.a#Qa2#Q#Q.x#K.x#K#K.x#K#t#K#K.x#K.x#K#K#K#K#K#K#K#K#K#K#Caaaaab#fab#fab#f#f#faU#faU#f#faUaDaDbTaDbTaDbTaDaDbT#Ra3a3a3a3#ka3a3be.xbe.xbe.x.x.x.x.x#t.x#K#K#K#K#K#K#K#KbmaDaDbTaDaDaDaDaDaDbTaDbTaDbTaDaDaDbTaD.x.x.xbe.xbe.x.x.x.x.x.x.xbe.xanan#o#o#o#o#o#o#o#o#x#x#L#x.a#x#L#x#x#L#xbLbLan#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o.z.z.z.z.z.z.9", ".z.z.z.z.z.z.z#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o.0aS.0aS.0aSaSaSaSaSaSaS.a.a.a#Q#Qa2#Q.x#K#K.x#K.x#K#K.x#K#t#K#K.x#K.x#K#K#K#K#K#K#K#Kaaavabab#fab#f#f#f#f#f#faU#faU#faUbTaDaDbTaDaDbTaD#Ra3a3a3#ka3a3a3be.x.x.x.x.x.x.x.x#t.x#K.x.x#K.x#K#K#K#K#K.XaDaDaDaDbTaDbTaDaDaDaDaDaDaDbTaDaDaDbTaDbe.x.x.x.xbe.xbe.xbe.xbe.x.x#o#o#o#o#o#o#o#o#o#o#o#L#x#L#x#x#L#x#L#x#L#xbL.I#oan#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#oaX#oaX.z.z.z.z.z.z#Z", ".z.z.z.z.z.z.z#oaXaXaXaX#oaX#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#oanaS.0aS.0aS.0aSaSaSaSaSaSaSaS#Q#Qa2#Q.x#K#K.x#K.x#K#K.x#K.x#K#K.x#K.x#K#K#K#K#K#K#K#Kaaaaabababab#fabab#f#f#f#faU#faUaU#faUaUaUaU#R#R#R#R#Ra3a3a3a3a3a3#3.x#3bebe.xbe.xbe.x.x.x.x#K.x#K.x#K#K#K#KbmbTaDbTaDbTaDaDaDaDbTaDbTaDbTaDaDbTaDbTaDaDaD.xbe.xbe.x.x.x.x.x.x.x.x.x.x#o#o#o#o#o#o#o#o#o#o#o#L#x.a#x#L#x.a#x#L#x#Dbj#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#oaXaXaX#o.z.z.z.z.z.z.9", ".z.z.z.z.z.z.z#oaXaXaX#oaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX#o#o#oaS.0aS.0aS.0aSaSaSaSaS#QaS#Q#Q#Q#Q.x#K.x#K#K#t#K#K.x#K#K#K.x#K.x#K#K.x#K.x#K#K#K#K#Kaaab#fababab#fab#f#f#f#faU#faU#faUaUaU#R#R#R#R#R#R#R#Ra3a3#Ra3a3bebe.xbe.x.xbe.x.x.x.x.x.x.x.x.x#t#K.x#K#K#K#N#NaDaDaDaDbTaDbTaDaDaDaDaDaDaDaDaDaDaDbTaDbTaD.x.x.xbe.xbe.xbe.xbe.xbe.x#o#oaXaXaXaXaXaXaXaX#o#o#x#L#x.a#x#x#L#x.a#xbL.I#o#oaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX#oaX.z.z.z.z.z.z#Z", ".z.z.z.z.z.z.zaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX#o.0aS.0aS.0aSaSaSaS#QaS#QaS#Q#Q#Q.x#K#K.x#K.x#K#K.x#K#K.x#K.x#K#K.x#K.x#K#K.x#K#K#Kaaabababababab#fab#f#f#f#f#faUaU#faUaUaU#RaUaU#R#R#Ra3#R#Ra3a3bebe.x.x#3.x.x#3.x.xbe.xbe.x.x.x.x.x.x.x#K.x#K#K#NbNaDbTaDbTaDaDaDaDaDbTaDbTaDbTaDbTaDbTaDaDaDaDbT.xbe.x.x.x.x.x.x.x.x.x#o#oaXaXaXaXaXaXaXaXaXaXaX#o#x#L#x#x#L#x#L#x#x#LbL#o#oaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX#o.z.z.z.z.z.z.9", ".z.z.z.z.z.z.z#oaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX#oaS.0aS.0aS.0aSaSaSaS#QaS#Q#Q#Q#Q.x#K.x#K#K.x#K.x#K.x#K#K.x#K#t#K#K.x#K.x#K#K.x#K#Kaaaaababab#fababab#f#f#f#faU#faU#f#RaUaU#RaU#R#R#R#R#R#Ra3#Rbe.x.xbe.x.xbe.x.x#3.xbe.x.x.x.x.x#t.x.x#K.x#K.x#K#c#N#NaDaDaDbTaDbTaDbTaDaDaDaDaDaDaDaDaDbTaDbTaDaDaD.xbe.xbe.xbe.xbe.x.xaXaXaXaXaXaXaXaXaXaXaXaXaXaX#o#L#x#L#x.a#x#L#L#x#D#oaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX.z.z.z.z.z.z#Z", ".z.z.z.z.z.z.z.laX.laXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX.0aS.0aS.0aSaSaSaS#QaSaS#Q#Q#Q.x#K.x#K#K#t#K.x#K#K#t#K.x#K#K#K.x#K#K#t#K#K.x#K.x#Kaa.nabababababab#fab#f#f#f#faU#faU#faUaU#RaU#RaU#R#R#R#R.x.x.x.x.x.x.xbe.x#3.xbe.x.xbe.xbe.x.x.x.x.x.x.x.x#K#CaXaXaXaXaDbTaDaDaDaDaDaDaDbTaDbTaDbTaDbTaDaDaDaDbTaDbT.x.x.x.x.x.x.x.xaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX#o.a#x#L#x#L#x#xbL.IaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX.laX.l#o.z.z.z.z.z.z.9", ".z.z.z.z.z.z.zaX.laX.laX.laXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaS.0aS.0aS.0aSaS#QaS#QaS#Q#Q#Q#t#K#K.x#K.x#K#K.x#K#K.x#K.x#K.x#K.x#K#K.x#K#t#K#K#KaaaaaaaTababababab#fab#f#f#f#faUaUaU#faUaUaU#RaU#R#K#K#K#K#K#K#K.x.x.x.x.xbe.x.x#3be.xbe.x.xbe.x.x.x.x#K.x#KaXaXaX.laXaXaDaDbTaDbTaDbTaDaDaDaDaDaDaDaDbTaDbTaDaDaDaDbT.xbe.xbe.x.x.xaXaX.laXaXaX.laX.laX.laX.laX.l.l.laX#x#L#x#L#x#LbLaXaXaXaXaX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX#v.z.z.z.z.z.z.9", ".z.z.z.z.z.z.z#v.l.l.laX.laX.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.laX.laX.0aS.0aS.0aSaSaS#QaSaS#Q#Q#Q#Q#K.x#K.x#K#K.x#K.x#K.x#K#K#K#t#K.x#K#K.x#K.x#K#K.xaa#W#W#W.a#x.a#x.a#x.aa8ab#f#f#f#f#f#faUbTbobTbTbo.p.p.pbmbmbc#K#K#K.x.x.xbe.x.xbe.x.x#3.x.xbe.x.x.x.x.x.x.x#CaXaX.laX.laX.laDaDaDaDaDaDaDbTaDbTaDbTaDbTaDaDaDaDbTaDbTaD#c.x.x.x.x.xaX.laX.laX.l.laX.laX.laX.laX.laXaX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.laX.l.l.l.l#o.z.z.z.z.z.z.9", ".z.z.z.z.z.z.zaX.l#v.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.laXaXaS.0aS.0aS.0aSaSaS#QaSaS#QaS.x#K.x#K#K.x#K#K#t#K#K.x#K.x#K#K.x#K#K.x#K#K#K.x#K#W.N.N.N#L#L.a.a.a.a.a#x.a.aa8a8a8a8a8a8a8aD.6bTaDbTbTbo.p.p.Tbmbm#K#K#K#t.x.x.xbe.xbe.x#3.xbe.x.x.x.x.x.x.x.x#o.l.l.l.l.l.l.l.laDbTaDbTaDaDaDaDaDaDaDaDaDbTaDbTaDaDaDaDbT#cbt.xbe#c.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l#vaX.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l#v.l#v#v.z.z.z.z.z.z.9", ".z.z.z.z.z.z.z.l#vaX#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l.l.0aS.0aS.0aSaSaSaS#QaS#QaSaS#K#K#K#K#K#t#K.x#K.x#K.x#K#K.x#K#K.x#K#t#K.x#K#K.N.l.l.l.N.a#x.a#x.a#x.a.a#x.a#x.a.a.a.a.aa8a8a8aDaDaDbobTbobo.p.Tbmbc#K#K#K.x.x.xbe.x.xbe.x#3.xbebe.xbe.x.x.x#C.l.l.l#v.l#vbYbY.l.laDaDaDbTaDbTaDbTaDbTaDbTaDaDaDaDbTaDbTaD#c#c#c#c.lbY.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l.l#v.l#vbYbYbY.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l.l.l#o.z.z.z.z.z.zaN", ".z.z.z.z.z.z.z.l#v.l#v.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.laS.0aS.0aS.0aSaS#QaS#QaS#Q#K#K#K#K#K#K#K#K.x#K#K.x#K#t#K#K.x#K#K.x#K.x#K.xaXbY#v.l#v.l#L#L#x.a#x.a#x.a.a#x.a#xa8a8a8a8.a.aa8a8.6aDaDbTbo.pbo.p.Tbmbm#K#K#K.x.x.x.xbe.x.xbe.x#3.xbe.x.x.x.x.lbY#v.l.l.l.l.l#v.lbYaXaDaDaDaDaDaDaDaDaDaDaDbTaDbTaDaDaDaDbt#cbtbYbYbYbY.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l#vaX.l.l#v.l#v.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l#v#v#v#v.z.z.z.z.z.z.9", ".z.z.z.z.z.z.z#v#v#v.l#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#vbY.0aS.0aS.0aSaSaSaS#QaSaS#K#K#K#K#K#K#K#K#K#K#K.x#K#K#K.x#K.x#K.x#K#K#K#K#K.l#v.l#v.l#v.l.a#x.a#x.a.a.a#x.a.a.a#x.aa8#xa8a8.aa8bO.6aDaDbTbTbo.p.p.Tbmbc#K#K#K.x.x.x.xbe.x#3.x#3.x.xbe.x.x.lbY.l#vbY#v#v#v#v#vbY#vbY.laDbTaDbTaDbTaDbTaDbTaDaDaDaDbYbwbY#vbY#vbY#vbY#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v.l#v#v#v.l#v.l#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v.l#vaX.z.z.z.z.z.zaN", ".z.z.z.z.z.z.z.l#v.l#v#v.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#v.l.l#vaXbY.0aS.0aS.0aSaSaSaSaS#K#K#K#K#K#K#K#K#K#K#K.x#K#t#K.x#K#K.x#K#K.x#K.x#K.l#vbYbY#vbYbY#vbY#L.a#x.a#x.a.a#x.a#x.a.aa8a8.aa8.aa8a8a8.6aDaDbTbobobo.p.Tbmbm#K#K#K.x.x.x.xbe.xbe.x#3.x.x.x.xbY#vbY#v.l#v.lbY.lbY#vbYbY#v.laDaDaDaDaDaDaDaDaDbYbwbY#vbY#vbYbY#vbYbY#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v.l#v#v.l#v.l#vbY#v.l#v.l#v.l#v.l#v.l#vbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbYbY.l#v.l#v.l.l#v.l#v#v#v.z.z.z.z.z.z.9", ".z.z.z.z.z.z.z#v#v#vbY#vbY#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#vbY#vbYaS.0aS.0aS.0aS.0aS#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K.x#K#K.x#K#K#t#K.x#K.l#vbY#v#vbY#v#vbY#v#vbY.a#x.a#x.a.a#x.a.a#x#x.aa8#xa8.a.aa8bO.6aDaDbTbTbo.p.p.Tbmbc#K#K#t.x.x.x.xbe.x.xbe.x#3.x#vbY#vbY#vbY#vbY#v#v#vbY#v#v#v#vbY#vbTaDbwbwbwbw#vbw#v#vbw#vbY#v#vbY#v#vbY#vbY#vbY#v.l#v#v#v.l#v#v#v.l#v#v#vbY#v#vbY#vbY#vbY#vbY#vbY#vbY#vbY#v#v#vbY#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#vbY#vbY#v.l.z.z.z.z.z.z.G", ".z.z.z.z.z.z.z.l#v#v#vbY#vbYbY#vbYbYbYbY#vbYbYbY#vbYbYbYbY#vbYbYbY#vbYbYbYbY#vbYbYbY#vbYbYbYbY#vbYbYbY#vbYbYbYbY#vbYbYbY#vbYbYbYbY#vbYbYbY#vbYbYbYbY#vbYbYbY#vbY#vbY.0aS.0.0aS.0aS#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K.x#K.x#K#t#K.x#K#K#K.xbY#v#vbY#v#vbY#v#vbYbw#v#v#x.a#x.a#x.a.a#x.a.a#xa8a8a8#xa8.aa8a8a8aDaDbTbobo.p.p.Tbmbm#K#K#K.x.x.x.xbe.x.x#3.xbw#vbY#v#v#vbY#v#vbY#vbY#vbY#vbY#vbw#vbw#vbw#v#vbw#vbY#vbY#vbY#v#vbY#vbY#v#vbY#vbY#vbY#vbYbY#vbY#v.l#vbY#v.lbY#vbYbY#vbY#v#vbY#vbY#vbY#vbY#vbY#vbYbY#v#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbY#vbYbY#v.l#vbY#v#v#v#v.z.z.z.z.z.z.9", ".z.z.z.z.z.z.z#v#v#v#v#v#v#v#v#v#v#v.M#v#v#v#v#v#v#v#v.M#v#v#v#v#v#v#v#v.M#v#v#v#v#v#v#v#v.M#v#v#v#v#v#v#v#v.M#v#v#v#v#v#v#v#v.M#v#v#v#v#v#v#v#v.M#v#v#v.M#v#v#vbY#v#C#C.0.0.0#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K.x#K#K.x#K#K.x#KbY#v#vbw#vbw#v#v#vbw#vbw#vbwbw.a#x.a#x.a#x.a.a#x.a.a#xa8a8a8a8.aa8a8a8.6aDbTbobo.p.p.Tbmbm#K#K#t.x.x.x.xbe.x.xbw#vbw#v#vbw#v#v#v#v#v#v#v#v#v#vbw#vbw#vbw#vbw#vbw#vbw#vbw#vbw#vbw#vbw#v#vbw#v#v#v#v#v#v#v#v#v#v.M#v#v.M#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v.MbY#v#vbY#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v.M#v#v#v#v#v#v.z.z.z.z.z.z.G", ".z.z.z.z.z.z.z#v#vbwbw#v#v.M#v#v#v#v#v#v.M#v.M#v#v#v#v#v#v.M#v.M#v#v#v#v#v#v.M#v.M#v#v#v#v#v#v.M#v.M#v#v#v#v#v#v.M#v.M#v#v#v#v#v#v.M#v.M#v#v#v#v#v#v#v#v#v.M#v#v#vbw#C#C#C#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K.x#K#K.x#K.x#K#vbw#v#v#v#vbw.Mbw.M#v#vbw.M#v#v.a#x.a#x.a.a#x.a.a#x.aa8#xa8.aa8.aa8a8bO.6aDbTbobo.p.T.Tbmbm#K#K.x.x.x.x.x.xbw#v#vbw#vbw#v#vbwbw#vbw#vbw#F#vbw.Mbw.Mbw.M#vbw.M#vbw.Mbw.Mbw.M#vbw.M#vbw.M#vbw#v#v#v#v#v#v.M#vbw#v.Mbw#v#vbw.M#v#v#v#vbw#vbw#v#vbw#v#v#v.M#v.M#v#v#v#v.M#v#v.M#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#v#vbw.M#vbw#vbw#v#v.z.z.z.z.z.z.9", ".z.z.z.z.z.z.z#v#v.M.M.Mbw.Mbw.Mbwbw.Mbw.Mbwbw.Mbwbw.Mbw.Mbw.Mbwbw.Mbwbw.Mbw.Mbwbw.Mbwbw.Mbw.Mbw.Mbwbw.Mbwbw.Mbw.Mbwbw.Mbwbw.Mbw.Mbw.Mbwbw.Mbwbw.Mbw.Mbwbw#vbwbw#v#vbw#C#C#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K.x#K.x#K#Kbw#v#F#v#F#v#F.Mbw.Mbw#v#F#v.Mbw.Mbw#x.a#x.a#x.a.a#x.a.a#xa8a8a8.aa8a8a8a8bO.6aDbTbobo.p.p.Tbmbm#K#K#K.x#C.x#v.Mbw#v.Mbw.M.Mbw.M.Mbw.Mbw.M#vbw.M#v#v#F#v#v#F#v.Mbw.M#v#v#F#v.Mbw.Mbw.Mbw.Mbw.M#v#Fbw#v#Fbw#vbw.M#vbw#vbw.M#vbw.M#Fbw.M.Mbw.M#v#F#v.M#Fbw#vbwbw.Mbw.Mbw.Mbw#v.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbwbw.Mbw.M#vbw#v#F.M#v#v.z.z.z.z.z.z.G", ".z.z.z.z.z.z.z#vb1#F#v#F#v#F.Mbw.M.Mbw.M#F.M.Mbw.M.Mbw.Mbw.Mbw.M.Mbw.M.Mbw.M#F.M.Mbw.M.Mbw.Mbw.Mbw.M.Mbw.M.Mbw.M#F.M.Mbw.M.Mbw.Mbw.Mbw.M.M#F.M.M#F.Mbw.M.M#F.M.M#F#v#v#C#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#Kbw.M.Mbw.M#F#v.M#F.M.M.M#F#v#F#v.M#F.M#v.a#L#x.a#x.a.a#x.a.a#xa8#xa8.aa8.aa8a8a8aDaDbTbobo.p.T.T.DbmbmbFbF#v#F.M#F.M#F.M.M#F#v#F.M#F.M.M.M#F.M.M#F.M#F#v.M#F#v#F#v#F.M#F#v.M#F#v#F.M#v#F.M#v#F.M#F#v.M#F.M.M#F.M#F.M.M#F.M#F.M.Mbw.M.M#F.M.M#F.Mbw.Mbw.M.M#F.M.Mbw.M.Mbw.M.Mbw.M.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.Mbw.M#F.M.Mbw.M#F.M.M#F.M#v#F#v.z.z.z.z.z.zaN", ".z.z.z.z.z.z.z#g#v.M#F#v#F#v.M.M.M#F.M.M.Mbw.M.M#F.M.M#F.M.M.M.M#F.M.M#F.M.M.Mbw.M.M#F.M.M#F.M.M.M.M#F.M.M#F.M.M.Mbw.M.M#F.M.M#F.M.M.M.Mbw.M.Mbw.M.M.M.M#F.M.M#F.M#v#F#F#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K.M#v#F.M.M#v#F.M#v#F#v#F.M#v#F#v#F.M#v#F#v.a.a#L.a#x.a.a#x.a#x.aa8a8#xa8.aa8a8a8a8a8.Xbobobobo.T.T.D.D.M.M.Mbw.M.Mbw.M#v#F#v#F#v.M#v#F#v#F.Mbw.M.Mbw.M.Mbw.M#v#F.M.Mbw.M#v#F#v#F#v.M#F.M.M#F.Mbw.M.Mbw.M.Mbw.M.Mbw.Mbw.M#v.Mbw.M.M#F.M#v#F.Mbw.M.M#F.M.Mbw#v.M#F.M.M#F.M.M#F.M#F.M.M#F.M.M.M#F.M.M.M#F.M.M.M#F.M.M.M#F.M.M.M#F.M.M.M#F.M.M.M#F.M.M.M#F.M.M.M.M#F.M.M.M#F#v.M#Fb1b1#v.z.z.z.z.z.z.G", ".z.z.z.z.z.z.z#v#g#F#g.M.M#F.M#F.M.M#F.M#Fb1.M#F.M#F.Mb1#F.M#F.M.M#F.M.M#F.M#Fb1.M#F.M#F.Mb1#F.M#F.M.M#F.M.M#F.M#Fb1.M#F.M#F.Mb1#Fb1#Fb1b1#F.Mb1#F.M#F.M.M#F.M.M#Fb1.M.M#F#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#v#F.M#F.M#Fb1.M#F.M.M#F.M#Fb1.M#F.M#F.Mb1#F.M#v.a#L.a#L.a.a.a.a#L.aa8a8a8.aa8.abObObObO.X.XbobN#N.M.Mb1#F.M#Fb1#Fb1b1#F.M#F.Mb1#F.M#F.Mb1#F.Mb1#Fb1b1#F.M#Fb1#F.M#Fb1b1#F.M#F.Mb1#F.M#F.M#F.Mb1b1#Fb1#F.M#Fb1.M#Fb1b1#Fb1#Fb1b1#F.M.M#F.M.M#Fb1#F.Mb1#Fb1#Fb1#F.M.M#F.M#F.M.M#F.M#F.M.M#Fb1#F.Mb1#F.Mb1#Fb1#F.Mb1#F.Mb1#Fb1#F.Mb1#F.Mb1#Fb1#F.Mb1#F.Mb1#F.M#F.M.M#F.M#F.M#F.Mb1#Fb1#g.z.z.z.z.z.zaN", ".z.z.z.z.z.z.z#gb1b1b1#Fb1#g#Fb1b1#Fb1b1b1#Fb1b1b1b1b1#Fb1b1#g#Fb1b1b1#Fb1b1b1#Fb1b1b1b1b1#Fb1b1#g#Fb1b1b1#Fb1b1b1#Fb1b1b1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1#Fb1b1#F#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K.M#Fb1b1b1b1#Fb1b1#Fb1b1b1b1#Fb1b1b1b1#Fb1b1#Fb1b1#Fb1b1.M#L.a#L.a#L.a#xa8.aa8.aa8#Ubhbhb1b1#gb1b1b1#Fb1b1b1b1b1b1b1#Fb1b1b1b1#Fb1b1b1b1b1b1#Fb1b1b1#Fb1b1b1b1b1b1b1b1#Fb1b1b1b1#Fb1b1b1b1b1#Fb1#Fb1b1b1b1b1b1b1b1#Fb1b1b1b1#Fb1b1#Fb1b1#Fb1b1b1b1b1#Fb1b1b1b1b1#Fb1b1b1b1#Fb1b1b1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1#Fb1b1#Fb1b1#Fb1b1b1b1b1#g#Fb1b1#v.z.z.z.z.z.z.G", ".z.z.z.z.z.z.zb1#g#F.ub1b1#F#gb1#F#gb1#F#gb1b1#Fb1#Fb1b1b1#Fb1b1b1#F#gb1b1#F#gb1b1#Fb1#Fb1b1b1#Fb1b1b1#F#gb1b1#F#gb1b1#Fb1#Fb1b1b1#Fb1b1b1#Fb1b1b1#F#gb1b1#Fb1b1b1#F#gb1b1b1#F#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K.M#Fb1b1#Fb1b1b1b1#F#gb1#Fb1b1b1b1#Fb1b1b1b1b1b1b1#Fb1b1#Fb1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1#Fb1b1#Fb1b1b1#Fb1#Fb1#Fb1b1b1#Fb1b1b1b1#Fb1#Fb1b1b1b1#Fb1b1b1#Fb1#Fb1#Fb1b1b1b1#Fb1b1b1b1#Fb1#F#gb1b1b1b1#Fb1#Fb1#Fb1b1b1b1#Fb1b1b1b1#F#gb1b1b1b1#Fb1#Fb1b1b1#Fb1#Fb1b1b1#Fb1b1b1b1#Fb1#Fb1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1b1#Fb1b1b1b1b1#Fb1b1#Fb1#Fb1b1#g#g#g.u.z.z.z.z.z.z.G", ".z.z.z.z.z.z.z#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#F#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#Kb1b1#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#F#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#F#g#g#v.z.z.z.z.z.z.G", ".z.z.z.z.z.z.zb1.u#g.u#F#g#g#F#g#g#F#g#F#g#g#F#g#g#g#g#g#g#g#g#g#g#g#F#g#g#F#g#g#F#g#g#g#g#g#g#g#g#g#g#g#F#g#g#F#g#g#F#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#F#g#g#g#g#g#g#g#F#g#F#g#g#g#g#g#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#Kb1#F#g#g#F#g#g#g#g#g#g#F#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#F#g#F#g#F#g#g#g#g#F#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#F#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#F#g#g#F#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#F#g#F#gb1#g#F#g#g#F#g#g.u.u.u.u.z.z.z.z.z.z.G", ".z.z.z.z.z.z.z.u#g.u#g.u#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#g#g#g#g#g#g#g#g#g#gbZ#g#gbZ#gbZ#gbZ#g#g#g#g#g#g#g#g#g#gbZ#g#gbZ#gbZ#gbZ#g#g#g#g#g#g#g#g#g#g#g#g#gbZ#gbZ#g#g#g#g#g#g.u.u.u.u#g#g#g#g#g#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#F#g.u.u#g.u.u#g.u#g.u#g.u.u#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g.u.u.u.u.u.u#g.u#g.u.u#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g.u.u#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#gbZ#g#gbZ.u#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#gbZ#gbZ#gbZ#gbZ#gbZ#g.u.u#g.u#g#g#g.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z#g.u.u.u.u#g#g#g#g#g#g#g#g#g#g#g#gbZ#gbZ#gbZ#gbZ#gbZ#g#gbZ#g#g#g#g#g#gbZ#gbZ#gbZ#gbZ#gbZ#g#gbZ#g#g#g#g#g#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#g#g#g#g#gbZ#gbZ#gbZ#g#g#g#g.u#g.u.u#g.u#g#g.x#K#K#K#K#K#K#K#K#K#K#K#K#K#K#g.u#g#g.u#g.u#g.u#g.u#gbZ#g#gbZ#g.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u#g#g#g#g#g#g.u#g.u#g.u#g.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u#g.u#g.u.u.u.ubZ#gbZ#gbZ#gbZ#gbZ#g.u#g#g.u#g#g#gbZ#g.ubZ#g.ubZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#g#g#g#g#g#g#g#g#g#g#gbZ#g#g.u.u.u.u.u.z.z.z.z.z.z.G", ".z.z.z.z.z.z.z.u.ubZbZ.u.u.ubZ.ubZbZbZbZbZbZbZbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZbZbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZbZbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ.ubZbZbZ#gbZ#gbZ.u#gbZbZbZbZ.ubZ.u.u.u.u#g#g#K#K#K#K#K#K#K#K#K#K#K#K#K#g.u.u.u.ubZ.ubZ#gbZ.ubZ#gbZ#gbZ.ubZ#FbZ.ubZ#FbZ.u.u.u.u.u.u.u.u.u.u.ubZ.u.ubZ.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.u.ubZ#FbZbZ#FbZbZ#FbZ.u.u.u.u.u.ubZ#FbZbZ#FbZbZ#FbZbZ#FbZ.ubZ#FbZ.u.ubZ.u.u#gbZ.u#gbZ#FbZ.u.u.u.ubZ#FbZbZ#gbZbZ#gbZ.u#gbZ#gbZ#gbZ.u#gbZ#gbZ#gbZ.u#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZ#gbZbZbZbZbZbZbZbZbZbZ#gbZ.u.ubZ.u.u.u.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z.u.u.ubZbZbZ.ubZ.ubZ.u.u.u.u.u.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZbZ.u.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZbZ.u.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.u.ubZ.ubZ.ubZbZ.u.u.ubZ.ubZ.ubZbZbZbZbZ.u#K#K#K#K#K#K#K#K#K#K.u.ubZbZ.ubZbZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZbZ.ubZbZbZ.ubZbZbZ.ubZbZ.ubZbZ.ubZbZbZ.ubZbZbZbZbZbZbZbZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZbZ.ubZbZbZ.ubZbZ.ubZbZ.ubZbZ.ubZbZbZbZbZ.ubZbZ.ubZbZ.ubZbZ.ubZbZ.ubZbZbZ.ubZ.ubZbZbZ.ubZbZbZbZbZ.ubZbZ.ubZbZbZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZbZ.ubZ.ubZ.ubZbZ.ubZ.ubZ.ubZbZ.ubZbZ.ubZbZbZ.ubZbZbZ.ubZbZbZ.ubZbZbZ.ubZbZbZ.ubZbZbZ.ubZbZ.ubZ#gbZ.u.ubZ.u.ubZ.ubZbZbZbZ.u#y.z.z.z.z.z.z.G", ".z.z.z.z.z.z.z.u#y#ybZ.ubZbZbZ.ubZ.ubZbZbZbZbZ.ubZbZ.ubZbZ.ubZbZbZbZbZbZbZbZ.ubZbZ.ubZbZ.ubZbZ.ubZbZbZbZbZbZbZ.ubZbZ.ubZ.ubZbZ.ubZbZ.ubZbZ.ubZbZ.ubZ.ubZ.ubZbZbZbZ.ubZbZbZ.ubZ.ubZbZ.ubZ.ubZ.ubZ.u#K#K#K#K#K#KbZ.ubZbZbZbZbZbZbZbZ.ubZbZbZbZbZbZbZbZbZ.ubZbZbZbZbZbZbZbZ.ubZ.ubZbZ.ubZbZ.ubZbZ.ubZbZbZbZbZbZbZbZ.ubZbZbZbZbZbZbZbZbZbZbZbZbZbZbZ.ubZbZ.ubZbZbZbZbZbZbZbZbZbZbZ.ubZ.u.ubZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZ.ubZbZ.ubZbZ.ubZbZ.ubZbZbZbZbZbZbZ.ubZbZbZbZbZbZbZbZbZ.ubZbZbZbZbZbZ.ubZbZbZbZbZbZ.ubZbZ.ubZbZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZbZ.ubZ.ubZ.ubZ.ubZ.ubZ.ubZbZ.u#y.u#y#g.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z.u.u#y.u#ybZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZ#ybZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZ.uao.1ao.1#ybZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZ#ybZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZ.u#y.u.z.z.z.z.z.z.G", ".z.z.z.z.z.z.z#y#y.u#ybZbZbZbZ#ybZ#ybZ#ybZbZbZ#ybZ#ybZ#ybZ#ybZ#ybZbZbZbZbZbZbZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZbZbZbZbZbZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZbZbZ#ybZ#ybZ#ybZ#ybZ#ybZ#y.u#ybZ#y.ubZ#y.ubZ#y.u#y.u#y.u#y.ubZbZbZ#ybZ#ybZbZbZbZbZbZbZ#ybZ#ybZbZbZbZbZbZbZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZbZ#y.ubZ#y.ubZ#ybZ#ybZbZbZbZbZbZbZbZbZbZbZbZbZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZbZbZbZbZbZbZbZbZbZbZbZbZbZbZ#y.u#y.ubZ.1aoao.1aoaoaoaoao#EbZ#ybZ#ybZ#ybZbZbZbZbZ#ybZ#ybZbZbZbZbZbZbZ#ybZ#ybZbZbZbZbZ#ybZ#ybZ#ybZbZbZbZbZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZbZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZbZ#y.u#y#y.u.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z.u#y#y#y.u#y#ybZbZbZbZbZbZ#ybZ#ybZbZbZbZbZbZbZbZbZ#ybZ#ybZ#ybZ#ybZbZbZbZbZbZbZbZbZbZbZ#ybZ#ybZ#ybZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZ#ybZ#ybZbZbZbZbZbZbZbZbZ#y.u#ybZ#y.u#y#ybZ#ybZ#ybZ#ybZ#ybZ#y#y#y.u#ybZbZbZ#ybZ#ybZ#ybZ#ybZbZ.u#y#y.u#y#ybZ#ybZbZbZbZbZbZbZbZbZbZbZ#y.u#y#ybZ#ybZ#y.u#y.u#y.u#y#y.u#y#y.u#y#y.u#ybZbZbZbZbZbZ.u#ybZ.u#ybZ.u#ybZbZbZbZ#ybZ#ybZ#y.u#y#y.u#y#y.u#y.u#y.u#y.uao.1ao.1aoao.1aoaoaoaoao#EbZ.ubZ.u#y.u#y#ybZ#ybZbZbZ#y.u#y#y.u#ybZbZbZ.u#y#ybZ#ybZbZ.u#ybZbZ#ybZ#ybZ#ybZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZ#ybZbZbZbZbZbZbZbZbZbZbZbZ#y.u#y#y#y.u#y.z.z.z.z.z.z.G", ".z.z.z.z.z.z.z#y#y.u#y#y#y.u#y#y#y#y#y#y#y#ybZ#y#y#y#y#y#y#y#y#y.u#y#y#y#y#ybZ#y#y#y#y#y#y#y#y#y#y#y.u#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#ybZ#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y.u#y#y#y.u#y#y#y#y#y#y.u#y#y#y#y#y#y.u#y#y#y#y#y.u#y#y#ybZ#y#y#y#y#ybZ#y#y#y#y#y#y#y#y#y#y#y#y#ybZ#y#y.u#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#ybZ#y#y#y#y#y#y#y#y#y.u#ybZ#ybZbZao.1ao.1ao.1ao.1aoao.1aoaoaoao#E#E#ybZ#ybZ#y#y#y.u#y#y#y#y#y#y#y#y#y#y#y#y#y#y.u#y#y#y#y#y#y#y#ybZ#y#y#ybZ#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y.u#y#y.u.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z.u#y#y#y#y#y#y#ybZ#ybZ#ybZ#ybZ#y#ybZ#y#ybZ#y#y#y#y#y#y.u#y.u#y#y#ybZ#y#ybZ#y#ybZ#y#y#y#y#y.u#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#y.u#y#y#y.u#ybZ#ybZ#y.u#y.u#ybZ#y.u#y#y#y#y#y.u#y#y#y.u#y.u#y#y#y#ybZ#y.u#y#y#y#y.u#ybZ#y#y#y#y#y#ybZ#ybZ#ybZ#y#ybZ#ybZ#ybZ#ybZ#y.u#ybZ#y#y#y#y#y#y.u#ybZ#ybZ#y.u#ybZ#y.u#ybZ#y.u#y#y.u#y#y.u#y#ybZ#ybZ#ybZ#ybZ#ybZ#y#y#ybZ#y.u#ybZ#ybZ#y#y#y#y.u#y.u.1.1ao.1ao.1ao.1aoaoaoaoaoaoaoao#E#E#EbZ.u#y#y.u#y#y#y.u#ybZ#ybZ#ybZ#y.u#y#y#y#y#y#y.u#y#ybZ#y.u#y#y.u#y#y#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#y.u#y#y.u#y.u#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#ybZ#y#y#y#y#y.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z#M#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#ybZ#y#y.1.1ao.1.1ao.1ao.1ao.1aoaoaoaoaoaoao#E#Ebm#E#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y.u.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z.u#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#ybZ#y.u#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#ybZ#y.1.1.1.1ao.1ao.1aoaoaoaoaoaoaoaoaoaobmbmbmbm#ybZ#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y.#.#.#.##y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#M#y.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z#y#M#y#M#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y.W#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y.W#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y.W#y#y#y#y#y#y#y.W#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y.L.L.1.1.1.1.1.1ao.1.1ao.1aoao.1aoaobmbmbmbmbmbc#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y.WaYaYaYaY.#.##y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z.u#y#y#y#y#M#y#y.W#y.W#y.W#y.W#y.W#y.W#y#y.W#y#y.W#y.W#y#y#y#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y#y#y#M#y#M#y#y#M#y#y#M#y#M#y#y#y#y#y#M#y#M#y#y#y#y#y.W#y.W#y.W#y#y.W#y#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y#y#y#y#y#y#kaVaV#y#y#y#y#y#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y#y#y#y#y#y.L.L.1.1ao.1aoao.1aoao.1aoaoaoaoaoaobcbm.Tbm.Tbmbm#y#y#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W.WaY#T#T#y#y#y#y.W#y.WaYaYaYaYaYaY.##y#y#y.W#y.W#y.W#y.W#y.W#y#M#y#M#y#y.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M.W#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#y#M#y#M#y#M#y#M#y#y#M#M#M#y#M#y.W#y#M.W#M.W#y#M.W#y#M.W#y#M.W#y#M.W#y#M.W#y#M.W#y#y#y#y#y#y#y#y#y#M#y.W#y#M#y.W#y#M.W#y#y.W#y#y#yaV#kaVaVaVaVaVal#y#y.W#y#y#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W#y.W.W.W#M#y#y.L.L.L.1.1ao.1.1ao.1.1aoaoaoaoaoaobmbm.Tbmbmbmbmbm.T#y#y#y#y.W.W.W#y.W.W.W#y.W.W#y.W.W.W.W#y.W.W#y.W.W.W#y.W.W#y.W#y.W#y.W#y.W.W#qaY#qaYaYaY#T#T.W#y#y.WaYaYaYaYaYaYaY.#.##y#y#y#y#M#y#M#y#M#y#M#y#M#y#y#y#y.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z#y#y#M#y#M#y.W#M#y#M#y#M#y#M#y.W#M#y#M.W#M#y#M.W#M#y#M#y#M#y#M.W#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M.W.W#y#M.W.W#M#y.W.W#M#y#M.W#y.W#y#M#y#M.W#M#y#M#y#M.W#y#M.W#y#M.W#y#M.W#y#M.W#y#M.W#y#M#y#M#y#M#y#y#M.W#M#y#M.W#M#y#M.W#M#y#y#M#y#y#y#k#kaV#kaV#kaVaVaVaVal#y#y#y#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M#y.W.W.W#M#y.L.L.L.1.1ao.1ao.1aoao.1aoao.1aobmbmbmbm.Tbm.Tbm.Tbm#y.W#y#M#y#M.W#M#y#M.W#M#y#M.W#y#M#y#M.W#M.W#M#y#M.W#M#y#M.W#M.W.W#y#M#yaYaYaYaYaYaYaYaY#T#T#T#Ta5aYaYaYaYaYaYaYaC.#.##M#y#M#y.W#M#y.W#M#y#M#y#M#M#y#y.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z#y#M#y#M.W.W#M#y.W#M#y#M.W.W#M.W#y#M.W.W#y#M#y#M#y.W.W#M#y#M.W.W#y#M.W.W.W#M#y#M.W.W.W#M#y#M.W.W.W#M#y#M.W.W.W#M#y#M.W.W.W#M#y#M.W.W.W#M#y#M.W.W.W#M#y#M.W.W.W#M#y#M.W#y#M.W#M#y#M#y.W#M#y.W.W.W#y#M#M.W#M#y#M#y.W.W#y#M#y.W#M#y.W#M#y#M#y#M.W#M#y.W#M#y.W#M#y#M#y#y#y#y#y#y.W#y#M#y#M#y#M.W#y#M#y#M.W#y#k#k#kaV#kaV#kaVaVaVaVaVaValal#y#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M#y#M.W#M#y#M#y.L.L.L.L.1ao.1ao.1ao.1aoaoaoaoaobm.Tbm.Tbmbmbmbmbmbmbo#y#y#M.W#y#M.W#y#M.W#y#M#y#M.W#M#y#M.W#y#M#y.W#M#y.W.W#M.W#y#M.W#MaYaYaYaYaYaYaYaYaYaYaYaYa5a5aYaYaYaYaYaYaYaYad.#.##y#y.W#y#M.W.W#M#y#M.W.W.W#y#M#y.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z#y#M#y#M#y#M.W#M.W#M.W#M#y#M.W#M.W#M#y#M#M.W#M.W#M#M.W.W#M.W#M#M.W#M.W#M.W.W#M.W#M#M.W.W#M.W#M#M.W.W#M.W#M#M.W.W#M.W#M#M.W.W#M.W#M#M.W.W#M.W#M#M.W.W#M.W#M#M.W.W#M.W#M#M.W#M#y#M.W#M#M.W#M#M#M#M.W#M#y#M.W#M.W#M#M.W#M.W#M#M.W#M#M.W#M.W#M.W#M.W#M#M.W#M.W#y#M#y.WaU#RaUaf#M.W.W.W.W#M.W#M.W#M#y#M#y#Ma3#k#k#k#k#k#kaV#kaVaVaVaVaValalal#M#y.W.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M#y#M.W#M#yaC.L.L.1.1ao.1aoaoaoaoaoaoaobmbmbmbmbmbm.Tbm.Tbmbmbm#M.W.W#M#y.W#M.W#y#M.W.W.W#M#y.W.W.W#M.W#M.W#M.W#M#M#y.W#M.W.W#yaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaDbO.k.k#M#M#y#M.W#M#y#M.W#M#M#y#M#y#M.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z#y#M#M.W#M.W#M.W#M#y#M.W#M.W#M#y#M.W#M.W#M.W.W#M.W#y#M#M#y#M.W#y#M#y#M#y#M#M.W#M#y#M#y#M.W#M.W#y#M#M.W#M#y#M#y#M.W#M.W#y#M#M.W#M#y#M#y#M.W#M.W#y#M#M.W#M#y#M#y#M.W#M.W#y#M.W#M.W#M.W.W#M#y#M.W#y#M.W#M.W#M#y#M.W#y#M.W#M.W#y#M.W#M#y#M.W#M#y#M.W#M#y#M.W#M.W.W#M#faU#faUaUbz#M#y#M#y#M.W#M#y#M.W.W.Wa3#k#k#k#k#k#kaV#kaV#kaV#k#SaValalal.X.W#M.W#M#y#M.W#M#y#M#y#M.W#M#y#M#y#M.W#M#y#M.W#M.W#M#M#yaC.Laoao.1ao.1ao.1ao.1aoaobmbm.Tbm.Tbmbmbmbmbm.Tbm.T#y#M#y.W#M#y.W#M#y#M#y#M#y#M.W#M.W#M#y#M.W#M#y#M.W#M#M.W.W#MaY#qaYaY#qaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaDaDaDbOar#y.W#M#y#M.W#M.W#M#y#M.W#M#M.u.z.z.z.z.z.z#a", ".z.z.z.z.z.z.z#y#M#y#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W.W#M.W#M#M.W#M#M.W.W#M.W#M.W#M#M.W#M.W#M.W#M#y#M.W#M.W#M.W#M.W#M.W#M#y#M.W#M.W#M.W#M.W#M.W#M#y#M.W#M.W#M.W#M.W#M#M.W#M.W#M.W#M#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M#y#M.W#f#faU#faU#faUbzat.W#M.W#M.W#M.W#M#y#ka3#ka3#k#k#k#k#kaVaVaVaVaV#kaVal.Xbobobo#y#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M#M.L.L.1.1ao.1ao.1aoaoaoaoaobc.Tbm.Tbmbm.Tbmbm.Tbmbm.T.T.W#M#M#y#M.WaC#q#q#q#q#q.W.W#M.W.W#M.W#M.W#M.W#M.W.W#M#M#qaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaY.X.6bOaD.k.k.W#M.W#M.W#M.W#M.W#M.W#M.W#M.z.z.z.z.z.z.G", ".z.z.z.z.z.z.z#M#M#M.W#M#y#M.W#M.W#M.W#M.W#M.W#M.W#M#y#M.W#M.W#M.W#M#M.W#M.W.W#M.W#M.W#M.W#M.W#M.W.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W.W#M.W#M.W#M.W#y#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M#M#f#faUaUaU#faUaU#n#5at#M#y#M.W#M.W.W#Ma3a3a3#k#k#k#k#kaV#kaV#kaV#kaVaV.Tbo.T.p.pbo.W.W#M#y#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M.W#M#y#M.Laoao.1ao.1ao.1aoaoaoao.Tbm.Tbm.Tbmbm.TbmbmbmbmbmbmaI.W.W#M.W#q#q#q#q#q#q#q#q#q#q#q#q.W#M#y#M.W#M.W#M.W#M#qaY#qaYaY#qaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYbOaDaDaDbO.kar#M.W#M.W#M.W#M.W#M#y#M#M#y.z.z.z.z.z.z#a", ".z.z.z.z.z.z.z#y#M.W#M#M#M#M.W#M#M.W#M#M.W#M#M.W#M#M#M#M.W#M#M.W#M#M.W#M#M#M#M#M#M#M#M#M.W#M.W#M#M#M.W#M#M.W#M#M#M#M#M#M.W#M#M.W#M#M.W#M#M#M#M#M.W#M#M.W#M#M.W#M#M#M#M#M.W#M#M.W#M#M#M.W#M#M.W#M#M#M#M#M.W#M#M.W#M.W#M.W#M#M.W#M#M.W#M#M#M.W#M#M.W#M.W#M#M.W#M#M.W#M.W.W.W#faUaU#faU#faUaUbW.qbDaj#M.W#M.W#M.WahbRa3a3a3#k#k#k#k#kaV#kaVaVaVaV#k.p.pbo.pbobobo.W.W#M.W#M.W#M#M.W#M#M#M#M.W#M.W#M#M.W#M.W#M.W#M.W.W.1.1ao.1ao.1aoao.1ao.1bmbc.Tbc.Tbm.Tbmbmbm.Tbm.Tbmbm#O#OaI#q#q#q#q#q#q#q#q#q#q#q#q#q#q#qa5.W#M.W.W#M.W#M.Y#qaYaYaYaYaYaY#qaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaY.X.6bO.6aDbO.k.W.W#M.W#M.W#M#M#M#M.W#M#y.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z#M#M.W#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.W#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#MaUaU#faU#faU#faUbF.Xaw#9aj.W.W#M.W#MahbR#ka3a3#k#k#k#k#k#kaVaVaV#kaV.p.Tbo.Tbo.p.TbobobT#M.W#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.W#M.W#M.1ao.1ao.1ao.1ao.1ao.1aobm.Tbm.Tbm.pbm.Tbm.Tbmbmbmbmbmbyby#q#q#q#q#q#q#q#q#q#q#q#qaY#qaY#q#qa5.W#M.W#M.W.vbpaYaY#qaY#qaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaDaDaDaDaDaDbOar#M.W#M#M#M#M#M#M#M#M#M#y.z.z.z.z.z.z#a", ".z.z.z.z.z.z.z#y#M#M#M#MbM#M#M#M#M#M#M#M#M#M#M#MbM#MbM#M#MbM#M#M#MbM#M#MbM#MbM#M#MbM#MbM#M#M#M#MbM#M#M#M#M#MbM#MbM#MbM#M#M#M#M#M#MbM#MbM#MbM#MbM#M#M#M#M#MbM#MbM#MbM#MbM#M#M#M#M#M#M#M#M#M#M#M#MbM#M#MbM#M#M#M#M#M#M#M#M#M#M#M#M#M#M#MbM#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.W#faUaU#faUaU#faU#Kbm.Xaq#9aj#M.W#M.W#BahbRa3#ka3#k#k#kaV#kaV#kaVaV#k.Tbo.p.p.Tbo.p.p.Tbobo#M#M#M#M#M#MbM#MbM#M#M#M#M#M#M#M.W#M.W#M.W.1.1.1ao.1ao.1aoaoao.1ao.1bm.Tbm.Tbm.Tbm.pbmbmbm.Tbm.Tbmbyby#qao#q#q#q#q#q#q#q#q#q#q#q#q#qaY#q#q.va5.W#M#T.v.Ybp#qaYaYaYaY#qaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaY.X.6bO.6bOaDaD.k#M.W#M#M#MbM#M.W#M#M#M#M.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z#M#M#M#M#M.g.gbM.gbM.gbM.gbM.gbM.g.g.g.gbM.g.g.gbM.g.gbM.g.g.g.gbM.g.g.g.g.g.gbM.g.g.gbM.gbM.g.g.g.gbM.g.g.gbM.gbM.g.g.g.g.g.g.g.g.gbM.gbM.g.g.g.g.g.g.g.g.g.gbM.gbM.gbM.gbM.gbM#M.gbM.g.g.g.g.gbM.gbM.gbM.gbM.gbM.gbM.g.g.g.gbM.gbM.gbM.gbM.gbM.gbM.gbM#MbMbzaU#faU#faU#f.x#K#Kbm.Xaq#jaja.#M#Ma.bRahbR#k#k#k#k#k#k#kaVaV#kaVaV.pbo.Tbo.p.Tbo.pbo.p.p.p.W#MbM#MbM.g#M.g#MbM#MbM#M.W#M#M#M.1.1.1.1.1ao.1ao.1ao.1ao.1aoao.Tbm.pbm.pbm.pbm.Tbm.T.Tbmbmbmbmbyao#q#q#qao#q#q#q#q#q#q#qaY#qaY#q#qaY#q#q.v.v.v.v.vbpbpaY#qaY#qaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYbOaDaDaDaDaD.6a8.k#M#MbM.g.g.g.g#M#M#M#y.z.z.z.z.z.z#a", ".z.z.z.z.z.z.z#M#M.g.gbM.g.g.g.g.g.g.g.g.g.g.gbM.gbM.g.g.gbM.g.g.g.g.g.gbM.g.g.g.gbM.gbM.g.g.gbM.g.g.g.g.gbM.gbM.g.g.gbM.g.g.g.gbM.gbM.gbM.gbM.g.g.g.g.gbM.gbM.gbM.gbM.gbM.g.g.g.g.g.g.g.g.g.g.g.g.g.gbM.gbM.g.g.g.g.g.g.g.g.g.g.g.gbM.gbM.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.gbM#0aUaUaU#f.x.x.x#Kbmbm.Xaq#j#jaja.a.#BaubEbR#k#k#k#kaV#kaVaVaV#kaV.p.Tbo.pbo.p.Tbo.T.pbo.pbobM#M.g.gbM.gbM.g#MbM#MbM.g.1.1.1.1.1.1.1.1ao.1.1ao.1ao.1ao.1aobc.Tbm.Tbm.Tbm.Tbc.Tbmbm.Tbm.Tby#q#q#q#q#q#q#q#q#q#q#q#q#q#q#qaY#qaY#q#qaYada5.v.v.v.YbTbpbp#qaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaY.XaDbOaDa8aDaDaD.6#M#M.g#MbM.gbM.g.g.g#M.z.z.z.z.z.z#6", ".z.z.z.z.z.z.z#M#M.g.g.gbXbM.gbM.gbM.gbM.gbM.g.g.g.g.gbM.g.g.g.gbM.gbM.g.g.gbM.gbM.g.g.g.gbM.g.g.gbM.gbM.g.g.g.g.gbM.g.g.gbM.gbM.g.g.g.g.g.g.g.g.gbM.gbM.g.g.g.g.g.g.g.g.g.g.gbM.gbM.gbM.gbM.gbM.gbM.g.g.gbXbM.g.gbM.gbM.gbM.gbM.gbM.g.g.g.gbM.gbM.gbM.gbM.gbM.gbM.gbMbXbM.gbMbW#f#f.K.x.x#K#K#Kbmbm.Xaw.B#j#j#j#j#UbEau#k#k#k#k#kaV#kaV#kaV.Tbo.p.Tbo.p.Tbo.p.pbo.p.Tbo.p.gbM.g.g.g.gbM.gbM.1.1.1a4.1.1.1.1.1.1.1.1.1ao.1ao.1ao.1aoao.Tbm.pbm.pbm.pbm.Tbm.T.Tbmbmbmbyao#q#qao#qaobe.xbe#q#qaY#q#qaY#q#q#qaY#q#qbp.vbf.ybfbfbTaDbpaYaYaY#qaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaY.XaDaD.6aDaDaD.6bOaD.gbM.gbM.g.g.g.g.g#M#M.z.z.z.z.z.z#a", ".z.z.z.z.z.z.z#M#M.gbM.g.g.gbX.gbX.gbX.gbX.gbMbXbMbX.g.g.gbMbX.g.g.g.gbMbX.g.g.g.gbMbXbMbX.g.gbMbX.gbX.gbMbXbMbX.g.g.gbM.g.g.g.gbM.gbM.gbM.gbM.gbMbX.gbX.gbMbXbM.gbMbXbM.gbMbX.gbX.g.g.gbX.gbX.g.g.gbM.gbM.g.g.gbMbX.gbX.gbX.gbX.gbXbMbXbMbX.gbX.gbX.gbX.gbX.gbX.gbX.g.g.gbXbM.g.q.P#C#C#Kbm#K#K#Kbmbm.Xbhaq#j#j#jaqaubE#k#k#k#kaV#kaVaVaVaV.p.pbo.p.Tbo.pbo.Tbo.Tbo.p.Tbo.7.g.gbM.g.g.g.1a4.1a4a4.1.1a4.1.1.1.1ao.1ao.1ao.1aoao.1aobcbm.Tbm.Tbm.Tbm.Tbc.Tbmbm.Tbm.T#q#qao#q#q#qbe#K.x#K.x#q#q#q#q#qaY#qaY#q#q#qbobObfbfbf.ybTbTaDbpaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaY.X.6bOaDbO.6bOaDaD.6.k.g.g.gbXbM.gbM.g.g#M.z.z.z.z.z.z#a", ".z.z.z.z.z.z.z#M.g.g.gbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbX.g.gbXbM.gbX.gbM.gbM#Ja1a1#J.g.g.g.gbX.g.gbMbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbX.g#XbM.g.qbtbtbm#K#K#K#K#K#K.Dbobh.Baq#Uaw.cau#k#k#k#k#k#kaVaV#kaV.pbo.T.pbo.Tbo.p.pbo.p.Tbo.p.pbo.7.7.7.7a4a4a4a4.1a4.1a4.1.1.1.1.1.1.1.1.1.1ao.1ao.1ao.1bm.T.p.pbm.pbm.pbm.Tbm.pbm.Tbmao#qao#q#qao#q#Kbm#K#K.x#q#q#qaY#q#qaY#q#qaYaebo.XbO.ybfbfbfaDbTbpaY#qaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaY.xaDaDaDaDaDaD.6aDbOaD.gbMbXbXbXbXbX.g#M#M.z.z.z.z.z.z#a", "bg.z.z.z.z.z.z#M.gbXbXbXbMbXbXbMbXbXbMbXbXbXbXbXbXbMbXbXbXbXbMbXbXbXbXbXbMbXbXbXbXbXbXbXbMbXbXbXbMbXbXbXbXbXbXbM.gbXbM.g#J#J#J#Ja1#Ja1a1#Ja1a1bM.gbMbXbXbXbXbXbXbXbXbXbXbXbXbMbXbXbMbXbXbMbXbXbMbXbXbXbXbXbXbXbXbXbXbMbXbXbMbXbXbMbXbXbXbXbMbXbXbMbXbXbMbXbXbMbXbXbMbXbXbXbX.gbXbX.g.Q#AbN.D#K#K#K#K#K#Kbmbobhaq.BbhbE#h#k#k#k#kaV#kaV#kaV.p.p.Tbo.p.Tbo.p.Tbo.Tbo.p.pbo.T.p.7.7.1a4a4.1a4a4.1a4.1a4.1a4.1.1.1.1.1.1ao.1ao.1ao.1ao.1.T.p.T.T.pbm.Tbm.Tbc.Tbm.Tbmbm#q#q#q#q#q#q#q#Kbmbmbm.x#q#q#q#qaY#q#qaY#q#q#C.TbT.Bbfbf.ybfbfbp.YaYaYaY#qaYaYaYaYaYaYaYaYaYaYaYaYaYaYaY#3.xaDbO.6bOaDbOaDbO.6aD.gbXbXbXbXbX.gbXbX#M.z.z.z.z.z.z#a", ".z.z.z.z.z.z.z#MbXbXbXbX#XbXbX#XbXbX#XbXbXbXbXbXbX#XbXbXbX#XbX#XbXbXbXbX#XbXbXbXbXbXbXbX#XbXbXbX#XbXbX.gbXbMbXbXbM#J#J#J#J#J#J#J#J#J#J#Ja1a1a1a1.0bXbMbXbX.gbXbXbXbXbXbXbXbX#XbXbX#XbXbX#XbXbX#XbX#XbXbXbXbXbXbXbXbX#XbXbX#XbXbX#XbXbXbXbX#XbXbX#XbXbX#XbXbX#XbXbX#XbXbXbXbX#XbXbXbXbX.Q#Abo.p#Kbm#K#K#K#Kbmbobhbh#Nau#k#k#k#k#kaV#kaV#k#k.Tbo.pbo.pbo.T.pbo.pbo.p.Tbo.pbobo.7a4#Sa4a4a4a4a4a4.1a4.1a4.1a4.1.1.1.1.1.1.1ao.1ao.1ao.1bm.p.T.p.T.pbm.pbm.Tbm.pbm.pby#qaoao#qaoao#Kbmbmbm#K#K#q#q#q#q#qaY#q#qaY#q#Kbmbo.X.abfbfbf.ybpbp#qaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaY.x.xaDaDaDaDaDaD.6aDaDaDbXbXbXbXbXbXbXbX.g#M.z.z.z.z.z.z#a", "b0.z.z.z.z.z.z#MbXbXbX#XbX#X#XbX#X#XbX#X#XbX#X#XbX#XbX#X#XbX#XbX#X#XbX#XbX#X#XbX#X#XbX#XbX#X#XbX#XbXbXbXbXbXbX#J#JaQ#J#J#J#J#J#J#J#Ja1#Ja1#Ja1a1a1a1.RbXbXbXbXbX#X#XbX#X#XbX#XbX#XbX#X#XbX#X#XbX#XbX#X#X#X#XbX#X#XbX#XbX#XbX#X#XbX#X#XbX#XbX#X#XbX#X#XbX#X#XbX#X#XbX#X#XbX#XbX#X#XbX#XbXai#AbN.T#K#K#K#K#K#KbmbNbo.Dax#k#k#k#k#k#kaV#kaV#k.pbo.pbo.pbo.pbo.T.p.Tbo.p.Tbo.T.7#S#Sa4a4a4a4a4a4a4a4.1a4.1a4be.1.1.1.1.1ao.1ao.1ao.1aobc.T.p.Tbc.T.p.Tbm.Tbc.Tbm.Tbmao#q#q#qao#q#qbmbmbmbmbm#K#q#qaY#q#q#qaY#q#q#3#Kbm.TbT.XbObfbfbf.v.YaYaYaYaYaYaYaYaYaYaYaYbo.X.X#3aYaYaY#3aZbe.x.6bO.6bOaDbOaDa8bX.gbX#X#XbX#XbXbXbX.g.z.z.z.z.z.z#a", ".z.z.z.z.z.z.z.g#XbX#XbX#XbXbX#XbXbX#XbXbX#XbX#XbX#XbX#XbX#XbX#XbXbX#XbX#XbXbX#XbXbX#XbX#XbX#XbX#XbXbXbXbXaQaQaQaQ#JaQaQ#J#J#J#J#J#J#J#Ja1a1#Ja1a1a1a1akbXbXbX#XbXbX#XbXbX#XbX#XbX#XbXbX#XbX#XbX#XbX#XbXbXbX#XbXbX#XbX#XbX#XbXbX#XbXbX#XbX#XbXbX#XbXbX#XbXbX#XbXbX#XbXbX#XbX#XbX#XbX#XbXaf#m.B.p.Tbm#Kbm#K#K#K#K#K#K.x#k#k#k#k#kaV#k#kaV#kbo.pbo.pbo.Tbo.p.pbo.pbo.pbo.p.p#S#Sa4#Sa4a4a4a4a4.1a4a4a4.1be.xbebe.1.1.1.1ao.1ao.1ao.1.T.p.T.p.T.T.p.Tbc.Tbm.Tbc.Tbmao#qao#q#qao#qbc.T.p.Tbm#q#q#q#q#qaY#q#qaYbe.x#Kbmbm.pbTaD.abf.ybfbpaYaY#qaYaYaYaYaYaYaYaDaDaDbTaZ#3#3aZ.xbe.x.xaDaDaDaDaD.6aDaD.g#X#XbX#XbX#XbX#X#X#M.z.z.z.z.z.z#a", "bg.z.z.z.z.z.z#M#XbX#XbX#X#X#X#X#X#XbX#X#X#XbX#X#X#X#XbX#XbX#X#X#X#XbX#X#X#X#XbX#X#X#X#XbX#XbX#XbXbX#XaQaQaQ#JaQaQ#JaQ#JaQ#J#J#J#J#J#Ja1#Ja1a1a1a1a1a1awakbXbX#XbX#XbX#X#X#X#X#X#X#X#X#XbX#XbX#XbX#X#X#X#X#X#X#X#XbX#X#X#X#X#X#XbX#X#X#X#X#X#X#XbX#X#X#X#X#XbX#X#X#X#XbX#XbX#XbX#XbX#XbXafai#j.B.X.Tbm#K#K#K#Kbm#K.x.xa3#k#k#k#k#kaV#k#k.T.pbo.pbo.pbo.pbo.T.pbo.T.pbo.T#S#S#Sa4#Sa4a4a4a4a4a4a4.1a4be.xbe.x.x.1.1ao.1.1ao.1ao.1ao.p.T.p.T.p.T.p.T.Tbm.Tbm.Tbm.T#qao#qao#q#qao.Tbc.Tbcbm#q#q#q#q#q#qaY#q#qbe.x.x#Kbm.T.pbobObfbf#U.YaYaYaYaYaYaYaYaYaYaYaDaDaD.6aD.x#3#3.x.x.x.x.xaDbO.6aDbOaDaDbX#XbX#X#X#XbX#XbXbXbX.z.z.z.z.z.z#a", ".z.z.z.z.z.z.zbX#X#XbX#X#XbX#XbX#XbX#X#X#XbX#X#XbX#XbX#X#X#XbX#XbX#X#XbX#XbX#X#XbX#XbX#X#XbX#XbX#X.SaQaQaQaQaQaQaQaQaQ#JaQ#J#J#J#J#J#J#Ja1a1#Ja1#Ja1a1a1#mam#IbX#XbX#XbX#XbX#XbX#XbX#XbX#X#X#X#X#X#XbX#XbX#XbX#XbX#X#XbX#XbX#XbX#X#XbX#XbX#XbX#X#XbX#XbX#XbX#X#XbX#XbX#X#XbX#XbX#XbX#XbCbzbz#m.B.B.Xbo#Kbm#K#K#K.x.xa3#k#k#k#k#kaV#kaV#kbo.pbobo.pbo.pbo.pbobo.p.Tbo.p.p#S#S#Sa4#Sa4a4a4a4a4.1a4a4be.xbe.x.x#3.1.1.1ao.1ao.1ao.1aobc.T.pbm.p.Tbc.T.p.p.Tbc.Tbmao#qao#q#qao#q.T.p.T.p.Tbm#q#q#qaY#q#q#q#qbe.x.x.x#CbmbmbmboaDbO#UbObpaYaYaYaYaYaYaYaYaYaYbTaDaDaDaD.x.x.x.xbe.xbe.x.xaDbOaDaD.6aDbX#X#XbX#XbX#X#X#X#X.g.z.z.z.z.z.z#a", "#4.z.z.z.z.z.z.g#XbX#X#X#X#X#X#X#X#X#XbX#X#X#X#X#X#X#X#XbX#X#X#X#X#X#X#X#X#X#X#X#XbX#XbX#XbX#X.SaQ.SaQ.SaQaQaQaQaQ#J#JaQ#J#J#J#J#J#Ja1#Ja1#Ja1a1a1a1#J.0.B#mbjbA#X#X#X#XbX#X#X#X#X#X#X#X#XbX#XbX#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#XbX#X#XbX#X#f#faUbWaJaJ#0.q#j.y.B.B.BbNbm#Kbm#K#K.xa3a3#k#k#k#k#k#kaV#k.Tbo.pbobo.pbo.pbo.p.pbo.Tbo.Tbo#S#S#Sa4a4#Sa4a4a4a4a4a4.1be.x.xbe.xbe.1.1.1.1ao.1ao.1aobc.T.T.p.T.p.T.T.p.Tbc.Tbm.Tbmao#qao#qao#qaobcbo.pbo.T#q#q#q#q#q#qaY#q#3.xbe.x.x.x#Kbmbm.Tbo.XaD.X#OaY#qaYaYaYaYaYaYaYaYbTaDaDaDaDbe.x.xbe.x.x.xbe.x.x.6aDbOaDbO#XbX#X#X#X#X#XbX#XbX#X.z.z.z.z.z.z#a", ".z.z.z.z.z.z.zbX#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#XbX#X#X#X#X#X.S.SaQ.SaQ.SaQaQaQaQ#JaQaQ#JaQ#JaQ#J#J#J#J#J#J#Ja1a1a1#Ja1a1a1bhbn.ybjbLbA#XbX#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#XbX#XbX#X#XbX#X#X#X#X#X#X#X#X#X#X#X#X#X#X#XbX#X#X#faUaUaU#faJ#0aJbTaD#U.y#j.B#Abo.D#K#C.xaga3#ka3#k#k#kaV#kaV#kbobobobo.pbobo.pbo.pbo.pbo.p.p.p#S#S#Sa4#Sa4a4a4a4a4a4a4.x.xbe.x.xbe.1ao.1.1ao.1ao.1ao.1.T.T.p.T.p.Tbc.T.p.T.T.p.T.pbm#qao#qao#q#q#q#q.p.p.p#q#q#q#q#q#q#q#qbe.xbe.x.x.x.x.x#Kbmbmbcbo.p.TbmaYaYaYaYaYaYaYaYaYaYbTaDaD.6aDaDbe.x.x.xbe.x.x.x.xaDaD.6aD#N#X#X#X#X#X#X#X#X#X#X.g.z.z.z.z.z.zay", "#4.z.z.z.z.z.z.g#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#XbX#X.S.S.SaQ.SaQ.SaQ.SaQaQaQaQ#Jb#b#b#b#b##J#J#J#Ja1#Ja1a1#Ja1a1a1a1a1aD.abn.sbjbja##XbX#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#f#f#faU#faU#fbWaJaDbTaD#U#U.y.B#Abt.D#Kagag#k#k#k#k#k#k#k#k#k.pbo.pbTbobo.pbo.pbo.pbo.pbo.Tbo.T#S#S#Sa4a4#Sa4a4a4a4a4a4.x.x.x.xbe.x.1.1.1.1.1ao.1ao.1ao.p.Tbc.T.p.T.T.p.T.p.T.p.Tbmao#qao#q#qao#qao#q#q.p.T#q#q#q#q#q#q#q#3.xbe.xbe.x.x.x.x#K#Kbmbm.T.TbmbmaYaY#qaYaYaYaYaYaYaYboaDaDaDaDaD.x.xbe.x.x.xbe.xbe.xbK#c#c#c#X#X#X#X#X#X#X#X#X#XbX.z.z.z.z.z.z#a", ".z.z.z.z.z.z.z#X#X#X#X.8#X#X.8#X#X.8#Xbr#Xbr#Xbr#X#Xbr#Xbr#Xbr#Xbr#Xbr#X#X#X#X#X#X.S.S.S.S.S.SaQ.S.SaQaQ.SaQaQaQb#b#bc#w.p#wb##J#J#J#J#Ja1#Ja1a1a1a1#Ja1bo.a.abn.V#1bjbLa##X#X#X#X#X#Xbr#Xbr#Xbr#Xbr#Xbr#X#Xbr#X#X#X#X#X#X#X#X#XbX#X#X#X#X#X#X#X#X#Xbr#X#Xbr#X#X#X#X#X#f#faU#faU#faU#faJbTaDaDbTaDaD.B.ybD.j#N#hagaga3#ka3#k#k#k#k#k#kbobTbobo.pbobo.pbobobo.pbo.pbo.p#S#S#S#Sa4#Sa4a4a4a4a4a4.x.x.x.x.x.xbe.1.1.1.1.1ao.1.1ao.pbm.p.T.T.p.T.pbm.p.Tbc.T.p.p#qao#qao#q#qao#qao#q#q#q#q#q#q#q#q#q#3.xbe.x.xbe.xbe.x.x.x#K#CbmbmbmbmaYaYaYaYaYaYaYaYaYaYaYbTbTbTaDaDaDbT.x.x.x.xbe.x.x.x.x.x#cbK#X#X#X#Xbr#X.8#X#X#X.8.g.z.z.z.z.z.zay", "#4.z.z.z.z.z.zbX.8#X#X#X.8#X#Xbr#X#X#X.8#X#X.8#X#X.8#X#X.8#X#X.8#X#X#Xbr#X#X#X#X.S.S.S.S.SaQ.S.SaQ.SaQ.SaQaQaQb##wbm#Kbcbc#w#wb##J#Ja1#Ja1a1#Ja1a1a1a1a1bTaDa8#L.abn.VbLbLa##X#X#Xbr#X#X.8#X#X.8#X#X#X#X.8#X#X.8#Xbr#X#X#XaTaTaTbu#ibu#X#X#X#Xbr#X.8#X#X.8#X#X.8#X#X#f#f#f#f#f#faU#faUbTaDbTaDaDbTaDaD#U#j.Q.jbRbH#k#ka3#k#k#k#k#k#k#k.pbobobTbobT.pbobo.pbobo.pbo.p.p#S#S#S#Sa4a4#Sa4a4a4a4.x.x#K.x#K.x.x.x.1.1.1ao.1.1ao.1.1.T.p.p.T.pbm.p.T.p.T.p.T.T.pbmao#qao#q#qao#q#q#q#qao#q#q#q#q#q#qbe.xbe.xbe.x.xbe.xbe.x.x.x#K#K#Kbm#KaY#qaYaYaYaYaYaYaYaYbobTaDbTaDaDaDaD.xbe.xbe.x.xbe.xbe.x#c#c#X.8#X.8#X#X#X.8#X#X#X#X.z.z.z.z.z.z#a", "b0.z.z.z.z.z.z#X#X#X#X.8#Xbr#X.8#X.8#X.8#Xbr#X.8#Xbr#X.8#X#X.8#X#X.8#X#Xbr#X.S.S.S.S.S.S.S.S.SaQ.SaQ.SaQ.SaQ.f#w#Kbcbmbm.Tbm#wb##Ja1#J#Ja1#Ja1a1a1a1a1bmboboaDa8.a.abn.V.VbLbL..#X#X.8#X#X.8#X#X.8#X.8#X#X.8#X#X.8#X#X#XaT#daT#d#dbua9bu#i#X#X.8#X#X.8#Xbr#Xbr#Xbr#X#f#f#f#faU#faU#f#fbTaDaDbTaDbTaDbTaD.ya0#B#ebHa3#ka3#k#k#k#k#k#k#kbobTbo.pbobobobobobobo.pbo.pbo.p#S#S#S#Sa4#Sa4a4a4a4a4.x#K.x#K#t.x.x.1.1.1.1.1ao.1ao.1ao.p.T.p.p.T.p.T.p.T.p.T.p.T.p.Tao#qao#qao#qao#qao#q#q#q#q#q#q#qbe.xbe.x.x.xbe.x.xbe.x.x.x.x.x#K#K#K.xaYaYaY#qaYaYaYaYaYaYbobobT.XbTbT.6aDbT.x.x.x.x.x.x.x.x.x.xbKbr#X#X#X.8#Xbr#X.8#X.8bX.z.z.z.z.z.zay", "#4.z.z.z.z.z.zbX.8#X.8#X#X.8#Xbr#Xbr#X#X.8#X#Xbr#X.8#X#Xbrbr#Xbr.8#X.8#X#X.S.S.S.S.S.S.S.S.S.SaQ.S.SaQaQ.SaQb##w.p.pbmbmbm#KbcbJ#J#Ja1#Ja1a1#Ja1#Ja1a1bmbmbobTaDa8a8.a.abn.VbLbLa#.8#X#X.8#X#Xbr#X#X#X.8#X#Xbr#X#X.8#XaTaT#daTaT#d#dbububTaDbT#X#X.8#X#X.8#X.8#X#Xbr#f#f#f#f#f#f#faU#fbTaDbTaDaDbTaDaDbTaDbD#eahaua3#k#ka3#k#k#k#k#k.pbobobobTbobT.pbT.pbo.pbobo.pbo.p#S#S#S#Sa4a4#Sa4a4#S.x#K#K#K#K.x#K.x.1.1.1.1.1.1ao.1.1.p.p.pbo.T.p.T.p.Tbc.T.pbm.p.Tbc#qao#q#q#qao#q#q#q#q#q#q#q#qbe.x.x.x.xbe.xbe.xbe.x.xbe.xbe.x.x.x#K.x.x#qaYaYaYaYaYaYaYaYaYbobTaDbTbT.XbTaDbTbo.xbe.xbe.xbe.x#3.xbr#X.8#Xbr#X.8#X#X.8#X#X.8.z.z.z.z.z.z#a", "b0.z.z.z.z.z.z.8#X.8#Xbr.8#Xbr.8#X.8br.8#Xbr.8br.8#X.8br.8#X.8#Xbr#X#X.8#X.S.S.S.S.S.S.S.S.S.S.SaQ.SaQ.SaQ.S#wbT.p.T.T.Tbmbc#Kb##Ja1#J#Ja1#Ja1a1a1a1#Jbmbm.pboboaD.6a8#x.a#L.V.ybL.5acac.b.b#Q##########.8#X#X.8#X.H#d#d#d#d#daTaT#dbuaDbTaDboaDbr#X#Xbr#X.8br#X.8#X#f#f#f#f#faU#faU#faDbTaDaDbTaDaDbTaDbTaDbRahbR#k#ka3#k#k#k#k#k#kbTbobTbobobobobobobobobo.pbo.pbo.p#S#S#S#Sa4#Sa4#Sa4#S#K#K#K#K#K#K.x.x.1.1.1.1.1ao.1ao.1.Tbo.T.p.p.p.p.T.p.T.T.p.T.p.p#Oao#qao#qao#q#q#qao#q#q#q#q.x.x.x.x.xbe.xbe.xbe.x.xbe.xbe.xbe.x.x.x.x.xaYaYaYaYaYaYaYaYaYaYboaDbTboaDbTbTaDbTaDbt.x.x.x.x.x.x.x.x#Xbr#X.8br.8#Xbr.8#X#X.8.g.z.z.z.z.z.zay", ".i.z.z.z.z.z.zbX.8#X.8.8br.8.8br.8br.8br.8.8#X.8br.8br.8br.8br.8.8br#Xbr#K.S.S.S.S.S.S.S.S.S.SaQ.SaQ.SaQaQaQbc.6bT.6aD.T.Tbm#w.fa1#Ja1#Ja1a1#Ja1a1a1#tbmbm.T.pbobo.XaD.6a8.a.abQ.y.y#8#8aG#Qa2#Qbs####bs##bm.H.H.H#d#d#daT#daTaT#daTbTbTboaDbTaDbTaDbr#X.8#Xbr.8#X#X#f#f#f#f#f#faU#faUbTaDbTaDbTaDbTaDaDbTaDaDbRah#ka3#k#k#k#k#k#k#kbobo.pbobT.pbTbobTbo.pbTbobobo.p#S#S#S#S#Sa4a4#Sa4a4#S#K#K#K#K#K#K.x.1.1.1.1.1.1.1ao.1ao.p.p.pbo.T.p.T.pbm.p.T.p.Tbc.Taoao#qao#qao#qao#q#q#qao#q.x.x.x.x.x.x.x#q#qbe.xbe.x.xbe.x.x.xbe.xbe.xbeaY#qaY#qaYaYaYaYaYaYbobobTaDbT.XbTboaDbobT.xbe.xbe.xbe.xbr.8br.8br.8br.8.8br.8.8#X.8.z.z.z.z.z.z#a", "b0.z.z.z.z.z.z#X.8.8br.8br.8br.8br.8#X.8br.8br.8br.8br.8#X.8br.8br.8.8#X#K#w.S.S.S.S.S.S.S.S.SaQ.S.SaQ.S.S.paDaDaDaDaDaD.pbc#wbJ#Ja1#J#Ja1#Ja1a1a1a1#K#K#Kbm.T.p.pbobTaDaDa8.a.a.a#U.j#Q#Q#Q#Qa2#QaAbsbmbmbmbm.H.n#daT#d#d#daT#daTaTboaDbTbT.XbTbobTaDbr#X.8#Xbr#X#f#f#f#f#f#faU#f#fbTaDaDbTaDaDbTaDaDbTaDaDbTbEa3a3a3#ka3#k#k#k#k#k.pbobTbobobobo.pbobobTbo.pbo.pbo#S#S#S#S#S#Sa4#Sa4#S#K#Kbmbmbm#K#K.x.1.1.1.1ao.1.1.1.1.p.pbo.T.p.p.p.T.p.T.p.Tbc.T.T.p#qao#qao#qao#q#q#qao#q#q.x.x.x.x.x.xbe#q#q#q#q.xbe.xbe.x.xbe.xbe.x.x.xbeaYaYaYaYaYaYaYaYaYaYboboaDboaDbTbTaDbTbTaDbt.x.x.x.x.x.x#X.8br.8br.8br.8br.8#X.8.8.g.z.z.z.z.z.z.A", ".i.z.z.z.z.z.z#X.8#X.8.8br.8br.8br.8br.8br.8br.8br.8br.8br.8br.8br.8br.8#K#K.S.S.S.S.S.S.S.S.S.SaQ.SaQaQ.SbTaDaDaDaDbTaDaD.pbc#w#J#Ja1#Ja1a1#Ja1a1#t#K#Kbmbmbmbm.T.p.p.XbTaDa8a8bObobV#Q#Q#Q#Q#Q#Q#Qbmbm#Kbmbm.H.H#d#d#d#d#daTaT#daTbTbT.XbTbTaDbTaDbTaDbrbr.8br#0#f#f#f#f#f#f#faU#fbTaDbTaDbTaDaDbTaDbTaDbTaDbTa3#k#ka3#k#k#k#k#k#kbTbobobobTbobTbobTbobobobTbobT.p#S#S#S#S#Sa4a4#Sa4a4bmbmbmbm#K#K#Ka4.1.1.1.1.1.1.1.1.1.T.p.p.pbo.T.p#K#K.T.p.T.T.p.TaIao#qao#q#q#qao#qao#q#q.x.x.x.x.x.x.x#q#q#q#q#q#3#K.x#K.x.xbe.x.xbe.xbebB#qaYaYaYaYaYaYaYaYaYbobobobTbT.XbT.XbT.XbTbtbt.xbe.xbe.8br.8br.8br.8br.8br.8br.8.8#X.z.z.z.z.z.z#a", "b0.z.z.z.z.z.z.8.8.8.8br.8br.8br.8br.8br.8br.8br.8br.8br.8br.8br.8br.8brbr#K#w.S.S.S.S.S.S.S.SaQ.S.SaQ.SaQaDaDaDbTaDaDaDaDaD.p#w#Ja1#J#Ja1#Ja1a1a1.x#t#K#K#Kbmbmbm.T.p.pboaDbobTbo.paSaS#Q#Q#Q#Q#Qbm#Kbmbmbmbmbm.n#d#d#daT#d#d#d#dbTbTaDbTbTaDbT.XbT.XbTbT#G#0#G#0#f#f#f#f#f#faU#faUaDaDbTaDaDbTaDbTaDaDbTaDaDbTa3a3a3a3#k#k#k#k#k.pbobT.pbobo.pbobobobT.pbobo.pbo.p#S#S#S#S#Sa4#Sa4#Sa4bmbmbmbmbm#Ka4.1.1.1.1.1.1.1.1.1.1.p.Tbo.T.p.pao#K#K#K#K.T.p.p.Dby#qao#qao#qao#qao#q#qao.x#t.x.x#t.x#q#q#q#qaY#q#K.x#K.x#K.x.x.xbe.x.xbe#qaYaYaY#qaYaYaYaYaYbobobTboboaDbTbTaDbTbTaD#c#c#c.8br.8br.8br.8br.8br.8br.8br.8.8#X.8.z.z.z.z.z.z.A", ".i.z.z.z.z.z.z#X.8.8br.8br.8.8br.8.8br.8.8br.8.8br.8br.8.8br.8.8br.8.8.8.8br#K#K.S.S.S.S.S.S.S.SaQ.SaQaQ.SaDaDaDaDaDaDaDaDaDaD#w#J#Ja1#Ja1a1#Ja1be#t#K.x#K#K#Kbmbmbmbm.T.p.pbobo.TaS#QaS#Q#Q#Q#Q#Q#Kbmbmbm#Kbmbm#d#d#d#d#d#d#d#d#dboaDboaDbTbTaDbTbTbTaDbobT#G#0#0#fab#f#f#f#f#faU#fbTaDaDbTaDaDbTaDbTaDaDbTaDaDa3#ka3#ka3#k#k#k#kbobobobTbobTbobT.pbobobTbobTbobTbo#S#S#S#S#Sa4a4#Sa4bmbmbm.Tbmbm#K.1.1.1.1.1.1.1ao.1.1.1.T.p.p.pboaoaoao#K#K#K#Kbm.D.T.Fao#qao#qao#q#q#qao#q.x.x.x.x.x.x#q#q#q#q#q#q.x.x#K.x#K.x#K.x.x.xbe.xbBaYaY#qaYaYaYaYaYaYaYbobTbobobobobTaDbTaDbobT#c#c.8br.8.8br.8.8br.8.8br.8.8br.8br.8.8.8.z.z.z.z.z.z#a", "b0.z.z.z.z.z.z.8.8br.8br.8.8br.8.8br.8.8br.8.8br.8br.8.8br.8.8br.8.8brbraEbr#K#w.S.S.S.S.S.S.SaQ.S.SaQ.SaQaDbTaDaDaDbTaDaDbTaD#J#J#J#J#Ja1#Ja1a1#t.x.x.x#K#K#K#C#Kbmbmbmbm.T.TbmbmaSaS#Q#Q#Q#Q#Q#Qbmbmbmbmbmbm#Ka2#d#d#d#d#daT#d#dboaDbTbT.XbTboaDbT.XbTaDboaD#0bxab#f#f#f#faU#faU#faDbTaDbTaDbTaDaDaDbTaDbTaDbTa3a3a3#k#k#k#k#k#k.pbTbobo.pbobobobobTbobobobobo.paV#S#S#S#S#Sa4#Sa4#Sbm.p.Tbmbmbm.1.1a4.1.1.1.1.1.1.1.1.1.p.Tbo.paoaoaoaoao#K#K#K#K#K#K.Faoao#qao#qao#qao#q#qao.x.x.x.x#q#q#q#qaY#q#q#K.x#K.x#K.x#K.x#K.x.x.xas#qaYaYaYaYaYaYaYaYaY.pbobobobTboaDbT.XbTbTaDbr.8br.8aEbraE.8br.8.8br.8.8br.8.8br.8.8#X.z.z.z.z.z.z.A", ".i.z.z.z.z.z.z#X.8.8.8braEbraEbraEbraEbraEbraE.8aEbraEbraEaEbraEbraEaE.8braEbr#C.S.S.S.S.S.S.S.SaQ.SaQaQ.SaDaDaDaDaDaDaDaDaDaD#J#J#Ja1#Ja1a1a1be.x.x.x.x.x#K#K#K#K#Kbmbmbmbmbm#KaS#QaS#Q#Q#Q#Q#Q#Kbmbmbmbmbmbmbm#d#d#d#d#d#d#d#d#dbobTaDbTbTaDbTbTaDbTbTboaDbTaD#f#f#fab#f#f#f#f#faUbTaDaDbTaDaDbTaDbTaDaDbTaDa3a3#ka3a3#k#k#k#k#kbobobobTbobTbobTbo.pbobT.pbTbobo#S#S#S#S#S#Sa4a4#Sa4.p.p.p.pbm.1a4.1.1.1.1.1.1.1.1ao.1.1.T.p.paoaoao.1ao#K#K#K#K#K#K#K.F#qao#qao#q#qao#q#q#q#q#qao#q#q#q#q#q#q#q#q.x.x#K.x#K.x#K.x#K.x#C.xbBasaYaY#qaYaY#qaYaYaYaY.pbobTbobobobobTbTaDbo.X.8braEbraEbraEbraEbraEbraEbraEbraE.8br.8.8.z.z.z.z.z.z#a", "#4.z.z.z.z.z.z.8.8aEbraEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaE.8.8br.S.S.S.S.S.S.SaQ.SaQ.SaQbTaDaDaDbTaDaDaDaDaDbT#J#J#J#J#Ja1#J.xbe.x#t.x#K.x.x.x.x#K#C#Cbm#Kbm#K#KaSaS#QaS#Q#Q#Q#Qbmbmbmbmbmbm#K#da2#d#d#d#d#d#daT#dbTaDbobTaDboaDbobT.XbTaDbTbobTababab#f#f#f#f#f#fbTaDaDbTaDaDbTaDbTaDaDbTaDbTa3a3a3a3#ka3#k#k#k#kbobT.pbobobobo.pbobTboboboboboboaV#S#S#S#S#S#S#S#S.p.p.p.p.pbma4.1a4.1.1.1.1.1ao.1.1.1.1.1ao.1ao.1aoaoao#K#K#K#K#K#K#K.F#qao#qao#qao#q#qao#qao#q#q#q#q#q#q#q#q#q#q#K.x#K.x#K.x#K.x#K.x#K.xaeas#qaYaYaYaYaYaYaYaYaYbobobobobobTbobobTaDbobTaE.8aEaEaEaEaEaEaEaEaEaEaEaEaEaEaE.8aE.8#X.z.z.z.z.z.z.A", ".i.z.z.z.z.z.z.8.8aEaEaEaEaEaEaEaEaEaEaEaEaEbraEaEaEaEaEbraEaEaEaEbraEaEaEaEaEbr.S.S.S.S.S.S.S.S.SaQ.SaQaDaDaDaDaDaDbTaDaDaD#J#J#J#J#Ja1#Ja1be.xbe.x.x.x.x#K.x#K.x#K#K#C#K#C#KaSaSaS#QaS#Q#Q#Q#Qbmbmbmbmbmbmbma2a2#d#d#d#daT#d#dbobT.XbTaDbobTaDbTaDbTbT.XbTaDbTab#fab#f#f#f#f#f#fbTaDbTaDbTaDaDbTaDbTaDaDbTaDa3a3#ka3#k#k#k#k#k#k.pbobobTbo.pbTbobobobo.pbTbobo.p#S#S#S#S#S#Sa4#Sa4.pbobobo.Ta4.1a4.1a4.1.1.1.1.1.1.1.1ao.1.1ao.1aoao.1#K#K#K#K#K#K#K#K.Fao#qao#q#qao#q#q#q#q#q#q#q#q#q#q#q#q#q#q.x.x#K.x#K.x#K.x#K.x#K.x#CbBbBaYaY#qaYaYaYaYaYaY.pbo.pbTbobTbobobobobo.Xbr.8aEaEaEbraEaEbraEaEbraEaEbraEaEaEaEaEaE.8.z.z.z.z.z.zay", "#4.z.z.z.z.z.z.8aEbraEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEbr.S.S.S.S.S.S.SaQ.SaQ.SaQaDaDbTaDaDaDaDaDbT#J#J#J#J#J#J#Ja1bebe.x.xbe.x.x.x.x.x.x#K.x#K.x#K.x.xaSaS#QaSaS#QaS#Qbmbmbmbmbmbmbmbm#da2#d#d#d#d#d#d#dbTaDbTaDbTbTaDbT.XbTboaDbTaDbobTab#fab#f#fab#f#f#faDaDbTaDaDbTaDaDbTaDaDbTaDbTa3a3a3a3#ka3#k#k#k#kbTaDbTbTbobTbobobobTbobTboboboboaV#S#S#S#S#S#S#S#Sbo.p.p.p.pa4.1a4.1.1.1.1.1.1.1.1.1.1ao.1ao.1aoao.1ao#K#K#K#K#K#K#K#K#Kao#qao#qao#q#qao#qao#q#q#q#q#q#q#q#q#q#q#K.x#K.x#K.x#K.x#K.x#K.x#K.xbB#qaYaYaYaY#qaY#qaYbo.pbobobobobobobTboaDbobraEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaE.8.8.8.z.z.z.z.z.z.A", ".i.z.z.z.z.z.z.8.8aEaEaEaEaEbraEaEbraEaEbr.JaEaEbraEaEaEaEaEbr.JaEaEaEbr.JbraE.8.S.S.S.S.S.S.S.S.SaQ.SaQbTaDaDaDaDaDaDaDaD#J#J#J#J#Ja1a1be.xbe.xbe.xbe.xbe.x.x.x.x.x.x#K.x.x.0aSaSaS#QaS#QaS#Qbmbm.Tbm.Dbmbmbm#da2#d#d#d#daT#d#dbobTaDbobT.XbTbTbTaDbTbT.XbTbTaDab#fab#f#f#f#f#f#fbTaDaDbTaDaDbTaDaDbTaDbTaDaDa3a3#ka3#ka3#k#ka3#kbTbTaDbTbobobo.pbTbo.pbobobT.p#K#S#S#S#S#S#Sa4#S#Sa4.pbobo.1.1a4.1.1a4.1.1.1.1ao.1.1.1.1ao.1ao.1aoao#K#K#K#K#K#K#K#K#K#Kaoao#qao#qao#q#q#q#q#q#q#q#q#q#q#q#q#q.x.x#K.x#K.x#K.x#K.x#K.x#K.x#K.xaeaYaY#qaYaYaYaY.pbo.pbo.pbobTbobTboboboboaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaE.8.z.z.z.z.z.zay", "#4.z.z.z.z.z.z.8aEaEaEaEaEaE.JaEaE.JaE.JaEaEaE.JaE.JaE.JbraE.JaEaEaEaE.JaEaEaEbr.S.S.S.S.S.S.SaQ.SaQ.SaQaDaDaDaDaDaDbTaD#J#J#J#J#J#J#Jbebe.xbe.xbe.x.xbe.x.x.x.x.x#K.x.x.x.x.0aSaSaSaS#QaS#QaSbm.Tbm.Tbmbmbm#da2a2#d#d#d#d#d#d#dbT.XbTbTaDbTaDboaDbT.XbTbTaDboabab#fab#f#f#fab#f#fbTaDbTaDbTaDbTaDbTaDbTaDaDbTa3a3a3a3#ka3#ka3#k#kbT.XbTbobT.x#K.x#K.xbobTbobobT#S#S#S#S#S#S#S#Sa4a4a4#Sa4a4a4a4.1a4.1.1.1.1.1.1.1.1ao.1ao.1ao.1aoao.1#K#K#K#K#K#K#K#K#K#K#qao#qao#q#qao#qao#q#q#q#q#q#q#q#q#q#q.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#KbBbBaYaYaYaYaY.pbo.pbobo.pbobobobobobTbobTaEaEaEaEaEaEaEaEaEaEaEaEaEaEaE.JbraEaEaE.8.8.z.z.z.z.z.z.A", ".i.z.z.z.z.z.z.8aEaEaE.J.JaE.JaE.JaE.JaE.JaE.JaE.JaE.JaE.J.JaE.J.J.J.JaE.JaEaEaE.S.S.S.S.S.S.S.S.SaQ.SaQaDaDbTaDaDaDaD#JaQ#J#J#J#J#J#3.xbe.xbe.xbe.xbe.x.xbe.x.x.x.x.x.x.x.0.0aSaS#QaS#QaSaSbm.Tbm.p.Tbm.Tbma2#da2#d#d#d#daT#d#dbobTaDbobTaDbTaDbTbTaDbT.XbTbTabab#fab#f#f#f#f#f#fbTaDaDbTaDaDbTaDaDbTaDaDbTa3a3a3a3a3#k#ka3#k#k#kbTbTaD#C#kaV.x#K.x#K.xbobo.x.xaV#S#S#S#S#S#S#Sa4#Sa4#Sa4a4a4.1a4.1a4.1.1.1.1.1.1.1.1.1ao.1ao.1ao.1#K#K#K#K#K#K#K#K#K#K#Kao#qao#qao#q#q#q#q#q#qao#q#q#q#q#q#q.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#KbB.v.v.v.pbo.pbobo.pbobo.pbobobTboboboboaEaE.J.J.J.J.J.J.J.J.J.J.J.JaE.J.J.JaEaEaEaE.z.z.z.z.z.zay", "#4.z.z.z.z.z.z.8aE.J.JaEaE.JaE.JaE.JaE.JaE.JaE.JaE.JaE.JaE.JaE.JaEaEaE.JaE.JaE.S.S.S.S.S.S.S.SaQ.SaQ.SaQbTaDaDaDaDbT#JaQ#J#J#J#J#J#Jbe.x#3.x#3.xbe.xbe.xbe.x.xbe.xbe.x.xbe.0aSaSaSaS#QaS#QaSbm.T.p.T.p.Tbmbm#da2a2#d#d#d#d#d#dboaDbTaDbT.XbTbobT.XbT.XbTbTaDboabab#fab#f#f#f#f#fbTaDaDbTaDaDbTaDbTaDaDbTaDbT#Ra3a3#ka3a3#ka3#ka3#k#kbo#k#kaVaV#k.x#K.x#K.x.x#K.x#SaV#S#S#S#S#Sa4#Sa4#Sa4a4a4a4a4.1a4.1.1.1.1.1.1.1.1.1ao.1ao.1ao.1ao#K#K#K#K#K#K#K#K#K#K#Caoao#qao#q#qao#qao#q#q#q#q#q#q#q#q#q.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#KbI.vbQbQbQbQbo.pbo.pbo.pbo.pbobobobTboboaEaE.JaEaEaEaEaEaEaEaEaEaE.JaE.JaEaE.J.JaE.8.z.z.z.z.z.z.A", ".i.z.z.z.z.z.z.8.JaEaE.J.J.J.J.JaE.J.JaE.J.JaE.J.JaE.J.J.J.J.JaE.J.J.J.JaE.JaE.S.S.S.S.S.S.S.S.S.SaQ.SaQ.6aDaDaDaD#JaQ#JaQ#J#J#J#J#J#3.xbe.xbe.x#3.xbe.xbe.xbe.x.xbe.xbe.x.0aSaSaSaS#QaSaS#Q.p.p.p.p.pbm.Ta2a2#da2#d#d#d#d#d#dbobTboaDbTbTaDbTaDbTbTbTaDbobTaDabab#fab#f#fab#f#fbT.6bTaDbTaDaDbTaDbTaDaDbTaDa3a3a3a3a3#k#ka3#k#k#k#k#kaVaVaV#kaV.x#K.x#K.x#K.x#K#S#S#S#S#S#S#Sa4a4#Sa4a4a4a4.1a4.1a4.1a4.1.1.1.1ao.1ao.1ao.1ao.1ao#K#K#K#K#K#K#K#K#K#K#K#K#K#qao#qao#q#qao#q#q#q#q#q#q#q#q#q.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#KblbIblbdbQbdbQbdbo.pbobo.pbobo.pbobobobobo.J.JaE.J.J.J.J.J.J.J.J.J.JaE.J.J.J.JaE.JaEaE.z.z.z.z.z.zay", ".i.z.z.z.z.z.zaEaE.J.J.JaE.JaE.J.JaE.J.JaE.J.JaE.J.JaE.JaE.JaE.J.JaE.JaE.J.JaE.S.S.S.S.S.S.S.SaQ.SaQ.SaQaQ.6bT#JaQ#JaQ#JaQ#J#J#J#J#Ja1.x#3.x#3.xbe.xbe.xbe.xbe.xbe.x.xbe.0aS.0aSaSaS#QaS#QaS.p.T.p.T.p.pbma2#da2a2#d#d#d#daT#dbTaDbTbTaDbT.XbTboaDbT.XbTaDbT#fabab#fab#f#f#f#f#faDaDbTaDaDbTaDaDbTaDaDbTaDbTa3a3a3a3a3#ka3#ka3#k#k#k#k#kaV#kaV.x#K.x#K.x#K.x#K.x#SaV#S#S#S#S#Sa4#Sa4a4a4a4a4a4a4.1a4.1.1.1.1.1.1.1.1.1.1.1ao.1ao.1#K#K#K#K#K#K#K#K#K#K#K#K#Kaoao#qao#qao#q#qao#q#q#q#q#q#q#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.xblaE.JbIbQbQbQbQbQbQbQbo.pbo.pbo.pbo.pboboaE.JaE.J.J.JaE.J.JaE.J.JaE.J.JaE.JaE.JaE.J.J.8.z.z.z.z.z.z.A", ".i.z.z.z.z.z.z.8.J.JaE.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.JaE.JaE.S.S.S.S.S.S.S.S.S.SaQ.SaQaQ#JaQaQ#JaQ#JaQ#J#J#J#J#J#Ja1a1a1bJ#tbJ.x#3.xbe.xbe.xbe.xbe.xbe.0aS.0aSaS#QaS#QaS.p.p.p.p.p.p.T#Qa2a2#da2#d#d#d#d#d#dbobT.XbTbTaDbTaDbTbTaDbTbTboaDabababab#f#f#f#fab#fbTaDaDbTaD#K#K#KaDbTaDaDbT#Ka3a3a3#ka3#k#ka3#k#k#k#kaVaVaVaVaV.x#K.x#K.x#K.x#K.xaV#S#S#S#S#S#Sa4a4#Sa4a4a4a4a4a4a4.1.1a4.1.1.1.1.1.1aoao.1ao.1ao#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#Kao#qao#qao#q#q#qao#q#q#q.x.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.xaE.J.J.J.JbdbQbdbQbdbQbdbQbo.pbobo.pbobobobo.JaE.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.JaE.JaE.z.z.z.z.z.z.A", ".i.z.z.z.z.z.zaE.J.J.J.J.J.JaE.JaE.J.JaE.J.JaE.J.JaE.J.J.J.J.J.J.J.J.J.J.J.JaE.S.S.S.S.S.S.S.S.SaQ.SaQ.SaQaQaQaQaQ#JaQ#JaQ#J#J#J#J#J#Ja1#Ja1#JbJ.fbJ.x#3.xbe.xbe.xbe.xbeaS.0aSaSaS#QaSaS#Q.p.pbobo.p.p.pa2a2#da2a2#d#d#daT#d#dbTaDbTaDbobT.XbTbT.XbTboaDbTbTabababab#fab#f#f#f#f#fbTaDbTaU#f#K#K#K#KbTaD#K#K#Ra3a3a3a3a3#k#k#k#k#k#kaV#kaV#k#K.x#K.x#K.x#K.x#K.x#S#S#S#S#S#S#Sa4#Sa4a4a4a4a4a4a4.1a4.1.1.1.1.1.1ao.1.1.1ao.1ao.1#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K.a#x.a#x.a#x#q#q#q.x.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#KaE.J.J.J.J.JbQbQbQbQbQbQbQ.pbobo.pbo.pbo.pbT.J.J.JaE.J.JaE.J.JaE.J.JaE.JaE.J.J.J.J.J.J.J.8.z.z.z.z.z.z.A", ".i.z.z.z.z.z.z.8.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.S.S.S.S.S.S.S.SaQ.S.SaQaQ.SaQaQaQaQaQ#JaQ#J#J#J#J#J#Ja1#Ja1a1a1bJ#tbJ#tbvbe.xbe.xbe.xbe.0aS.0aSaSaSaS#QaS#Q.pbT.pbo.pboa2a2a2a2#da2#d#d#d#d#dbobTboaDbTaDbTbTaDbTaDbTaDbT.XbT#fabab#fab#f#f#f#f#f#f#f#faUaUaUaU#K#K#K#K#K#K#Ka3a3a3a3a3#ka3#k#k#k#kaV#kaV#k.x.x#K.x#K.x#K.x#K.x#KaV#S#S#S#S#S#Sa4a4#Sa4a4a4a4a4a4.1a4.1.1.1.1.1.1.1.1ao.1.1ao.1#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#A#L#x.a#x.a#x.a#x.a#x.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.J.J.J.J.J.J.J.JbdbQbdbQbdbQbdbo.pbobo.pbobobo.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.JaE.J.JaE.z.z.z.z.z.z.A", ".i.z.z.z.z.z.zaB.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.JaE.S.S.S.S.S.S.S.S.SaQ.SaQ.SaQaQaQ#JaQaQaQ#JaQ#J#J#J#J#J#Ja1#Ja1#Ja1.fbvbv#sbv.x#3.x#3.x#3.0.0aS.0aSaSaSaS#QaSbobTbobT.p.p#Qa2a2#da2a2#d#d#d#d#dbTaDbTbT.XbTboaDbT.XbTbT.XbTbTbTababab#fab#f#f#fab#f#f#faU#faU#RaU#K#Kbm#K#K#Ka3a3a3a3#ka3a3#k#k#k#kaV#k#kaV#k#K.x#K.x#K.x#K.x#K.x#S#SaV#S#S#S#S#Sa4#Sa4a4a4a4a4a4a4a4.1a4.1.1.1.1.1.1.1.1ao.1.1ao#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#A#x.a#x.a#x.a#x.a#x.a#x#x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x.J.J.J.J.J.J.J.J.JbQbQbQbQbQbQbQbobo.pbobo.pbo.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.JaB.8.z.z.z.z.z.z.A", ".i.z.z.z.z.z.z.8.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.S.S.S.S.S.S.S.S.S.SaQ.SaQ.SaQaQaQaQaQaQ#JaQ#J#J#J#J#J#J#J#Ja1a1#Ja1bQbvbv#s#s#sbv.xbe.xbe.0aS.0aSaSaS#QaS#QaSbobTbobTbo#Qa2a2a2a2#da2#d#da2#d#dbTboaDbTbTaDbTbTaDbTbTaDbTaDbTabababab#fab#f#f#f#f#f#f#faUaU#faU#K#K#K#C#K#K#Ka3#Ra3a3a3a3#k#k#k#k#k#kaV#k#k.x.x#K.x#K.x#K.x#K.x#KaV#S#S#S#S#S#S#Sa4a4#Sa4a4a4a4a4a4.1a4.1.1.1.1.1.1ao.1ao.1ao.1#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#Aaw#L.a#x#L#L#x.a#x#L#x.a.a#x.x#K.x#K.x#K.x#K.x#K.x#K.x#K.J.J.J.J.J.J.J.J.J.J.JbdbQbdbQbdbQbd.pbo.pbobo.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.z.z.z.z.z.z.A", ".i.z.z.z.z.z.zaB.JaB.JaB.J.J.JbS.J.JbS.J.JbS.J.JbS.J.JbS.J.J.J.J.J.J.J.J.JaE.S.S.S.S.S.S.S.S.SaQ.SaQ.SaQ.SaQaQaQ#JaQaQ#JaQ#J#J#J#J#J#Ja1#Ja1a1#J#x.s#s#s#s#s#sbd.xbe.0aS.0aS.0aSaSaSaSaSbTbTbTaDbo.pa2#Qa2a2#da2a2#d#d#d#d#daDbTaDbTaDbo#K#K#KbT.XbT.XbTbTab#fabab#fab#f#f#f#f#f#faUaU#faU#f#K#K#K#K#K#K#Ka3a3a3a3#ka3#ka3#k#k#k#k#kaV#k.x#K.x#K.x#K.x#K.x#K.x.x#SaV#S#S#S#S#Sa4#Sa4a4#Sa4a4#K#K#K#Ka4a4.1.1.1.1.1.1.1.1.1#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#Kawaw#A#x#L.a#x.a#x.a#x.a#x#x.a#x.x#K.x#K.x#K.x#K.x#K.x#K.J.J.JaB.JaB.JaB.JaB.J.J.JbQbQbQbQbQbQbfbobo.pbo.J.J.J.J.J.JbS.J.JbS.J.JbS.J.JbS.J.JaB.JaB.JaB.8.z.z.z.z.z.zaM", "aK.z.z.z.z.z.z.8.J.JaB.J.JaB.JaB.JaB.JaB.JaB.JaB.JaB.JaB.JaB.JaB.JbSaB.J.J.J.S.S.S.S.S.S.S.S.S.S.SaQ.SaQaQaQaQaQaQ#J#JaQ#J#J#J#J#J#J#J#Ja1a1#Ja1.abd.sbvbv#s#sbqbe.x.0.0aS.0aSaSaSaSaSaSbTaDaDbTaDbo#Qa2a2a2a2#da2#d#d#d#d#dbTbobT.X#K#d#K#K#K#KbTbTbTaD#Kababababab#f#fab#f#f#f#f#faU#faU#K#K#K#K#Kbm#C#Ka3a3a3a3a3a3#k#k#k#k#k#k#k#k.x#C.x#K.x#K.x#K.x#K.x#K.x#S#SaV#S#S#S#Sa4a4#Sa4#Sa4#K#K#K#K#K#K.1a4.1.1.1.1.1.1.1#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K.J.J.JbS#L#x.a#x#L.a#x#L.a#x#L.a#x.x#K.x#K.x#K.x#K.x#K.x.J.JaB.J.J.J.J.J.J.J.JaB.J.JbQbdbQbdbQbfbfbfbf.J.J.JaB.JaB.JaB.JaB.JaB.JaB.JaB.J.JbS.J.J.JaB.J.J.z.z.z.z.z.z.A", ".i.z.z.z.z.z.zaB.JaB.JaBbS.JaB.JbS.JaB.JbS.JaB.JbS.JaB.JbS.JaB.J.JaB.JbS.J.J.S.S.S.S.S.S.S.S.S.SaQ.SaQaQaQaQaQ#J#JaQaQ#JaQ#J#J#J#J#J#Ja1#Ja1a1#Ja8#x.s.sbq#sbv.s.sbe.0.0.0aS.0aSaSaSaSaSbTaDaDaDbT#Qa2#Qa2a2#da2a2#d#da2#d#dbTaDbT#daTaTaT#K#K#K#K#K#K#K#Kabababab#fab#f#f#f#f#f#faUaU#faU#K#K#K#K#K#K#K#Ka3#Ra3a3a3a3#ka3#k#k#k#k#k#k#K.x#K.x#K.x#K.x#K.x#K.x#K.x#S#S#S#S#S#Sa4#Sa4#Sa4#K#K#K#K#K#K#K#K#K#K#x#L.1.1.1#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#C.J.JbSaB.J.J.a#x.a#x#L#x.a#x.a#x#L#x.a#K.x#K.x#K.x#K.x#K.J.JaB.J.JaB.JaB.JaBaBbS.JaB.J.JbQbQbdbIbfbIbfbS.JaBbS.JaB.JbS.JaB.JbS.JaB.JbS.JaB.JaBaB.JaB.JaBaE.z.z.z.z.z.zaM", "aK.z.z.z.z.z.z.8aB.JaB.J.JaB.JaB.JaB.JbSaB.J.JaB.JaB.JbSaB.J.JaB.JaB.JaB.J.J.S.S.S.S.S.S.S.S.S.SaQ.SaQaQb#.f.f.f.f.6b#aQ#J#J#J#J#J#J#J#Ja1a1#Ja1a1.a#xbd.s.sbv.sbQ.0.0.0aS.0aSaSaSaSaSaSaD.6aD.6aDa2a2#Q#d#Q#da2#d#d#d#d#d#d#d#daTaTaTaTaT#K#K#K#K#K#K#K#Kabababab#fab#f#f#f#f#f#faU#faU#K#K#K#Kbm#C#K#K#Ka3a3a3a3#ka3#ka3#k#k#k#k#k.x.x#K.x#K.x#K.x#K.x#K.x#K.x.x#KaV#S#S#S#S#Sa4a4#S#K#K#K#K#K#K#K#K#K#x#L#x#L#x#L#L#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K.JaB.J.JaB.JaB#x.a#x.a#x.a#x#L.a#x.a#x#L.x#K.x#K.x#K.x#K.JbS.JaBbS.JaB.JaB.J.JaB.JbSaB.J.JbS.J.J.JbSaB.JbS.JaB.JbSaB.JaB.JbSaB.J.JaB.JaB.JaB.J.JaB.JaB.J.J.z.z.z.z.z.z.A", ".i.z.z.z.z.z.z.J.JaB.J.JaBbSbS.JaBbS.JaB.JaBbSaBbS.JaB.JaBbSaBbS.JaBbS.JaBaE.S.S.S.S.S.S.S.S.S.SaQ.S.f.f.f.f.f.f#waD.6b#aQ#J#J#J#J#Ja1#Ja1#Ja1a1#J.a.a#xbQ.sbdbQ#x.0.0.0.0aS.0aSaSaSaSaSaDaD.6aDa2#Qa2#Qa2a2a2a2a2#da2#d#d#d#d#daT#daTaTaT#K#K#K#K#K#K#Kababab#fababab#f#f#f#f#faU#faU#f#K#K#K#K#K#K#K#K#K#Ra3a3a3a3a3a3#k#k#k#k#k#k.x#K.x#K.x#K.x#K.x#K.x#K.x#K#K.x.x.x.x#S#S#S#S#S#K#K#K#K#K#K#K#K#K#K#L#x#L#x#L#x#L#x#L#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K.JbS.JbSaBbSaBbS.J#x.a#x.a#L#x.a#x.a#L#x.aaw.x#K.x#K.x#C.JaBbSaB.JaB.JaBbS.JaBbS.JaB.JaBbSaB.JaBaBbSaB.JaB.JaBbS.JaB.JaBbS.JaB.JbSaBbSaB.JbS.JaBbS.JaB.JaBaE.z.z.z.z.z.zaM", "aK.z.z.z.z.z.zaEaBaB.JaBbSaBaBbSaBbSaBbSaBbSaB.JaBbSaBbSaB.JaBbSaBbSaB.JbSaB.S.S.S.S.S.S.S.S.S.SaQb#.f#wbc#w#wbc.6aDaD.f.f#J#J#J#J#J#Ja1a1a1#Ja1a1.6.a.a#x#x#x#L.a.0.0.0aS.0aSaSaSaSaSaS#QaS#Q#Q#Qa2#Qa2a2a2#da2#d#d#d#d#d#d#daTaTaTaTaT#K#K#K#K#K#K#K#Kababababab#f#f#fab#f#faU#faU#f#K#K#K#Kbm#C#K#K#K#Ra3a3a3a3a3#k#ka3#k#k#k#k.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x.x#K#K#K.x.x.x.m#K#K#K#K#K#K#K#K#K#K#K#K#x#L#x#L#x#L#x#L#x#L#K#K#K#K#K#K#K#K#K#K#K#K#K#K#KbSaBaBaB.JaBbSaBbSaB#x.a#x#L.a#x#L#x.a#x.aawaw.x#K.x#K.JbS.JaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaB.JaBbSaBbSaBbSaBbSaBbSaBaBbSaBaB.JaBbSaBaBbSaBbSaB.JaBaB.J.z.z.z.z.z.z.A", ".i.z.z.z.z.z.zaBaBaBbSaB.JaBbSaB.JaBbSaB.JaBbSaBbSaB.JaBbSaBbSaB.JaBbSaB.JaE.S.S.S.S.S.S.S.S.S.S.S.f#w.6.6.6.6.6.6aD.6#w.f#J#J#J#J#J#J#Ja1#Ja1a1#JaDa8a8.a.a.a.aa8.0.0.0.0aS.0aSaSaSaS#QaS#QaS#Q#Qa2#Qa2a2a2a2#da2a2#d#d#d#d#daT#daT#daT#K#K#K#K#K#K#K#KaTabababababab#f#f#f#faU#f#faU#K#K#K#K#K#K#K#K#K#Ka3a3#R#ka3a3a3#k#ka3#k.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K#K.x.x#KbDambv#sbv#K#K#K#K#K#K#K#K#K#K#K#K#L#x#L#x#L#x#L#x#L#x#L#K#K#K#K#K#K#K#K#K#K#K#KaB.JaB.JbSaBbSaB.JaBbSaBbS#x.a#x.a#x.a#x.aawaw.jaw#A#H.JbSaBaB.JaBbSaB.JaBbSaB.JaBbSaBbSaB.JaB.JaBbSaBbSaBbSaB.JaBbSaBbSaB.JbSaBbSbSaB.JaBbSaB.JaBbSaB.JaBaBaE.z.z.z.z.z.zaM", "aK.z.z.z.z.z.zaEaBaB.J#pbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbS.S.S.S.S.S.S.S.S.S.SaQ.f#w.6aDaDaDaDboboaD#wbc.f#J#J#J#J#J#Ja1#Ja1a1#J.TaD.6a8.aa8.aa8.6.0.0.0aS.0aSaSaSaS#QaSaS#Q#Q#Q#Qa2a2#Qa2a2#da2a2#d#d#d#d#daT#daT#daT#K#K#K#K#K#K#K#K#Kabababab#fab#f#f#f#f#f#faU#f#K#K#K#Kbm#C#K#Kbm#K#K#Ra3a3a3a3#k#ka3#ka3#k.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#KaibD#sbv#sbv#s#C#Kbm#C#Kbm#C#K#K#K#K#K#x#L#x#L#x#L#x#L#x#L#K#K#K#K#K#K#K#K#K#K#KbSaBbSaBbSaBbSaBbSaBbSbSaBbSaBbSaBbSaBbSaBbSbSaw#HawbSaBaBbSbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBaBaB.z.z.z.z.z.z.A", ".i.z.z.z.z.z.zaBaBaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaB.J.S.S.S.S.S.S.S.S.S.S.SaD.6aDaD.6aD.6aD.pbobc#w.f#J#J#J#J#J#J#Ja1a1#Ja1.pboaDaDa8a8a8.6aD.0.0.0.0aS.0aSaSaSaS#QaS#Q#Qa2#Qa2#Qa2a2a2a2#da2#d#d#d#d#d#daTaTaTaT#K#K#K#K#K#K#K#K#Kababababab#fab#f#f#f#faU#faU#K#K#K#C#K#K#K#K#K#K#K#C#Ra3a3a3a3a3#k#ka3.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#Kaiamaiai#sbvbvbv#s#K#K#K#K#K#Kbm#K#K#K#K#K#x#L#x#L#x#L#x#L#x#L#K#K#K#K#K#K#K#K#K#KaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBaBbSbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBaE.z.z.z.z.z.zaM", "aK.z.z.z.z.z.zaEaBbSaBbSaBbSaBbSaBaBbSaBaBbSaBaBbSaBaBbSaBbSaBaBbSaBbSaB.J.S.S.S.S.S.S.S.S.S.S.SaDaDaDaDaDaDaDaD.6bo#w#w.f#J#J#J#J#Ja1#Ja1#Ja1a1.pboboaD.6aD.6aDbo.0.0.0aS.0aSaSaS#QaS#QaS#Q#Q#Q#Qa2#Qa2a2a2a2a2#d#d#d#d#d#daTaT#daT#K#K#K#K#K#K#K#K#K#Kabababababab#f#f#f#f#f#f#f#K#K#K#Kbm#K#K#K#K#K#K#K#K#K#Ra3a3#ka3a3a3.x.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#KbDaiaBbSbD#sbq#sbvbvam#K#K#K#K#K#K#K#K#K#Kaw#L#x#L#x#L#x#L#x#L#x#K#K#K#K#K#K#K#KbSbSaBaBbSaBaBbSaBbSaBaBaBbSaBaBbSaBaBbSaBaBbSaBbSaBaBbSaBbSaBaBbSaBaBbSaBaBbSaBaBbSaBaBbSaBaBbSaBaBbSaBaBbSaBaBbSaBaBbSaBaBaBaBbSaBaBbSaBbSaBbSaBbSaBbSaBbSaBaB.z.z.z.z.z.z.A", ".i.z.z.z.z.z.zaBaBaBbSaBaB#pbSaB#pbSaB#pbSaB#pbSaBbS#pbSaB#pbSaB#pbSaBaB.J.S.S.S.S.S.S.S.S.S.SaDaDaDaD.6aDaD.6aDaDaDbT#w.f#J#J#J#J#J#J#J#Ja1a1#J.T.pbobT.XaDaDbo.p.0.0.0.0aS.0aSaSaS#QaS#Q#Q#Q#Qa2#Qa2#Qa2a2#da2a2#d#d#d#d#d#d#daT#d#K#K#K#K#K#K#K#K#K#Kababababab#fab#fab#f#f#f#f#K#K#K#K#K#K#K#Cbm#K#K#K#K#K#K#Ka3a3a3a3.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#CbSaBaBaBaBbS#sbvbv#sbv#s#K#K#K#K#Cbm#K#K#K#Kaw#x#L#x#L#x#L#x#L#x#L#K#K#K#K#K#K#KbSaB#pbSaBbS#pbSaB#pbSaBbS#paBbS#paBbS#pbSaBbS#paBbS#paBbS#paBbS#paBbS#paBbS#paBbS#paBbS#paBbS#paBbS#paBbS#paBbS#paBbS#paBbS#pbSaB#pbSaB#pbSaB#pbSaB#pbSaBaBaBaB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaBaBaB#pbSaBbSaBaBbSaBbSaBbSaBbSaB#pbSaBaBbSaBaBbSaBaBbS#p.J.S.S.S.S.S.S.S.S.S.S.6aDaDaDaDaDaDaDaD.6aDaD#w.f#J#J#J#J#Ja1#Ja1a1#J#Kbc.TbobobTbobobo.0.0.0.0aS.0aSaSaSaS#QaS#Q#Q#Q#Q#Q#Qa2#Q#da2a2#da2#d#d#d#daT#d#d#d#C#K#K#K#K#K#K#K#K#K#K#Kababababab#f#f#f#f#f#f#K#K#K#Kbm#C#K#K#K#K#C#K#K#K#K#K#K#K#K.x.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#KbSaBbS#pbS#pbSaBbv#sbqbv#saibm#C#K#K#K#K#K#K#Kawaw#L#x#L#x#L#x#L#x#Lawaw#K#K#KawaBaBbSaBbS#paBbSaBbSaBaBbSaBbSaBbSaBbSaBaBbS#paBbSaBaBbSaBaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBaBbSaBaBbSaBaBbSaBaBaB.z.z.z.z.z.z.A", ".i.z.z.z.z.z.zaBbSaBbSaB#paB#pbS#paB#paB#paB#pbSaBaBbSaB#pbS#paB#pbSaBaB.J.S.S.S.S.S.S.S.S.S.SaDaDaD.6aD.6aD.6aDaDaDaDbT#w#J#J#J#J#J#Ja1#Ja1a1#wbmbc.p.pbo.pbo.p.0.0.0.0.0aS.0aSaS#QaS#Q#Q#Q#Q#Q#Q#Qa2#Qa2#Q#da2a2#d#d#d#d#d#d#d#K#K#K#K#K#K#K#K#K#K#K#K#K#Kababababab#f#fab#f#f#K#K#K#K#K#K#K#Kbm#K#K#Kbm#K#K#K#K#K#K#K#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.xaBaB#pbSaB#paB#paBbDbv#sbvambD#K#K#K#Cbm#K#K#Kawawaw#L#x#L#x#L#x#L#xawawawawawbS#pbSaB#paBbSaBaB#paB#pbS#paB#paB#paB#pbSaB#pbSaBaBbS#paB#pbS#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#pbS#paB#pbS#paB#pbSaBaBaE.z.z.z.z.z.zaM", "aK.z.z.z.z.z.zaBaBaBaB#pbSaBaBaBaBbSaBbSaBbS#paB#paB#paBaBaBaBbS#paB#pbSaB.S.S.S.S.S.S.S.S.S.S.6aDaDaDaDaDaDaDaD.6aDaDaD#w#J#J#J#J#J#J#Ja1a1#J#K#Kbc.T.T.p.p.pbm.0.0.0.0aS.0aSaSaSaSaS#QaS#Q#Q#Q#Qa2#Qa2a2a2#da2#d#d#d#d#d#daT#d#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#Kabab#fab#f#f#f#K#K#K#Kbm#C#K#K#K#K#K#K#K#K#K#K#K#K#K#K#Kai#m#m#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.xaBbS#paBaB#pbSaBbS#paBaBaibDbDambDbm#K#K#K#K#K#KawawbSaBbS#L#x#L#x#LawawawawbSaB#paBaBbS#paB#paBbSaBbSaB#paBbSaBbSaBbSaB#paBaB#paB#paBaBbSaBaBaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBbSaBaBaBbSaBaBaBbSaB#paB#paB.z.z.z.z.z.z.A", ".i.z.z.z.z.z.zaBaB#pbS#paB#pbS#pbS#p#paB#p#paB#pbS#pbS#pbS#pbSaB#paBbSaB.S.S.S.S.S.S.S.S.S.S.SaDaD.6aDaDaDaD.6aDaDaDaDaD.6#J#J#J#J#J#Ja1#Ja1#t#w#Kbmbm.Tbm.Tbmbm.0.0.0.0.0aS.0aSaS#QaS#QaS#Q#Q#Q#Qa2#Qa2a2a2a2a2a2#d#d#d#d#d#d#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#Kabab#faa#K#K#K#K#K#K#K#K#Kbm#K#K#Cbm#K#K#Cbm#K#K#K#mbD.Qai#m.x#K.x#K.x#K.x#K.x#K.x#K.x#K.x#K.xaB#pbS#pbS#paB#p#pbSaB#paBaBbDamaibDam#K#K#K#KbDaBaB#p#paB#paBbSaBbSaBbS#pbSaB#paBbS#p#paBbS#pbS#paB#p#paBbS#p#paB#p#paB#pbS#pbS#pbS#pbSaB#p#pbS#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#pbS#p#p#pbSaB#p#pbSaBaBaB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaBaBaBaB#pbS#paB#paBbS#pbSaBbS#paBaB#paB#paB#p#pbS#pbS#paB.S.S.S.S.S.S.S.S.S.S.S.6aDaDaD.6aDaDaDaD.6aDaDaDaD#J#J#J#J#J#J#Ja1a1#t#K#K#K#Kbmbmbmbm#K.0.0.0.0aS.0aSaSaSaSaS#QaSaS#Q#Q#Q#Qa2#Q#da2#da2#d#d#d#d#d#d#d#C#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#Kaa#K#K#K#K#K#Kbm#K#K#K#K#K#K#K#K#K#C#K#K#K#Kbm.QbD.Q#mbD.QbD.Q#K.x#K.x#K.x#K.x#K.x#K.x#K.xaBaB#paBaB#pbS#pbS#p#p#pbS#paB#paBaBaibDambDamaBaB#pbS#pbS#pbS#p#p#p#paB#paB#pbS#pbS#paBbS#paB#paBbS#pbSaBbS#paBbS#pbSaBbS#paB#paBaB#paB#pbS#pbS#paBbS#pbSaBbS#pbS#pbSaBbS#pbS#pbSaBbS#pbS#pbSaBbS#pbS#pbSaBbS#pbS#pbSaBbS#paB#paBbS#p#p#pbSaB#paB#paB.z.z.z.z.z.z.A", ".i.z.z.z.z.z.zaBaB#pbSaB#paB#pbSaB#paB#p#paB#pbSaB#pbSaB#pbSaB#paB#paB.J.S.S.S.S.S.S.S.S.S.S.SaDaD.6aDaDaDaD.6aDaDaD.6aD.6#J#J#J#J#J#Ja1#J.x#t.x#K#K#K#Kbm#K#K#K.0.0.0.0.0aS.0aSaS#QaS#QaS#QaS#Q#Qa2a2#Qa2a2a2a2a2#d#d#d#d#d#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#Cbm#K#K#Cbm#K#K#Kbm#K#K#K#K.QaBaBaBaBai#m.Q#m#K.x#K.x#K.x#K.x#K.x#K.xaB#pbSaB#pbS#paBaB#paBaB#paB#paB#pbS#paB#paBaB#paB#paB#paB#paB#paBaB#pbSaB#pbS#paB#paB#paB#paB#pbSaB#p#paB#p#p#paB#paB#p#paB#paB#pbSaB#pbS#paB#paBaB#paB#paB#p#paB#paBaB#p#paB#paBaB#p#paB#paBaB#p#paB#paBaB#p#paB#paBaB#p#paB#paBaB#paBaBaBaB#pbSaBaBaB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaBaB#paB#paB#paB#p#paBaB#paB#paB#p#paB#paB#paB#paB#paB#paB.S.S.S.S.S.S.S.S.S.S.S.6aDaDaD.6aDaDaDaD.6aDaDaDaD#J#J#J#J#J#J#Jbe.x#K.x#K.x#K#Kbm#K#K#K.0.0.0.0aS.0aSaSaSaSaS#QaSaS#Q.x#Q#Qa2#Qa2a2a2#da2a2#d#d#d#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#Kamamakam#Kbm#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#KaB#p#paB#pbSai#mai#m.Q#K.x#K.x#K.x#K.x#K.xaB#paB#paB#paB#paBaB#pbS#paBbS#paB#paB#paB#paB#pbS#paB#paB#paBbS#paB#paB#paB#paB#paBaB#paB#paB#paB#paBaB#paBaBaB#paB#paBaB#pbS#paB#p#paBaB#paB#paB#paB#paB#paBaB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paB#paBbS#paBbS#paBbS#p#paB#paB#paB.z.z.z.z.z.z.A", ".i.z.z.z.z.z.zaBaBaB#paB#p#pbSaB#paB#p#paB#paB#pbS#paB#pbS#paB#paB#paB.J.S.S.S.S.S.S.S.S.S.SaDaDaDaDaDaDaDaD.6aDaDaD.6aD.6#J#J#J#J#Ja1#J.x#t.x.x.x#K.x#K#K#K#K.x.0.0.0.0.0aS.0aSaSaS#QaSaS.x.x#K.x.x#Qa2#Qa2a2a2a2#da2a2#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#Kamamambiamakam#K#K#K#K#Cbm#K#K#Cbm#K#K#Cbm#K#CaB#paB#pbS#p#paBaB.QbD.Q#m#K.x#K.x#K.x#K.xaB#paB#p#paB#paB#p#pbSaB#paB#p#p#paB#p#paB#pbS#paB#paB#p#pbSaB#p#p#pbS#p#p#pbS#paB#pbS#p#pbSaB#pbSaB#p#paB#p#pbS#p#pbSaB#pbSaB#paB#paB#pbS#p#paB#pbSaB#pbSaB#pbS#p#pbSaB#pbSaB#pbSaB#pbSaB#pbSaB#pbSaB#pbSaB#pbSaB#pbSaB#pbS#p#paB#p#p#p#p#paB#paB#paBaBaB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaB#p#paB#p#p#p#p#p#p#paB#p#p#p#paB#p#p#p#p#p#p#p#p#pbS#paB.S.S.S.S.S.S.S.S.S.S.6.6aD.6aDaD.6aDaDaDaDaDaDaD#J#J#J#J#J#J#Jbe.x.x.x#K.x.x#K.x.x#K.x.x.x.0.0.0aS.0aSaSaSaSaSaS.x#K.x#K.x#K.x#Qa2a2#Q#da2a2#d#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#KamaB#paB#pamakambm#C#K#K#K#K#K#K#K#K#K#K#K#K#KaB#p#p#p#paB#p#p#paB#p.QbD.Q#m#C.x#K.x#KaB#paB#p#paB#p#p#paB#p#p#p#p#p#p#paB#p#p#p#p#p#p#p#p#p#p#paB#p#p#paB#p#p#paB#p#p#p#p#p#paB#p#p#p#p#p#p#paB#p#p#p#p#paB#p#p#p#p#p#p#p#p#paB#p#paB#p#p#p#p#p#p#p#p#p#paB#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paB#p#paB#paB#p#p#p#p#paB#paBaB.z.z.z.z.z.z.A", ".i.z.z.z.z.z.zaBaB#p#p#paB#paB#paB#p#p#paB#paB#p#p#paB#paB#paB#paB#p#p.J.S.S.S.S.S.S.S.S.S.S.6.6aDaDaDaDaDaDaD.6aDaD.6aDaQaQ#J#J#J#Jbe.x.x.x.x.x#t#K.x.x#K.x.x#K#t.0.0.0.0.0aS.0aSaSaSaS#K.x#K.x#K.x#C.x.x.x.x.x.x#x#x#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#KaB#p#p#paB#paB.5amambm#K#K#Kbm#K#K#Cbm#K#K#KaB#paB#paB#p#p#paB#p#paB#paB#pbD#m.x#K.xaB#p#p#p#paB#p#p#paB#p#p#p#paB#paB#p#p#paB#paB#paB#paB#paB#p#p#p#paB#p#paB#p#p#paB#paB#paB#p#p#paB#p#paB#p#p#paB#paB#p#p#p#paB#p#p#paB#paB#p#p#p#p#p#p#paB#p#paB#paB#p#p#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#p#p#paB#paB#paB#p#p#paB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaB#paB#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paB#p.S.S.S.S.S.S.S.S.S.S.S.6.6aD.6aD.6aDaDaDaDaDaD#JaQ#J#J#J#Jbe.xbe.x.x.x.x.x.x.x#K.x.x#K.x.x.x.x.0.0.0.0aS.0aS.x.x.x#K.x#K.x#K.x#K#K#K#K.x#x#L#x.a#x#L#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#KaB#p#paB#p#p#p#p#pamakam#K#K#K#C#K#K#K#K#K#K#K#p#p#p#p#paB#p#p#p#p#p#p#p#p#p#paB#paB#p#paB#p#p#p#p#p#p#p#p#p#paB#p#p#p#p#paB#p#p#p#p#p#p#p#p#p#p#paB#p#p#p#p#p#p#paB#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paB#p#p#p#p#p#p#p#p#p#paB#p#paB#p#p#p#p#p#p#p#p#paB#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paB#paB.z.z.z.z.z.z.A", ".i.z.z.z.z.z.zaB#p#p#p#p#p#p#p#p#p#p#paB#p#p#p#p#paB#p#p#p#p#p#p#p#paB.S.S.S.S.S.S.S.S.S.S.S.S.S.6aDaDaDaDaDaD.6aD.6#JaQ#J#J#J#J#J.xbe.xbe.x.x.x.x.x.x.x.x#t.x.x#K.x#t.x.x.x.x.0.x#K.x#K.x#K.x#K.x#K.x#K.x.x.x#K#x.a#x#x#L#x#x.a#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#p#p#p#p#p#p#p#paB#p#pamak#K#K#Kbm#K#K#Cbm#K#paB#p#paB#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paB#p#p#p#paB#p#p#p#p#p#p#paB#p#p#p#paB#paB#p#paB#paB#p#p#p#p#paB#paB#p#p#p#p#p#p#p#p#p#paB#p#paB#p#p#paB#p#p#p#p#p#p#p#p#p#paB#p#p#p#p#p#p#p#p#p#p#p#paB#p#p#p#p#p#p#p#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#p#p#p#p#paB#p#p#p#p#p#p#p#p#paB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaB#p#paB#p#paB#p#paB#p#p#p#paB#p#p#p#p#paB#p#paB#p#paB#p.S.S.S.S.S.S.S.S.S.S.S.S.S.S.6.6.6aD.6aDaDaD#JaQ#JaQ#J#J#Jbebe.xbe.xbe.x.x.x.x.x.x.x#K.x.x.x.x#K.x.x#K.x.x#K.x#K.x#K.x#K.x#K.x#K.x#K#K.x#K#x#x#L#x.a#x#L#x#x#K#K#K#K#K#K#K#K#K#K#K#K#K#K#KaB#paB#p#p#p#p#p#p#p#p#p#p#pakam#K#K#K#K#K#K#C#p#p#p#p#p#p#paB#p#paB#p#paB#p#paB#p#p#paB#p#paB#p#paB#p#p#p#paB#p#paB#p#p#p#paB#p#p#p#p#p#p#p#p#p#p#paB#paB#p#p#p#p#paB#paB#p#paB#p#p#p#p#p#p#p#p#p#p#p#paB#p#p#paB#p#paB#p#p#paB#p#p#paB#p#paB#p#p#p#p#paB#p#p#paB#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paB#p#paB#p#p#paB#p#paB#p#p#paB#p.z.z.z.z.z.z.A", ".i.z.z.z.z.z.z#paB#p#p#p#p#p#p#p#p#paB#p#p#p#p#paB#p#p#p#p#p#p#p#p#paB.S.S.S.S.S.S.S.S.S.S.S.S.S.S.SaQaQaQaQaQ#JaQ#JaQ#JaQ#J#J.xbe.xbe.xbe.xbe.xbe.x.x.x.x.x.x.x#K#t.x.x#K.x.xbIawbIawbI.x#K.x#K.x#K.x#K.x#K.x#K.x.x#x#L#x#x#L#x#L#x.a#K#K#K#K#K#K#K#K#K#K#K#K#K#p#p#p#paB#p#paB#p#paBaH#paB#p#pak#K#Cbm#K#K#paB#p#paB#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paB#p#p#paB#p#p#p#paB#p#p#paB#p#p#p#paB#p#paB#p#p#p#p#paB#paB#p#p#p#paB#p#p#p#paB#p#paB#p#paB#paB#p#p#p#p#p#paB#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paB#p#p#p#p#p#p#p#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#paB#p#p#paB#p#p#p#p#p#p#p#p#p#paB#p#paB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaBaBaHaB#p#paB#p#p#p#p#p#p#p#p#p#p#p#p#p#paB#p#p#paB#p.S.S.S.S.S.S.S.S.S.S.S.S.S.S.SaQ.SaQaQaQaQaQaQ#JaQ#JaQ#J#Jbe.xbe.xbe.xbe.xbe.x.xbe.x.x.x#t.x.x.x#K.x#t#KbIblblawblbIbIaw#K.x#K.x#K.x#K.x#K.x#K.x#K.x#x#L#x.a#x#x#x#L#L#K#K#K#K#K#K#K#K#K#KaB#p#p#paH#paH#paH#p#p#p#p#paH#p#p#paBakam#p#paH#paHaB#paHaB#paHaB#paHaB#paHaB#paHaB#paHaB#p#p#p#paB#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paHaB#paH#p#paH#p#paH#p#paH#p#paH#p#paH#p#p#paBaH#p#p#p#p#p#paH#p#p#p#paB#p#p#p#p#p#paB#p#p#paBaH#p#p#p#p#p#p#p#p#p#p#paBaH#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paH#p#paBaH#p#paBaH#p#p#p#paBaB.z.z.z.z.z.z.A", "aK.z.z.z.z.z.zaBaH#p#p#paH#paHaB#p#paHaB#paHaB#paHaB#p#paH#p#p#p#paB.S.S.S.S.S.S.S.S.S.S.S.S.S.SaQ.SaQaQ.SaQ#JaQaQaQ#JaQ#Jb#bebe.xbe.xbe.xbe.xbe.xbe.x.x.x.x.x.x.x.x.x.x#K.x#HbI#HbIblawbl#HbI.x#K.x#K.x#K.x#K.x#K.x#K.x#H#A#L#x#L#L#x.a#xawaw#K#K#K#K#K#K#K#K#p#paH#p#p#paB#p#paBaH#paHaB#p#paBaH#p#paBaH#p#paB#p#p#p#paH#p#p#p#p#paH#p#p#p#p#paH#p#p#paHaBaH#paH#paH#paHaBaH#paHaBaH#paH#paH#paH#p#p#p#paBaH#paB#p#paBaH#p#p#p#p#paHaB#p#p#p#paH#p#p#p#p#p#p#p#p#p#p#paH#paH#p#p#p#paH#paH#p#p#p#p#paHaB#paHaB#paHaB#p#paH#paB#paHaB#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paHaB#p#p#p#p#p#p#p#paH#p#p#p#p#paHaB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaB#p#p#p#p#p#paH#paH#p#paH#p#paH#p#paH#p#p#p#p#p#p#p.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.SaQ.SaQaQaQaQaQ#JaQ#J#Jbe.x.xbe.x#3.xbe.xbe.xbe.xbe.xbe.x.x.x.x.x.x.x.x#Kbl#H#p#p#pbI#HbIblawbI.x#K.x#K.x#K.x#K.x#K.x#K#Haw#H#x#x#L#x#Lawawaw#K#K#K#K#K#K#p#p#paB#paH#paH#p#paHaB#p#p#paH#p#p#p#paH#p#paBaH#paH#paHaB#p#paH#paHaB#p#paH#paHaB#p#paHaB#p#p#paB#p#p#p#p#p#p#p#p#p#p#paB#p#paB#p#paHaBaH#p#p#p#paH#paH#p#paBaH#paBaH#p#paHaBaH#p#p#paBaH#paBaH#paBaH#paBaH#p#paBaH#paBaH#p#paBaH#p#paB#paH#p#p#paH#paH#p#p#p#paH#p#paH#paBaH#paBaH#paBaH#paBaH#paBaH#paBaH#paBaH#p#p#p#paBaH#p#paBaH#p#p#paBaH#paBaHaB.z.z.z.z.z.z.A", ".i.z.z.z.z.z.zaHaB#paHaBaH#p#p#paHaB#p#p#p#p#p#p#p#p#paHaB#p#paB.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.SaQ.SaQaQaQaQ#JaQaQ#Jb##t#t.x.x.x.x.x#3.x#3.xbe.xbe.xbe.xbe.xbe.x.x.x.x.x.x#p#p#paH#p#p#pblawblbIblaw#K.x#K.x#K.x#K.x#K.xaw#Haw#p#paw#x#Aawaw#Aawaw#K#Kaw#p#p#p#paH#p#p#paBaH#p#p#p#paH#paBaH#paH#p#p#p#paH#p#p#p#p#p#p#paH#p#p#p#p#paH#p#p#p#p#paH#p#p#paH#paH#paHaBaH#paHaBaH#paH#paH#paH#paH#p#p#p#p#p#paH#p#p#paB#paH#p#paH#p#p#p#p#p#p#paHaB#paH#paHaH#p#paH#p#paH#p#p#paH#p#paH#p#p#paH#p#p#paH#p#p#p#p#p#p#p#paHaB#p#p#p#p#p#p#paHaH#paHaH#paHaH#paHaH#paHaH#paHaH#paHaHaB#p#paHaH#p#p#paH#paHaB#paH#paH#paHaB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaBaH#paH#p#paHaB#p#paHaH#paHaBaHaHaBaH#paHaH#p#p.a.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.SaQaQ.SaQaQaQaQaQ#Jb#.f#t.x.x#t.xbe.x.x.xbe.xbe.xbe.xbe.xbe.xbe.xbe.x.x.x.xaBaH#p#p#p#paH#p#p#pblawblbI#HbI.x#K.x#K.x#K.x#K#H#p#p#p#p#p#p#p#p#p#p#pawaw#p#p#paH#paH#p#paH#p#p#p#paH#p#p#p#p#p#p#p#paH#paH#p#p#paH#paH#p#paHaB#paH#paH#p#p#paH#paH#p#p#paH#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paH#paH#paH#p#p#paH#paH#p#p#p#p#p#paH#paH#paH#p#paH#p#p#p#p#p#p#p#p#p#p#p#paHaB#paH#p#p#paHaB#paH#paHaBaH#paHaBaH#paBaH#paHaH#paBaHaHaBaH#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paHaH#p#p#paBaH#p#p#p#paH#p#p#p#p#p#paB.z.z.z.z.z.z.A", "aK.z.z.z.z.z.zaHaB#p#p#paH#paH#paH#p#p#p#paH#p#paH#p#p#p#paHaB.a.S.S.S.S.S.S.S.S.S.S.S.S.S.S.SaQ.SaQaQaQaQbcbcbcbcbc#w#w#K#K#K.x.x.x.x.x.x.x.x#3.x#3.xbe.xbe.xbe.x.x.x.xaH#paH#paH#paHaBaH#paH#p#pbI#HbIblbI.x#K.x#K.x#K#H#p#p#paH#paH#paH#paH#paH#p#p#paHaBaH#p#p#paH#p#paH#paH#p#paHaH#paHaH#paHaBaH#p#paHaBaH#paBaH#p#paH#paBaH#p#paHaBaH#paBaH#paH#paH#paH#paHaH#paHaH#paHaHaBaHaH#paHaH#paHaBaH#p#p#paH#paH#paH#p#paH#paH#paHaBaH#p#p#p#paH#p#paH#paH#p#paH#paH#paH#paH#paH#p#paH#paH#paH#p#paH#paH#p#paH#paH#paH#p#p#paH#paH#p#paH#p#p#paH#p#paH#p#paH#p#paH#p#paH#p#paH#p#p#p#p#paH#paH#paH#paH#paH#paHaHaBaHaB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaBaHaH#p#p#paH#paH#p#paH#p#p#p#paH#p#paH#p#p#p#p#p.a.S.S.S.S.S.S.S.S.S.6.6.6.6.6.6aD.6bTbTbT.6bTbTbTbc.pbmbm#K#K#K.x.x.x.xbe.x.x.xbe.xbe.x#3.xbe.xbe.xbe.x#p#p#paHaBaH#p#paHaB#paH#p#paHawblawblaw#C.x#K#p#paH#paH#paHaBaH#paH#paHaBaH#paH#p#p#paHaBaHaBaH#p#paH#paH#p#p#paHaB#paH#p#p#paH#paH#p#paH#p#paH#p#paH#p#paHaBaH#p#paH#p#paHaB#p#paH#paH#p#paH#p#paH#p#paH#p#paHaB#paH#p#p#paH#paHaB#p#paH#p#paH#paH#paH#p#paH#paH#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paH#p#p#p#p#p#p#p#p#p#p#p#p#p#paH#p#p#paH#p#p#p#p#paH#p#paH#p#paH#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#p#paH#p#paH#p#p#p#p#p#p#p#p#p#p#p#paHaH#p.z.z.z.z.z.z.A", "aK.z.z.z.z.z.zaB#p#p#paH#p#p#p#p#p#p#p#p#paH#p#p#p#p#p#p#p#paHbS#x.6#x.6.6#x.6.6#x.6.a.6a8a8a8aDa8aDa8.6.6.6bT.6bTbT.p.pbmbmbm#K#K#K#K.x.x.x.x.x.xbe.x#3.xbe.xbe.xbe.xaH#paH#p#paH#p#paH#p#paH#p#paH#paH#p#paH#pbI#p#paH#paH#paBaH#p#p#paH#p#p#paH#p#p#paH#paH#paH#paH#p#paH#p#paBaHaBaH#paH#p#paH#paH#paH#p#paH#paH#paH#paH#p#paH#paH#p#paH#paH#p#paH#paH#p#p#p#p#p#p#p#p#p#paH#p#paH#p#paH#p#paH#paH#p#paH#paH#p#paH#p#p#p#p#p#paH#p#p#p#paH#paH#paH#paH#paH#paH#paH#paH#p#p#paH#paH#paH#paH#paH#p#paH#p#p#paH#p#p#p#p#paH#p#p#p#p#p#p#p#p#p#paH#paH#paH#paH#paH#paH#paH#paH#p#p#p#p#p#p#paH#paH#paH#paH#paH#p#p#paB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaBaH#p#paH#paHaH#paHaH#paH#paH#paH#paH#paHaH#paH#p#pa8.a.6#x.6.6.a.6.6a8a8.6a8.6a8aDa8aDbOaD.6aDaDbT.6bTbTbobmbmbmbm#K#K.x#K.x.x.x.x.x.x.xbe.x#3.x.x.x#p#paH#paH#paH#paH#paHaH#paHaH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paHaH#paH#paH#paH#paHaH#paHaH#paH#paH#paH#paH#paH#paH#paHaH#paH#paH#paH#paHaH#paH#paHaHaBaH#paH#paH#paH#paH#paHaH#paHaH#paH#paH#paH#paH#paHaH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#p#paH#p#paH#p#paH#p#paH#p#paH#paH#paH#p#paH#p#paH#p#paH#paH#paH#p#paH#paHaH#paH#paH#paH#paHaH#paH#paH#p#paH#p#paH#p#paH#p#paH#p#paH#paHaH#paH#paH#p#paH#p#paH#p#p#paH#paB.z.z.z.z.z.z#z", "aK.z.z.z.z.z.z#paH#paH#paH#p#paH#p#p#paH#paH#p#paH#paH#p#p#paH#paH#paBa8.6a8.a.6a8a8a8a8a8a8a8bO.6bO.6bO.6bO.6aDaDaDaDbTbTbTbo.Tbmbmbm#K#K#K.x.x.x.x.x.x.x.x.x.x.x#paH#paH#paH#paH#paH#paH#paH#p#paH#p#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#p#paH#p#paH#paH#paH#paH#paH#paH#paH#p#paH#paH#paH#paH#p#paH#paH#p#paH#paH#paH#paH#paH#paH#p#paH#p#p#paH#p#paH#paH#paH#p#paH#paH#paH#paH#p#paH#p#paH#paH#paH#paH#p#paH#paH#paH#paH#paH#paH#paH#paH#paH#p#paH#paH#paH#paH#paH#paH#p#paH#paH#paH#p#p#paH#p#paH#paH#p#p#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#p#p#paH#paH#paH#paH#paH#paH#paHaHaB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaBaH#p#paH#paHaH#paHaHaH#paH#paHaH#paH#paHaHaH#paH#paHaH#p#pa8a8a8a8a8a8.6a8a8a8.6bOa8aDa8aDbO.6bO.6aDaDaDaDbobT.pbobmbmbmbm#K#K#K.x.x.x.xbe.x.x#3aH#paHaH#paH#paH#paHaH#paHaH#paHaH#paHaH#paHaH#paHaH#paH#paHaH#paHaH#paHaH#paHaH#paH#paH#paH#paH#paHaHaHaH#paHaHaH#paHaH#paHaH#paH#paH#paHaHaH#paH#paH#paH#paHaH#paHaHaHaH#paHaH#paHaH#paH#paH#paHaH#paHaHaH#paHaH#paH#paH#paHaH#paH#paHaH#paHaHaH#paHaH#paH#paH#paH#paHaH#paH#paH#paH#paH#paH#paH#paH#paH#paHaH#paH#paH#paH#paH#paH#paHaH#paH#paH#paHaHaH#paHaH#paH#paHaHaH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paHaHaH#paH#paH#paH#paH#paHaH#p#paH#p.z.z.z.z.z.z.A", "aK.z.z.z.z.z.z#p#paHaH#paHaH#paHaH#paH#paHaH#paH#paHaH#paH#paH#paHaH#paHaH#p#pa8a8a8a8a8a8a8a8a8a8a8a8.6a8aDa8aDbO.6aDaDaDaDaDbTbobobobmbmbmbm#K#K#K#C.x#C.x#C#paHaH#paHaH#paHaHaH#paH#paH#paH#paH#paH#paHaH#paH#paHaH#paHaH#paHaH#paHaH#paHaH#paHaHaH#paHaHaH#paHaH#p#paHaH#paH#paH#paHaH#paH#paHaH#paHaH#paH#paHaH#paHaHaH#paH#paH#paH#paH#paHaH#paH#paHaH#paHaH#paH#paH#paH#paH#paHaH#paHaH#paH#paHaH#paH#paH#paH#paH#paHaH#paHaHaH#paH#paHaH#paHaHaH#paHaHaH#paHaHaH#paHaH#paH#paHaHaH#paHaHaH#paHaH#paH#paHaHaH#paH#paH#paH#paHaH#paH#paH#paHaHaH#paHaHaH#paHaHaH#paHaHaH#paHaH#paH#paHaH#paHaHaH#paHaH#paHaHaHaB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaBaHaH#paH#paH#paH#paHaH#paH#paHaH#paH#paH#paHaH#paH#paH#paH#paH#p#p.aa8a8a8a8a8a8a8a8a8bOa8a8aDa8aDa8aDa8aDaDaDaDbTbTbobo.TbmbmbFbm#C#C#C#CaHaHaH#paHaH#paHaH#paH#paHaH#paHaH#paHaH#paHaH#paHaH#paH#paHaH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paHaH#paHaH#paHaH#paHaHaH#paHaH#paH#paH#paH#paHaH#paH#paH#paH#paHaH#paH#paHaH#paH#paHaH#paHaH#paH#paH#paHaH#paHaHaH#paH#paH#paH#paHaH#paH#paHaH#paHaH#paHaH#paH#paH#paH#paHaH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paHaH#paH#paH#paH#paH#paH#paHaH#paH#paH#paHaHaH#paH#paH#paHaH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paHaH#paH#paH#paH#paH#paH#paH#paH#paH.z.z.z.z.z.z.A", "aK.z.z.z.z.z.zaHaH#paH#paHaH#paHaH#paH#paHaH#paH#paHaH#paHaH#paH#paHaHaH#paH#paHaHaHaH.aa8a8a8a8a8a8.6a8bO.6bOa8bO.6bO.6bO.6aDaDaD.XbobobobNbN.Dbm.DbFbtaH#paH#paH#paH#paH#paHaH#paH#paH#paH#paH#paH#paH#paH#paHaH#paH#paHaH#paHaH#paHaH#paHaH#paHaH#paHaH#paH#paH#paH#paH#paHaH#paH#paH#paH#paHaH#paH#paHaH#paH#paHaHaH#paH#paH#paHaH#paHaH#paHaH#paHaH#paH#paHaH#paH#paH#paH#paH#paHaH#paHaH#paH#paHaH#paH#paH#paH#paH#paHaH#paHaH#paH#paH#paHaHaH#paH#paHaH#paHaH#paH#paHaH#paH#paHaH#paHaH#paH#paHaH#paH#paHaH#paHaH#paH#paH#paHaH#paH#paH#paHaH#paHaH#paH#paHaH#paHaH#paHaH#paH#paH#paHaH#paHaH#paH#paHaHaH#paHaB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaBaHaH#paH#paH#paH#paHaH#paH#paHaH#paH#paH#paH#paHaH#paH#paHaH#paH#p#paH#paHa8a8a8a8a8a8bOa8a8bO.6bObO.6bO.6bObOaDbOaD.XaD.XbNbobt#c#paH#paHaH#paHaH#paHaH#paH#paH#paHaH#paHaH#paHaH#paHaH#paHaH#paHaH#paH#paHaH#paHaH#paHaH#paH#paH#paH#paHaH#paHaH#paHaH#paHaH#paHaH#paHaHaH#paH#paHaH#paH#paHaH#paH#paHaH#paHaH#paH#paH#paHaH#paH#paH#paHaH#paH#paH#paHaH#paHaH#paH#paH#paH#paHaH#paH#paHaH#paHaH#paHaH#paH#paH#paH#paHaH#paH#paH#paHaH#paH#paH#paHaH#paH#paH#paHaH#paH#paH#paHaH#paH#paH#paH#paH#paH#paH#paHaH#paH#paH#paHaH#paH#paH#paHaH#paH#paH#paH#paH#paH#paHaH#paH#paH#paH#paHaH#paH#paHaH#paH.z.z.z.z.z.z#z", "aK.z.z.z.z.z.z#paH#paH#paHaH#paHaH#paH#paHaH#paH#paHaH#paHaH#paH#paH#paH#paH#paHaH#paHaHaHaHaHaHa8a8a8a8a8bOa8bOa8bOa8bObOaDbOaDbO.XbhaHaHaHaHaHaHaHaHaH#paHaH#paHaHaHaHaH#paHaH#paH#paH#paH#paH#paH#paH#paH#paHaH#paHaHaHaH#paHaH#paHaH#paH#paH#paHaH#paH#paH#paH#paH#paH#paHaH#paHaHaH#paH#paHaH#paH#paHaH#paH#paHaH#paH#paH#paH#paHaHaH#paHaHaHaH#paHaH#paH#paHaHaH#paH#paH#paH#paHaH#paHaH#paH#paHaH#paH#paH#paH#paH#paHaH#paHaH#paH#paH#paHaH#paH#paH#paHaH#paH#paH#paHaH#paH#paHaH#paHaH#paH#paHaH#paHaHaH#paH#paHaHaH#paH#paHaH#paHaH#paH#paHaH#paH#paH#paHaH#paHaH#paHaH#paH#paH#paHaH#paHaH#paH#paHaH#paHaHaB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaBaHaH#paH#paH#paH#paHaH#paH#paHaH#paH#paH#paH#paHaH#paHaHaH#paH#paHaH#paH#paHaHaHaHaHaHaHaH#paH#paH#paH#paHaHaHaHaHaH#paH#paHaH#paH#paHaHaHaHaHaHaH#paH#paHaH#paH#paHaH#paHaH#paHaH#paHaH#paHaH#paH#paH#paH#paH#paH#paH#paHaHaH#paH#paH#paHaH#paHaH#paHaH#paH#paHaH#paH#paHaH#paH#paHaH#paH#paHaH#paH#paHaH#paHaH#paH#paH#paHaH#p#paHaH#paH#paHaH#paH#paHaH#paHaH#paH#paH#paH#paHaH#paH#paHaH#paHaH#paHaH#paH#paH#paH#paHaH#paH#paH#paHaH#paH#paH#paHaH#paH#paH#paHaH#paH#paH#paHaH#paH#paH#paH#paHaH#paH#paHaH#paH#paH#paH#paHaH#paH#paH#paHaH#paH#paH#paH#paH#paH#paHaH#paH#paH#paHaH#paH#paH#paH#paH.z.z.z.z.z.z#z", "aK.z.z.z.z.z.zaH#paH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaHaHaHaHaHaHaHaHaHaH#paHaH#paH#paHaHaHaHaHaHaHaH#paH#paH#paHaHaHaH#paHaHaHaH#paH#paH#paHaHaHaH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaHaHaHaH#paHaHaB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaBaHaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaH#paH#paH#paHaHaHaHaH#paHaH#paH#paH#paHaHaHaHaHaHaHaHaH#paHaH#paHaHaHaHaHaHaHaHaH#paHaHaHaH#paHaHaHaHaHaHaHaH#paHaHaHaH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paHaH#paHaHaHaHaH#paH#paH#paH#paH#paH#paHaH#paHaH#paH#paH#paHaH#paHaH#paHaHaHaH#paHaHaHaH#paH#paH#paH#paHaH#paHaH#paHaH#paH#paH#paH#paH#paH#paH#paH#paH#paHaHaHaH#paHaHaHaH#paH#paH#paH#paHaHaHaH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paHaH#paHaH#paHaHaHaH#paH#paH#paHaHaHaHaHaH#paH#paHaHaHaH#paHaHaHaHaHaH#paHaHaHaH#paHaH#paHaHaHaH#paHaHaHaHaHaHaHaH#paHaHaHaHaHaH#p.z.z.z.z.z.z.A", "aK.z.z.z.z.z.zaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaHaHaHaHaHaH#paHaHaHaHaHaHaHaHaHaH#paHaH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaHaHaH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaHaHaH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaHaHaH#paHaHaHaHaHaHaHaHaHaH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaHaHaHaHaHaHaH#paH#paHaHaHaHaHaH#paHaHaHaH#paH#paHaHaHaH#paHaHaHaHaHaHaH#paHaHaHaH#paH#paH#paHaHaHaHaH#paHaHaB.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.zaBaHaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaH#paHaH#paHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaHaH#paHaH#paHaHaHaHaH#paHaHaHaH#paH#paHaHaHaHaH#paHaHaHaH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paH#paHaHaHaHaH#paHaHaHaHaHaHaHaHaHaH#paH#paHaH#paHaHaHaH#paH#paH#paHaHaHaHaH#paHaHaHaH#paHaHaHaHaHaH#paH#paH#paH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaHaH#paHaHaHaH#paHaHaHaHaHaH#paHaHaH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paH#paH#paHaHaHaHaH#paHaHaHaH#paHaHaHaHaH#paHaH#paHaHaH#paHaHaHaHaHaH#paHaHaHaH#paH#paHaHaHaHaH#paHaHaHaHaHaHaHaH#paHaHaHaHaHaHaH.z.z.z.z.z.z#z", "aK.z.z.z.z.z.z.zaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaHaHaHaH#paH#paH#paHaH#paHaH#paHaHaHaHaHaHaHaHaHaHaHaH#paHaHaHaH#paHaHaHaHaHaHaH#paHaHaHaH#paHaHaHaH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paHaHaHaHaHaHaH#paHaHaHaH#paH#paH#paH#paHaHaHaHaHaHaHaHaH#paHaHaHaHaHaHaHaHaH#paHaHaHaH#paHaHaHaH#paH#paHaHaHaHaHaHaHaHaHaH#paH#paH#paH#paH#paH#paH#paH#paHaHaH#paHaHaHaH#paHaHaHaH#paH#paHaHaH#paHaHaHaH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paH#paHaHaHaHaHaHaHaHaH#paHaHaHaH#paHaHaHaHaH#paHaHaHaHaHaH#paHaHaH#paHaH#paHaHaHaH#paHaHaHaHaHaHaH#paHaHaH#paHaHaHaH#paHaHaHaH#paH#p#p.z.z.z.z.z.z.z#z", "#Y.z.z.z.z.z.z.z.z#paHaH#paHaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaH#paH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaHaH#paHaHaHaHaHaHaHaHaHaHaH#paHaH#paHaHaHaH#paHaHaHaH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaH#paHaHaHaH#paHaHaHaHaHaHaHaHaHaH#paHaH#paH#paHaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaHaHaH#paHaHaHaHaHaH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaHaH#paHaHaHaH#paHaHaHaHaHaH#paHaHaH#paHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaH#paHaHaHaHaH#paHaH#paHaHaHaHaHaHaHaHaHaH#paHaHaHaH#paHaH#paHaHaHaH#paHaHaH#paHaHaHaH#paHaHaHaHaH.z.z.z.z.z.z.z.z#z", "aK.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z#z", "#u.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.zaB", "#u#u.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.zaB.z.zaBaH", "#u.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z#z", "#u.i.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z#z", "#u#uaK.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.zaB.z.z.z#z", "#u#u#u#u.zaB.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#z.A#z#zaBaB#z#z#z#z" }; SIMPLE = T BITPIX = 8 NAXIS = 2 NAXIS1 = 306 NAXIS2 = 224 HISTORY Written by XV 3.10a END SSTTTUUUUUVVVWXXXY\SSSSTTUUUUVVVWWWWWXXYZZ^_`abSSSSTTTTUUUVVWWWWWWWYY[\\`bbdggheSSSSTTTTTTUUUWWWWWWWXXZZ\]_aeehiiklkSSSSTTTTTTUUUWWWWWWWXXZZ[]__ddfgjkkmmnmmSSSSTTTTTTUUUWWWWWWWXXZZ[]__ddfgikkkmooooooSSSSTTTTTTUUUWWWWWWWXXZZZ[]_ddfgikkkmooooopppoSSSSTTTTTTUUUVVWWWWWXXZZZ[]_dddgikkkmooooooqqqqppSSTTTTTTTUUVVVVVWWWXXYZZ[\^bddgikkkmooooooqqqqqqppoVSrrrrsssssVVVVVVWXYYYZ[\]abdfhkkkmooooooqqqqqqqqpppoVVVVVlllSrrrrrrrssssttuuuuuvvw__``cehikkmooooooqqqqqqqqqqpoooVVVVVllllllVSrrrrrrrsssssttuuuuuuvwwwxggjkmmoooooqqqqqqqqqqpppooonVVVVVVllllllllXWWrrrrrrrrssssstuuuuuuvvwwwxxjlmnoooqqqqqqqqqqpppooooonnVVVVVVllllllllllXXXWLWWWWWWjjWrrrrrrrsssssttuuuuuuvvwwxxxyopppqqqqqqqqqpppooooonmmmVWVVVVVVllllllllllllXXXLLLLLWWWjjjjjjrrrrrrssssstttuuuuuvwwwxxxyippqqqqqqqqqppooooonnnmmlVVVVVVVVVlllllllllllllXXLLLLLLLWWjjjjjjjjrrrrrrssssssttuuuuvvwwwxxxxyypqqqqqqqpppoooonnnmmmmlVVVVVVVVllllllllllllllLLLLLLLLLjjjjjjjjjjKKrrrrrssssssttuuuvvwwxxxxxxyyppqqqqpppoooonnnnmmmmmmlVVVVVllllllllllllllLLLLLLLLLjjjjjjjjjjjjjKjjjjjrrrrrssssssttuVWWXXXXXxxxxyyyppppppooooonnmmmmmmmmmmlllllllllllllllllLLLLLLLLLjjjjjjjjjjjjjjjKKjjjjjjjrrrrrsssssstuVXXXXXXXXXxxxyyyyppppoooonnnmmmmmmmmmmmmlllllllllllllllLLLLLLLLjjjjjjjjjjjjjjjjjKKjjjjjjjjjrrrrsssssstUXXXXXXXXXXXxxyyyyoppooonnnmmmmmmmmmllllllllllllllLLLLLLjjjjjjjjjjjjjjjjjjjKKKjjjjjjjjjjjrrrrssssssUXXXXXXXXXXXXXxyyyyzoonnnnmmmmmmmmmlllllllllllllLLjjjjjjjjjjjjjjjjjjjjjjjKKKjjjjjjjjjjjjQQlllrrrrssssstUXXXXXXXXXXXXXxyyyyyznnnmmmmmllllmmllllllljjjjjjjjjjjjjjjjjjjjjjjKKKKjjjjjjjjjjjjjjjQQQQlllllrrrrssssstXXXXXXXXXXXXXXXyyyyyz{nmmmmllkjjllllllljjjjjjjjjjjjjjjjjjjjjjKKKdKKKjjjjjjjjjjjjjjjjQQQQllllllllrrrrsssssttXXXXXXXXXXXXXXyyyyyzzlmmmlljjhijlljjjjjjjjjjjjjjjjjjjjjjKKKKjjjjjjjjjjjjjjjjjjjQQQQQllllllllllrrrrsssssttXXXXXXXXXXXXXXyyyyyzz{llkkjihghhjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjPQQQQllllllllllllrrrrsssssttXXXXXXXXXXXXXXyyyyyzz{{jkjhhfffghjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjPPQQQQQQllllllllllllllMMMMMrrrrsssssttXXXXXXXXXXXXXXyyyyyzz{{ihhffcccfgjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjPPQQQlllllllllllllllllMMMMMjjjjMssssssssttXXXXXXXXXXXXXcyyyyyzz{{{gfecbaabcjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjQQQllllllllllllllllllMMMMMjjjjjjjWWLLLLLWWWWssssssssttXXXXXXXXXXXX]cyyyyyzz{{{fdbaa___ajjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjklllllllllllllllllllllM===MMjjjjjjjjWWWLLLLLLLLWWWWWssssssssttXXXXXXXXXXXXcgyyyyyzz{{{fbb_]\\\_jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjlllllllllllllllllllllll=====MjjjjjjjjjWWLLLLLLLLLWWjjjWssssssssttXXXXXXXXXXX]cgyyyyyzz{{{{ba\\ZZZ\_jjjjjjjjjjjjjjjjjjjjjjjjjjllllllllllllllllllllll======jjjjjjjjjjWLLLLLLLLLLjjjjjjjssssssssttuXXXXXXXXX^ccgyyyyyzz{{{{a_\ZWWWX\jjjjjjjjjjjjjjjjjjjjjjjjlllllllllllllllllllllNNM=====MjjjjjjjjjjWLLLLLLLLLLjjjjjjjjssssssssttuXXXXXXXX^^ccgyyyyyzz{{{{a\ZWUSUWXjjjjjjjjjjjjjjjjjjjjjllllllllllllllllllllNNNN=====jjjjjjjjjjjjLLLLLLLLLLjjjjjjjjjjssssssssttufbXXXXX^^Xccgyyyyyzz{{{{_ZWURRRSWjjjjjjjjjjjjjjjjjjjjllllllllllllllllllllNN=====jjjjjjjjjjjjLLLLLLLLLLjjjjjjjjjjjYYYsssssssttuufbXXXXXXXXcgyyyyyzz{{{{{WURPOOPSjjjjjjjjjjjjjjjjjjllllllllllllllllllllNN===jjjjjjjjjjjjLLLLLLLLLLLjjjjjjjjjjjjMMMMMMMMYYYYYYsssssssttuuffbbbbbXXXfgyyyyyzz{{{{{UROLJJLPjjjjjjjjjjjjjjjjjlllllllllllllllllllllljjjjjjjjjjjjLLLLLLLLLLjjjjjjjjjjjjjjjMMMMMMMMMMMYYllllsssssssttuuuffffffbXXfxyyyyyzz{{{{{ROJHDDHJYWWWjjjjjjjjjjjjjjjjllllllllllllllllllljjjjjjjjjjLLLLLLLLLjjjjjjjjjjjjjjjjMMMMMMMMMMMMYllllllsssssssttuuuuvfffffXfxxyyyyyzz{{{{{OJFD@@DFYWWWZjjjjjjjjjjjjjjjjjlllllllllllllllljjjjjjjjjLLLLLLLjjjjjjjjjjjjjjjjjjjMMMMMMMMMMMMMllllllllsssssssttuuuuvvwwxxxxxxyyyyyzz{{{{RJDD===@DpZYYYZ[[[jjjjjjjjjjjjjjjjlllllllllllllljjjjjjjjjjLLjjjjjjjjjjjjjjjjjjjMMMMMMMMMMMMMlllllllllGGGPPPPsssssssttuuuuuvvwwwxxxxyyyyyzz{{{{OFD==::@ppZZZZZ^[[[[jjjjj[[[[jjjjjjjjjllllllllllllljjjjjjjjjjjjjjjjjjjjjjjjjMMMMMMMMMMMMMlllllllllllGGGGGPPPPsssssssttuuuuuuvwwwwxxxyyyyyzz{{{{JD=::::Dpp]ZZZ\^[[[[[[jjj[[[[[[jjjjjjjlllllllllllljjjjjjjjjjjjjjjjjjjjjjXXXMMMMMMMMMMMMMllllllllllllGGGGGGP____sssssssttuuuuuuvvwwwxxxyyyyyzz{{{{F==:::=ppqq]\\]^[[[[[[[[[[[[[[[jjjjjjjllllllllllljjjjjjjjjjjjjjjjjXXMMMMMMMMMMMMMllllllllllllllGGGGGGG_____ssssssttuuuuuuvvwwwxxxyyyyyzz{{{{k==:=qqqqqq^]]]_`[[[[[[[[[[[[[[[[jjjjjjlllllllllljjjjjjjjjjjjjjjjjXMMMMMMMMMMMMllllllllllllllllGGGGGGG______^ssssssttuuuuuuvwwwwxxxyyyyzz{{{{kkkl=qqqqqqq_^^^_`[[[[[[[[[[[[[[[[jjjjjjjllllllllllljjjjjjjjjjjjjjjjjXMMMMMMMMMMllllllllllllllllllGGGGGGG_______^ssssssttuuuuuvvwwwxxxxyyyyzz{{{{kklqqqqqqqqqq`___`aa[[[[[[[[[[[[[[[ZZZjjjjZZjjlllllllllljjjjjjjjjjjjjjjjjjMMMMMMlllllllllllllllllllGGGGGGG________^ssssssttuuuuuvwwwxxxxxyyyyz{{|lllqqqqqqqqppqqa````aa[[[[[[[[[[[[[[[ZZZZZjjjZZZZZjllllllllljjjjjjjjjjjjjjjjllllllllllllllllllGGGGGGGG_______^^ssssssttuuuuuvXYxxxxxxyyyyz{qqqqqqqqqqqqppppqaaaaabd[[[[[[[[[[[[[[[ZZZZZZZZZZZZZZllllllllljjjjjjjjjjjjjllllllllllllllllllUUGGGGGGG________^^ssssssttuuuuuXYYYYxxxxyyyyzqqqqqqqqqqqpppppppqaaaaabd[[[[[[[[[[[[[[[[ZZZZZZZZZZZZZZlllllllljjjjjjjjjjjjjllllllllllllllllllUUUGGGGG_________]]^^ssssssttuuuuuYYYYYYxxxyyyyzqqqqqqqqqqppppoooopcbaabcde[[[[[[[[[[[[[[[[ZZZZZZZZZZZZZZ[lllllllljjjjjjjjjjjllllllllllllllllllUGGGG_________]]]]^sssssttuuuuuYYYYYYYxxyyyyzqqqqqqqqppppoooonoodccbcdde[[[[[[[[[[[[[[[ZZZZZZZZZZZZZ[[[llllll]]lljjjjjjjjjjjllllllllllllllllll__________]]]]]\sssssttuuuuuYYYYYYYYxyyyyyzqqqqqqppppooonnmmnoddcddde[[[[[[[[[[[[[[[ZZZZZZZZZZZZZZ[[[[]lllll]]]]]jjjjjjjjjjllllllllllllllll_______]]]]]]\sssssttuuuuuYYYYYYYYYyyyyyz{pppppppooonnmmmlmmdddddeef[[[[[[[[[[[[[[[[ZZZZZZZZZZZZZZ[[[[]]]]]]]]]]]l___jjjjjjjjjjllllllllllllllll_____]]]]]]]\sssssttuuuuuYYYYYYYYYxyyyyzz{pppppooonmmmllkklmeeddeeef[[[[[[[[[[[[[[[[ZZZZZZZZZZZZZZ[[[[]]]]]]]]]]]]____ajjjjjjjjjllllllllllllll____]]]]]]\\sssssttuuuuuYYYYYYYYYYyyyyzz{|pppoonnmmmlkkkjkkeeeeeef[[[[[[[[[[[[[[[[ZZZZZZZZZZZZZZ]]]]]]]]]]]]]]]]`___ajjjjjjjjlllllllllllll___]]]]]]]\\sssssttuuuuuYYYYYYYYYYYyyyzz{{oooonmmmlkkkjhgghkeeeeeff[[[[[[[[[[[[[[[ZZZZZZZZZZZZZZ]]]]]]]]]]]]]]]]a```adjjjjjjjlllllllllllm_]]]]]]][[\\jsssssttuuuuuuYYYYYYYYYYyyyzz{{|onnmmmlkkjhgffffgffeeffff[[[[[[[[[[[[[[[ZZZZZZZZZZZZZ]]]]]]]]]]]]]]]]aaaad```jjjjjjjllllllllllmn_]]]]]][[[[\jjsssssttuuuuuuYYYYYYYYYYyyyzz{{{|nnmmkkkjggffdccdffffffff[[[[[[[[[[[[[[xxZZZZZZZZZZZZZZ]]]]]]]]]]]]]]]]cbbcdf````jjjjjjnnnnlllllllllmop_]]]]][[[[[[jjsssssttuuuuuuYYYYYYYYYYdyzzz{{{|mllkkjhgffdca`]`afffffff[[[[[[[[[[[[[wxxZZZZZZZZZZZZZZ]]]]]]]]]]]]]]]^_dddddfj`````jjjjeeennnnnnlllllllloopp]]]]]][[[[[[aajjssssssttuuuuuuYYYYYYYYY`dyzzz{{{|}kkkjggffca`]\\\\affffffft[[[[[[[[[[[[wxxzZZZZZZZZZZZZZZ]]]]]]]]]]]]]]^^_fddfgh``````jjjjbbbennnnnnllllllpppppp]]]]][[[[[[[aaajjsssssssttuuuuuuYYYYYYYY`bgzzzz{{{||jjigffdca`\\YUUVZgfffffst[[[[[[[[[[zZZZZZZZZZZZZZZ]]]]]]]]]]]]^^^_gfffhhj``````bjjbbbbbbnnnnnnnpllllppppppp]]][[[[[[[[ccoooojjsssssssttuuuuuu_YYYYYYbadjzzzz{{{||}iigfca`]\YYUPPQT_npfffftt[[[[[[[[[ZZZZZZZZZZZZZ]]]]]]]]]]]^^^^_hhghhjjm```````bbbbbbbbbnnnnnnnqppppppppoopp]][[[[[[[[[coooooojssssssssttuuuuuuv_YYYYbbdfjzzzz{{{|||igfca`\\YUSPNKHJVX`pppppfttu[[[[[[[[ZZZZZZZZZZZZ]]]]]]]]]]^^^^__jhhhjjm``````bbbbbbbbbnnnnnnpqqpppppppoooop]][[[[[[[[[ooooooossssssssttuuuuuuvc__bbddgfjzzzz{{{||||eda]\YYSPNNGG?NEE<[ljLUU]ahhiiiln__________``````qppppqbbbbbbbbbbccccbaaabeppomkhdc_ZUUV[XXXXoooooooooXXXXXXvwwwwwxxxxyyyyyzz{{{|||}TH[QLV]ahhiiiiino________````````qpppqbbbbbbbbbccccccbbbbepoljfc_\UMMVXXXXXooooooooXXXXXXXwwwxxxxxyyyyyzz{{{||}}H[NV_dhhiiiihhjo______``````````qppqbbbbbbbbcccccccbbbbepokhd_\YUMMNYXXXooooooooXXXXXXXXxxxxxyyyyyyzz{{{|}}3QXadhiiiiifaae_____```````````qbbbbbbbbcccccccfdddfjojdc\ZUMMNYYYoooooXXXXXXXXxyyyyyyyzz{{{|}}QXadhiiiiif`WW]``__`````````````bbbbbbccccccccgfffgjjd]ZUMMNNooXXXXXXXXXXyyyyzz{{{|}Q[behiiiiif`WTTZ`````````````````bbbbbcccccccccdggggljc\VMMNNNooXXXXXXXXXXz{{{tddhhiiiihd`WTSSW````````````````ccbbccccccccccdjhhjl_ZVMNNN[[oXXXXXXXXXXt}kkjiiiihd\WTIIIT```````````````ccccccccccccccddollln_VNNNN[[[XXXXXXXXXX?}nniiifc\VTIIIIS```````````````ccccccccccccdddoooNNNN[[XXXXXXXXXX}nnlihc\TLLBggq`````````````cccccccccccdddd[XXXXXXXXXjniicZRJBfg````````````cccccccccccdddddXXXXXXXX?id\RHBq```````````cccccccccddddddXXXXXXX?i]VHB``````````ccccccccdddddddXXXXXXX?}uNB```````cccccccddddddddXXXXXX?uka``````cccccdddddddddXXXXX??ka````ccccddddddddddXXXX??k`dddddddddddddXXXX?addddddddddddXX??ddddddddddd}}dddddddddd}}ddddddddd}}ddddddd}dddddd}}dddd}||djjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjOOOOOOORSSSTUVWjjjjjjjjjjjjjjjjjjjjjjjjjjj}NNNNNNNOOORRRRSSSVWXZ\^_`}jjjjjjjjjjjjjjjjjjjjjjjjjjjjj}NNNNNNNNNNORRRRRSTUVWZ]^^bbcee~~~}}mjjjjjjjjjjjjjjjjjjjjjjjjjjjjj}}}NNNNNNNNNNNRRRRRRTTUWY[^_`bdeghii}~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}{mljjjjjjjjjjjjjjjjjjjjjjjjkkkkk}}}}}}}}}}}}}}}}}}NNNNNNNNNNNRRRRRRTTUWY[]__acffijlmmn}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}{mmljjjjjjjjjjjjjjjjjjjjjjkkkkkkkk}}}}}}}}}}}}}}}}NNNNNNNNNNNRRRRRRTTUWY[]__acffiklmnooo{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}{{zmmjjjjjjjjjjjjjjjjjjjkkkkkkkkk{{}}}}}}}}}}}}{NNNNNNNNNNNRRRRRRTTUWY[]__acffiklmnnpppp{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zjjjjjjjjjjjjjjjjkkkkkkkkkkkz{{{{{{{{{{{{NNNNNNNNNNNRRRRRRSTUWY[]__acffiklmnnppppppz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zzxjjjjjjjjjjjjjkkkkkkkkkkkkxz{{{{{{{{{zNNNNNNNNNNNRRRRRRSUWXZ[]^_acffiklmnnppppppppzz{{{{{{{{{{{{{{zzZZ{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzxxjjjjjjjjjjjkkkkkkkkkkkkkkxzzzzzzzzNNNNNNNNNNNNRRRRRRSUWXZ[]^_acdfiklmnnpppqqqpppoxzzzzzzzzzzzzzxZZZZZZZZZzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{}{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzxxjjjjjjjjjkkkkkkkkkkkkkkkkxzzzzzxNNNNNNNNNNNNRRRRRRSUWXZ[]^_acdfikkmnnppppqqqpppowxzzzzzzzzzzxwZZZZZZZZZZZZZZzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{zzzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwjjjjjjjkkkkkkkkkkkkkkkkkwxxxxxNNNNNNNNNNNNRRRRRRSUWXZ[]^_acdfikkmmnppppqqqqpppoowxxxxxxxxxxvZZZZZZZZZZZZZZZZZZbbbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzz{zxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwvkjjjkkkkkkkkkkkkkkkkkkkklwwwmNNNNNNNNNNNRRRRRRSUWXZ[]^_acdfikkmmnppppqqqqppoooonvwxxxxxxwvZZZZZZZZZZZZZZZZZZZZbbbbwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzxxxwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwvvtkkkkkkkkkkkkkkkkkkkkkkkkklmmlNNNNNNNNNNRRRRRSUWXZZ[]^_acdfikkmmnppppqqqqppoooonntvwwwwwwvZZZZZZZZZZZZZZZZZZZZZbboobvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxzxwwwvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvtkkkkkkkkkkkkkkkkkkkkkkkkk}lllNNNNNNNR[[]]^_acdffikkmmnpppppqqpppooonnnmmtvvvvvvZZZZZZZZZZZZZZZZZZZZZZbooooovvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwxxvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvtttkkkkkkkkkkkkkkkkkkkkkkkkkk}}}iiiikkkmmnpppppqqpppooonnnmmlttvvvtZZZZZZZZZZZZZZZZZZZZZZZoooooootvvvvvvvvvvvvvvvvtLLLLLL559>\[ZWgghiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjiiihhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhggfPPPPPPPjjjjhhhhhhhhdddddddddZZZZZZZZZZZZZZZjihfeeddcbb``_^]]]xooooXXXXXJIEB=66=G[YWfggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiijihhhgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggfPPPPPPPPjjjhhhhhhhhddddddddddZZZZZZZZZZZZZZZigeeddcbb``_^]\\]vXXXXXXXXXJIGD@=66@]YWffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhiiggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffdPPPPPPPPjjhhhhhhhdddddddQQQdZZZZZZZZZZZZZZZZifeedcbba`_^]\[[\uXXXXXXXXXJIHD@=66=ZWVfffggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggihgggfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdPPPPPPPPPjhhhhhhhdddddddQQQQQZZZZZZZZZZZZZZZZfedcbba`_^]\[ZZZrXXXXXXXXXJID@=666DYTddfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffggghgffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffddbPPPPPPPPPhhhhhhdddddddQQQQQQQZZZZZZZZZZZZZZZZeeccba`_^]\[ZYXXqXXXXXXXXJIDD@=66@YUcdddfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffggfffdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddaPPPPPPPPPPhhhhhdddddddQQQQQQQQZZZZZZZZZZZZZZZedcbb`_^^\[ZYXXXotXXXXXXXJIHD@===@UTbcddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfffgfddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddbbaPPPPPPPPPPhhhddddddQQQQQQQQQQZZZZZZZZZZZZZZZcbb`_^^\[ZYWWUVlrXXXXXXJIID@@=@DWSbbbbddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffdddbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaa`PPPPPPPPPPhhddddddQQQQQQQQQQQZZZZZZZZZZZZZZZcb``^^\[[YWWUSSknXXXXXXJIDD@@@Taaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbdddfdbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`PPPPPPPPPPPhdddddQQQQQQQQQQQQZZZZZZZZZZZZZZZZcb`_^\[[ZWWUTRRhlXXXXXJIHDDDDXRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``_PPPPPPPPPPPhddddQQQQQQQQQQQQQZZZZZZZZZZZZZZZZc`_^][[ZXWUSRPQgjXXXXJJIHDDHRa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcaaa`````````````````````````````````````````````````````````````````````^PPPPPPPPPPPPhdddQQQQQQQQQQQQQQQZZZZZZZZZZZZZZZZ`^]\[ZXWUSQPMNdhXXXJJIIIa```````````````````````````````````````````````````````````````````````aaaca``````````````````````````````````````````````````````````````````````__^PPPPPPPPPPPPdddQQQQQQQQQQQQQQQZZZZZZZZZZZZZZZ_]\[ZXWWSQPOKLbfXXXXJJJQ```````````````````````````````````````````````````````````````````````````aa```___________________________________________________________________^^]PPPPPPPPPPPPqdQQQQQQQQQQQQQQQQZZZZZZZZZZZZZZZ_][ZXWWTQPNLHI`cXXX`________________________________________________________________________```a`___^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]PPPPPPPPPPPPqdQQQQQQQQQQQQQQQQZZZZZZZZZZZZZZZ^\[YWWTSPNKIFH]a}_^^^^nn^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^___``^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]][PPPPPPPPPPPPqQQQQQQQQQQQQQQQQZZZZZZZZZZZZZZZi^[ZWWTSQNKHFCEZ_}{yxxnnnnnn]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^`_^^^]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]ePPPPPPPPPPqqqQQQQQQQQQQQQQQQQZZZZZZZZZZZZZZZi[XWTSQPLIFE?UU[{zxonnnnnnnn]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^_^]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][[ePPPPPPPPPPqqqQQQQQQQQQQQQQQQcZZZZZZZZZZZZZZZmZWUSQPNIFEB?Z[V{zqoonnnnnnnnn[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^]]][[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[eePPPPPPPPPqqqqQQQQQQQQQQQQQQQbZZZZZZZZZZZZZZmXWSQPNKFEA>YZ[\{qqqonnnnnnnnnnnZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]^]\\\[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ZdeePPPPPPPqqqqqQQQQQQQQQQQQQQQbZZZZZZZZZZZZZinWTQPNKHEA>YYY[[VqqqqnnnnnnnnnnnnfYZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\]]\\\ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZYacefPPPPPPqqqqqqQQQQQQQQQQQQQQQbZZZZZZZZZZZZZmnWSPNKHFA>2WYYZ[\qqqqqnnnnnnnnnnnnffYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\\\]\ZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYWccdPPPPPqqqqqqqQQQQQQQQQQQQQQYoZZZZZZZZZZZZimoTQNKHFDA?WWYYYZ[qqqqqnnnnnnnnnnnnnfffWYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZ\\YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYWWccd~qPPPqqqqqqqqQQQQQQQQQQQQQYYoZZZZZZZZZZZhimoSPKHFDA>VWWWYYY[qqqqqqnnnnnnnnnnnnnfffWWYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\ZYYYWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWVVcc~~qqqqqqqqqqqqQQQQQQQQQQQQYYhorZZZZZZZZZZhhmnoQNIFDA=VVVWWWYYZqqqqqqnnnnnnnnnnnnnbbbbVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWYYYZYWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWVVUdc~~qqqqqqqqqqqqQQQQQQQQQQYYhhhqZZZZZZZZhhhimoPKFDA=1UVVWWWWWXqqqqqqqnnnnnnnnnnnnnnbbbbfVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWYYWWWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUTdqqqqqqqqqqqqQQQQQQQQQYYhhhhoZZZZZZZdhhhimoNHDAA;TUVVVVVVWWqqqqqqqqnnnnnnnnnnnnnbbbbbbUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWYWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUUTTqqqqqqqqqqqQQQQQQQY^^^mhhhZZZZZZdhhhhhmoLFAA:TTUUVVVVVVWqqqqqqqqqnnnnnnnnnnnnnbbbbbbbTUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWXVVVUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTqqqqqqqqqqqQQQQQQ]U^^mmnoZZZZZ`hhhhdhhoJEA:TTTTUUUUUUVVeqqqqqqqqqqnnnnnnnnnnnnnbbbbbbbTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVXVUUUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTqqqqqqqqqQQQQQTTUU^mniZZZZhhhhd``dVC>1TTTTTTTTTTUUdqqqqqqqqqqnnnnnnnnnnnnbbbbbbbbbTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUVVUUUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSSqqqqqqqq\QQQSTTTUUmnniihhhhhd```bTPJSTTTTTTTTTTUUdqqqqqqqqqqnnnnnnnnnnnbbbbbbbbbbTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUVUUUUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSSSqqqqqqqq\\\SSTTTTUUmmiihhhd`^\`dPJSSTTTTTTTTTTUUcqqqqqqqqqqnnnnnnnnnnbbbbbbbbbbbSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSSSSSRRqqqqqqqqq]\\RSSSTTTTSTnmihhd``XZ`TJRSSSTTTTTTTTTTScXXXqqqqqqqqqqqnnnnnnnnnbbbbbbbbbbbQSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUTTTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRRRRRRRRRRRqqqqqSRSSSq\\RRSSSSSSSRRSnmhhd`\XZbP?RRSSSSSSSSSSSRbbXXXqqqqqqqqqqnnnnnnnbbbbbbbbbbbbPQSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTUTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR\[QQQQQSSSSRRRRRRRonmhh``\`JQQQQSSSSSSSSSQ_abXXXXXqqqqqqqnnnnbbbbbbbbbbbbbPPQSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTSSSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRonmhd`cJQPPPQQQQQQQQQPOXX_XXXXXqqqqqqqqnnnbbbbbbbbbbbbbPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSSSTSQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQooQPPPPPPPPPPPPPOXXXXaXXXXqqqqqqqqnnbbbbbbbbbbbbOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQSSPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP=PPPPPPPPPPPPPOXXXXXXXXXXqqqqqqqnbbbbbbbbbbbNOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPSQPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOP c #90752C", ", c #BDD5AB", "' c #BBDBA3", ") c #C5E7AC", "! c #C7EAAF", "~ c #C2D9B1", "{ c #ACBC9D", "] c #D7B950", "^ c #FEE464", "/ c #FAD451", "( c #967A2E", "_ c #9AB287", ": c #6E8F55", "< c #719458", "[ c #729559", "} c #73985A", "| c #6A8F50", "1 c #FFEA59", "2 c #FEDD53", "3 c #EAC54A", "4 c #92AA7F", "5 c #618349", "6 c #62844A", "7 c #63864A", "8 c #618647", "9 c #F1CF4D", "0 c #FFED59", "a c #FDDE54", "b c #ECC54B", "c c #5A7D42", "d c #F8CF4F", "e c #FDE154", "f c #FFE456", "g c #F9D651", "h c #DCB645", "i c #FFDA52", "j c #FAD550", "k c #EBC54B", "l c #8B6B27", "m c #060904", "n c #876926", "o c #D2AA39", "p c #E8C14A", "q c #DDB645", "r c #806421", " ", " ", " . ", " +. ", " ....@..... ", " .#$%&*.=-;>. ", " .,')!~{.]^/( ", " ._:<[}|.]123. ", " .45678.]90ab. ", " ....c.]defgh. ", " ..]ddijkl ", " m .nopqr. ", " ..... ", " ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/maker.xpm0000644000000000000000000000255307252426514015036 /* XPM */ /* Drawn by Mark Donohoe for the K Desktop Environment */ /* See http://www.kde.org */ char *maker_xpm[]={ "32 32 7 1", "# c #000000", "a c #ffffff", "b c #585858", "e c #400000", "d c #a0a0a4", "c c #c0c0c0", ". c None", "................................", "................................", "................................", ".............#####..............", ".........###.#aaa#.###..........", "........#aaa#baaab#aaa#.........", "....###.#aaaabaaabaaaa#.###.....", "...#caa#abaaaaaaaaaaaba#aaa#....", "..#baaca#aaaaaaaaaaaaa#aaaab#...", "..#dbcaacaaaaaaaaaaaaaaaaabc#...", "..#ddbbcaacaaaaaaaaaaaaabbcc#...", "..#ddddaccaacaaaaaaaaaaacccc#...", "#######baaccaa###aaaaaab#######.", "#ccccccaccaac#ddc#aaaaaaaaaaaa#.", "#######ccacca#ddc#caaaaa#######.", "#ddddd#ccccacc###caacaaa#ccccc#.", "#dddd#cccccccaccaaccaacaa#cccc#.", "#dd##ccc##cccccaccaac##aca##cc#.", "#d#cccc#d#cccccccacca#c#aaca#c#.", "###cc##dd#cccccccccac#cc##aa###.", ".#a##ddd#cccccccccccca#ccc##d#..", ".#a#ddd#cccc##ccc##cccc#ccc#d#..", ".#a#ddd#ccc#d#ccc#d#ccc#ccc#d#..", ".#a#dd#cccc#d#ccc#d#cccc#cc#d#..", ".#a#dd##ec#dd#ccc#dd#c###cc#d#..", ".#a#d##ac#ddd#####ddd#cd##c#d#..", "..###.#ac#dd##ccc##dd#cd#.###...", "......#ac#d#.#ccc#.#d#cd#.......", "......#ac#d#.#ccc#.#d#cd#.......", "......#ac##..#ccc#..##cd#.......", ".......###...#ccc#...###........", ".............#####.............."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/makerkill.xpm0000644000000000000000000000474207252426516015716 /* XPM */ char * maker_kill_xpm[] = { "32 32 64 1", " c None", ". c #FFFFFBEEFFFF", "X c #FFFFDB6CD75C", "o c #FFFFC30BBEFB", "O c #FFFFD34CCF3C", "+ c #F7DEAAAAA699", "@ c #EFBEBAEAA699", "# c red", "$ c #F7DEA2899E79", "% c #F7DEA2898E38", "& c #FFFF79E779E7", "* c #FFFF92489658", "= c #EFBE9A698617", "- c #FFFF8A288E38", "; c #FFFFCB2BCF3C", ": c #FFFFBAEABEFB", "> c #EFBE924879E7", ", c #FFFF18611861", "< c #8E3851444103", "1 c #FFFF51445144", "2 c #FFFF61856185", "3 c #E79D924871C6", "4 c #FFFF38E338E3", "5 c #D75C18611861", "6 c #71C6451430C2", "7 c #DF7D8A2869A6", "8 c #E79D00000000", "9 c #AEBA00000000", "0 c #C71B00000000", "q c #9E7900000000", "w c #EFBEC30BB6DA", "e c #861700000000", "r c #69A638E328A2", "t c #BEFB861769A6", "y c #DF7D82075965", "u c #71C600000000", "i c #618538E32081", "p c #D75C79E75144", "a c #D75C2CB228A2", "s c #B6DA0C30B6DA", "d c #CF3C69A64103", "f c #CF3C69A638E3", "g c #D75C71C65144", "h c #618530C21861", "j c #C71B618538E3", "k c #CF3C71C64924", "l c #AEBA10401040", "z c #C71B618530C2", "x c #BEFB596528A2", "c c #596528A21040", "v c #9E79451428A2", "b c #DF7D79E75965", "n c #B6DA59652081", "m c #596530C21040", "M c #B6DA51441861", "N c #410320810820", "B c #AEBA51441861", "V c #596528A20820", "C c #AEBA51441040", "Z c #A69949241040", "A c #A69949240820", "S c #492420810000", "D c #8E383CF30820", "F c #71C634D30000", " .. ", " .Xo. ", " .O++@. ", " ##### .O$$$%@. ", " #&$**##.O$%%%==@. ", " #-;;:;$##%%====>>##### ", " ,+X$-*:-#<=>>>>##1&$&2# ", " #-:122::2#>333#4-XXo-&4# ", " #145,2:;4677,&XXX-24,1#8 ", " 88888#-+#6,&oX-4,#88908 ", " .90808#&4#2--2#88000q9 ", " .w7699q0,11-&48809qqeert ", " .w777yr998&*-2#09ueueiii7. ", " .w7yyyppr981&4a9qeqsiiidfft. ", " .@yypppggg814##21#hiiffffjjjt. ", ".@pppggggk,-*,9l5220ffjjjjzzzxt.", " c #A0A0B5", ", c #90909B", "' c #6B6B6B", ") c #151515", "! c #7070A5", "~ c #20208B", "{ c #505085", "] c #6060A0", "^ c #000080", "/ c #303090", "( c #505090", "_ c #101050", ": c #303070", "< c #404060", "[ c #6B6BA0", "} c #151580", "| c #65659B", "1 c #303030", "2 c #656565", "3 c #9595A0", "4 c #6B6B80", "5 c #7B7B85", "6 c #707070", "7 c #7B7B7B", "8 c #BFBFBF", "9 c #E0E0E0", "0 c #FFFFFF", "a c #898989", "b c #ACACAC", "c c #D0D0D0", "d c #EAEAEA", "e c #828282", "f c #959595", "g c #404040", "h c #353535", "i c #0B0B0B", "j c #202020", "........................", "++++++++++++++++++++++++", "@@@@@@@@@@@@@@@@@@@@@@@@", "#$%&&&&&&&&&&&&&&&&&&*=-", "#@+;>>>>>>>>>>>>>>>>>,')", "#@+!~~~~~~~~~~~~~~~~~{')", "#@+]^^^^^^^^/(_:(_:(_<')", "#@+[}}}}}}}}|%12%12%1-')", "#@+3444444445$67$67$6=')", "#@+.88888888888888888&')", "#@+900000000000000000.')", "#@+900000000000000000.')", "#@+900000000000000000.')", "#@+900000000000000000.')", "#@+900000000000000000.')", "#@+900000000000000000.')", "#@+900000000000000000.')", "#@+900000000000000000.')", "#@+900000000000000000.')", "#abcddddddddddddddddd+')", "#ea*fffffffffffffffff@')", "gggggggggggggggggggggghi", "jjjjjjjjjjjjjjjjjjjjjjjj", "&&&&&&&&&&&&&&&&&&&&&&&&"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/mininewform.xpm0000644000000000000000000000105707252426527016273 /* XPM */ char *mininewform_xpm[] = { /* width height num_colors chars_per_pixel */ " 16 16 6 1", /* colors */ ". c #000000", "# c #000080", "a c #808080", "b c #c0c0c0", "c c #none", "w c #ffffff", /* pixels */ "cccccccccccccccc", "aaaaaaaaaaaaaaaa", "abbbbbbbbbbbbba.", "ab############a.", "ab######c.c.c.a.", "abaaaaaaaaaaaaa.", "abwwwwwwwwwwwwa.", "abwwwwwwwwwwwwa.", "abwwwwwwwwwwwwa.", "abwwwwwwwwwwwwa.", "abwwwwwwwwwwwwa.", "abwwwwwwwwwwwwa.", "abwwwwwwwwwwwwa.", "aaaaaaaaaaaaaaa.", "................", "cccccccccccccccc" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/newprj.xpm0000644000000000000000000000153607451120464015240 /* XPM */ static char *newprj_xpm[]={ "22 22 16 1", ". c None", "c c #000000", "n c #0000c0", "m c #0000ff", "l c #004000", "# c #004040", "b c #008080", "a c #00c0c0", "i c #800000", "e c #808000", "g c #c05800", "k c #c3c3c3", "h c #ffa858", "f c #ffff00", "d c #ffffc0", "j c #ffffff", "......................", "........######........", "......##aba#a###......", ".....#abaaaaab####....", "...##acdcacecbbb##....", "...#abcddcdfebbbb##...", "..#baacddddecbbbbb##..", "..#aacddfdecbbbbbb##..", ".#aacddfdfefcbbbbbb##.", ".#aaaccgffeffcbbbbb##.", ".##abchife###########.", ".##achg#f#jjjjjjjjj##.", ".##chgc##kkkkkkllll##.", ".##hgcb#jjikjiklmnn##.", "..#gcbb#jkjiikklmmn##.", "..#cbbb#jkjiikklmnn#..", "...##bb#jjikjiklmm#...", "....##b#jkkkkkkjj##...", "....####cccccccc#cc...", "......##########......", ".......#######........", "......................"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/newunit.xpm0000644000000000000000000001300707452565515015433 /* XPM */ static char * newunit_xpm[] = { "24 24 271 2", " c None", ". c #454545", "+ c #878787", "@ c #898989", "# c #919191", "$ c #808080", "% c #E5E5E5", "& c #FFFFFF", "* c #F7F7F7", "= c #FDFDFD", "- c #FCFCFC", "; c #F6F6F6", "> c #F9F9F9", ", c #FEFEFE", "' c #FBFBFB", ") c #EDEDED", "! c #ADADAD", "~ c #EAEAEA", "{ c #CACACA", "] c #E8E8E8", "^ c #DADADA", "/ c #E9E9E9", "( c #CECECE", "_ c #CCCCCC", ": c #D8D8D8", "< c #FAFAFA", "[ c #DFDFDF", "} c #A9A9A9", "| c #2B2B2B", "1 c #EEEEEE", "2 c #F3F3F3", "3 c #F5F5F5", "4 c #F0F0F0", "5 c #F4F4F4", "6 c #F1F1F1", "7 c #FDFDFC", "8 c #F8F8F8", "9 c #B7B7B7", "0 c #ABABAB", "a c #A2A2A2", "b c #909090", "c c #ECECEC", "d c #E4E4E4", "e c #C5C5C5", "f c #D6D6D6", "g c #D9D9D9", "h c #D7D7D7", "i c #C2C2C2", "j c #CDCDCD", "k c #D7D7D6", "l c #CDCDCC", "m c #FCFCFB", "n c #F8F8F7", "o c #B3B3B3", "p c #787878", "q c #000000", "r c #E2E2E2", "s c #E7E7E7", "t c #C9C9C9", "u c #9A8686", "v c #996D6D", "w c #885252", "x c #865353", "y c #9B8989", "z c #F5F5F4", "A c #F7F7F6", "B c #D5D5D5", "C c #D1D1D1", "D c #E3E3E3", "E c #C5C5C4", "F c #999999", "G c #593F3F", "H c #AE9B9B", "I c #D7D2D2", "J c #D2CECE", "K c #DFDDDD", "L c #CA9898", "M c #7C4C4C", "N c #DCDCDB", "O c #F2F2F2", "P c #E6E6E5", "Q c #5D5C5C", "R c #C8AAAA", "S c #DAD2D2", "T c #868282", "U c #828282", "V c #D7D6D6", "W c #C1B0B0", "X c #5D3636", "Y c #BDBDBC", "Z c #EAEAE9", "` c #F3F3F2", " . c #E4E4E3", ".. c #FBFBFA", "+. c #D0D0D0", "@. c #9E9999", "#. c #B38787", "$. c #D7B6B6", "%. c #C3ABAB", "&. c #CDB6B6", "*. c #BD9E9E", "=. c #6D4646", "-. c #5A4444", ";. c #A2A2A1", ">. c #E3E3E2", ",. c #F0F0EF", "'. c #F1F1EF", "). c #EFEFEF", "!. c #DADAD9", "~. c #7C7575", "{. c #D0B6B8", "]. c #D4BDBF", "^. c #D5B0B1", "/. c #BA7575", "(. c #934646", "_. c #694243", ":. c #493030", "<. c #878786", "[. c #CBCBCA", "}. c #EEEEED", "|. c #EDEDEC", "1. c #F4F4F3", "2. c #615E5E", "3. c #AE8485", "4. c #CDB8BA", "5. c #E9D3D5", "6. c #C68282", "7. c #A35E5F", "8. c #734444", "9. c #251111", "0. c #747473", "a. c #C3C3C2", "b. c #CFCFCE", "c. c #EDEDEB", "d. c #ECECEB", "e. c #E0E0DF", "f. c #F9F9F8", "g. c #F6F6F5", "h. c #5B5A5A", "i. c #995C5C", "j. c #C9A5A5", "k. c #E3C2C2", "l. c #CE8E8E", "m. c #8C2F2F", "n. c #867373", "o. c #2B1717", "p. c #787373", "q. c #D6D6D5", "r. c #E9E9E8", "s. c #EBEBE9", "t. c #DFDFDE", "u. c #D5D5D4", "v. c #F2F2F1", "w. c #EFEFEE", "x. c #5F5F5F", "y. c #945B5B", "z. c #C19E9F", "A. c #E1C0C0", "B. c #D39A9A", "C. c #943D3D", "D. c #744B4B", "E. c #2E0808", "F. c #7D7D7C", "G. c #D2D2D0", "H. c #E8E8E7", "I. c #CFCFCD", "J. c #D8D8D7", "K. c #BABABA", "L. c #606060", "M. c #A67678", "N. c #B2999D", "O. c #E7C5C5", "P. c #AD4848", "Q. c #8F3535", "R. c #480101", "S. c #2C0808", "T. c #70706F", "U. c #A8A8A6", "V. c #D3D3D2", "W. c #E7E7E6", "X. c #DADAD8", "Y. c #DBDBDA", "Z. c #DCDCDA", "`. c #9B9B9A", " + c #777373", ".+ c #C4B7BA", "++ c #E1C5C5", "@+ c #AC5757", "#+ c #7F1F1F", "$+ c #5D1E1E", "%+ c #2B1414", "&+ c #90908F", "*+ c #CCCCCA", "=+ c #DBDBD9", "-+ c #E2E2E0", ";+ c #E5E5E4", ">+ c #D4D4D4", ",+ c #DDDDDD", "'+ c #D5D5D3", ")+ c #C9C9C8", "!+ c #9F9F9D", "~+ c #676766", "{+ c #5A5959", "]+ c #7E7C7C", "^+ c #6A6060", "/+ c #594B4B", "(+ c #3B2F2E", "_+ c #615F5E", ":+ c #B7B7B5", "<+ c #CFD3D5", "[+ c #D6DADC", "}+ c #C3C6C9", "|+ c #CFD2D6", "1+ c #4A4F54", "2+ c #ECECEA", "3+ c #D3D3D1", "4+ c #CECECC", "5+ c #C2C2C0", "6+ c #979796", "7+ c #737372", "8+ c #767675", "9+ c #838383", "0+ c #B1B1B0", "a+ c #889CAD", "b+ c #5B778E", "c+ c #A1B0BE", "d+ c #7E93A6", "e+ c #1F272F", "f+ c #EAEAE8", "g+ c #B7B7B6", "h+ c #C8C8C7", "i+ c #AEAEAC", "j+ c #B6B6B4", "k+ c #BEBEBC", "l+ c #C8C8C6", "m+ c #C6C6C5", "n+ c #D7D7D5", "o+ c #E0E0DE", "p+ c #8095A8", "q+ c #4B6983", "r+ c #A5B4C1", "s+ c #151D25", "t+ c #D1D1D0", "u+ c #E7E7E5", "v+ c #E6E6E4", "w+ c #E5E5E3", "x+ c #E3E3E1", "y+ c #E1E1DF", "z+ c #9EAEBC", "A+ c #CFD7DE", "B+ c #D2D2D1", "C+ c #F1F1F0", "D+ c #C2C2C1", "E+ c #E4E4E2", "F+ c #E3E8EC", "G+ c #97A8B7", "H+ c #6F7B84", "I+ c #41505D", "J+ c #41505C", "K+ c #43525F", "L+ c #273745", "M+ c #121A20", "N+ c #6E6E6E", "O+ c #D6D6D4", "P+ c #D4D4D3", "Q+ c #D4D4D2", "R+ c #BCBCBB", "S+ c #A3A3A2", "T+ c #1C1C1C", "U+ c #272727", "V+ c #1F1F1F", ". + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # $ ", "$ % & * = - & ; > - > - , , , , , ' ) ! ", "$ ~ & { ] ^ / ( _ : % ] , , , , , < [ ' } | ", "$ 1 & 2 3 4 ~ 5 ; 4 6 2 < 1 = 7 - 8 9 0 a b ", "$ c & & d ^ e f g h i j k l ' m ' n : o b p q ", "$ r & , ; s ] 6 t u v w x y h z 8 * A z B C q ", "$ ) , = D D E F G H I J K L M N O z 5 2 P h q ", "$ c = m ' ' ^ Q R S T U V W X Y Z ` O 6 d h q ", "$ .- ..< < +.@.#.$.%.&.*.=.-.;.>.,.'.).!.: q ", "$ D - > > 8 A ~.{.].^./.(._.:.<.[.[.}.|.: : q ", "$ ~ < n * ; 1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.B q ", "$ ] f.g.z 1.i h.i.j.k.l.m.n.o.p.q.r.s.Z t.u.q ", "$ !.> 2 v.w.f x.y.z.A.B.C.D.E.F.G. .H.H.I.g q ", "$ >.; 6 J.q.K.L.M.N.O.P.Q.R.S.T.U.b.V.W.X.B q ", "$ d 1.,.H.Y.Z.`. +.+++@+#+$+%+&+*+=+-+;+N >+q ", "$ ,+5 }.'+V.)+!+~+{+]+^+/+(+_+:+<+[+[+[+}+|+1+ ", "$ q.5 2+r.;+3+4+5+6+F.7+8+9+0+G.a+b+c+b+d+d+b+e+", "$ e.,.Z Z f+g+h+i+j+k+l+m+*+n+o+p+q+& q+r+r+q+s+", "$ t.w.t+J.t.u+u+v+w+x+-+y+y+x+>.p+q+& z+A+r+q+s+", "$ B+C+D+V.u.v+;+w+ .E+E+>.x+x+x+p+q+F+q+G+G+q+s+", "$ k w.v+v+w+E+E+E+E+E+x+x+x+x+-+H+I+I+I+J+K+L+M+", "N+q.X.q.O+O+O+O+u.u.'+'+'+P+P+Q+h+R+R+R+i S+q ", "T+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+V+ ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/notebook.xpm0000644000000000000000000000505207453135173015555 /* XPM */ static char *notebook_xpm[]={ "21 21 99 2", ".# c None", ".c c #000000", ".U c #111111", ".w c #24241b", ".3 c #313130", ".R c #383838", ".0 c #393939", ".E c #3b3b3a", ".b c #585858", ".Z c #5d5d44", ".t c #5f5f5e", ".S c #6a6a4e", ".v c #6b6b4f", ".2 c #787877", ".d c #808080", ".4 c #828280", ".1 c #848484", ".9 c #8e8e8d", "#o c #939392", "#m c #959593", "#l c #959594", "#d c #979796", "#n c #9c9c9a", ".8 c #a0a078", "Qt c #a0a0a0", ".r c #a3a37a", "## c #a4a4a2", ".6 c #a4a4a4", ".Y c #a7a77d", "#k c #a7a7a5", "#. c #a7a7a6", ".T c #a8a87e", "#p c #a8a8a5", ".k c #b4b487", "#A c #b4b4b2", ".u c #b4b4b4", "#C c #b6b6b4", "#z c #b6b6b5", ".s c #babab9", "#a c #bbbbb8", "#x c #bbbbba", "#B c #bcbcb9", "#y c #bdbdbb", "#j c #bebebd", ".j c #c0c000", "#f c #c3c3c1", ".7 c #c4c49c", "#e c #c4c4c2", ".5 c #c4c4c4", "#D c #c6c6c3", "#w c #c6c6c4", "#c c #cbcbca", ".X c #cccc99", "#g c #ccccc9", "#q c #d2d2cf", ".M c #d3d3a8", "#v c #d3d3d2", ".W c #d4d4aa", "#s c #d4d4d1", ".N c #d5d5ab", "#G c #d5d5d1", ".l c #d5d5d5", ".B c #d6d6ad", ".F c #d7d7be", "#E c #d7d7d4", "#r c #d7d7d5", "#F c #d8d8d5", "#i c #d8d8d6", ".P c #dbdbb9", ".O c #dcdcba", ".I c #ddddbb", ".q c #ddddbd", "#h c #dddddc", ".G c #dedebd", ".H c #dedebf", "#b c #dedede", ".o c #dfdfc0", ".L c #dfdfc1", "#u c #dfdfdd", ".Q c #e0e0c1", ".p c #e0e0c3", ".i c #e1e1c4", ".h c #e2e2c6", ".D c #e2e2c7", ".n c #e3e3c8", "#t c #e3e3e2", ".y c #e4e4cc", ".C c #e5e5cc", ".A c #e6e6d0", ".g c #e9e9d5", ".e c #e9e9d6", ".z c #eaead7", ".K c #ebebd7", ".V c #ebebd9", ".f c #ececda", ".m c #ececdd", ".x c #ededdf", ".J c #eeeedd", ".a c #ffffff", "QtQtQtQtQtQtQtQtQt.#.#.#.#.#.#.#.#.#.#.#.#", "Qt.a.a.a.a.a.a.a.bQtQtQtQtQtQtQtQtQtQt.#.#", "Qt.a.#.#.#.#.#.a.b.a.a.a.a.a.b.a.a.a.a.b.#", "Qt.a.#.#.#.#.#.a.b.#.#.#.#.#.b.#.#.#.#.b.#", "Qt.a.#.#.#.#.#.a.b.b.b.b.b.b.b.a.b.b.b.b.#", "Qt.a.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.b.#", "Qt.a.#.#.#.#.#.c.c.c.c.c.c.c.c.c.d.d.d.b.#", "Qt.a.#.#.#.#.#.c.e.f.g.h.i.j.k.c.#.#.#.b.#", "Qt.a.#.c.c.c.l.c.m.n.o.p.q.j.r.c.s.c.c.t.u", "Qt.a.c.v.g.j.c.w.x.y.z.A.B.j.j.w.c.C.D.v.E", "Qt.a.c.F.G.H.I.I.J.K.L.B.M.N.O.O.P.Q.j.j.R", "Qt.a.c.S.j.T.c.U.V.W.B.X.X.j.Y.c.c.X.j.Z.0", "Qt.a.#.c.c.c.1.c.G.j.j.j.j.j.Y.c.2.c.c.3.4", "Qt.a.#.#.#.5.6.c.7.Y.Y.Y.Y.Y.8.c.9#.##.b#a", "Qt.a.#.#.##b#c.c.c.c.c.c.c.c.c.c#d#e#f.b#g", "Qt.a.#.#.#.##h#i#j#k#l#m#l#l#n#o#p#q#r.b#s", "Qt.a.#.#.#.##t#u#v#w#x#y#z#A#B#C#D#E#F.b#G", "Qt.a.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.b.#", "Qt.a.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.b.#", ".#.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.#", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/open.xpm0000644000000000000000000000103707252426527014700 /* XPM */ static char *open_xpm[] = { /* width height num_colors chars_per_pixel */ " 16 16 5 1", /* colors */ ". c #000000", "# c #808000", "a c #none", "b c #ffff00", "c c #ffffff", /* pixels */ "aaaaaaaaaaaaaaaa", "aaaaaaaaa...aaaa", "aaaaaaaa.aaa.a.a", "aaaaaaaaaaaaa..a", "a...aaaaaaaa...a", ".bcb.......aaaaa", ".cbcbcbcbc.aaaaa", ".bcbcbcbcb.aaaaa", ".cbcb...........", ".bcb.#########.a", ".cb.#########.aa", ".b.#########.aaa", "..#########.aaaa", "...........aaaaa", "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/openfiledlg.old.xpm0000644000000000000000000001473307252426527017013 /* XPM */ static char *openfiledlg[] = { /* width height num_colors chars_per_pixel */ " 24 22 6 1", /* colors */ ". c #000000", "# c #0000ff", "a c #3880b0", "b c #80b8d8", "c c #c0d8f0", "d c #ffff00", /* pixels */ "bbbbbbbbbbbbbbbbbbbbbbbb", "baaaaaaaaaaaaaaaaaaaaaab", "bac.##############.c.c.b", "ba.....................b", "bacbcbcbcbcbcbcbcbcbcb.b", "babcbcbcbcbcbcbcbcbcbc.b", "bacbc.....cbcbcbcbcbcb.b", "babc.dcdcd.......cbcbc.b", "bacb.cdcdcdcdcdcd.cbcb.b", "babc.dcdcdcdcdcdc.bcbc.b", "bacb.cdcdcdcdcdcd.cbcb.b", "babc.dcdcdcdc......cbc.b", "bacb.cdc.....bdbdbd.cb.b", "babc.dc.bdbdbdbdbdb.bc.b", "bacb.c.bdbdbdbdbdb.bcb.b", "babc.d.dbdbdbdbdbd.cbc.b", "bacb..dbdbdbdbdbd.cbcb.b", "babcb............cbcbc.b", "bacbcbcbcbcbcbcbcbcbcb.b", "babcbcbcbcbcbcbcbcbcbc.b", "ba.....................b", "bbbbbbbbbbbbbbbbbbbbbbbb" }; SIMPLE = T BITPIX = 8 NAXIS = 2 NAXIS1 = 24 NAXIS2 = 22 HISTORY Written by XV 3.10a END nnөөөөөөөөөnөөөөөөөөөөnөөөnөשששששөөnשששששөnөשששששөnשששששnөששөnөnөөөnөnөөөnөөnөөөөөөөnөөөөөөөөөnөөөөөөөөөөnn''''''''''''''nnnnnnnnnnnnnnnnnnnnnnvdkbuilder2-2.4.0/vdkbuilder/pixmaps/openfiledlg.xpm0000644000000000000000000000153507252426527016232 /* XPM */ static char *openfiledlg_xpm[] = { /* width height num_colors chars_per_pixel */ " 24 22 6 1", /* colors */ ". c #000000", "# c #0000ff", "a c #3880b0", "b c #none", "c c #ffffff", "d c #ffff00", /* pixels */ "bbbbbbbbbbbbbbbbbbbbbbbb", "baaaaaaaaaaaaaaaaaaaaaab", "bac.##############.c.c.b", "ba.....................b", "bacbcbcbcbcbcbcbcbcbcb.b", "babcbcbcbcbcbcbcbcbcbc.b", "bacbc.....cbcbcbcbcbcb.b", "babc.dcdcd.......cbcbc.b", "bacb.cdcdcdcdcdcd.cbcb.b", "babc.dcdcdcdcdcdc.bcbc.b", "bacb.cdcdcdcdcdcd.cbcb.b", "babc.dcdcdcdc......cbc.b", "bacb.cdc.....bdbdbd.cb.b", "babc.dc.bdbdbdbdbdb.bc.b", "bacb.c.bdbdbdbdbdb.bcb.b", "babc.d.dbdbdbdbdbd.cbc.b", "bacb..dbdbdbdbdbd.cbcb.b", "babcb............cbcbc.b", "bacbcbcbcbcbcbcbcbcbcb.b", "babcbcbcbcbcbcbcbcbcbc.b", "ba.....................b", "bbbbbbbbbbbbbbbbbbbbbbbb" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/openprj.xpm0000644000000000000000000000764607252426527015430 /* XPM */ char * loadprj_xpm[] = { "25 25 163 2", " c None", ". c #80867F", "+ c #8B8D8A", "@ c #2F2F2F", "# c #555555", "$ c #7A8379", "% c #B8C3B7", "& c #C0C5BF", "* c #717271", "= c #939793", "- c #4C4C4C", "; c #515151", "> c #EBEBEB", ", c #6D6D6D", "' c #6D766C", ") c #A4B1A3", "! c #ADBAAC", "~ c #97A296", "{ c #2B302B", "] c #919C91", "^ c #C8CEC7", "/ c #363536", "( c #F0F0F0", "_ c #F6F6F6", ": c #8C8E8C", "< c #595F58", "[ c #8E9A8D", "} c #8D9B8C", "| c #838882", "1 c #222222", "2 c #626A61", "3 c #AEBBAD", "4 c #C5CEC5", "5 c #ADADAD", "6 c #8D8D8D", "7 c #DADADA", "8 c #FBFBFB", "9 c #BFC0BF", "0 c #595D58", "a c #737C72", "b c #B2BDB1", "c c #B9BEB9", "d c #525352", "e c #0A0B0A", "f c #484E48", "g c #A5B3A4", "h c #ABB9AA", "i c #B9C4B8", "j c #D7DBD7", "k c #9F9E9F", "l c #AAABAA", "m c #F4F4F4", "n c #EFF0EF", "o c #8F918F", "p c #525851", "q c #C6CEC5", "r c #999C98", "s c #252525", "t c #212421", "u c #939F92", "v c #C8D1C8", "w c #BBBDBB", "x c #7B7C7B", "y c #E0E0DF", "z c #FEFEFE", "A c #C5C7C5", "B c #535652", "C c #768075", "D c #AFBBAE", "E c #B6BDB5", "F c #484A47", "G c #070807", "H c #8C978B", "I c #B7C3B6", "J c #D2D6D1", "K c #8B8C8B", "L c #B2B2B2", "M c #808480", "N c #646C63", "O c #A1AEA0", "P c #BCC6BB", "Q c #595E58", "R c #7F897E", "S c #AEBBAC", "T c #CBD3CA", "U c #B0B2B0", "V c #787978", "W c #4F534F", "X c #717A70", "Y c #919E8F", "Z c #434D42", "` c #555D55", " . c #AAB7A8", ".. c #909B8F", "+. c #5C5E5B", "@. c #AEAEAE", "#. c #3F423F", "$. c #676F66", "%. c #7D897B", "&. c #262E25", "*. c #343933", "=. c #929E90", "-. c #899888", ";. c #414341", ">. c #969696", ",. c #373A37", "'. c #6E776D", "). c #6F7B6D", "!. c #1D221C", "~. c #3D453C", "{. c #8B9889", "]. c #91A090", "^. c #393E38", "/. c #7F7F7F", "(. c #393D39", "_. c #525E50", ":. c #323831", "<. c #7B8879", "[. c #A9B7A8", "}. c #94A292", "|. c #353D34", "1. c #585858", "2. c #484E47", "3. c #747E72", "4. c #384137", "5. c #232923", "6. c #687467", "7. c #A3B1A1", "8. c #99A797", "9. c #3A4339", "0. c #3D3E3D", "a. c #545B53", "b. c #606C5F", "c. c #131813", "d. c #515D4F", "e. c #919F8F", "f. c #9EAD9D", "g. c #444F42", "h. c #131513", "i. c #565E55", "j. c #353D33", "k. c #010201", "l. c #000000", "m. c #424D40", "n. c #71806F", "o. c #9DAB9C", "p. c #A2B1A1", "q. c #4F5D4E", "r. c #181A18", "s. c #404840", "t. c #090B09", "u. c #363F35", "v. c #556453", "w. c #839281", "x. c #566454", "y. c #2A2E29", "z. c #1E231D", "A. c #384037", "B. c #465344", "C. c #3D483B", "D. c #212521", "E. c #050605", "F. c #070907", " ", " ", " ", " ", " . + @ ", " # $ % & * ", " = - ; > , ' ) ! ~ { ", " ] ^ - / ( _ : < [ } | 1 ", " 2 3 4 5 6 7 8 9 0 a b c d e ", " f g h i j k l m n o p ~ q r s ", " t u h h ! v w x y z A B C D E F G ", " H h h h h I J K L _ n M N O P Q ", " R h h h h h S T U V 7 n W X Y Z ", " ` .h h h h h h i ..+.@.#.$.%.&. ", " *.=.h h h h h h h -.;.>.,.'.).!. ", " ~.{.h h h h h h ].^./.(.C _. ", " :.<.[.h h h h }.|.1.2.3.4. ", " 5.6.7.h h h 8.9.0.a.b.c. ", " d.e.[.h f.g.h.i.j.k.l. ", " m.n.o.p.q.r.s.t.l.l.l. ", " u.v.w.x.y.z.l.l.l. ", " A.B.C.D.E.l.l. ", " F.l.l. ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/packer.xpm0000644000000000000000000000130507252426527015202 /* XPM */ static char* packer_xpm[]={ "21 21 9 1", "# c None", ". c #808080", "g c #c3c3c3", "c c #00ff00", "e c #c0c0ff", "a c #ffff00", "b c #800000", "f c #0000ff", "d c #ff0000", ".....................", ".###################.", ".#aaaaa##bbbbb##cccc.", ".#aaaaa##bbbbb##cccc.", ".#aaaaa##bbbbb##cccc.", ".###################.", ".###################.", ".#ddddddddddddddddd#.", ".#ddddddddddddddddd#.", ".#ddddddddddddddddd#.", ".#ddddddddddddddddd#.", ".###################.", ".#eee##eee##fff##ff#.", ".#eee##eee##fff##ff#.", ".#eee##eee##fff##ff#.", ".###################.", ".#ggggggggggggggggg#.", ".#ggggggggggggggggg#.", ".#ggggggggggggggggg#.", ".###################.", "....................."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/pixbutton.xpm0000644000000000000000000000144407334252117015766 /* XPM */ static char *pixbutton_xpm[] = { /* columns rows colors chars-per-pixel */ "24 22 6 1", ". c #000000", "# c #gray60", "a c #none", "b c #ffff00", "c c #0000ff", "d c #ffffff", "a......................a", ".ddddddddddddddddddddd#.", ".daaaaaaaaaaaaaaaaaaa##.", ".daaaaaadddddaaaaaaaa##.", ".daaadddaaadddaaaaaaa##.", ".daaaaaaaa.ddd.daaaaa##.", ".daa#aaadd..dd..ddaaa##.", ".daab#aa.d#.#dd.dcaaa##.", ".daab#a..dd..dd.#ddaa##.", ".daabb#..dd..dd..ddda##.", ".daabb#..dd..dd..ddda##.", ".daab#a..d#.#dd.#ddaa##.", ".daab#aa.d..ddd.ddaaa##.", ".daa#aaaad.ddd.ddaaaa##.", ".daaaaaaaa.ddd.daaaaa##.", ".daaaaaaaaaaa..aaaaaa##.", ".daaaaaaaaaa..a.aaaaa##.", ".daaaaaaaaa..aaa.aaaa##.", ".daaaaaaaaaaaaaaaaaaa##.", ".d#####################.", ".######################.", "a......................a" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/pixmap.xpm0000644000000000000000000000136407334252130015224 /* XPM */ static char *pixmap_xpm[] = { /* width height num_colors chars_per_pixel */ " 23 18 8 1", /* colors */ ". c #000000", "# c #0000ff", "a c #008000", "b c #00ffff", "c c #3880b0", "d c #none", "e c #c0d8f0", "f c #ffff00", /* pixels */ "ddddddddddddddddddddddd", "dcccccccccccccccccccccd", "dceeeeeeeeeeeeeeeeeee.d", "dceebebebebebebebebeb.d", "dcebebebebebebebebebe.d", "dceebeddbebebebebebeb.d", "dcebedfedbebebebebebe.d", "dceebdefdebebebebebeb.d", "dcebebddebebebebebeba.d", "dceebebebebebebebebaa.d", "dcebebebebebebebeaaaa.d", "dceebebebebebebaaaaaa.d", "dcebebebebebeaaaaaaaa.d", "dc#############aaaaaa.d", "dc###############aaaa.d", "dc#################aa.d", "dc###################.d", "dc....................d" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/prj_node.xpm0000644000000000000000000000113707334252123015526 /* XPM */ char *prj_node_xpm[] = { /* width height num_colors chars_per_pixel */ " 17 17 7 1", /* colors */ ". c #000000", "# c #00007f", "a c #7f7f7f", "b c #808080", "c c #bfbfbf", "d c #ffff00", "e c #none", /* pixels */ "eeeeeeeeeeeeeeeee", "eeaaaaaaaaaaaaa.e", "eea###########c.e", "eea###########c.e", "eeaecececececec.e", "aaaaaaaaecececc.e", "adededeacececec.e", "aeaaaaaaacececc.e", "adaeeeeecececec.e", "aeae####ccececc.e", "adaeeeeecececec.e", "aeae####ccccccc.e", "adaeeeeec.......e", "..ae####c.eeeeeee", "eeacccccc.eeeeeee", "ee........eeeeeee", "eeeeeeeeeeeeeeeee" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/progressbar.xpm0000644000000000000000000000132307252426527016266 /* XPM */ static char *progressbar_xpm[] = { /* columns rows colors chars-per-pixel */ "21 21 6 1", " c Black", ". c #7b7b7b", "X c Gray74", "o c Gray87", "O c Gray100", "+ c None", /* pixels */ "+++++++++++++++++++++", "+++++++++++++++++++++", "+++++++++++++++++++++", "+++++++++++++++++++++", "+++++++++++++++++++++", "+++++++++++++++++++++", "++..................+", "++.OOOOOO. ++++++++O+", "++.Oooooo. ++++++++O+", "++.Oooooo. ++++++++O+", "++.Oooooo. ++++++++O+", "++.Oooooo. ++++++++O+", "++.Oooooo. ++++++++O+", "++........ ++++++++O+", "++. ++++++++O+", "++OOOOOOOOOOOOOOOOOO+", "+++++++++++++++++++++", "+++++++++++++++++++++", "+++++++++++++++++++++", "+++++++++++++++++++++", "+++++++++++++++++++++" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/quit.xpm0000644000000000000000000000674107451123220014711 /* XPM */ static char *quit_xpm[]={ "24 24 141 2", "Qt c None", ".# c #000000", "#. c #00c0c0", ".z c #040504", ".A c #040604", ".B c #050705", ".H c #080a07", ".I c #0a0c09", ".J c #0a0d09", ".K c #0b0e0a", ".2 c #0c0c0c", ".Q c #0c0f0b", ".R c #0f130d", ".S c #10140e", ".X c #10150f", ".T c #11150f", ".Y c #141912", ".Z c #161c14", ".0 c #171d15", "## c #181e16", ".3 c #192017", "#D c #1b2319", ".4 c #1c2319", ".5 c #1d241a", "#f c #1d261b", ".p c #1e1e1d", "#a c #1e261b", "#x c #1e261c", ".g c #20201f", "#b c #212a1e", "#c c #222b1f", "#Q c #232c1f", "#s c #232c20", "#g c #242e21", "#E c #253022", ".t c #262626", "#h c #273224", "#i c #283325", "#l c #293426", "#t c #2a3526", "#2 c #2c3728", "#K c #2c3828", "#m c #2d3929", "#n c #2e3a2a", "#u c #303c2b", "#y c #303d2c", "#F c #303e2d", "#R c #313e2d", "#P c #323830", "#1 c #32392f", "a. c #333c30", "#v c #33402e", "#z c #374532", "#A c #394834", "#G c #394934", "af c #3b4736", "#S c #3b4a36", "#H c #3d4e38", "#3 c #3f503a", "#L c #40503a", ".u c #414140", "ag c #42543c", "#T c #43553d", "#M c #43553e", "#4 c #465840", "a# c #475a41", "#U c #485b42", "#V c #4a5e44", "#5 c #4b5e44", "#6 c #4e6347", "#d c #4f0000", "aa c #4f6348", "#B c #500000", "#7 c #506549", "ah c #51674a", "ab c #53694c", "#J c #565655", "ac c #566c4e", "ad c #576d4f", "#j c #580000", "ai c #586f50", "aj c #5b7353", "ak c #5c7454", ".W c #5d5d5c", ".f c #61615e", ".y c #636362", "#p c #6a0000", ".8 c #701616", "#q c #720000", ".e c #727370", ".n c #767674", ".o c #777774", "#O c #777776", "#9 c #7a7d78", "#o c #7c4343", "#0 c #8b8b8a", ".s c #8f8f8d", "ae c #91968f", ".d c #92928f", ".7 c #990000", "#I c #9d9d9b", ".9 c #a6a6a5", ".c c #a8a8a4", ".m c #a8a8a5", "#Z c #acacab", "#e c #aeaeab", ".r c #aeaeac", "#k c #b5b5b3", ".1 c #b7b7b4", ".q c #b9b9b7", "#N c #babab7", "#r c #bdbdbb", ".b c #bdbdbc", ".V c #bfbfbd", ".l c #c4c4c1", ".x c #c5c5c2", "#w c #c5c5c3", "#Y c #c6c6c3", ".P c #cbcbc8", ".6 c #cd8484", "#C c #cdcdcb", ".k c #cfcfcd", ".G c #d0d0ce", ".E c #d5d5d3", ".a c #d6d6d4", ".j c #dadad7", "#8 c #dadad8", ".F c #dbdbd8", ".w c #dededc", ".N c #df421e", "#X c #e5e5e3", ".D c #e67056", ".i c #e6e6e4", ".C c #e87b62", ".O c #e97e66", ".v c #e9836c", ".M c #eb8d77", ".U c #efa392", ".L c #f0b0a1", "#W c #f0f0ee", ".h c #f1f1ef", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQt.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#Qt", "QtQtQtQtQtQtQt.#.a.b.c.d.e.f.f.f.g.#.#.#.#.#.#Qt", "QtQtQtQtQtQtQt.#.h.i.j.k.l.m.n.o.p.#.#.#.#.#.#Qt", "QtQtQtQtQt.#Qt.#.h.i.j.k.l.q.r.s.t.#.#.#.#.#.#Qt", "QtQtQtQtQt.#.#.#.h.i.j.k.l.q.q.q.u.#.#.#.#.#.#Qt", "QtQtQtQtQt.#.v.#.w.i.j.k.x.q.q.q.y.z.A.B.B.B.#Qt", ".#.#.#.#.#.#.C.D.#.E.F.G.x.q.q.q.y.H.I.J.K.K.#Qt", ".#.L.C.C.C.C.M.N.O.#.P.G.x.q.q.q.y.Q.R.S.T.T.#Qt", ".#.U.N.N.N.N.N.N.N.D.#.V.x.q.W.q.y.X.Y.Z.0.0.#Qt", ".#.U.N.N.N.N.N.N.N.N.D.#.1.q.W.2.y.Y.3.4.5.5.#Qt", ".#.6.7.7.7.7.7.7.7.7.7.8.#.9.2.q#.###a#b#c#c.#Qt", ".#.6.7.7.7.7.7.7.7.7#d.##e.q.q.q.y#f#g#h#i#i.#Qt", ".#.6.7.7.7.7.7.7.7#j.##k.x.q.q.q.y#c#l#m#n#n.#Qt", ".##o#p#p#p#p#q.7#j.##r.G.x.q.q.q.y#s#t#u#v#v.#Qt", ".#.#.#.#.#.##q#j.##w.F.G.x.q.q.q.y#x#h#y#z#A.#Qt", "QtQtQtQtQt.##B.##C.i.F.G.x.q.q.q.y#D#E#F#G#H.#Qt", "QtQtQtQtQt.#.#.#.h.i.F.G.x.q.r#I#J#b#K#z#L#M.#Qt", "QtQtQtQtQt.#Qt.#.h.i.F.G#N#I#O#P#Q#R#S#T#U#V.#Qt", "QtQtQtQtQtQtQt.##W#X#Y#Z#0#1#2#z#3#4#5#6#7#7.#Qt", "QtQtQtQtQtQtQt.##8.V#9a.#z#La#aaabacacadadad.#Qt", "QtQtQtQtQtQtQt.#aeafag#Vahaiajakakakakakakak.#Qt", "QtQtQtQtQtQtQt.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#Qt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/radiobutton.xpm0000644000000000000000000000130507252426531016262 /* XPM */ static char *radiobutton_xpm[] = { /* columns rows colors chars-per-pixel */ "21 21 5 1", " c Black", ". c #7b7b7b", "X c Gray74", "o c Gray100", "O c None", /* pixels */ "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOO.OOOOOOOOOO", "OOOOOOOOO...OOOOOOOOO", "OOOOOOOO.. ..OOOOOOOO", "OOOOOOO.. O ..OOOOOOO", "OOOOOO.. OOO ..OOOOOO", "OOOOO.. OOOOO ..OOOOO", "OOOOOOooOOOOOooOOOOOO", "OOOOOOOooOOOooOOOOOOO", "OOOOOOOOooOooOOOOOOOO", "OOOOOOOOOoooOOOOOOOOO", "OOOOOOOOOOoOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/rbgroup.xpm0000644000000000000000000000123107450724772015416 /* XPM */ static char *rbgroup_xpm[]={ "21 21 6 1", ". c None", "c c #000080", "# c #7b7b7b", "d c #800000", "a c #808080", "b c #ffffff", ".....................", ".....................", ".##aaaaaaaaaa######b.", ".#bbbbbbbbbbbbbbbb#b.", ".#b...............#b.", ".#b...............#b.", ".#b.cc............#b.", ".#b.c.b.cccccccc..#b.", ".#b.c.b...........#b.", ".#b..b............#b.", ".#b...............#b.", ".#b...............#b.", ".#b.cc............#b.", ".#b.c.b.dddddddd..#b.", ".#b.c.b...........#b.", ".#b..b............#b.", ".#b...............#b.", ".#b...............#b.", ".##################b.", ".bbbbbbbbbbbbbbbbbbb.", "....................."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/redo.xpm0000644000000000000000000000242507354667350014676 /* XPM */ char * redo_xpm[] = { "24 24 39 1", " c None", ". c #000000", "+ c #939A8D", "@ c #BAD09D", "# c #92998C", "$ c #748261", "% c #9EB186", "& c #C2D5AA", "* c #D1DFBE", "= c #BED2A3", "- c #99A28F", "; c #889873", "> c #D5E1C6", ", c #CDDCBC", "' c #D2E0BF", ") c #C5D7AE", "! c #919889", "~ c #D4E0C5", "{ c #D3E0C1", "] c #BFD3A6", "^ c #9BAA87", "/ c #ABBB96", "( c #92AD62", "_ c #7C9B40", ": c #59702D", "< c #7F8E6B", "[ c #C8D9B2", "} c #85A24D", "| c #53692A", "1 c #9BB572", "2 c #6D8839", "3 c #95A77E", "4 c #8BA859", "5 c #657255", "6 c #98AF74", "7 c #AFC394", "8 c #6D7A5B", "9 c #9CAF84", "0 c #879772", " ", " ", " ", " ", " . ", " .. ", " .+. ", " ....@#. ", " .$%&*=@-. ", " .;>,')@@@!. ", " .$~{*]@@@@@^. ", " ./>(______:. ", " .<[}______|. ", " .%1_:..._|. ", " .@_2. .:. ", " .@_. .. ", " .34. . ", " .56. ", " .7. ", " .89. ", " .$0. ", " .. ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/refresh.xpm0000644000000000000000000000246107374501073015372 /* XPM */ static char * refresh_xpm[] = { "20 20 53 1", " c None", ". c #272727", "+ c #6C6C6C", "@ c #3C3B3D", "# c #867D8E", "$ c #836D97", "% c #332E37", "& c #382D41", "* c #3D2D4B", "= c #615E65", "- c #877697", "; c #74568D", "> c #58436B", ", c #5C4072", "' c #5A3E6F", ") c #453551", "! c #2E2A30", "~ c #4D4355", "{ c #4D3E5A", "] c #2A272D", "^ c #3D2C4C", "/ c #4B365E", "( c #5A3F6F", "_ c #3E3049", ": c #402C4F", "< c #4F3863", "[ c #4B345D", "} c #34253F", "| c #766782", "1 c #8E819A", "2 c #413C46", "3 c #3F3F3F", "4 c #605868", "5 c #7A6889", "6 c #483756", "7 c #3B2A48", "8 c #2A272C", "9 c #7F7886", "0 c #40344A", "a c #37313B", "b c #584369", "c c #5E4376", "d c #5F4476", "e c #5E4671", "f c #867199", "g c #64487A", "h c #44384F", "i c #463258", "j c #432F54", "k c #372E3D", "l c #6E4F86", "m c #553F66", "n c #312D35", " ", " ", " ", " . ", " .+ ", " @#$%&* ", " =-;>,')! ", " ~{]^/(_ ", " . . :<. ", " .. [} ", " }| }. ", " .12 3 . ", " 4567890 ", " abcdefgh ", " ijklmn ", " .. ", " . ", " ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/remfromprj.xpm0000644000000000000000000000135407334252132016112 /* XPM */ static char *remfromprj_xpm[] = { /* width height num_colors chars_per_pixel */ " 24 18 6 1", /* colors */ ". c #000000", "# c #000080", "a c #808080", "b c #none", "c c #ffff00", "d c #ffffff", /* pixels */ "bbbbbbbbbbbbbbbbbbbbbbbb", "bbbbaaaaaaaaabbbb######b", "bbbbaddddddd..bbb######b", "bbbbaddddddd.d.bbbbbbbbb", "bbbbadaaaaad.dd.bbbbbbbb", "bbbbaddddddd....bbbbbbbb", "bba.adaaaaadddd.bbbbbbbb", "bb.dadddddddddd.bbbbbbbb", "bb.cadaaaaaaaad.bbbbbbbb", "bb.dadddddddddd.bbbbbbbb", "bb.cadddddd.......bbbbbb", "bb.dad.....acacaca.bbbbb", "bb.ca.acacacacacac.bbbbb", "bb.da.cacacacacac.bbbbbb", "bb.c.cacacacacaca.bbbbbb", "bb.d.acacacacaca.bbbbbbb", "bb..acacacacacac.bbbbbbb", "bba.............bbbbbbbb" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/remove_big.xpm0000644000000000000000000000246607334252124016053 /* XPM */ char *remove_big_xpm[] = { /* width height num_colors chars_per_pixel */ " 45 23 4 1", /* colors */ ". c #000000", "# c #800000", "a c #none", "b c #ff0000", /* pixels */ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaabbb#aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaabbbbb#aaaaaaaaaab#aaaaaaaaaaaaaa", "aaaaaaaaaaaaaabbbbb#aaaaaaabb#aaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaabbbbb#aaaaabb#aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaabbbb#aaabb#aaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaabbb#abb#aaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaabbbbb#aaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaabbb#aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaabbbbb#aaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaabbb#abb#aaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaabbb#aaabb#aaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaabbb#aaaaabb#aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaabbbb#aaaaaabb#aaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaabbbb#aaaaaaaab#aaaaaaaaaaaaaaa", "aaaaaaaaaaaaaabbbbb#aaaaaaaaab#aaaaaaaaaaaaaa", "aaaaaaaaaaaaaabbbb#aaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaabbb#aaaaaaaaaaaab#aaaaaaaaaaaaa", "aaaaaaaaaaaaaaab#aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/repeatsearch.xpm0000644000000000000000000001023407355133123016373 /* XPM */ static char * repeatsearch_xpm[] = { "24 24 184 2", " g None", ". g #000000", "+ g #FFFFFF", "@ g #E0E0E0", "# g #C1C1C1", "$ g #F4F4F4", "% g #FDFDFD", "& g #FBFBFB", "* g #C3C3C3", "= g #A8A8A8", "- g #F6F6F6", "; g #FBFBFA", "> g #FAFAFA", ", g #ADADAD", "' g #767676", ") g #5D5D5D", "! g #404040", "~ g #F8F8F8", "{ g #F3F3F3", "] g #F8F8F6", "^ g #E2E2E2", "/ g #858585", "( g #4B4B49", "_ g #161616", ": g #F2F2F2", "< g #F0F0F0", "[ g #EFEFEF", "} g #D5D5D5", "| g #F9F9F9", "1 g #B3B3B1", "2 g #47473F", "3 g #0A0A09", "4 g #4B4B43", "5 g #EDEDEA", "6 g #EAEAE7", "7 g #E5E5E5", "8 g #DFDFDF", "9 g #EBEBEB", "0 g #A7A7A7", "a g #34342E", "b g #9D9D8D", "c g #CFCFB9", "d g #C4C4AF", "e g #8D8D7F", "f g #353530", "g g #AEAEAE", "h g #EDEDED", "i g #EBEBE9", "j g #E9E9E7", "k g #E0E0DE", "l g #BFBFBF", "m g #46463F", "n g #9C9C8C", "o g #E2E2D0", "p g #EDEDE7", "q g #C0C0AC", "r g #B2B29F", "s g #828274", "t g #4C4C44", "u g #DADAD7", "v g #D9D9D9", "w g #D9D9D6", "x g #D6D6D4", "y g #E5E5E4", "z g #D7D7D5", "A g #BABABA", "B g #ECECEC", "C g #090908", "D g #D5D5BF", "E g #C3C3AE", "F g #B5B5A2", "G g #01DFFF", "H g #DDDDDC", "I g #E4E4E3", "J g #E4E4E2", "K g #E2E2E0", "L g #D3D3D1", "M g #ECECEA", "N g #D5D5D3", "O g #090909", "P g #CACAB5", "Q g #DDDDD0", "R g #B7B7A4", "S g #AAAA98", "T g #D1D1CF", "U g #DEDEDC", "V g #DEDEDB", "W g #D9D9D7", "X g #BDBDBC", "Y g #E7E7E7", "Z g #D4D4D4", "` g #474740", " . g #929283", ".. g #BABAA7", "+. g #ADAD9B", "@. g #9F9F8E", "#. g #C9C9C7", "$. g #DBDBD8", "%. g #DCDCD9", "&. g #DBDBD9", "*. g #BCBCBC", "=. g #C4C4C4", "-. g #6D6D6B", ";. g #34342F", ">. g #C8C8C7", ",. g #B4B4B4", "'. g #E3E3E2", "). g #D3D3D3", "!. g #B3B3B2", "~. g #717170", "{. g #D5D5D1", "]. g #D7D7D3", "^. g #D0D0CE", "/. g #BABAB8", "(. g #DCDCDA", "_. g #CACAC8", ":. g #B6B6B3", "<. g #9C9C9A", "[. g #D1D1D0", "}. g #D3D3D0", "|. g #DCDCDB", "1. g #E0E0DC", "2. g #DDDDDB", "3. g #D3D3D2", "4. g #C2C2BF", "5. g #9A9A97", "6. g #C8C8C6", "7. g #B6B6B6", "8. g #D4D4D0", "9. g #C7C7C4", "0. g #C6C6C0", "a. g #BDBDB9", "b. g #B2B2AD", "c. g #ADADAA", "d. g #AAAAA7", "e. g #51514F", "f. g #010101", "g. g #CFCFCC", "h. g #C0C0BC", "i. g #D0D0CD", "j. g #9F9F9E", "k. g #6C6C6A", "l. g #C9C9C5", "m. g #B8B8B8", "n. g #CECEC9", "o. g #BFBFB9", "p. g #BCBCB9", "q. g #BCBCB8", "r. g #B9B9B4", "s. g #B8B8B2", "t. g #9E9E99", "u. g #8A8A87", "v. g #81817F", "w. g #8F8F8B", "x. g #BFBFBB", "y. g #CACAC6", "z. g #B8B8B6", "A. g #D0D0CC", "B. g #CECECC", "C. g #CECECA", "D. g #CCCCCA", "E. g #CBCBC7", "F. g #C4C4C0", "G. g #B2B2AE", "H. g #9E9E9C", "I. g #A3A3A0", "J. g #C1C1BD", "K. g #B3B3B3", "L. g #D1D1CE", "M. g #CCCCC8", "N. g #C9C9C6", "O. g #C3C3C0", "P. g #B9B9B7", "Q. g #BABAB7", "R. g #C6C6C2", "S. g #C7C7C3", "T. g #B1B1AF", "U. g #B4B4B3", "V. g #B4B4B1", "W. g #B3B3AF", "X. g #B1B1AD", "Y. g #AFAFAD", "Z. g #B6B6B4", "`. g #929290", " ", ". . . . . . . . . . . . . . . . . . ", ". + + + + + + + + + + + + + + + @ # . ", ". + $ + + + + + % % % % % % % & * & = . ", ". + - + + + % % % % % % & & ; > , ' ) ! . ", ". + - + & & & & ~ ~ ~ - - - { ] ^ / ( _ . ", ". + $ % % & & ; > > > ~ ] - $ : < [ } , . ", ". + : | - - 1 2 3 3 4 , 5 6 7 ^ 8 9 ^ # . ", ". + < ~ ~ 0 a b c d e f g h 9 i j j k l . ", ". + [ { [ m n o p q r s t u v w x y z A . ", ". + h { B C D ; E F G G G H I J k K L A . ", ". + 9 M N O P Q R S G G G T U U V U W X . ", ". + Y M Z ` ...+.@.G G G #.$.%.&.&.N *.. ", ". + 7 @ =.-.;.G G G G G G G G G z W >.,.. ", ". + K '.).!.~.G G G G G G G G G {.].^./.. ", ". + U (._.:.<.G G G G G G G G G [.}.^./.. ", ". + |.1.2.3.4.G G G G G G G G G 5.[.6.7.. ", ". + &.8.9.0.a.b.c.d.G G G e.f.f.f.g.h.,.. ", ". + } W W ].8.T i.i.G G G j.k.f.f.l.l.m.. ", ". + L n.o.p.q.q.r.s.G G G t.u.v.w.x.y.z.. ", ". + N }.}.[.^.A.B.C.C.D.E.F.G.H.I.p.J.K.. ", ". + [.L.^.B.C.C.C.C.M.M.M.N.O.P.Q.R.S.,.. ", ". + T.U.V.V.V.1 1 W.W.W.T.X.X.Y.Y.W.Z.`.. ", ". . . . . . . . . . . . . . . . . . . . "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/rightarrow.xpm0000644000000000000000000000156107451200337016117 /* XPM */ static char *rightarrow_xpm[]={ "22 22 17 1", ". c None", "b c #000000", "c c #008080", "e c #00c0c0", "o c #040404", "n c #090909", "m c #0d0d0d", "l c #121212", "k c #161616", "j c #1b1b1b", "i c #1f1f1f", "h c #242424", "g c #282828", "f c #2d2d2d", "d c #313131", "# c #323232", "a c #ffffff", "......................", "......................", "......##..............", "......#ab.............", "......#cab............", "......dceab...........", "......fceeab..........", "......gceeeeb.........", "......hceeeeab........", "......iceeeeeab.......", "......jceeeeeeab......", "......kceeeeeeab......", "......lceeeeebb.......", "......mceeeebb........", "......nceeebb.........", "......oceebb..........", "......bcebb...........", "......bbbb............", "......bbb.............", "......bb..............", "......................", "......................"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/run.xpm0000644000000000000000000000443007451115277014541 /* XPM */ char *run_xpm[]={ "24 24 65 2", "Qt c None", ".m c #000000", ".# c #004040", ".g c #404000", ".c c #7a7356", ".x c #808000", ".i c #ada57b", ".s c #afa67b", ".t c #afa77c", ".d c #b0a77c", ".p c #b1a87d", ".a c #b2a97e", ".n c #b4ac80", ".e c #b5ac80", ".h c #b6ad80", ".b c #b6ad81", ".j c #b7ae81", ".q c #b9b082", ".T c #b9b183", ".u c #bab183", ".f c #bab184", ".S c #bbb284", ".v c #bbb285", ".w c #bcb385", ".k c #bdb486", ".6 c #beb486", ".o c #beb586", ".r c #c0b788", ".l c #c0c000", ".K c #c2b889", "#. c #c2b989", ".P c #c2b98a", ".W c #c3ba8a", ".y c #c4bb8b", ".E c #c5bc8b", ".3 c #c5bc8c", ".z c #c6bc8c", ".V c #c7bd8c", ".A c #c7bd8d", ".B c #c7be8d", ".D c #c8be8d", ".7 c #c8bf8d", ".C c #c8bf8e", ".9 c #c9bf8e", ".8 c #c9c08f", ".X c #cac08f", ".L c #cac18f", ".Q c #cbc18f", ".0 c #ccc290", ".F c #cdc391", ".J c #cdc491", ".4 c #cec491", ".2 c #cec592", ".U c #cfc592", ".5 c #cfc693", ".G c #d0c693", ".1 c #d1c793", ".H c #d1c794", ".Y c #d2c894", ".Z c #d2c995", ".I c #d3c995", ".R c #d4ca96", ".M c #d5cb97", ".N c #d6cc97", ".O c #d7cd98", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQt.#.#.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQt.#.a.#.b.c.#QtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQt.#.d.e.f.g.h.i.#QtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQt.#.#.j.k.l.d.m.#QtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQt.#.i.n.l.g.o.b.#QtQt.m.m.mQtQtQtQtQtQtQt", "QtQtQtQt.#.#.p.q.o.r.#.#Qt.m.s.t.p.mQt.mQtQtQtQt", "QtQtQtQtQt.#.c.#.u.c.#.u.m.m.f.v.w.m.m.x.mQtQtQt", "QtQtQtQtQtQt.#Qt.#.#.k.y.z.A.B.C.D.C.E.x.x.mQtQt", "QtQtQtQtQtQtQtQtQtQt.m.C.F.G.H.I.I.H.J.x.mQtQtQt", "QtQtQtQtQtQtQtQtQt.m.K.L.H.M.N.x.O.N.I.x.m.mQtQt", "QtQtQtQtQtQtQtQt.m.q.P.Q.H.N.x.l.g.O.R.x.x.x.mQt", "QtQtQtQtQtQtQtQt.m.S.P.L.H.x.l.T.l.g.R.U.V.x.mQt", "QtQtQtQtQtQtQtQt.m.w.W.X.G.R.x.l.g.Y.Z.0.x.x.mQt", "QtQtQtQtQtQtQtQtQt.m.m.D.J.Y.I.x.1.Y.2.x.m.mQtQt", "QtQtQtQtQtQtQtQtQtQt.m.3.X.4.5.G.U.0.D.x.mQtQtQt", "QtQtQtQtQtQtQtQtQt.m.6.W.z.7.8.9.B.x.x.x.x.mQtQt", "QtQtQtQtQtQtQtQtQtQt.m.o.m.m#..K.x.m.m.x.mQtQtQt", "QtQtQtQtQtQtQtQtQtQtQt.mQt.m.S.u.x.mQt.mQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQt.m.m.mQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/savefile.xpm0000644000000000000000000001133007452564743015537 /* XPM */ static char * savefile_xpm[] = { "24 24 220 2", " c None", ". c #000000", "+ c #C3D7F4", "@ c #A9CDE5", "# c #75757A", "$ c #EFC5BB", "% c #F1C8BE", "& c #F0C6BC", "* c #EEBCB2", "= c #EEBEB5", "- c #EEC1B8", "; c #EDBFB6", "> c #E9B7AD", ", c #E9B8AF", "' c #E9B9B1", ") c #E5BFBA", "! c #737277", "~ c #B3CDE3", "{ c #A1BED6", "] c #BBD6E8", "^ c #8AAAC5", "/ c #605F68", "( c #E08D7E", "_ c #E0826E", ": c #E0806E", "< c #DC7A68", "[ c #DC8171", "} c #DA7868", "| c #D48173", "1 c #D47D6E", "2 c #CE7265", "3 c #CF7264", "4 c #CE7567", "5 c #C4675B", "6 c #C36558", "7 c #626169", "8 c #87A3B7", "9 c #567187", "0 c #BAD5E9", "a c #88A7C3", "b c #686670", "c c #C8817B", "d c #CB7C74", "e c #CB7A73", "f c #CB7B73", "g c #CC7C72", "h c #CB7D73", "i c #BF6B64", "j c #CC7A70", "k c #C16A62", "l c #CC7C73", "m c #C2655B", "n c #C36459", "o c #BA6C6A", "p c #819EB6", "q c #547086", "r c #B6D3E7", "s c #87ABC1", "t c #737373", "u c #FFFFFF", "v c #83A0B8", "w c #526C80", "x c #B9D3E7", "y c #85A4BF", "z c #4F697C", "A c #B9D3E6", "B c #84A3BF", "C c #CECECE", "D c #CDCDCD", "E c #BFBFBF", "F c #88A4BB", "G c #486276", "H c #B7D2E7", "I c #82A0BB", "J c #636363", "K c #465E70", "L c #B5CAE5", "M c #7FA2B9", "N c #87A3BA", "O c #455C6D", "P c #AECCE5", "Q c #7DA0B6", "R c #C5C5C5", "S c #546069", "T c #B0D1E4", "U c #83A1B6", "V c #735B5B", "W c #515C64", "X c #AACEE3", "Y c #7B9BB2", "Z c #7A8E9A", "` c #7A7A7A", " . c #6B6F72", ".. c #6F6F6F", "+. c #696969", "@. c #6F777E", "#. c #86A2B9", "$. c #3A515D", "%. c #A9C9E2", "&. c #7494AF", "*. c #829FB7", "=. c #7F9DB6", "-. c #7E9CB5", ";. c #7998B2", ">. c #85A1B8", ",. c #8CA7BD", "'. c #8AA5BB", "). c #364A59", "!. c #ABC4E2", "~. c #7294AD", "{. c #6F90AC", "]. c #7192AE", "^. c #414A4E", "/. c #424A51", "(. c #525B63", "_. c #626F79", ":. c #5F6C76", "<. c #5C6971", "[. c #5A666F", "}. c #58636B", "|. c #57636A", "1. c #3B5360", "2. c #39424B", "3. c #7897B3", "4. c #A4B9CB", "5. c #364853", "6. c #AAC9E2", "7. c #7091AA", "8. c #6F8FA7", "9. c #4A5359", "0. c #97938C", "a. c #DFDDDA", "b. c #E3E1DE", "c. c #EBEAE8", "d. c #EAE9E7", "e. c #CFCEC9", "f. c #C9C6C0", "g. c #9B968E", "h. c #566168", "i. c #4B657A", "j. c #54738C", "k. c #AAC6DD", "l. c #34464E", "m. c #AAC9E1", "n. c #6C8EA6", "o. c #6C8CA4", "p. c #40474D", "q. c #DAD8D3", "r. c #E7E6E2", "s. c #67655E", "t. c #524F47", "u. c #D9D7D4", "v. c #C7C5BF", "w. c #C0BCB5", "x. c #B8B3AB", "y. c #434C54", "z. c #4D697F", "A. c #4F6F84", "B. c #B3CADC", "C. c #313E49", "D. c #A8C8E1", "E. c #6B8DA6", "F. c #728FA4", "G. c #E2E1DD", "H. c #F0EFEC", "I. c #CDCAC6", "J. c #C2BFB9", "K. c #CAC6C0", "L. c #DCDAD7", "M. c #4B555D", "N. c #4E697F", "O. c #BACCDC", "P. c #A4C4DE", "Q. c #698BA3", "R. c #708AA1", "S. c #383E43", "T. c #E0DEDA", "U. c #514E46", "V. c #4F4C44", "W. c #C7C4BE", "X. c #CBC8C2", "Y. c #E1E0DC", "Z. c #E9E8E6", "`. c #475158", " + c #4E6879", ".+ c #4D6C80", "++ c #A3C3DB", "@+ c #383F43", "#+ c #778999", "$+ c #6E899E", "%+ c #65859C", "&+ c #33383C", "*+ c #D7D4D0", "=+ c #D6D4D0", "-+ c #4E4A43", ";+ c #4D4942", ">+ c #D1CEC9", ",+ c #E6E5E2", "'+ c #EDECEA", ")+ c #454F55", "!+ c #486173", "~+ c #4D6678", "{+ c #A1C1DA", "]+ c #373C40", "^+ c #0C0D0F", "/+ c #4E5E6A", "(+ c #5B6E7C", "_+ c #4F5B62", ":+ c #A4A099", "<+ c #CCC9C3", "[+ c #D7D5D1", "}+ c #E4E2E0", "|+ c #DDDBD7", "1+ c #B8B5B0", "2+ c #3E474D", "3+ c #4A6176", "4+ c #4A6070", "5+ c #9BC3D8", "6+ c #363C41", "7+ c #28323E", " ", " . . . . . . . . . . . . . . . . . . . ", " . + @ # $ % & * = - ; > , > , ' ) ! ~ { . ", " . ] ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 . ", " . 0 a b c d e f g h i j k l m n o b p q . ", " . r s t u u u u u u u u u u u u u t v w . ", " . x y t u u u u u u u u u u u u u t v z . ", " . A B t C D D D D D D D D D D D E t F G . ", " . H I J u u u u u u u u u u u u u t F K . ", " . L M t u u u u u u u u u u u u u t N O . ", " . P Q t C D D D D D D D D D D D R t N S . ", " . T U V u u u u u u u u u u u u u t v W . ", " . X Y Z ` t t t t t ...t t t t +.@.#.$.. ", " . %.&.p v #.*.=.-.*.;.#.>.>.N *.,.v '.).. ", " . !.~.{.].^./.(._.:.<.[.}.|.(.1.2.3.4.5.. ", " . 6.7.8.9.0.a.b.c.c.d.a.e.f.g.h.i.j.k.l.. ", " . m.n.o.p.q.r.s.t.t.u.v.w.x.e.y.z.A.B.C.. ", " . D.E.F.p.G.H.s.t.t.I.J.w.K.L.M.N.A.O.C.. ", " . P.Q.R.S.T.c.U.V.V.W.w.X.Y.Z.`. +.+++@+. ", " . #+$+%+&+*+=+-+;+;+w.>+,+'+,+)+!+~+{+]+. ", " ^+/+(+_+:+w.x.<+<+[+}+d.|+1+2+3+4+5+6+. ", " . . . . . . . . . . . . . . . . 7+. ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/savefiledlg.xpm0000644000000000000000000000161407334252125016215 /* XPM */ static char *savefiledlg_xpm[] = { /* width height num_colors chars_per_pixel */ " 24 22 8 1", /* colors */ ". c #000000", "# c #000080", "a c #0000ff", "b c #008080", "c c #00ffff", "d c #3880b0", "e c #none", //"f c #c0d8f0", "f c #ffffff", /* pixels */ "eeeeeeeeeeeeeeeeeeeeeeee", "edddddddddddddddddddddde", "edf.aaaaaaaaaaaaaa.f.f.e", "ed.....................e", "edfefefefefefefefefefe.e", "edefee............efef.e", "edfef.e.ffffffff.e.efe.e", "edefe...f######f...fef.e", "edfef.f.ffffffff.c.efe.e", "edefe.c.f###f##f.f.fef.e", "edfef.f.ffffffff.c.efe.e", "edefe.c.ffffffff.f.fef.e", "edfef.fb........bc.efe.e", "edefe.cfcfcfcfcfcf.fef.e", "edfef.fcb......bfc.efe.e", "edefe.cf.eeeeee.cf.fef.e", "edfef.fc.eccfee.fc.efe.e", "edefe.cf.eccfee.cf.fef.e", "edfefe............eefe.e", "edefefefefefefefefefef.e", "ed.....................e", "eeeeeeeeeeeeeeeeeeeeeeee" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/saveprj.xpm0000644000000000000000000001200707452564651015413 /* XPM */ static char * saveprj_xpm[] = { "24 24 239 2", " c None", ". c #000000", "+ c #BAB9B6", "@ c #6D6D6D", "# c #727270", "$ c #484641", "% c #9F9D96", "& c #888781", "* c #C3D7F4", "= c #A9CDE5", "- c #75757A", "; c #EFC5BB", "> c #F1C8BE", ", c #F0C6BC", "' c #EEBCB2", ") c #EEBEB5", "! c #EEC1B8", "~ c #EDBFB6", "{ c #0B0908", "] c #C8C7C2", "^ c #B6B5AF", "/ c #908E86", "( c #97958E", "_ c #807D74", ": c #BBD6E8", "< c #8AAAC5", "[ c #605F68", "} c #E08D7E", "| c #E0826E", "1 c #E0806E", "2 c #DC7A68", "3 c #DC8171", "4 c #DA7868", "5 c #D48173", "6 c #A96458", "7 c #0A0505", "8 c #595854", "9 c #605E57", "0 c #898883", "a c #76746B", "b c #BAD5E9", "c c #88A7C3", "d c #686670", "e c #C8817B", "f c #CB7C74", "g c #CB7A73", "h c #CB7B73", "i c #CC7C72", "j c #CB7D73", "k c #010000", "l c #43423F", "m c #282724", "n c #363430", "o c #6D6B63", "p c #B6D3E7", "q c #87ABC1", "r c #737373", "s c #FFFFFF", "t c #020202", "u c #8C8B89", "v c #21201E", "w c #0A0908", "x c #181816", "y c #E6E6E4", "z c #65635C", "A c #B9D3E7", "B c #85A4BF", "C c #070707", "D c #161614", "E c #DFDEDC", "F c #B9D3E6", "G c #84A3BF", "H c #CECECE", "I c #CDCDCD", "J c #A4A4A4", "K c #0A0A0A", "L c #B0AFA9", "M c #D5D4D1", "N c #93918B", "O c #B7D2E7", "P c #82A0BB", "Q c #636363", "R c #0D0D0D", "S c #ABA9A3", "T c #5D5C55", "U c #B5CAE5", "V c #7FA2B9", "W c #3A3A3A", "X c #060809", "Y c #494943", "Z c #AECCE5", "` c #7DA0B6", " . c #B0B0B0", ".. c #161616", "+. c #42413C", "@. c #0C0C0C", "#. c #6C8294", "$. c #040405", "%. c #B0D1E4", "&. c #83A1B6", "*. c #735B5B", "=. c #141414", "-. c #090909", ";. c #83A0B8", ">. c #515C64", ",. c #AACEE3", "'. c #7B9BB2", "). c #7A8E9A", "!. c #7A7A7A", "~. c #6B6F72", "{. c #6F6F6F", "]. c #696969", "^. c #6F777E", "/. c #86A2B9", "(. c #3A515D", "_. c #A9C9E2", ":. c #7494AF", "<. c #819EB6", "[. c #829FB7", "}. c #7F9DB6", "|. c #7E9CB5", "1. c #7998B2", "2. c #85A1B8", "3. c #87A3BA", "4. c #8CA7BD", "5. c #8AA5BB", "6. c #364A59", "7. c #ABC4E2", "8. c #7294AD", "9. c #6F90AC", "0. c #7192AE", "a. c #414A4E", "b. c #424A51", "c. c #525B63", "d. c #626F79", "e. c #5F6C76", "f. c #5C6971", "g. c #5A666F", "h. c #58636B", "i. c #57636A", "j. c #3B5360", "k. c #39424B", "l. c #7897B3", "m. c #A4B9CB", "n. c #364853", "o. c #AAC9E2", "p. c #7091AA", "q. c #6F8FA7", "r. c #4A5359", "s. c #97938C", "t. c #DFDDDA", "u. c #E3E1DE", "v. c #EBEAE8", "w. c #EAE9E7", "x. c #CFCEC9", "y. c #C9C6C0", "z. c #9B968E", "A. c #566168", "B. c #4B657A", "C. c #54738C", "D. c #AAC6DD", "E. c #34464E", "F. c #AAC9E1", "G. c #6C8EA6", "H. c #6C8CA4", "I. c #40474D", "J. c #DAD8D3", "K. c #E7E6E2", "L. c #67655E", "M. c #524F47", "N. c #D9D7D4", "O. c #C7C5BF", "P. c #C0BCB5", "Q. c #B8B3AB", "R. c #434C54", "S. c #4D697F", "T. c #4F6F84", "U. c #B3CADC", "V. c #313E49", "W. c #A8C8E1", "X. c #6B8DA6", "Y. c #728FA4", "Z. c #E2E1DD", "`. c #F0EFEC", " + c #CDCAC6", ".+ c #C2BFB9", "++ c #CAC6C0", "@+ c #DCDAD7", "#+ c #4B555D", "$+ c #4E697F", "%+ c #BACCDC", "&+ c #A4C4DE", "*+ c #698BA3", "=+ c #708AA1", "-+ c #383E43", ";+ c #E0DEDA", ">+ c #514E46", ",+ c #4F4C44", "'+ c #C7C4BE", ")+ c #CBC8C2", "!+ c #E1E0DC", "~+ c #E9E8E6", "{+ c #475158", "]+ c #4E6879", "^+ c #4D6C80", "/+ c #A3C3DB", "(+ c #383F43", "_+ c #778999", ":+ c #6E899E", "<+ c #65859C", "[+ c #33383C", "}+ c #D7D4D0", "|+ c #D6D4D0", "1+ c #4E4A43", "2+ c #4D4942", "3+ c #D1CEC9", "4+ c #E6E5E2", "5+ c #EDECEA", "6+ c #454F55", "7+ c #486173", "8+ c #4D6678", "9+ c #A1C1DA", "0+ c #373C40", "a+ c #0C0D0F", "b+ c #4E5E6A", "c+ c #5B6E7C", "d+ c #4F5B62", "e+ c #A4A099", "f+ c #CCC9C3", "g+ c #D7D5D1", "h+ c #E4E2E0", "i+ c #DDDBD7", "j+ c #B8B5B0", "k+ c #3E474D", "l+ c #4A6176", "m+ c #4A6070", "n+ c #9BC3D8", "o+ c #363C41", "p+ c #28323E", " . . . ", " . . . + . . . ", " . . . . . . . . . . . @ # . $ % $ . & . . ", " . * = - ; > , ' ) ! ~ { ] ^ % % % / ( _ $ . ", " . : < [ } | 1 2 3 4 5 6 7 % % 8 9 0 _ a . ", " . b c d e f g h i j k k $ % 9 l m n % o $ . . ", " . p q r s s s s s s t u ^ % 8 v w x y _ z 9 . ", " . A B r s s s s s s t C $ % 0 n D u E z $ . . ", " . F G r H I I I I I I J K L _ ^ y M N z . ", " . O P Q s s s s s s s R ^ S % _ _ a a T $ . ", " . U V r s s s s s s s R W 8 K $ a $ X Y . . ", " . Z ` r H I I I I I I .K K J ..+.@.#.$.. ", " . %.&.*.s s s s s s s s s s s ..=.-.;.>.. ", " . ,.'.).!.r r r r r ~.{.r r r r ].^./.(.. ", " . _.:.<.;./.[.}.|.[.1./.2.2.3.[.4.;.5.6.. ", " . 7.8.9.0.a.b.c.d.e.f.g.h.i.c.j.k.l.m.n.. ", " . o.p.q.r.s.t.u.v.v.w.t.x.y.z.A.B.C.D.E.. ", " . F.G.H.I.J.K.L.M.M.N.O.P.Q.x.R.S.T.U.V.. ", " . W.X.Y.I.Z.`.L.M.M. +.+P.++@+#+$+T.%+V.. ", " . &+*+=+-+;+v.>+,+,+'+P.)+!+~+{+]+^+/+(+. ", " . _+:+<+[+}+|+1+2+2+P.3+4+5+4+6+7+8+9+0+. ", " a+b+c+d+e+P.Q.f+f+g+h+w.i+j+k+l+m+n+o+. ", " . . . . . . . . . . . . . . . . p+. ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/scale.xpm0000644000000000000000000000131107334252130015005 /* XPM */ static char *scale_xpm[] = { /* width height num_colors chars_per_pixel */ " 24 18 4 1", /* colors */ ". c #000000", "# c #000000", "a c #none", "b c #ffffff", /* pixels */ "aaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaa", "aaaaabbbbbbbaaaaaaaaaaaa", "aaaaabaaaaa#aaaaaaaaaaaa", "aaaaabaaaaa#aaaaaaaaaaaa", "aa##abaaaaa#a##########a", "aabbabaaaaa#abbbbbbbbbba", "aaaaabaaaaa#aaaaaaaaaaaa", "aaaaabaaaaa#aaaaaaaaaaaa", "aaaaaa#aaa#aaaaaaaaaaaaa", "aaaaaaa#a#aaaaaaaaaaaaaa", "aaaaaaaa#aaaaaaaaaaaaaaa", "aa.aa.aa.aa.aa.aa.aa.aaa", "aa.aa.aa.aa.aa.aa.aa.aaa", "aaaaaaaaaaaaaaaaaaaaaaaa" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/scrolledwindow.xpm0000644000000000000000000000127607450730065016776 /* XPM */ static char *scrolledwindow_xpm[]={ "21 21 8 1", "a c None", "# c #000040", "b c #000080", "f c #008000", "d c #800000", "c c #c0c0ff", "e c #c3c3c3", ". c #ffffff", ".....................", ".#############.aaaaab", ".#cccccccccccc.aadaab", ".#cccccccccccc.adddab", ".#ccceeeeeeecc.aaaaab", ".#ccceeeeeeecc.bbbbbb", ".#ccceeeeeeecc......b", ".#ccceeeeeeecc..aaaab", ".#ccceeeeeeecc..aaaab", ".#ccceeeeeeecc......b", ".#ccceeeeeeecc.aaaaab", ".#ccceeeeeeecc.adddab", ".#cccccccccccc.aadaab", ".#cccccccccccc.aaaaab", "...............bbbbbb", ".aaaab...baaaabaaaaaa", ".aafab.aabafaabaaaaaa", ".affab.aabaffabaaaaaa", ".aafab.aabafaabaaaaaa", ".aaaab.aabaaaabaaaaaa", ".bbbbbbbbbbbbbbaaaaaa"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/search.xpm0000644000000000000000000001130607355103345015176 /* XPM */ static char * search_xpm[] = { "24 24 219 2", " c None", ". c #000000", "+ c #FFFFFF", "@ c #E0E0E0", "# c #C1C1C1", "$ c #F4F4F4", "% c #FDFDFD", "& c #FBFBFB", "* c #C3C3C3", "= c #A8A8A8", "- c #F6F6F6", "; c #FBFBFA", "> c #FAFAFA", ", c #ADADAD", "' c #767676", ") c #5D5D5D", "! c #404040", "~ c #F8F8F8", "{ c #F3F3F3", "] c #F8F8F6", "^ c #E2E2E2", "/ c #858585", "( c #4B4B49", "_ c #161616", ": c #F2F2F2", "< c #F0F0F0", "[ c #EFEFEF", "} c #D5D5D5", "| c #F9F9F9", "1 c #B3B3B1", "2 c #47473F", "3 c #0A0A09", "4 c #4B4B43", "5 c #EDEDEA", "6 c #EAEAE7", "7 c #E5E5E5", "8 c #DFDFDF", "9 c #EBEBEB", "0 c #A7A7A7", "a c #34342E", "b c #9D9D8D", "c c #CFCFB9", "d c #C4C4AF", "e c #8D8D7F", "f c #353530", "g c #AEAEAE", "h c #EDEDED", "i c #EBEBE9", "j c #E9E9E7", "k c #E0E0DE", "l c #BFBFBF", "m c #46463F", "n c #9C9C8C", "o c #E2E2D0", "p c #EDEDE7", "q c #C0C0AC", "r c #B2B29F", "s c #828274", "t c #4C4C44", "u c #DADAD7", "v c #D9D9D9", "w c #D9D9D6", "x c #D6D6D4", "y c #E5E5E4", "z c #D7D7D5", "A c #BABABA", "B c #ECECEC", "C c #090908", "D c #D5D5BF", "E c #C3C3AE", "F c #B5B5A2", "G c #A6A695", "H c #9C9C8F", "I c #080807", "J c #DDDDDC", "K c #E4E4E3", "L c #E4E4E2", "M c #E2E2E0", "N c #D3D3D1", "O c #ECECEA", "P c #D5D5D3", "Q c #090909", "R c #CACAB5", "S c #DDDDD0", "T c #B7B7A4", "U c #AAAA98", "V c #9B9B8B", "W c #AEAEA3", "X c #D1D1CF", "Y c #DEDEDC", "Z c #DEDEDB", "` c #D9D9D7", " . c #BDBDBC", ".. c #E7E7E7", "+. c #D4D4D4", "@. c #474740", "#. c #929283", "$. c #BABAA7", "%. c #ADAD9B", "&. c #9F9F8E", "*. c #ACACA1", "=. c #CFCFCB", "-. c #4C4C45", ";. c #C9C9C7", ">. c #DBDBD8", ",. c #DCDCD9", "'. c #DBDBD9", "). c #BCBCBC", "!. c #C4C4C4", "~. c #6D6D6B", "{. c #34342F", "]. c #878779", "^. c #A0A090", "/. c #AEAEA2", "(. c #C3C3BE", "_. c #010101", ":. c #C6C6C3", "<. c #D8D8D4", "[. c #C8C8C7", "}. c #B4B4B4", "|. c #E3E3E2", "1. c #D3D3D3", "2. c #B3B3B2", "3. c #717170", "4. c #414141", "5. c #6A6A68", "6. c #A7A7A3", "7. c #D5D5D1", "8. c #D7D7D3", "9. c #D0D0CE", "0. c #BABAB8", "a. c #DCDCDA", "b. c #CACAC8", "c. c #B6B6B3", "d. c #9C9C9A", "e. c #898988", "f. c #858581", "g. c #838381", "h. c #848482", "i. c #898986", "j. c #A5A5A3", "k. c #D1D1D0", "l. c #D3D3D0", "m. c #DCDCDB", "n. c #E0E0DC", "o. c #DDDDDB", "p. c #D3D3D2", "q. c #C2C2BF", "r. c #ADADAA", "s. c #A2A2A1", "t. c #A1A19F", "u. c #A6A6A4", "v. c #A9A9A6", "w. c #666664", "x. c #9A9A97", "y. c #C8C8C6", "z. c #B6B6B6", "A. c #D4D4D0", "B. c #C7C7C4", "C. c #C6C6C0", "D. c #BDBDB9", "E. c #B2B2AD", "F. c #AAAAA7", "G. c #ACACA9", "H. c #A8A8A4", "I. c #929291", "J. c #51514F", "K. c #CFCFCC", "L. c #C0C0BC", "M. c #D0D0CD", "N. c #CECECB", "O. c #C8C8C4", "P. c #B7B7B4", "Q. c #9F9F9E", "R. c #6C6C6A", "S. c #C9C9C5", "T. c #B8B8B8", "U. c #CECEC9", "V. c #BFBFB9", "W. c #BCBCB9", "X. c #BCBCB8", "Y. c #B9B9B4", "Z. c #B8B8B2", "`. c #B3B3AE", " + c #ACACA8", ".+ c #9E9E99", "++ c #8A8A87", "@+ c #81817F", "#+ c #8F8F8B", "$+ c #BFBFBB", "%+ c #CACAC6", "&+ c #B8B8B6", "*+ c #D0D0CC", "=+ c #CECECC", "-+ c #CECECA", ";+ c #CCCCCA", ">+ c #CBCBC7", ",+ c #C4C4C0", "'+ c #B2B2AE", ")+ c #9E9E9C", "!+ c #A3A3A0", "~+ c #C1C1BD", "{+ c #B3B3B3", "]+ c #D1D1CE", "^+ c #CCCCC8", "/+ c #C9C9C6", "(+ c #C3C3C0", "_+ c #B9B9B7", ":+ c #BABAB7", "<+ c #C6C6C2", "[+ c #C7C7C3", "}+ c #B1B1AF", "|+ c #B4B4B3", "1+ c #B4B4B1", "2+ c #B3B3AF", "3+ c #B1B1AD", "4+ c #AFAFAD", "5+ c #B6B6B4", "6+ c #929290", " ", ". . . . . . . . . . . . . . . . . . ", ". + + + + + + + + + + + + + + + @ # . ", ". + $ + + + + + % % % % % % % & * & = . ", ". + - + + + % % % % % % & & ; > , ' ) ! . ", ". + - + & & & & ~ ~ ~ - - - { ] ^ / ( _ . ", ". + $ % % & & ; > > > ~ ] - $ : < [ } , . ", ". + : | - - 1 2 3 3 4 , 5 6 7 ^ 8 9 ^ # . ", ". + < ~ ~ 0 a b c d e f g h 9 i j j k l . ", ". + [ { [ m n o p q r s t u v w x y z A . ", ". + h { B C D ; E F G H I J K L k M N A . ", ". + 9 O P Q R S T U V W 3 X Y Y Z Y ` .. ", ". + ..O +.@.#.$.%.&.*.=.-.;.>.,.'.'.P ).. ", ". + 7 @ !.~.{.].^./.(._._.:.<.` z ` [.}.. ", ". + M |.1.2.3.4 3 3 4.5._._.6.P 7.8.9.0.. ", ". + Y a.b.c.d.e.f.g.h.i._._._.j.k.l.9.0.. ", ". + m.n.o.p.q.r.s.t.u.v.w.. _._.x.k.y.z.. ", ". + '.A.B.C.D.E.r.F.G.H.I.J._._._.K.L.}.. ", ". + } ` ` 8.A.X M.M.N.O.P.Q.R._._.S.S.T.. ", ". + N U.V.W.X.X.Y.Z.Z.`. +.+++@+#+$+%+&+. ", ". + P l.l.k.9.*+=+-+-+;+>+,+'+)+!+W.~+{+. ", ". + k.]+9.=+-+-+-+-+^+^+^+/+(+_+:+<+[+}.. ", ". + }+|+1+1+1+1 1 2+2+2+}+3+3+4+4+2+5+6+. ", ". . . . . . . . . . . . . . . . . . . . "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/selector.xpm0000644000000000000000000000266607452600723015562 /* XPM */ static char * selector_xpm[] = { "24 24 49 1", " c None", ". c #000000", "+ c #F6939B", "@ c #BF4951", "# c #B8454F", "$ c #F35A69", "% c #E35762", "& c #CF626B", "* c #BB4751", "= c #DE525F", "- c #AF414B", "; c #D86770", "> c #C94B56", ", c #802F36", "' c #CC4C58", ") c #C64B57", "! c #DA6871", "~ c #CF4E59", "{ c #983941", "] c #C34852", "^ c #CD4D58", "/ c #D14E5A", "( c #D04E5A", "_ c #B0424B", ": c #C94A57", "< c #D04C57", "[ c #C74A55", "} c #DB6972", "| c #CD4D5A", "1 c #C54854", "2 c #C14852", "3 c #DB6871", "4 c #D24E5A", "5 c #CB4C57", "6 c #C34752", "7 c #BD4652", "8 c #D96770", "9 c #9E3A43", "0 c #CD4D59", "a c #963841", "b c #D87880", "c c #9B3A43", "d c #BB4750", "e c #D04D59", "f c #C14953", "g c #973841", "h c #D24F5B", "i c #B4444D", "j c #B6454D", " ", " ", " ", " ", " ", " ", " .. . ", " .+@. .#. ", " .$%. .&*. ", " .=-. .;>,. ", " .')..!~{. ", " .]^/(_. ", " .:<^[.. ", " .}|12.. ", " .34567. ", " ..8(9..0a. ", " .b^c. .de.. ", " .fg. .hi. ", " .. .j~. ", " ... ", " ", " ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/simpson1.orig.xpm0000644000000000000000000001603507252426540016446 /* XPM */ static char *simpson1[] = { /* width height num_colors chars_per_pixel */ " 32 32 9 1", /* colors */ ". c #ffffff", "# c #ffce63", "a c #ffce31", "b c #ffce00", "c c #ff0000", "d c #808080", "e c #31ceff", "f c #000010", "g c #000000", /* pixels */ "dddddddddgdgdgdgdgdddddddddddddd", "dddddddgdgggggggggdddddddddddddd", "dddddgdgggaaaaaaagdddddddddddddd", "dddgdgggaaaaaaaaagdddddddddddddd", "dddgggaaaaaaaaaaaagddddddddddddd", "dgggaaaaaaaaaaaaaagddddddddddddd", "ddgaaaaaaaaaaaaaaagddddddddddddd", "ddgaaaaaaaaaaaaaaaagdddddddddddd", "dddgaaaaaaaaaaaaaaagdddddddddddd", "dddgaaaaaaaaaaaaaaaagddddddddddd", "ddddgaaaaaaaaaaaaaggggdddddddddd", "ddddgaaaaaaaaggggg....gddddddddd", "dddddgaaaaaag.....g....gdddddddd", "dddddgaaaaag.......g.g.gdddddddd", "ddddddgaa#ag.......g...gdddddddd", "ddddddgaaaag..g....ggggddddddddd", "dddddddga#ag.......gaaagdddddddd", "dddddddgaaaag.....gaaaagdddddddd", "dddddddggaaaagggggaagggddddddddd", "ddddddgaaaaaaaabaaaaaagddddddddd", "ddddddgaaaaaaaaaaaaaaaagdddddddd", "dddddddggaaaaaaaaaaaaaaagddddddd", "ddddddddgaaggaaaaaaaaaaggddddddd", "ddddddddgagffggggggggggddddddddd", "ddddddddgagcccfagddddddddddddddd", "ddddddddgaagcccfagdddddddddddddd", "dddddddggaaaggggggdddddddddddddd", "ddddddgeegaaaaagdddddddddddddddd", "dddddgeeeeggggggdddddddddddddddd", "ddddgeegeeeeeeeegddddddddddddddd", "dddgeeeegeeeeeeeegdddddddddddddd", "ddgggggggggggggggggddddddddddddd" }; SIMPLE = T BITPIX = 8 NAXIS = 2 NAXIS1 = 32 NAXIS2 = 32 HISTORY Written by XV 3.10a END WWWWWWƾvdkbuilder2-2.4.0/vdkbuilder/pixmaps/simpson1.xpm0000644000000000000000000000263007334252122015475 /* XPM */ char *simpson1_xpm[] = { /* width height num_colors chars_per_pixel */ " 32 32 9 1", /* colors */ ". c #ffffff", "# c #ffce63", "a c #ffce31", "b c #ffce00", "c c #ff0000", "d c #none", "e c #31ceff", "f c #000010", "g c #000000", /* pixels */ "dddddddddgdgdgdgdgdddddddddddddd", "dddddddgdgggggggggdddddddddddddd", "dddddgdgggaaaaaaagdddddddddddddd", "dddgdgggaaaaaaaaagdddddddddddddd", "dddgggaaaaaaaaaaaagddddddddddddd", "dgggaaaaaaaaaaaaaagddddddddddddd", "ddgaaaaaaaaaaaaaaagddddddddddddd", "ddgaaaaaaaaaaaaaaaagdddddddddddd", "dddgaaaaaaaaaaaaaaagdddddddddddd", "dddgaaaaaaaaaaaaaaaagddddddddddd", "ddddgaaaaaaaaaaaaaggggdddddddddd", "ddddgaaaaaaaaggggg....gddddddddd", "dddddgaaaaaag.....g....gdddddddd", "dddddgaaaaag.......g.g.gdddddddd", "ddddddgaa#ag.......g...gdddddddd", "ddddddgaaaag..g....ggggddddddddd", "dddddddga#ag.......gaaagdddddddd", "dddddddgaaaag.....gaaaagdddddddd", "dddddddggaaaagggggaagggddddddddd", "ddddddgaaaaaaaabaaaaaagddddddddd", "ddddddgaaaaaaaaaaaaaaaagdddddddd", "dddddddggaaaaaaaaaaaaaaagddddddd", "ddddddddgaaggaaaaaaaaaaggddddddd", "ddddddddgagffggggggggggddddddddd", "ddddddddgagcccfagddddddddddddddd", "ddddddddgaagcccfagdddddddddddddd", "dddddddggaaaggggggdddddddddddddd", "ddddddgeegaaaaagdddddddddddddddd", "dddddgeeeeggggggdddddddddddddddd", "ddddgeegeeeeeeeegddddddddddddddd", "dddgeeeegeeeeeeeegdddddddddddddd", "ddgggggggggggggggggddddddddddddd" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/simpson2.xpm0000644000000000000000000000253407334252121015500 /* XPM */ char *simpson2_xpm[] = { /* width height num_colors chars_per_pixel */ " 32 32 5 1", /* colors */ ". c #ffffff", "# c #ffce31", "a c #ce9c63", "b c #none", "c c #000000", /* pixels */ "bbbbbbbbccccbbbbbbbbbbbbbbbbbbbb", "bbbbbbbccc..cbbbbbbbbbbbbbbbbbbb", "bbbbbbcc..ccccccbbbbbbbbbbbbbbbb", "bbbbbc.ccc######ccbbbbbbbbbbbbbb", "bbbbbc.c##########cbbbbbbbbbbbbb", "bbbbbbc#c##########cbbbbbbbbbbbb", "bbbbbbc############cbbbbbbbbbbbb", "bbbbbc##############cbbbbbbbbbbb", "bbbbbc##############cccbbbbbbbbb", "bbbbbc#########ccccc...cbbbbbbbb", "bbbbbc########c....c....cbbbbbbb", "bbbbbc#######c......c.c.cbbbbbbb", "bbbbbc#######c......c...cbbbbbbb", "bbbbbbc##c###c..c...ccccbbbbbbbb", "bbbbbbc##cc###c....c####cbbbbbbb", "bbbbbbccc##c###cccc#####cbbbbbbb", "bbbbbbcbcc##########ccccbbbbbbbb", "bbbbbbcbccc######cccaaaacbbbbbbb", "bbbbbbbbc#######caaaaaaaacbbbbbb", "bbbbbbbbc##c###caaaaaaaaacbbbbbb", "bbbbbbbbbcc###caaaaaaaaaaacbbbbb", "bbbbbbbbbbc###cacaaaaaaaaacbbbbb", "bbbbbbbbbbc###caccccccccccbbbbbb", "bbbbbbbbbbc###caaaaaaacbbbbbbbbb", "bbbbbbbbbbc####caaaaacbbbbbbbbbb", "bbbbbbbbbbc####caaaaacbbbbbbbbbb", "bbbbbbbbbcc#####caaacbbbbbbbbbbb", "bbbbbbbbc..cc####cccccbbbbbbbbbb", "bbbbbbbbc....cc#####c.cbbbbbbbbb", "bbbbbbbcc......cc###c..cbbbbbbbb", "bbbbbbc..c......cc##c...cbbbbbbb", "bbbbbcccccccccccccccccccccbbbbbb" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/simpson3.xpm0000644000000000000000000001605407252426544015516 /* XPM */ static char *simpson3[] = { /* width height num_colors chars_per_pixel */ " 32 32 10 1", /* colors */ ". c #ffffff", "# c #ff9cff", "a c #efefef", "b c #ce6331", "c c #b2c0dc", "d c #9c0000", "e c #101010", "f c #100000", "g c #000052", "h c #000000", /* pixels */ "cccccccccccccccccccccccccccccccc", "cccccccccccccchhhhhhhccccccccccc", "ccccccccccchhhggggggghhccccccccc", "cccccccccchggggggggggggghccccccc", "ccccccccchggggggggggggggghcccccc", "cccccccchggggggggggggggggfcccccc", "cccccccchggggggggggggggggghccccc", "ccccchhhggggghhhhhhhgggggghccccc", "cccchggggggghhbbbbbbhggggghccccc", "cccchgggggghbbbbbbbbbhgggehccccc", "cccchgggggebbbbbbbbbbbhghchccccc", "cccchgggggghbbbbbbbbbbhhcccccccc", "cccchgggggghhbbbbbbbbbhccccccccc", "ccccchgggggghbbbbbbbbbbhcccccccc", "cccccchghhggghbbhhbbbhhhcccccccc", "cccccchhbbhgghbha.hbh..hcccccccc", "ccccccchbhggghbh.hhbh.hhcccccccc", "ccccccchbbhgghbh..hbh..hcccccccc", "cccccccchhbhghbbhhhhbhhhcccccccc", "ccccccccchbhghbbbbhbbbhccccccccc", "ccccccccchbhhebbbhbbhhhccccccccc", "cccccccccchbbbhhbbhhhbhhhccccccc", "cccccccccchbbh..hhbbbbbbbhcccccc", "cccccccccchbbhhh..hhhhhhhhcccccc", "cccccccccchbbbbhhh.hhccccccccccc", "cccccccccchbbbbbbbhhcccccccccccc", "cccccccccchbbbbbbbhccccccccccccc", "ccccccccchhhbbbbbbhhcccccccccccc", "ccccccccch##hbhbbh##hccccccccccc", "cccccccchh###hbbhh###hcccccccccc", "ccccccchdh####hbbh####hccccccccc", "cccccchddhhhhhhhhhhhhhhhcccccccc" }; SIMPLE = T BITPIX = 8 NAXIS = 2 NAXIS1 = 32 NAXIS2 = 32 HISTORY Written by XV 3.10a END 555               vdkbuilder2-2.4.0/vdkbuilder/pixmaps/simpson4.xpm0000644000000000000000000001611207252426545015513 /* XPM */ static char *simpson4[] = { /* width height num_colors chars_per_pixel */ " 32 32 12 1", /* colors */ ". c #ffffff", "# c #ffce31", "a c #ffce00", "b c #ff0000", "c c #b2c0dc", "d c #310000", "e c #100000", "f c #00ceff", "g c #001000", "h c #000021", "i c #000010", "j c #000000", /* pixels */ "cccccccccccccccccccccccccccccccc", "cccccccccccccccccceccccccccccccc", "cccccccccccccccccjeccccccccccccc", "cccccccceccccccjj#eccccccecccccc", "cccccccceecccccj###jccceeecccccc", "ccccccceaaeccjj####jccjaajcccccc", "ccccccceaaaeefj###e#jeaaajcccccc", "cccccceaaaaaefjejjfjaaaaajcccccc", "cccccceaaaaaefjfeffeaaaaeccccccc", "jegjjjjaaaaaeeajefeaaaaajccccccc", "cjaaaaaaaaaaaaaaaeeaaaaajccccccc", "cceaaaaaeaaaeaaaaaaaaaaaaeejeejc", "ccgaaaaajjjjeaaaaeaaaaaaaaaaajcc", "cccjaaaae....jaaaeaaaeaaaaaaajcc", "cccceajj......eee.eeeaaaaaaaeccc", "ccccjaae.....e......eaaaaaaajccc", "cccgaaae..jj.e......eeeaaa#gcccc", "cccjaaaj.....e.......eaaaaaajccc", "cceaaaaaeeeeee....j..eaaaaaajccc", "cjejjeee#####ee......eaaaaaaaecc", "ccccccceej####ee....eaaaaaaaaeec", "ccccccce######aaeeeeaaeaaaeejccc", "ccccccce#jjj##aaaaaaajaeajcccccc", "cccccccjjibbe#aaaaaaaaaeajcccccc", "cccccceebbbbe#aaaaaaaeeaajcccccc", "ccccceeeebbbea#aaaaa#jjaaecccccc", "ccccce..ebbbe##aaaa#dccgeecccccc", "cccccejeeehbe##eaa#jcccccecccccc", "ccccccjjjcee##e###jccccccccccccc", "cccccccccccejjfjjjcccccccccccccc", "cccccccccccceffffecccccccccccccc", "ccccccccccceejjjjjeccccccccccccc" }; SIMPLE = T BITPIX = 8 NAXIS = 2 NAXIS1 = 32 NAXIS2 = 32 HISTORY Written by XV 3.10a END WWWWƾWWWƾWWWWƾWWƾƾƾvdkbuilder2-2.4.0/vdkbuilder/pixmaps/simpson5.xpm0000644000000000000000000001577707252426547015536 /* XPM */ static char *simpson5[] = { /* width height num_colors chars_per_pixel */ " 32 32 7 1", /* colors */ ". c #ffffff", "# c #ffce31", "a c #ff0000", "b c #b2c0dc", "c c #101010", "d c #0000ad", "e c #000000", /* pixels */ "bbbbbeeeeeeeeeeeeeeeeeeeeeebbbbb", "bbbbedddddddddddddddddddddebbbbb", "bbbbeddddddddddddddddddddebbbbbb", "bbbbbeddddddddddddddddddddebbbbb", "bbbbedddddddddddddddddddddebbbbb", "bbbbeddddddddddddddddddddebbbbbb", "bbbbbedddddddddedddeddedddebbbbb", "bbbbeddddddddde#eee#ee#edeebbbbb", "bbbbbeddddddee###e##e##edebbbbbb", "bbbbbbedddde##e#eeee##eeeebbbbbb", "bbbbbedddddde##e....ee..e#ebbbbb", "bbbbbedddddde#e......e...ebbbbbb", "bbbbbbedddde#ee......e.e.eebbbbb", "bbbbbbbedddde#e.e....e...ebbbbbb", "bbbbbbeddddde#e.....eeeeebbbbbbb", "bbbbbbedddee###e...e####ebbbbbbb", "bbbbbbbede######eee#####eeebbbbb", "bbbbbbeddee###########ee###ebbbb", "bbbbbbedde##e###e#########eebbbb", "bbbbbbbeddee###eeeeeeeeeeebbbbbb", "bbbbbbbbedde###e######ebbbbbbbbb", "bbbbbbbbbeee########eebbbbbbbbbb", "bbbbbbbbbbbe#######ebbbbbbbbbbbb", "bbbbbbbbbbbe#######ebbbbbbbbbbbb", "bbbbbbbbbbee#######ecbbbbbbbbbbb", "bbbbbbbbbeaee######eaebbbbbbbbbb", "bbbbbbbbbeeaaee#ee#eebbbbbbbbbbb", "bbbbbbbbbbeeeaaeaaeeaebbbbbbbbbb", "bbbbbbbbbe###ee#ee#eebbbbbbbbbbb", "bbbbbbbbbe##########ebbbbbbbbbbb", "bbbbbbbbe###########ebbbbbbbbbbb", "bbbbbbbeeeeeeeeeeeeeebbbbbbbbbbb" }; SIMPLE = T BITPIX = 8 NAXIS = 2 NAXIS1 = 32 NAXIS2 = 32 HISTORY Written by XV 3.10a END WWWWWWWWWvdkbuilder2-2.4.0/vdkbuilder/pixmaps/showln.xpm0000644000000000000000000000113607252426547015253 /* XPM */ static char*showln_xpm[]={ "20 20 5 1", ". c #808080", "# c #0000c0", "c c #303030", "a c #ffffc0", "b c #ffffff", "....................", ".###aaaaaaaaaaaaaaa.", ".#b#aaaaaaaaaaaaaaa.", ".###aaccccccccaaaaa.", ".###aaaaaaaaaaaaaaa.", ".#b#aaaaaaaaaccaaaa.", ".###aaacccccaaaaaaa.", ".###aaaaaaaaaaaaaaa.", ".#b#aaaccaaaaaaaaaa.", ".###aaaaaaccaaaaaaa.", ".###aaaaaaaaaaaaaaa.", ".#b#aaaaaaaaaaaaaaa.", ".###aacaaaaaaaaaaaa.", ".###aaccaccccaaaaaa.", ".#b#aaaaaaaaaaaaaaa.", ".###aaaaaaaaaacccca.", ".###aaaacacacacaaaa.", ".#b#aaaaaaaaaaaaaaa.", ".###aaaaaaaaaaaaaaa.", "...................."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/showmsg.xpm0000644000000000000000000000115707376701362015431 /* XPM */ static char * showmsg_xpm[] = { "20 20 6 1", " c None", ". c #808080", "+ c #0000C0", "@ c #FFFFC0", "# c #FFFFFF", "$ c #303030", "....................", ".+++@@@@@@@@@@@@@@@.", ".+#+@@@@@@@@@@@@@@@.", ".+++@@$$$$$$$$@@@@@.", ".+++@@@@@@@@@@@@@@@.", ".+#+@@@@@@@@@$$@@@@.", ".+++@@@$$$$$@@@@@@@.", ".+++@@@@@@@@@@@@@@@.", ".+#+@@@$$@@@@@@@@@@.", ".+++@@@@@@$$@@@@@@@.", ".+++@@@@@@@@@@@@@@@.", ".+#+@@@@@@@@@@@@@@@.", ".+++@@$@@@@@@@@@@@@.", ".+++@@$$@$$$$@@@@@@.", ".+#+@@@@@@@@@@@@@@@.", "....................", ".##################.", ".##################.", ".##################.", "...................."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/spinbutton.xpm0000644000000000000000000000130407252426551016136 /* XPM */ static char *spinbutton_xpm[] = { /* columns rows colors chars-per-pixel */ "21 21 5 1", " c Black", ". c #7b7b7b", "X c Gray74", "o c Gray100", "O c None", /* pixels */ "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "O O", "O ooooooooooo ooooo O", "O ooooooooooo oO O. O", "O ooooooooooo o . O", "O ooooooooooo ooooo O", "O ooooooooooo o . O", "O ooooooooooo oO O. O", "O ooooooooooo ..... O", "O O", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/statusbar.xpm0000644000000000000000000000132607334252127015742 /* XPM */ static char *statusbar_xpm[] = { /* width height num_colors chars_per_pixel */ " 23 19 4 1", /* colors */ ". c #000000", "# c #000000", "a c #none", "b c #ffffff", /* pixels */ "aaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaa.a", "aabbbbbbbbbbbbbbbbbbb.a", "aaaaaaaaaaaaaaaaaaaaa.a", "aa###ba############ba.a", "aaaaaba#aaaaaaaaaaaba.a", "aaaaaba#aaaaaaaaaab#a.a", "aaaaaba#aaaaaaaaab#aa.a", "aaaaaba#aaaaaaaab#aba.a", "aaaaaba#aaaaaaab#ab#a.a", "aaaaaba#aaaaaab#ab#aa.a", "aabbbbabbbbbbb#ab#aba.a", "aaaaaaaaaaaaaaaaaaaaa.a", "a.....................a", "aaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaa" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/stock_button_ok.xpm0000644000000000000000000000212507455510013017132 /* XPM */ static char * stock_button_ok_xpm[] = { "24 24 25 1", " c None", ". c #000000", "+ c #B3C2A7", "@ c #708C58", "# c #859D71", "$ c #627B4D", "% c #97AB86", "& c #4F644C", "* c #566C43", "= c #A2BD9E", "- c #789774", "; c #445642", "> c #88AC84", ", c #374636", "' c #364534", ") c #5E764A", "! c #718F6E", "~ c #576F55", "{ c #1B231A", "] c #6D8855", "^ c #668050", "/ c #688465", "( c #6D8956", "_ c #5F7952", ": c #698566", " ", " ", " ", " ", " ", " ", " .. ", " .+@. ", " .#$. ", " .%@&. ", " .. .#*. ", " .=-. .#@;. ", " .>>,. .@*. ", " .>-'.)@.. ", " .!>~{]*. ", " .>>*^;. ", " ./>(_. ", " .>>.. ", " .:. ", " ... ", " . ", " ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/stop.xpm0000644000000000000000000000556107451200466014723 /* XPM */ static char *stop_xpm[]={ "22 22 114 2", "Qt c None", ".g c #000000", ".# c #1e0a0a", "#h c #1f0a0a", ".0 c #200a0a", ".a c #200b0b", ".h c #2e0f0f", ".b c #341111", ".z c #5e2a21", ".p c #66342c", ".5 c #800000", ".f c #89605f", "#V c #901616", "#R c #911a1a", "#Q c #921c1c", "#F c #931d1d", "#U c #a00e0b", "#P c #a1100d", "#S c #a1110e", "#T c #a1120f", "#v c #b04e44", ".K c #b30f0f", ".y c #b51515", "#E c #bc1510", "#D c #bd1914", ".o c #c00000", "#O c #c03122", "#t c #c03223", "#N c #c21a1a", ".T c #c23728", "#M c #c44032", ".J c #c54d44", "#m c #c72e2e", ".Z c #c7564a", "#u c #c77d7d", "#g c #c83939", "#C c #c84a3d", "#G c #c95656", "#j c #c97068", "#p c #c9726a", ".6 c #ca5b53", "#o c #ca6865", "#. c #cb5f57", "#s c #cb6258", "#L c #cc4848", ".I c #cc5d5d", "#k c #cc5e56", ".w c #cc5f59", "#w c #cc6262", "#i c #cc716e", "#B c #cd5e52", "#K c #cd6055", ".x c #cd6060", "#H c #cd6155", "#q c #cd665f", "#r c #cd695e", "#A c #cd6962", "#I c #cf6359", "#x c #cf6459", "#J c #cf685d", ".H c #cf6a62", "#y c #cf6f67", ".e c #cfbfbf", "#z c #d07169", "#e c #d07871", ".v c #d1706a", ".u c #d1716a", ".9 c #d17469", ".S c #d1746b", "#c c #d17771", "#l c #d17872", ".n c #d17e7e", ".t c #d2736a", "#f c #d37066", ".R c #d4766e", "#a c #d47b74", ".G c #d5786f", ".7 c #d57e77", ".s c #d67a72", "#b c #d77b74", ".F c #d77c74", "#d c #d7837b", ".m c #d88787", ".E c #d97f79", ".8 c #d9807a", ".1 c #d98884", ".Q c #da827c", ".r c #dc7d77", ".D c #dc827c", ".l c #dc928b", ".P c #dd8782", ".Y c #dd8884", ".c c #dd8b8b", ".A c #dd9089", "## c #dd938c", ".2 c #de847e", ".C c #df817d", ".L c #e07f79", ".B c #e0807c", ".V c #e0817d", ".O c #e08b86", ".X c #e08d88", ".k c #e0968f", "#n c #e0d0d0", ".U c #e1837e", ".M c #e1847f", ".3 c #e3938e", ".W c #e69490", ".N c #e7928c", ".j c #e79d95", ".q c #e99f97", ".d c #f8e8e8", ".4 c #fdf9f9", ".i c #ffffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQt.#.a.a.a.a.a.a.a.aQtQtQtQtQtQtQt", "QtQtQtQtQt.b.c.d.d.d.d.d.d.e.f.gQtQtQtQtQtQt", "QtQtQtQt.h.c.i.j.j.k.l.l.m.n.o.p.gQtQtQtQtQt", "QtQtQt.h.c.i.q.r.s.t.u.v.w.x.y.o.z.gQtQtQtQt", "QtQt.b.c.i.A.B.C.D.E.F.G.H.I.J.K.o.z.gQtQtQt", "Qt.#.c.i.q.L.M.i.N.O.P.Q.R.i.S.T.o.o.z.gQtQt", "Qt.a.d.j.U.V.i.i.i.W.X.Y.i.i.i.Z.o.o.z.gQtQt", "Qt.0.d.j.1.2.N.i.i.i.3.i.4.i.5.6.o.o.z.gQtQt", "Qt.a.d.k.7.8.O.W.i.i.i.i.i.9.5#..o.o.z.gQtQt", "Qt.0.d###a#b.P.X.3.i.i.i#c.o.o.o.o.o.z.gQtQt", "Qt.0.d#d#e#f.Q.Y.i.i.i.i.i.5.o#g.o.o.z.gQtQt", "Qt#h.d#i#j#k.R.i.4.i#l.i.i.i.5#m.o.o.z.gQtQt", "Qt.a#n#o#p#q.i.i.i.9#r#s.i.i.i#t.o.o.z.gQtQt", "Qt.0#u#v#w#x#q.i#y#z#A#B#C.i#D#E.o.o.z.gQtQt", "QtQt.g.z#F#G#H#I#J#K#L#M#N#O#E#P.o.z.gQtQtQt", "QtQtQt.g.z#Q.o.o.o.o.o.o.o.o.o.o.z.gQtQtQtQt", "QtQtQtQt.g.z#R#S#T#T#T#S#P#U#V.z.gQtQtQtQtQt", "QtQtQtQtQt.g.z.z.z.z.z.z.z.z.z.gQtQtQtQtQtQt", "QtQtQtQtQtQt.g.g.g.g.g.g.g.g.gQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/table.xpm0000644000000000000000000000226407452566660015036 /* XPM */ static char * table_xpm[] = { "24 24 32 1", " c None", ". c #000000", "+ c #FFFFFF", "@ c #B1B1B1", "# c #BABABA", "$ c #E4E4E4", "% c #ECECEC", "& c #A8A8A8", "* c #ADADAD", "= c #B9B9B9", "- c #ABABAB", "; c #B8B8B8", "> c #B5B5B5", ", c #AAAAAA", "' c #858585", ") c #828282", "! c #707070", "~ c #BCBCBC", "{ c #A7A7A7", "] c #8D8D8D", "^ c #737373", "/ c #ACACAC", "( c #878787", "_ c #747474", ": c #A9A9A9", "< c #E9E9E9", "[ c #C3C3C3", "} c #BFBFBF", "| c #757575", "1 c #7E7E7E", "2 c #BBBBBB", "3 c #A3A3A3", " ", " ", " ", " ................... ", " .+++++@+++++#++++$. ", " .+%%%%&%%%%%*%%%%=. ", " .+%%%%-%%%%%-%%%%;. ", " .>&,,&'&----)&---!. ", " .+%%%%-%%%%%-%%%%~. ", " .+%%%%-%%%%%-%%%%~. ", " .+%%%%-%%%%%-%%%%~. ", " .#{---'-----]*---^. ", " .+%%%%-%%%%%-%%%%~. ", " .+%%%%-%%%%%-%%%%;. ", " .+%%%%-%%%%%-%%%%~. ", " .;&--/(&{--&'&---_. ", " .+%%%%-%%%%%-%%%%;. ", " .+%%%%&%%%%%:%%%%~. ", " .<[[[}|~~~~~1;~~23. ", " ................... ", " ", " ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/terminal.xpm0000644000000000000000000001277007252426553015557 /* XPM */ static char * terminal_xpm[] = { "32 32 212 2", " c None", ". c #000000", "+ c #C2C2C2", "@ c #FFFFFF", "# c #C1C1C1", "$ c #EDEDED", "% c #E9E9E9", "& c #E6E6E6", "* c #E3E3E3", "= c #E0E0E0", "- c #DDDDDD", "; c #DADADA", "> c #D7D7D7", ", c #D3D3D3", "' c #D0D0D0", ") c #CDCDCD", "! c #CACACA", "~ c #C7C7C7", "{ c #C4C4C4", "] c #BDBDBD", "^ c #BABABA", "/ c #B7B7B7", "( c #808080", "_ c #EAEAEA", ": c #666664", "< c #4A4A4C", "[ c #565656", "} c #B5B5B5", "| c #E8E8E8", "1 c #1F1F1F", "2 c #FDFDFA", "3 c #B3B3B3", "4 c #B0B0B0", "5 c #252525", "6 c #AEAEAE", "7 c #E1E1E1", "8 c #ACACAC", "9 c #DFDFDF", "0 c #AAAAAA", "a c #A7A7A7", "b c #BBBBBD", "c c #B7B7BA", "d c #B3B3B6", "e c #AFAFB2", "f c #ABABAF", "g c #A7A7AB", "h c #A3A3A7", "i c #9F9FA4", "j c #D4D2D2", "k c #A5A5A5", "l c #BCBCBE", "m c #B8B8BB", "n c #B4B4B7", "o c #B0B0B3", "p c #ACACB0", "q c #A8A8AC", "r c #A4A4A8", "s c #7F7F7F", "t c #D8D8D8", "u c #A3A3A3", "v c #BEBEBF", "w c #B9B9BC", "x c #B5B5B8", "y c #B1B1B4", "z c #ADADB1", "A c #A9A9AD", "B c #DCDBDB", "C c #7E7E7E", "D c #D6D6D6", "E c #A0A0A0", "F c #E5E5E5", "G c #7A7A7A", "H c #7B7B7B", "I c #D4D4D4", "J c #9E9E9E", "K c #C3C3C3", "L c #BFBFBF", "M c #BBBBBB", "N c #B6B6B6", "O c #767676", "P c #777777", "Q c #787878", "R c #D1D1D1", "S c #CECECE", "T c #CBCBCB", "U c #C8C8C8", "V c #C5C5C5", "W c #BEBEBE", "X c #B8B8B8", "Y c #B2B2B2", "Z c #AFAFAF", "` c #A8A8A8", " . c #A2A2A2", ".. c #9F9F9F", "+. c #9C9C9C", "@. c #737373", "#. c #747474", "$. c #757575", "%. c #3B8988", "&. c #347D7B", "*. c #316F6D", "=. c #707070", "-. c #717171", ";. c #727272", ">. c #398B88", ",. c #3D8A87", "'. c #367775", "). c #ADADAD", "!. c #6D6D6D", "~. c #6E6E6E", "{. c #3E9591", "]. c #409491", "^. c #419693", "/. c #419592", "(. c #40928F", "_. c #3F918F", ":. c #39807E", "<. c #367574", "[. c #696969", "}. c #6A6A6A", "|. c #6B6B6B", "1. c #3C9591", "2. c #409490", "3. c #409793", "4. c #409692", "5. c #3F928E", "6. c #3D8B89", "7. c #3A8380", "8. c #377B78", "9. c #347270", "0. c #A6A6A6", "a. c #666666", "b. c #676767", "c. c #686868", "d. c #D9D9D9", "e. c #378A87", "f. c #3B8886", "g. c #3D8A88", "h. c #3C8987", "i. c #3B8684", "j. c #3A8280", "k. c #387C7A", "l. c #367573", "m. c #34716F", "n. c #636363", "o. c #646464", "p. c #656565", "q. c #337F7D", "r. c #367D7C", "s. c #377E7D", "t. c #377D7C", "u. c #367C7B", "v. c #357976", "w. c #337270", "x. c #326F6D", "y. c #606060", "z. c #616161", "A. c #9D9D9D", "B. c #5C5C5C", "C. c #5D5D5D", "D. c #5E5E5E", "E. c #FF6161", "F. c #A73634", "G. c #AA9334", "H. c #FFDF54", "I. c #9A9A9A", "J. c #595959", "K. c #5A5A5A", "L. c #3D3D3D", "M. c #FF4949", "N. c #8C1F18", "O. c #E04725", "P. c #C0C0C0", "Q. c #BCBCBC", "R. c #B4B4B4", "S. c #ABABAB", "T. c #9B9B9B", "U. c #979797", "V. c #575757", "W. c #373636", "X. c #FF3030", "Y. c #8C1513", "Z. c #2B2A2A", "`. c #252424", " + c #262525", ".+ c #272626", "++ c #282727", "@+ c #292828", "#+ c #2A2929", "$+ c #2C2B2B", "%+ c #2D2C2C", "&+ c #2F2E2E", "*+ c #797979", "=+ c #6F6F6F", "-+ c #EFEFEF", ";+ c #E4E4E4", ">+ c #DEDEDE", ",+ c #969694", "'+ c #6C6C6C", ")+ c #DCDCDC", "!+ c #D2D2D2", "~+ c #CCCCCC", "{+ c #8A8A8C", "]+ c #020204", "^+ c #EBEBEB", "/+ c #009000", "(+ c #38FB30", "_+ c #DBDBDB", ":+ c #D5D5D5", "<+ c #DEDEDC", "[+ c #A4A4A4", "}+ c #C9C9C9", " . . . . . . . . . . . . . . . . . . . . ", ". + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # . ", ". @ $ % & * = - ; > , ' ) ! ~ { # ] ^ / ( . ", ". @ _ : < < < < < < < < < < < < < < [ } ( . ", ". @ | < . 1 . . . . . . . . . . . . 2 3 ( . ", ". @ & < . @ . . . . . . . . . . . . 2 4 ( . ", ". @ * < . . @ . 5 . . . . . . . . . 2 6 ( . ", ". @ 7 < . @ . . @ @ . . . . . . . . 2 8 ( . ", ". @ 9 < . . . . . . . . . . . . . . 2 0 ( . . . . . . . . . . ", ". @ - < . . . . . . . . . . . . . . 2 a ( . b c d e f g h i j . ", ". @ ; < . . . . . . . . . . . . . . 2 k ( . l m n o p q r j s . ", ". @ t < . . . . . . . . . . . . . . 2 u ( . v w x y z A B C s . ", ". @ D < . . . . . . . . . . . . . . 2 E ( . @ @ @ @ @ F G H H . ", ". @ I < 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 J ( . ~ K L M N O P P Q . ", ". @ R S T U V + W M X } Y Z 8 ` k ...+.( . < < < < 3 @.#.#.$.. ", ". # ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( . %.&.*.2 4 =.=.-.;.. ", " . . . . . . . . . . . . . . . . . . . . >.,.'.*.2 ).!.!.~.~.. ", " . . . = < {.].^./.(.(._.:.<.*.2 0 [.}.|.|.. ", " . . . - < 1.2.3.4.5.6.7.8.9.*.2 0.a.b.b.c.. ", " . . . . d.< e.f.g.h.i.j.k.l.m.*.2 u n.n.o.p.. ", " . . . D < q.r.s.t.u.v.w.x.*.*.2 E y.y.z.z.. ", " . . . . . . , < *.*.*.*.*.*.*.x.*.*.2 A.B.C.D.. ", " . . . . E.F.G.H. . ' < 2 2 2 2 2 2 2 2 2 2 2 I.J.K.L.( . ", " . . M.M.N.O.. . ) U { P.Q.X R.Z S.a u ..T.U.V.W.( M . ", " . X.Y.G.H. . Z.`. +.+++++@+#+Z.$+$+%+&+$+( ^ s . ", " . . . . ( ( ( ( ( ( ( ( ( ( ( ( ( ( L P *+. ", " . @ @ @ @ @ @ @ @ @ @ @ @ @ @ # =+-.#.. ", " . -+% ;+>+d., S U K ,+,+Y ).a b.[.'+. ", " . $ % ;+)+> !+~+{+]+]+]+]+{+0.z.o.. ", " . ^+/+(+_+:+' ! K K <+<+6 6 [+B.. ", " . _ ;+9 d.I S }+K W 3 8 6 ` u . ", " . . . . . . . . . . . . . . "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/text.xpm0000644000000000000000000000127607252426554014730 /* XPM */ static char *text_xpm[] = { /* columns rows colors chars-per-pixel */ "21 21 5 1", " c Black", ". c #7b7b7b", "X c Gray74", "o c Gray100", "O c None", /* pixels */ "....................o", ". Oo", ". oooooooooooooooooOo", ". ooooooo oooooooooOo", ". ooooooo oooooooooOo", ". oo oo O ooo oOo", ". o OoO o o. o oo Oo", ". ooooo o ooo o oooOo", ". oo o ooo o oooOo", ". o Ooo o oo. o oo Oo", ". oo o ooo oOo", ". oooooooooooooooooOo", ". ooooo ooooooooo Oo", ". ooooo oo ooo ooOo", ". ooooo o ooo oo ooOo", ". oo o ooo o oOo", ". o ooo o ooo ooOo", ". o ooo o oooooo ooOo", ". oo oo ooo ooOo", ".OOOOOOOOOOOOOOOOOOOo", "ooooooooooooooooooooo" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/tick.xpm0000644000000000000000000000124307252426554014670 /* XPM */ static char*tick[]={ "22 22 4 1", "a c #808080", "# c #000000", ". c None", "b c #ffffff", "......................", "......................", "......................", "......................", "......................", "................#a#...", "...............aba#...", "..............aba#....", ".............aba#.....", ".......a....aba#......", "......aba..ab##.......", ".....ab..a#b.a#.......", ".....#a...b.##........", ".....##a....a#........", "......##a..a#.........", ".......##a.a#.........", "........##a#..........", ".........###..........", "..........#...........", "......................", "......................", "......................"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/timer.xpm0000644000000000000000000000147407334252127015056 /* XPM */ static char *timer_xpm[] = { /* width height num_colors chars_per_pixel */ " 23 23 4 1", /* colors */ ". c #000000", "# c #800000", "a c #none", "b c #none", /* pixels */ "aaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaa.....aaaaaaaaa", "aaaaaaa..bbbbb..aaaaaaa", "aaaaaa.bbbb.bbbb.aaaaaa", "aaaaa.bb#bb.ab#bb.aaaaa", "aaaa.bbbbbb.abbbbb.aaaa", "aaaa.b#bbbb.abbb#b.aaaa", "aaa.bbbbbbb.abbbbbb.aaa", "aaa.bbbbbbb.abbbbbb.aaa", "aaa.b#bbbbb....bb#b.aaa", "aaa.bbbbbbbbaaaabbb.aaa", "aaa.bbbbbbbbbbbbbbb.aaa", "aaaa.b#bbbbbbbbb#b.aaaa", "aaaa.bbbbbbbbbbbbb.aaaa", "aaaaa.bb#bbbbb#bb.aaaaa", "aaaaaa.bbbb#bbbb.aaaaaa", "aaaaaaa..bbbbb..aaaaaaa", "aaaaaaaaa.....aaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaa" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/togglesyntax.xpm0000644000000000000000000000101507252426554016463 /* XPM */ static char*togglesyntax_xpm[]={ "16 16 10 1", "f c #c0c000", "d c #00ff00", "# c #000000", "c c #800000", "a c #ffffc0", "g c #0000ff", ". c None", "e c #00c000", "b c #ffffff", "h c #ff0000", "......##........", "......#a###.....", ".....#ababa###..", ".....#bbcccaba##", "....#acccccccca#", "....#abbbabaaaa#", "...#addddddddaa#", "...#babeeeeaaaf#", "..#bababababaa#.", ".#aaggggggggaa#.", "#aaaababababaa#.", "#faahhhhhhhhaf#.", ".##faaaaaaaaa#..", "...###faaaaaf#..", "......###faf#...", ".........###...."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/tree.xpm0000644000000000000000000000127607252426554014703 /* XPM */ static char*tree_xpm[]={ "22 21 7 1", ". c #808080", "# c #000000", "e c #ffff00", "b c #303030", "d c #0000ff", "a c #ffffff", "c c #ff0000", "......................", ".####################.", ".#aaaaaaaaaaaaa#aaa.#.", ".#bbbaaaaaaaaaa#a##.#.", ".#aabaaaaaaaaaa#a##.#.", ".#aabaaacccaaaa#....#.", ".#aabbbbcccaaaa######.", ".#aabaabaaaaaaa#a.a.#.", ".#aabaa#aaaaaaa#.a.a#.", ".#aabaa#aaaddda#a.a.#.", ".#aabaa####ddda#.a.a#.", ".#aabaaaaa#aaaa#a.a.#.", ".#aabaaaaa#aaaa#.a.a#.", ".#aabaaaaa###aa#a.a.#.", ".#aabaaaaaaaaaa######.", ".#aabaaaeeeaaaa#aaa.#.", ".#aab###eeeaaaa#a##.#.", ".#aaaaaaaaaaaaa#a##.#.", ".#aaaaaaaaaaaaa#....#.", ".####################.", "......................"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/togglech.xpm0000644000000000000000000001026507451114746015534 /* XPM */ static char *togglech_xpm[]={ "32 32 128 2", "Qt c None", ".# c #000000", ".c c #004040", "#b c #00c000", ".i c #404000", ".N c #800000", ".d c #808080", ".w c #858585", "#w c #878785", "#P c #888886", "#8 c #898989", "#y c #8b8b88", "#7 c #8b8b89", "#r c #8c8c8a", "#6 c #8d8d89", "#k c #8d8d8c", "#q c #8e8e8d", "#t c #929290", "#T c #949490", "#S c #949491", "#L c #949492", "#a c #959594", ".Z c #979796", "#x c #989896", ".Y c #989898", "#5 c #999995", "#c c #9a9a99", "#j c #9b9b9a", "#v c #9c9c9a", "#O c #9d9d9b", ".C c #9d9d9d", "#u c #9e9e9b", ".x c #9e9e9e", "#4 c #9f9f9b", "#3 c #9f9f9d", "#U c #9f9f9f", "#2 c #a0a09d", "## c #a0a09f", "#9 c #a0a0a0", "#m c #a1a1a0", "#K c #a2a2a0", "#g c #a2a2a1", ".U c #a2a2a2", ".4 c #a3a3a2", ".L c #a4a4a3", ".Q c #a4a4a4", "#d c #a7a7a6", ".f c #a8a8a8", ".h c #aaaaaa", ".X c #b0b0af", "#Z c #b1b1af", ".W c #b1b1b1", "#1 c #b4b4b1", "#0 c #b4b4b3", "#M c #b6b6b4", "#e c #bdbdbb", ".6 c #c1c1c0", ".5 c #c3c3c2", "#J c #ccccc7", "#z c #ccccc8", "#Y c #cdcdc9", "#I c #cececa", ".M c #cecece", "#p c #cfcfcb", "#H c #cfcfcc", "#X c #d0d0cd", ".k c #d0d0d0", "#G c #d1d1cd", "#l c #d1d1ce", ".g c #d1d1d1", "#W c #d2d2ce", "#F c #d3d3cf", "#o c #d3d3d0", "#i c #d4d4d1", "#R c #d5d5d1", "#n c #d5d5d2", "#E c #d6d6d2", "#Q c #d6d6d3", "#f c #d7d7d4", "#V c #d8d8d5", "#D c #d9d9d6", "#. c #dadad7", "#C c #dadad8", "#N c #dbdbd8", "#B c #dcdcd9", ".7 c #dcdcda", "#s c #dddddb", "#A c #dededb", ".3 c #dfdfdd", ".b c #e0e0e0", ".2 c #e1e1de", ".1 c #e2e2e0", ".v c #e2e2e2", ".0 c #e3e3e1", "#h c #e4e4e2", ".T c #e5e5e3", ".S c #e6e6e4", ".P c #e7e7e6", ".R c #e8e8e6", ".O c #e9e9e7", ".9 c #e9e9e8", ".K c #eaeae8", ".J c #ececea", ".B c #ededeb", ".I c #ededec", ".A c #eeeeed", ".H c #efefee", ".z c #f0f0ef", ".8 c #f1f1f0", ".y c #f2f2f1", ".G c #f4f4f3", ".u c #f4f4f4", ".F c #f5f5f4", ".t c #f6f6f5", ".V c #f6f6f6", ".n c #f7f7f6", ".s c #f7f7f7", ".E c #f8f8f8", ".m c #f9f9f8", ".r c #f9f9f9", ".D c #fafaf9", ".l c #fafafa", ".q c #fbfbfa", ".e c #fbfbfb", ".p c #fcfcfc", ".j c #fdfdfd", ".o c #fefefe", ".a c #ffffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQt.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#QtQtQtQtQtQtQtQt", "QtQtQtQtQtQt.#.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.b.c.cQtQtQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.d.d.d.d.d.d.d.d.d.d.d.d.d.c.e.f.cQtQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.g.hQt.aQt.a.i.i.j.k.l.m.n.c.c.c.c.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.a.a.a.a.a.a.o.p.q.r.s.t.u.v.w.c.c.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.h.c.c.c.c.f.x.i.i.i.i.i.y.z.A.B.C.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.c.c.c.c.c.D.E.n.F.G.y.z.H.I.J.K.L.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.c.c.p.M.m.N.N.N.N.N.N.N.N.a.O.P.Q.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.c.c.r.s.t.N.N.N.N.N.N.N.N.R.S.T.U.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.c.c.V.W.X.Y.Z.A.E.E.E.N.N.E.0.1.U.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.c.c.G.y.z.H.I.J.E.E.E.N.N.E.2.3.4.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.c.c.c.c.c.5.6.O.E.i.i.E.E.i.i.7.4.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.8.c.c.c.c.9.R.S.E.i.i.E.E.i.i#.##.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.4#a#b#b#c#d#e.0.E.i.i.E.E.i.i#f#g.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.J.a#b#b.a#h.1.2.E.i.i.i.i.i.i#i#g.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d#j#k#b#b#b#b#b#b#b.i.i.i.i.i.i#l#m.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.S.T#b#b#b#b#b#b#b.i.i#n#o.i.i#p##.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.Z#q#k#r#s#t#u#v#w.i.i#x#y.i.i#z#g.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d.2.3#A#B#C#D#f#E#i#F#G#H#I#z#J#J#K.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d#L#M#N#O#P#Q#R.i.i.i#I#S#T#J#J#J#U.cQtQtQtQtQt", "QtQtQtQtQtQt.#.a.d#N#.#V#Q#n#o#W#X#p#Y#J#J#J#J#J#J##.cQtQtQtQtQt", "QtQtQtQtQtQt.#.k#Z#0#1#2#2#3#3#4#5#6#7#7#7#8#8#9#9#9.cQtQtQtQtQt", "QtQtQtQtQtQt.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.cQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/toggleformunits.xpm0000644000000000000000000000115007252426555017164 /* XPM */ static char *toggleformunits_xpm[] = { "21 19 5 1", ". c #000000", "# c #000080", "a c #808080", "b c #none", "c c #ffffff", "bbbbbbbbbbbbbbbbbbbbb", "b...........bb...abbb", "b.#########.bbbb..bbb", "b...........bbbb..bbb", "b.ccccccccc.bba....ab", "b.cbbbbbbbb.bbba..abb", "b.cbbbbbbbb.bbbb..bbb", "b.cbbbbbb......bbbbbb", "b.cbbbbbb.cccc..bbbbb", "b.........cccc...bbbb", "bbbbbbbbb.cccccc.bbbb", "bbb..bbbb.cccccc.bbbb", "bba..abbb.cccccc.bbbb", "ba....abb.cccccc.bbbb", "bbb..bbbb.cccccc.bbbb", "bbb..bbbb.cccccc.bbbb", "bbba...bb.cccccc.bbbb", "bbbbbbbbb........bbbb", "bbbbbbbbbbbbbbbbbbbbb" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/toolbar.xpm0000644000000000000000000000127207252426555015403 /* XPM */ char *toolbar_xpm[] = { /* columns rows colors chars-per-pixel */ "21 21 5 1", " c Black", ". c #7b7b7b", "X c Gray74", "o c Gray100", "O c None", /* pixels */ "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "Oooooooooooooooooooo ", "OoOOOOOOOOOOOOOOOOO. ", "OoOoooo oooo oooo O. ", "OoOoOOO oOOO oOOO O. ", "OoOoOOO oOOO oOOO O. ", "OoOo o o O. ", "OoOOOOOOOOOOOOOOOOO. ", "Oo.................. ", "O ", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOO" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/undo.xpm0000644000000000000000000000213107453564435014704 /* XPM */ static char * undo_xpm[] = { "24 24 26 1", " c None", ". c #000000", "+ c #EFE5BA", "@ c #EFE7C1", "# c #EED680", "$ c #EFE4B6", "% c #CCB76D", "& c #96864F", "* c #AF9D5D", "= c #C0AF73", "- c #986B07", "; c #D1940C", "> c #DBAB36", ", c #8F6406", "' c #D59D1C", ") c #A49357", "! c #DFB74A", "~ c #B8820A", "{ c #D7A62C", "] c #C0AC66", "^ c #D4B150", "/ c #847645", "( c #E0C978", "_ c #C9B46B", ": c #8D7E4A", "< c #AE9C5C", " ", " ", " ", " ", " . ", " .. ", " .+. ", " .@#.... ", " .$####%&. ", " .+#######*. ", " .=#########&. ", " .-;;;;;;>#%. ", " .,;;;;;;'#). ", " .,;...-;!%. ", " .-. .~;#. ", " .. .;#. ", " . .{]. ", " .^/. ", " .(. ", " ._:. ", " .<&. ", " .. ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/unit_node.xpm0000644000000000000000000000114007334252123015704 /* XPM */ char *unit_node_xpm[] = { /* width height num_colors chars_per_pixel */ " 17 17 7 1", /* colors */ ". c #000000", "# c #00007f", "a c #007f7f", "b c #7f7f7f", "c c #bfbfbf", "d c #ff0000", "e c #none", /* pixels */ "eebbbbbbbbbbeeeee", "eebeeeeeeeecbeeee", "eebececececcebeee", "eebeeaaaaae....ee", "eebecececececc.ee", "eebeeceaaaaaec.ee", "eeb#cececececc.ee", "eebb#dddddddec.ee", "eeb#cececececc.ee", "eebeeceaaaaaec.ee", "eebecececececc.ee", "eebeeaaaaaaaec.ee", "eebecececececc.ee", "eebccccccccccc.ee", "ee.............ee", "eeeeeeeeeeeeeeeee", "eebbbbbbbbbbeeeee" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/vbox.xpm0000644000000000000000000000734107451025066014713 /* XPM */ static char *vbox_xpm[]={ "24 24 157 2", "Qt c None", ".# c #000000", "az c #000200", "aj c #001f00", "aa c #003700", ".v c #004000", "#8 c #004700", ".A c #005100", ".a c #030303", "aA c #050605", ".t c #165116", "#4 c #1a1e19", ".o c #1c211c", "ar c #1f511f", ".z c #255425", "#c c #293029", "#U c #2b542b", "#T c #30362f", "#0 c #345a34", ".S c #345f34", "#F c #363e35", "a. c #375a37", "aq c #375f37", ".R c #376237", ".w c #3b5c3b", ".Q c #3b623b", ".T c #3b643b", "ai c #3e623e", ".Z c #416241", "aw c #416641", ".G c #446444", ".p c #455345", "#b c #475647", ".F c #476647", "ah c #4a6c4a", ".q c #4c4f4c", "#7 c #4d6c4d", "a# c #4f644f", ".P c #516d51", ".7 c #517251", "ak c #536052", "#1 c #546a54", "#6 c #547254", ".6 c #547454", "ap c #567556", "av c #587758", "#r c #5a755a", "ay c #5a775a", "#z c #5c775c", "#N c #5f795f", "#a c #5f7a5f", "#k c #5f7c5f", "ae c #617c61", ".5 c #617d61", "#O c #627962", "#Y c #647964", "#q c #668066", ".m c #6a6c6a", "#3 c #6a856a", ".E c #6d836d", "af c #6d876d", "#E c #6f886f", "#M c #718571", "#p c #718971", "#l c #718d71", "#S c #748f74", "#V c #758875", "ad c #758f75", "#D c #759075", ".y c #798979", "## c #798f79", "#Z c #7a927a", ".0 c #7c7e7c", "#j c #7c927c", ".X c #7d987d", ".s c #7e907e", "#5 c #7e937e", "an c #7e977e", ".d c #808000", "#o c #809780", "#9 c #819881", "#R c #819981", ".8 c #819c81", "#C c #839b83", "#2 c #859785", ".L c #87a087", "#Q c #889f88", "am c #88a088", ".9 c #899f89", "#G c #8c9c8c", "#s c #8c9e8c", "#. c #8ca08c", "ag c #8ca28c", "as c #8ca38c", ".W c #8da68d", ".Y c #8fa38f", "al c #8fa48d", "ac c #90a78f", "#B c #90a790", "ab c #91a68f", "#n c #91a691", "#P c #92a492", "#m c #92a992", "at c #92aa92", ".V c #93ab93", ".U c #95ac95", "ao c #95ad95", "#A c #99ae99", ".K c #9baf9b", "ax c #9cb29b", ".D c #9eb29e", "au c #9fb69f", "#W c #a1b0a1", ".J c #a6b9a6", ".H c #a9bda9", ".I c #abbdab", ".C c #aec0ae", "#X c #b0bfb0", ".M c #b5b9b5", ".B c #b5c6b5", ".r c #b8c1b8", ".O c #b8c3b8", ".x c #bcc6bc", "#L c #beccbe", "#i c #bfcdbf", ".u c #c0af73", "#H c #c2ccc2", ".N c #c6d3c6", "#y c #c9d6c9", "#d c #cbd9cb", "#t c #ccd6cc", "#K c #ccdacc", "#I c #ced8ce", "#x c #cfddcf", "#J c #d0dcd0", ".4 c #d2dbd2", ".1 c #d2ddd2", "#h c #d5e0d5", "#w c #d7e3d7", "#v c #e0e9e0", "#e c #e2eae2", ".3 c #e3eae3", "#u c #e4ebe4", ".2 c #e7ede7", "#g c #e9efe9", "#f c #ebf0eb", ".f c #eed680", ".l c #efe4b6", ".n c #efe5ba", ".k c #efe7c1", ".g c #f2e4ad", ".c c #f3e4ae", ".e c #f3e7b9", ".h c #f3eccd", ".j c #f3edd1", ".i c #f5ebc1", ".b c #f6f5f0", "QtQtQtQtQtQtQtQtQtQt.#.#.#.#.#.#.#QtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQt.a.b.c.c.d.d.#QtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQt.#.e.f.f.d.d.#QtQtQtQtQtQtQt", "QtQtQtQtQtQtQt.#.#.#.#.g.f.f.d.d.#.#.#.#QtQtQtQt", "QtQtQtQtQtQtQtQt.#.h.i.j.f.f.d.d.d.d.#QtQtQtQtQt", "QtQtQtQtQtQtQtQtQt.#.k.f.f.f.d.d.d.#QtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQt.#.l.f.f.d.d.#QtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQt.#.m.#.n.f.d.o.pQtQtQtQtQtQtQt", "QtQtQtQtQtQt.q.#.m.r.s.t.#.u.#.v.v.w.pQtQtQtQtQt", "QtQtQtQtQt.#.m.x.y.z.d.d.A.#.B.C.D.v.E.F.pQtQtQt", "QtQtQtQt.#.v.v.G.d.d.d.d.A.H.I.J.K.L.v.v.v.#.#Qt", "QtQtQt.a.M.N.O.v.P.Q.R.S.T.U.V.W.X.v.v.Y.Z.#QtQt", "QtQtQt.0.1.2.3.4.v.v.5.6.7.8.X.v.v.9#.###a#b.oQt", "QtQt#c#d#e#f#g.3#h#i.v#j#k#l.v#m#n#o#p#q#r.d.d.#", "QtQt.##s#t#u#u#v#w#x#y.v#z.v#A#B#C#D#E.d.d.d.#Qt", "QtQtQtQt#F#G#H#I#J#K#L#M#N#O#P#Q#R#S.d.d.#.#QtQt", "QtQtQtQtQt#T#U#V#W#X#Y#U#Z#0#1#2#3.d.#.#.#QtQtQt", "QtQtQtQtQt#4#5#6#7.P#8#z#9.Qa.a#aa.#.d.d.#QtQtQt", "QtQtQtQtQt.#abacad.7aeafagahai#8aj.d.d.d.#QtQtQt", "QtQtQtQtQtQt.#akalam#Canaoapahaqar.d.#.#QtQtQtQt", "QtQtQtQtQtQtQtQt.#akasatau#kavaw.#.#QtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQt.#akaxay.#azQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtaA.#QtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/vdkb.xpm0000644000000000000000000005126207252426563014672 /* XPM */ static char * vdkb_xpm[] = { "48 48 1020 2", " c None", ". c #FFF5AA", "+ c #FFF8C7", "@ c None", "# c #FFFBE3", "$ c #FFE100", "% c #FFF18E", "& c #FFE41D", "* c #FFEE72", "= c #FFE739", "- c #FFEB55", "; c #DCC631", "> c #A39EA0", ", c #C5B86E", "' c #E7D23D", ") c #CDC076", "! c #A8A4A5", "~ c #989495", "{ c #A5A2A2", "] c #A7A3A4", "^ c #A39FA0", "/ c #A8A4A6", "( c #AEAAAC", "_ c #A5A2A3", ": c #827D7E", "< c #817D7E", "[ c #B6A95E", "} c #CCB620", "| c #989295", "1 c #C5B76E", "2 c #AC9E54", "3 c #EBD224", "4 c #AFA158", "5 c #60595B", "6 c #878184", "7 c #979294", "8 c #938E90", "9 c #A39FA1", "0 c #979395", "a c #635D5F", "b c #352E30", "c c #7E7A7C", "d c #AFADAE", "e c #E0DEDF", "f c #8E888A", "g c #BFAC30", "h c #B7AB7C", "i c #ACA7AA", "j c #CCBF76", "k c #BFB268", "l c #B1A992", "m c #F3D811", "n c #F0D50E", "o c #8C846D", "p c #918C8F", "q c #787374", "r c #817B7D", "s c #878284", "t c #908B8D", "u c #A4A1A3", "v c #A39FA2", "w c #A4A0A2", "x c #777275", "y c #2E282A", "z c #433D3F", "A c #A8A5A6", "B c #C3B76C", "C c #6A6365", "D c #8C836C", "E c #DEC934", "F c #928D8F", "G c #A99B51", "H c #D1C57C", "I c #B2AEB0", "J c #B6AB7C", "K c #EDD20A", "L c #888069", "M c #B1AEB0", "N c #BEBABD", "O c #B9B6B8", "P c #BDB8BC", "Q c #A7A3A6", "R c #A29EA1", "S c #9B989A", "T c #848083", "U c #625D5F", "V c #4E494C", "W c #332E2F", "X c #858284", "Y c #DFCA34", "Z c #A99735", "` c #BFB168", " . c #DDCB50", ".. c #B9AF7F", "+. c #9C9699", "@. c #827C7E", "#. c #8D856E", "$. c #C3B035", "%. c #D1BB26", "&. c #CDBA3E", "*. c #B2AA93", "=. c #A79B6C", "-. c #D5C02A", ";. c #C5B236", ">. c #BAB081", ",. c #B9B5B7", "'. c #ABA8AA", "). c #959092", "!. c #A09D9F", "~. c #AFABAE", "{. c #928F91", "]. c #524C4F", "^. c #615C5F", "/. c #615C5E", "(. c #262123", "_. c #807D7F", ":. c #676062", "<. c #787173", "[. c #B5B0B3", "}. c #969093", "|. c #868082", "1. c #6B6466", "2. c #797375", "3. c #878183", "4. c #7E787A", "5. c #948F92", "6. c #8F888B", "7. c #6F686A", "8. c #4D4547", "9. c #5F5A5A", "0. c #9F9A9C", "a. c #6C6768", "b. c #5D585A", "c. c #716B6E", "d. c #807B7E", "e. c #8E8A8C", "f. c #949193", "g. c #656063", "h. c #6F6B6D", "i. c #757173", "j. c #403B3D", "k. c #221D20", "l. c #868385", "m. c #B4B2B4", "n. c #B0ABAD", "o. c #534A4C", "p. c #7A7476", "q. c #A7A2A4", "r. c #A6A1A3", "s. c #807A7C", "t. c #615A5C", "u. c #7C7678", "v. c #8C8588", "w. c #6D6667", "x. c #797475", "y. c #6C6567", "z. c #524A4C", "A. c #5C5557", "B. c #625C5D", "C. c #595254", "D. c #5C5658", "E. c #665F62", "F. c #716C6F", "G. c #847F81", "H. c #6B6668", "I. c #736E71", "J. c #696467", "K. c #787476", "L. c #625E60", "M. c #423C3F", "N. c #1D191B", "O. c #3C383A", "P. c #8B898B", "Q. c #BAB8BA", "R. c #C8C6C8", "S. c #595052", "T. c #918A8D", "U. c #BDB9BB", "V. c #A8A2A5", "W. c #989395", "X. c #847E80", "Y. c #8B8487", "Z. c #756E70", "`. c #837D7F", " + c #A6A1A4", ".+ c #9B9698", "++ c #A19C9E", "@+ c #A8A3A6", "#+ c #A49FA2", "$+ c #A09C9E", "%+ c #9B9799", "&+ c #A7A3A5", "*+ c #ABA7AA", "=+ c #949093", "-+ c #686265", ";+ c #504B4E", ">+ c #888486", ",+ c #9E9B9E", "'+ c #827D81", ")+ c #5C585B", "!+ c #150F12", "~+ c #322F30", "{+ c #545054", "]+ c #524F51", "^+ c #A19FA1", "/+ c #6F6769", "(+ c #928C8F", "_+ c #C1BDBF", ":+ c #A29D9F", "<+ c #A09B9D", "[+ c #70696B", "}+ c #BAB6B9", "|+ c #BBB7B9", "1+ c #B6B2B5", "2+ c #BAB7B9", "3+ c #B8B5B7", "4+ c #BEB9BC", "5+ c #BDBABD", "6+ c #C2BEC1", "7+ c #B6B3B6", "8+ c #959194", "9+ c #2E2A2A", "0+ c #494446", "a+ c #7F7B7D", "b+ c #908D90", "c+ c #4A4648", "d+ c #181316", "e+ c #1A1618", "f+ c #242122", "g+ c #4A4649", "h+ c #353134", "i+ c #443C3D", "j+ c #4F4648", "k+ c #787274", "l+ c #A9A4A6", "m+ c #898285", "n+ c #716A6B", "o+ c #948F91", "p+ c #7D7779", "q+ c #817C7D", "r+ c #B5B1B3", "s+ c #B8B4B6", "t+ c #B4B0B2", "u+ c #B5B2B4", "v+ c #BFBCBF", "w+ c #BCB9BC", "x+ c #C1BDC0", "y+ c #C4C0C3", "z+ c #938F92", "A+ c #5E595B", "B+ c #2E292A", "C+ c #282224", "D+ c #555052", "E+ c #777375", "F+ c #6E6A6C", "G+ c #5A5659", "H+ c #393637", "I+ c #413C40", "J+ c #565255", "K+ c #595659", "L+ c #363235", "M+ c #6C696B", "N+ c #989394", "O+ c #332A2B", "P+ c #888183", "Q+ c #706A6B", "R+ c #5C5456", "S+ c #726B6D", "T+ c #736B6D", "U+ c #868182", "V+ c #ACA7A9", "W+ c #B0ACAE", "X+ c #A19C9F", "Y+ c #A5A1A3", "Z+ c #A8A4A7", "`+ c #B0ADAF", " @ c #B9B6B9", ".@ c #BDB9BC", "+@ c #A09C9F", "@@ c #645F62", "#@ c #393537", "$@ c #332E30", "%@ c #3E393B", "&@ c #3C373A", "*@ c #454043", "=@ c #4B464A", "-@ c #4C494B", ";@ c #4E4A4E", ">@ c #504C4F", ",@ c #3D3A3C", "'@ c #272527", ")@ c #878082", "!@ c #3D3535", "~@ c #958F92", "{@ c #8C8587", "]@ c #ABA6A9", "^@ c #595153", "/@ c #888184", "(@ c #A49EA1", "_@ c #ABA7A9", ":@ c #9F9A9D", "<@ c #9E9A9D", "[@ c #9E9A9C", "}@ c #AEA9AD", "|@ c #ADA8AC", "1@ c #AEAAAD", "2@ c #959193", "3@ c #797678", "4@ c #3F3A3C", "5@ c #443E41", "6@ c #696568", "7@ c #A9A5A9", "8@ c #9B989B", "9@ c #625E61", "0@ c #2F2B2E", "a@ c #1C181B", "b@ c #1A171A", "c@ c #565457", "d@ c #9C9A9C", "e@ c #C2BEC0", "f@ c #504649", "g@ c #544B4E", "h@ c #6E6668", "i@ c #8A8386", "j@ c #969193", "k@ c #AAA4A7", "l@ c #5D5658", "m@ c #736C6D", "n@ c #908A8C", "o@ c #AFABAD", "p@ c #B1ADAF", "q@ c #A5A1A4", "r@ c #BBB7BA", "s@ c #9C989B", "t@ c #9F9B9D", "u@ c #ADA9AC", "v@ c #999698", "w@ c #9C989A", "x@ c #B5B2B5", "y@ c #B1AEB1", "z@ c #AFABAF", "A@ c #1F1A1C", "B@ c #524E51", "C@ c #696668", "D@ c #736F73", "E@ c #575356", "F@ c #565256", "G@ c #292629", "H@ c #120E12", "I@ c #1F1B1F", "J@ c #6E6B6E", "K@ c #656366", "L@ c #80797B", "M@ c #6C6466", "N@ c #5D5558", "O@ c #71696B", "P@ c #7D7678", "Q@ c #3D3435", "R@ c #40393A", "S@ c #726B6C", "T@ c #767172", "U@ c #898386", "V@ c #948E91", "W@ c #7F797C", "X@ c #746F71", "Y@ c #706B6D", "Z@ c #817C7F", "`@ c #6A6467", " # c #726C6F", ".# c #7C787A", "+# c #686366", "@# c #656163", "## c #7B787A", "$# c #373134", "%# c #171215", "&# c #1F1A1D", "*# c #221E20", "=# c #211C20", "-# c #3B373A", ";# c #332F32", "># c #161215", ",# c #151216", "'# c #2E2C2F", ")# c #353436", "!# c #767072", "~# c #797274", "{# c #665F61", "]# c #292022", "^# c #352C2D", "/# c #6D6668", "(# c #7F797B", "_# c #403839", ":# c #281F21", "<# c #282020", "[# c #271E1F", "}# c #2A2324", "|# c #2F2729", "1# c #4F484A", "2# c #A19D9F", "3# c #868184", "4# c #312B2C", "5# c #221B1D", "6# c #231D1F", "7# c #211C1D", "8# c #1E171A", "9# c #2F2A2D", "0# c #353032", "a# c #1C1719", "b# c #130F11", "c# c #130F12", "d# c #161115", "e# c #151114", "f# c #242023", "g# c #232024", "h# c #171518", "i# c #2D2A2E", "j# c #6B696C", "k# c #7D7B7D", "l# c #D8D5D6", "m# c #8D8689", "n# c #6E6769", "o# c #635B5D", "p# c #2B2323", "q# c #382F30", "r# c #564E50", "s# c #8E878A", "t# c #504749", "u# c #251C1E", "v# c #211919", "w# c #22191B", "x# c #21191A", "y# c #322C2D", "z# c #6E676A", "A# c #363132", "B# c #231E1F", "C# c #2A2526", "D# c #3D383A", "E# c #201A1C", "F# c #1C1619", "G# c #2A2528", "H# c #565254", "I# c #383436", "J# c #151214", "K# c #130E12", "L# c #171317", "M# c #262327", "N# c #494649", "O# c #565357", "P# c #706E71", "Q# c #4D4C4E", "R# c #BEBABC", "S# c #696163", "T# c #625A5D", "U# c #777273", "V# c #251D1E", "W# c #261D1E", "X# c #989396", "Y# c #4B4244", "Z# c #241C1D", "`# c #261F1F", " $ c #241B1E", ".$ c #494344", "+$ c #918E8F", "@$ c #514B4E", "#$ c #4C4749", "$$ c #3F3A3D", "%$ c #3D373A", "&$ c #3C3639", "*$ c #393536", "=$ c #4D494C", "-$ c #AEABAE", ";$ c #615D60", ">$ c #1C181A", ",$ c #130E11", "'$ c #0E0A0E", ")$ c #141014", "!$ c #1D191D", "~$ c #191619", "{$ c #39373A", "]$ c #545255", "^$ c #201E21", "/$ c #4C4A4D", "($ c #5A5154", "_$ c #544B4D", ":$ c #251C1D", "<$ c #3F3738", "[$ c #979194", "}$ c #C3BFC2", "|$ c #4C4647", "1$ c #433C3E", "2$ c #757073", "3$ c #AEA9AC", "4$ c #9D9A9C", "5$ c #443D40", "6$ c #797577", "7$ c #554F52", "8$ c #6D696B", "9$ c #666264", "0$ c #918D91", "a$ c #CECCCF", "b$ c #8B878A", "c$ c #262125", "d$ c #120D10", "e$ c #120E11", "f$ c #1F1B1E", "g$ c #231F23", "h$ c #171417", "i$ c #2C292C", "j$ c #49474A", "k$ c #232023", "l$ c #212022", "m$ c #646164", "n$ c #574E50", "o$ c #5D5557", "p$ c #746D6F", "q$ c #686063", "r$ c #5E5658", "s$ c #5A5253", "t$ c #31292A", "u$ c #281E20", "v$ c #2E2627", "w$ c #4E4547", "x$ c #C6C2C5", "y$ c #BAB6B8", "z$ c #6C6568", "A$ c #686164", "B$ c #989496", "C$ c #B4B0B3", "D$ c #9E999D", "E$ c #3A3336", "F$ c #6B6769", "G$ c #8E8A8D", "H$ c #A5A2A5", "I$ c #CBC9CC", "J$ c #CCCACD", "K$ c #242024", "L$ c #0F0B0E", "M$ c #2A272A", "N$ c #2F2C2F", "O$ c #1F1D20", "P$ c #333134", "Q$ c #615E62", "R$ c #4A474B", "S$ c #343134", "T$ c #787679", "U$ c #453D3E", "V$ c #7B7577", "W$ c #726A6C", "X$ c #7D7778", "Y$ c #534B4D", "Z$ c #564D4F", "`$ c #362D2F", " % c #3A3232", ".% c #999497", "+% c #C3BFC3", "@% c #C5C1C4", "#% c #B9B4B7", "$% c #9D999C", "%% c #989497", "&% c #ADAAAD", "*% c #9F9A9E", "=% c #393336", "-% c #6F6B6E", ";% c #8E8A8E", ">% c #605C5F", ",% c #CFCDD0", "'% c #D4D1D4", ")% c #BFBDC0", "!% c #6D6A6C", "~% c #1E1A1E", "{% c #100B0F", "]% c #1F1C20", "^% c #454245", "/% c #464447", "(% c #3B383C", "_% c #3A383B", ":% c #2D2C2E", "<% c #363437", "[% c #545154", "}% c #686062", "|% c #ADA8AA", "1% c #ABA6A8", "2% c #474040", "3% c #443D3E", "4% c #281F20", "5% c #393032", "6% c #867F82", "7% c #6B6567", "8% c #706A6C", "9% c #C0BCBF", "0% c #918D90", "a% c #7F7A7D", "b% c #807C7E", "c% c #AAA6AA", "d% c #534D50", "e% c #4D474A", "f% c #BBB8BC", "g% c #A29EA2", "h% c #1E1B1E", "i% c #191618", "j% c #120F12", "k% c #201D20", "l% c #4B494C", "m% c #1C191D", "n% c #302F31", "o% c #525053", "p% c #A29C9F", "q% c #6D6567", "r% c #A29DA0", "s% c #473F40", "t% c #2E2526", "u% c #352D2E", "v% c #736D6F", "w% c #817C7E", "x% c #898486", "y% c #9A9698", "z% c #4A4446", "A% c #3C3638", "B% c #3F393B", "C% c #767274", "D% c #7B777A", "E% c #393436", "F% c #858285", "G% c #B5B1B4", "H% c #726E71", "I% c #5A5559", "J% c #3C373B", "K% c #181216", "L% c #171316", "M% c #1A1619", "N% c #191518", "O% c #0E0B0E", "P% c #333034", "Q% c #413E42", "R% c #161517", "S% c #0C090D", "T% c #131114", "U% c #636063", "V% c #747275", "W% c #827C7D", "X% c #575051", "Y% c #5E5759", "Z% c #342B2C", "`% c #484142", " & c #322B2B", ".& c #31292B", "+& c #676163", "@& c #767273", "#& c #4F494B", "$& c #5F595C", "%& c #6F6A6C", "&& c #645E61", "*& c #2E282B", "=& c #1F191B", "-& c #342E31", ";& c #7A7679", ">& c #A7A4A7", ",& c #8F8B8F", "'& c #2C272A", ")& c #363135", "!& c #312E31", "~& c #120D11", "{& c #181518", "]& c #131014", "^& c #0E0C0E", "/& c #110E12", "(& c #100E11", "_& c #0A070B", ":& c #0C0A0D", "<& c #181619", "[& c #222023", "}& c #857F81", "|& c #918B8E", "1& c #716A6C", "2& c #655E60", "3& c #473F41", "4& c #2B2223", "5& c #383032", "6& c #282021", "7& c #2B2325", "8& c #625C5E", "9& c #949092", "0& c #A4A0A3", "a& c #736D70", "b& c #AEAAAE", "c& c #6A6568", "d& c #413B3E", "e& c #595457", "f& c #928E91", "g& c #C1BEC1", "h& c #6A676A", "i& c #696569", "j& c #504D4F", "k& c #141013", "l& c #100C0F", "m& c #0D0B0E", "n& c #1F1D1F", "o& c #0C090C", "p& c #0B090C", "q& c #0A070A", "r& c #0E0B0F", "s& c #09080A", "t& c #232124", "u& c #7A7375", "v& c #665E60", "w& c #6F696A", "x& c #272020", "y& c #241D1E", "z& c #2C2326", "A& c #918D8F", "B& c #BAB6BA", "C& c #B9B5B9", "D& c #888487", "E& c #706B6E", "F& c #4A4548", "G& c #423D3F", "H& c #807C7F", "I& c #A3A0A3", "J& c #8A8689", "K& c #1A1719", "L& c #19161A", "M& c #100D11", "N& c #131214", "O& c #BEBEBF", "P& c #E5E3E4", "Q& c #61595C", "R& c #5B5355", "S& c #696264", "T& c #9E999B", "U& c #625B5D", "V& c #2B2324", "W& c #241D1D", "X& c #231A1D", "Y& c #595355", "Z& c #938E91", "`& c #B2AEB1", " * c #494346", ".* c #504A4D", "+* c #3E383B", "@* c #4B4649", "#* c #5A5658", "$* c #3F3B3D", "%* c #575357", "&* c #777376", "** c #69676A", "=* c #1E1C1E", "-* c #141115", ";* c #161416", ">* c #141114", ",* c #232224", "'* c #2F2D30", ")* c #262427", "!* c #E9E8E8", "~* c #41393A", "{* c #8A8486", "]* c #655E5F", "^* c #443D3F", "/* c #3C3435", "(* c #2A2123", "_* c #211B1C", ":* c #2A2225", "<* c #514A4D", "[* c #8B8789", "}* c #B1ADB0", "|* c #8D898B", "1* c #2A2527", "2* c #2C2729", "3* c #3E393C", "4* c #312C2F", "5* c #231F21", "6* c #393538", "7* c #444043", "8* c #5E5A5D", "9* c #A19FA2", "0* c #434043", "a* c #120F13", "b* c #0F0C0F", "c* c #141214", "d* c #121013", "e* c #0D0C0E", "f* c #0D0A0D", "g* c #1D1B1E", "h* c #CFCFD0", "i* c #DAD9D9", "j* c #6E686A", "k* c #797275", "l* c #6F696B", "m* c #4C4547", "n* c #2F282A", "o* c #282122", "p* c #2B2527", "q* c #6C6769", "r* c #A39FA3", "s* c #615D5F", "t* c #706C6E", "u* c #999598", "v* c #898689", "w* c #8C888B", "x* c #231F22", "y* c #3B373B", "z* c #322E32", "A* c #4E4B4E", "B* c #161316", "C* c #100D10", "D* c #272528", "E* c #1B191C", "F* c #0E0C0F", "G* c #09070A", "H* c #2A272B", "I* c #C0BEBE", "J* c #544D4F", "K* c #5B5556", "L* c #827B7E", "M* c #8D888A", "N* c #504A4C", "O* c #2B2326", "P* c #20191B", "Q* c #21191B", "R* c #211A1C", "S* c #211B1D", "T* c #251F20", "U* c #352F31", "V* c #666164", "W* c #A8A5A8", "X* c #BCB8BB", "Y* c #C5C3C6", "Z* c #C1BFC2", "`* c #BBB9BC", " = c #9A9699", ".= c #454044", "+= c #2D2A2D", "@= c #302B2F", "#= c #1D191C", "$= c #2E2A2E", "%= c #110F11", "&= c #0F0C10", "*= c #1E1C1F", "== c #1D1A1D", "-= c #0B090B", ";= c #BDBCBD", ">= c #524B4D", ",= c #4B4446", "'= c #514B4C", ")= c #453E3F", "!= c #3D3537", "~= c #40393B", "{= c #231B1D", "]= c #282022", "^= c #231D1E", "/= c #413C3E", "(= c #ACA8AB", "_= c #A7A5A8", ":= c #343034", "<= c #110D10", "[= c #1C191C", "}= c #2C292D", "|= c #100E10", "1= c #0B080B", "2= c #0D0A0E", "3= c #AEADAE", "4= c #BAB7B7", "5= c #453D3F", "6= c #41393B", "7= c #362E31", "8= c #362E30", "9= c #403A3C", "0= c #241E1F", "a= c #262021", "b= c #262022", "c= c #292224", "d= c #201A1D", "e= c #251F21", "f= c #4B474A", "g= c #302C2F", "h= c #312B2F", "i= c #454144", "j= c #474246", "k= c #282327", "l= c #171216", "m= c #130F13", "n= c #353236", "o= c #3C393C", "p= c #0C0A0C", "q= c #0F0D10", "r= c #C1BEBF", "s= c #443C3F", "t= c #2D2527", "u= c #2A2325", "v= c #393335", "w= c #575053", "x= c #201A1B", "y= c #2A2426", "z= c #2C2528", "A= c #3F393C", "B= c #5B5659", "C= c #7F797D", "D= c #312C2E", "E= c #262023", "F= c #2D282B", "G= c #191317", "H= c #181417", "I= c #7A787B", "J= c #545254", "K= c #181519", "L= c #0B0A0C", "M= c #090609", "N= c #0C0B0D", "O= c #19181A", "P= c #C5C3C4", "Q= c #645D60", "R= c #272023", "S= c #1F181B", "T= c #302A2C", "U= c #4B4548", "V= c #726D70", "W= c #AAA7AA", "X= c #9A969A", "Y= c #514D50", "Z= c #484246", "`= c #2E292C", " - c #2B2629", ".- c #201D1F", "+- c #1B161A", "@- c #555255", "#- c #A4A2A5", "$- c #B0AEB1", "%- c #585559", "&- c #131113", "*- c #09060A", "=- c #070608", "-- c #191719", ";- c #C7C5C6", ">- c #575052", ",- c #1F181A", "'- c #2F292B", ")- c #6E6A6D", "!- c #7A7678", "~- c #736E72", "{- c #858184", "]- c #B5B3B6", "^- c #7D787C", "/- c #686467", "(- c #747073", "_- c #3E3A3D", ":- c #302D2F", "<- c #5C5A5D", "[- c #9F9DA0", "}- c #A9A6A9", "|- c #3A373A", "1- c #484649", "2- c #373032", "3- c #2E2629", "4- c #736F71", "5- c #99927C", "6- c #726838", "7- c #857E68", "8- c #998B43", "9- c #C3B76E", "0- c #B5B2B6", "a- c #ABA8AC", "b- c #BFB36A", "c- c #92863E", "d- c #514B35", "e- c #666366", "f- c #A8A5A9", "g- c #B1AFB2", "h- c #CBCACB", "i- c #B1B1B1", "j- c #B1B0B1", "k- c #B8B7B9", "l- c #B9B8B9", "m- c #141215", "n- c #080609", "o- c #161417", "p- c #BCBBBC", "q- c #BFBDBE", "r- c #C9C7C8", "s- c #8E898D", "t- c #D3BE29", "u- c #797579", "v- c #D8C22D", "w- c #939194", "x- c #A8A6A9", "y- c #AFA35B", "z- c #675B12", "A- c #5B585C", "B- c #A3A1A4", "C- c #B7B6B8", "D- c #C0BFC0", "E- c #AFAEAF", "F- c #E6E4E6", "G- c #D9D7D8", "H- c #CDC8B1", "I- c #D0C998", "J- c #D2D1D2", "K- c #E2CD38", "L- c #928F92", "M- c #848184", "N- c #939093", "O- c #988C43", "P- c #7B6F26", "Q- c #828083", "R- c #B8B6B9", "S- c #F5E14C", "T- c #A5A3A6", "U- c #747174", "V- c #CDBB41", "W- c #C5B970", "X- c #B8A948", "Y- c #AEA35A", "Z- c #E4E0C8", "`- c #E5E4E5", " ; c #E8D75B", ".; c #F5DE2F", "+; c #ABA9AC", "@; c #C6B755", "#; c #E9DF94", "$; c #E3E2E3", "%; c #D9D9DA", "&; c #E2D78D", ". . . + @ # . . + . . . . + @ @ @ # . . . # @ + . . # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", "# $ $ @ @ @ . % @ % $ . @ % & . @ @ % $ % @ @ @ & + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", "@ * $ + @ @ . @ @ . $ . @ @ = $ # @ . $ . @ @ . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", "@ # $ - @ @ . @ @ . $ . @ @ % $ * @ . $ . # . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", "@ @ = $ @ . @ @ @ . $ . @ @ . $ ; > , $ ' $ ) ! ~ ~ { ] ^ / ( _ : < @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", "@ @ . $ % . @ @ @ . $ . @ @ [ $ } | 1 $ 2 3 $ 4 5 6 7 8 7 9 ( 0 a b c d @ @ @ @ @ @ @ @ @ @ @ @ ", "@ @ @ & & # @ @ @ . $ . e f g $ h i j $ k l m n o p q r s t u v w x y z A @ @ @ @ @ @ @ @ @ @ @ ", "@ @ @ * = @ @ @ @ . $ B C D $ E F r G $ H I J $ K L M N O P Q R S T U V W X @ @ @ @ @ @ @ @ @ @ ", "@ @ @ # + @ @ @ # * Y Z ` ...+.@.#.$.%.&.*.=.-.%.;.>.,.'.).t !.~.{.].^./.(._.@ @ @ @ @ @ @ @ @ ", "@ @ @ @ @ @ @ @ @ @ :.<.[.,.}.@.|.1.2.3.4.5.6.7.8.9.0.t a.b.c.d.e.f.g.h.i.j.k.l.m.@ @ @ @ @ @ @ ", "@ @ @ @ @ @ @ @ @ n.o.p.q.r.s.t.7.t.u.v.w.7.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.@ @ @ @ @ @ ", "@ @ @ @ @ @ @ @ R.|.S.T.U.V.W.X.Y.Z.`. +.+++@+#+/ ++$+%+&+*+=+-+;+K.>+,+'+)+!+~+{+]+^+@ @ @ @ @ ", "@ @ @ @ @ @ @ f p.:./+(+_+}.:+<+r [+> }+|+1+2+3+}+4+5+6+6+7+8+J.9+0+b.a+b+c+d+e+f+g+h+@ @ @ @ @ ", "@ @ @ @ @ @ f i+j+:.y.k+l+m+n+o+p+q+r+|+|+,.s+t+u+v+w+x+y+7+z+A+B+C+D+E+F+G+H+I+J+K+L+M+@ @ @ @ ", "@ @ @ @ @ N+O+P+Q+R+S+T+q.7 1.o+U+[+V+|+,.W+&+X+Y+Z+`+ @N .@+@@@#@$@%@&@*@]+=@-@;@>@,@'@@ @ @ @ ", "@ @ @ @ @ )@!@<.k+p+~@{@]@f ^@3./@p+(@]@I `+_@:@<@[@&+}@|@1@2@3@4@(.5@6@T 7@8@9@0@a@b@c@d@@ @ @ ", "@ @ @ @ e@p.f@g@h@i@j@k@@.p+l@m@n@o@p@.+j@q@r@/ s@t@u@v@w@x@y@z@i.A@A@B@C@D@E@F@G@H@I@J@K@@ @ @ ", "@ @ @ @ L@M@N@v.v.O@P@k@:.Q@R@S@7 ).s.T@x.U@V@W@X@Y@Z@`@ #.#+#@###$#%#&#k.*#=#-#;#>#,#'#)#@ @ @ ", "@ @ @ @ )@!#2.|.~#M@k+p+{#]#^#/#(#_#:#<#[#}#|#1#2#3#4#5#6#7#7#8#9#0#a#a@b#c#d#e#f#g#h#i#j#k#@ @ ", "@ @ @ l#m#n#/@.+r m#| o#!#p#q#r#s#t#u#v#w#x#y#z#2#=+A#B#C#D#E#F#G#H#I#J#b#K#L#>#H@M#N#O#P#Q#@ @ ", "@ @ @ R#l+S#T#n#<.[+6./@U#V#W#i+0.X#Y#Z#`# $.$+$q@%+@$#$$$%$&$*$=$-$;$>$,$'$)$!$~${$]${$^$/$@ @ ", "@ @ @ (#X.Z.($T+j@X.3.Y._$W#:$<$[$}$5.1#|$1$2$i 3$4$5$g.6$7$8$9$0$a$b$c$d$e$f$g$h$i$j$k$l$m$@ @ ", "@ @ @ n$o$p$q$h@3.r$s$C t$u$v$w$0.x$y$$+z$A$B$y@C$D$E$F$8@G$H$1@I$J$b$K$L$d#M$N$O$P$Q$R$S$T$@ @ ", "@ @ @ U$V$p+W$X$Y$Z$Q+o+`$ %t.Y$.%+%@%#%[@$%w %%&%*%=%-%;%>%G$,%'%)%!%~%'${%]%^%/%(%_%:%<%[%@ @ ", "@ @ @ }%|%k+1%7.s#1.2%3%4%5%6%7%8%,.w+&+9%0%a%b%&%c%d%e%=+1+c%f%g%G+=#h%i%)$j%k%M$l%m%O$n%o%@ @ ", "@ @ @ P+p%!#q%{#r%3.w$s%t%u%C.v%w%( x%t@y%z%A%B%C%D%D#E%F%G%H%I%J%K%L%M%N%k%O%P%Q%R%S%T%U%V%@ @ ", "@ @ @ |%W%t.o.p.3.Z.X%Y%Z%`% &.&+&s@@&p #&$&%&&&%$*&=&-&;&>&,&'&)&!&L%J#~&{&]&^&/&(&_&:&<&[&@ @ ", "@ @ @ s#g@/+}&|&1&2&t#3&4&5&6&7&8&9&0&9 a&v }+b&c&d&e&@@f&$%g&h&i&j&k&l&m&M#n&o&o&p&q&r&s&t&@ @ ", "@ @ @ u&i+1&C v&n$_$w&Y#]#x&y&z&a A&B&C&7@D&E&L.F&G&@#H&I&-%>&J&8@j#K&j%h%L&h%M&O%M&m&{$N&O&@ @ ", "@ @ @ P&Q&R&n$i@S&v%T&U&V&W&X&u#Y&Z&`&N ~. *.*h.+*@*#*$*%*J+;$&*7+**=*-*;*/&>*S%M#,*h#'*)*@ @ @ ", "@ @ @ @ !*S#~*S.{*t+]*^*/*(*w#_*:*<*[*}**+|*E+@*1*2*3*4*5*6*7*8*9*0*^&a*b*c*d*b*e*f*k%g*h*@ @ @ ", "@ @ @ @ @ i*Z%i+j*/ k*l*m*]#n*o*5#p*e%q*r*v s*t*u*v*w*J+G#x*y*z*A*B*C*D*E*f*M&O%/&F*G*H*@ @ @ @ ", "@ @ @ @ @ @ I*J*K*L*M*7%N*O*P*Q*R*S*T*U*V*W*`&X*Y*Z*`* =.=+=@=#=$=%=&=*===O%:&m&c*(&-=;=@ @ @ @ ", "@ @ @ @ @ @ @ >=,='=Y&)=!=~={=]=^=E#7#E#/=c&s@(=0%0%_=v*:=e#<=[=}=|=&=^&b*m&1=:&f*2=3=@ @ @ @ @ ", "@ @ @ @ @ @ @ 4=5=6=7=8=b 9=0=a=b=^=c=d=e=1*@*f=g=h=i=j=k=l=m=n=o=g*^&/&j%_&p=p&q=p=@ @ @ @ @ @ ", "@ @ @ @ @ @ @ @ r=s=t=u=v=w=x=y=z=A=B=C=D=E=3*F=%#G=H=M%H=L#^%I=J=a*|=)*K=_&L=M=N=O=@ @ @ @ @ @ ", "@ @ @ @ @ @ @ @ @ P=Q=1#u=R=S=T=U=M+V=W=X=Y=Z=`= -.-+-k&~%@-#-$-%-B*F*&-/&1=*-=---j$@ @ @ @ @ @ ", "@ @ @ @ @ @ @ @ @ @ ;->-e=U*,-'-)-!-~-{-]-^-)+/-(--%_-:-<-[-Z*}-|-K=M&O%C*L=M=:&t&1-@ @ @ @ @ @ ", "@ # . . . . . # @ @ @ r=2-3-&$4-5-6-7-8-9-0-H$a-&%b-c-d-e-f-g-h-i-j-k-l-m-&=n-S%o-p-@ # . + @ @ ", "@ @ % $ . @ * $ + @ @ @ q-r-s-y@t-$ u-v-$ 8+w-x-g-y-$ z-A-B-C-@ @ @ @ @ D-E-3=3=E-@ + & $ $ * @ ", "@ @ . $ . @ @ $ - @ @ @ @ @ F-G-H-I-J-K-$ L-&*M-N-O-$ P-Q-R-@ @ @ @ @ @ @ @ @ @ @ @ % # # & $ @ ", "@ @ . $ . @ . $ % + - % # * - # * - @ S-$ T-U-V-W-X-$ Y-g-Z-% * # @ % - + * . @ @ @ @ @ @ - & @ ", "@ @ . $ * % $ * @ @ $ - @ - $ @ - $ @ - $ `- ;.;+;@;$ #;$;& % . & @ . $ * * * @ @ @ @ @ @ & . @ ", "@ @ . $ . @ + $ - @ $ - @ - $ @ - $ @ - $ @ $ - %;&;$ . . $ * * $ . . $ . @ @ @ @ @ @ @ % % @ @ ", "@ @ . $ . @ @ $ $ @ $ - @ - $ @ - $ @ - $ @ $ - @ . $ . . $ . @ @ @ . $ . @ @ @ @ @ @ + - @ # + ", "@ @ . $ . @ . $ - @ $ - # & $ @ - $ @ - $ @ * & # - $ . @ & & # + # . $ . @ @ @ @ @ # & $ $ $ # ", "@ # * - * . - . @ @ + - * % - . * - . * - + # * - . - . @ # - - # @ % - * @ @ @ @ @ * - - - - @ ", "@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/viewforms.xpm0000644000000000000000000000113407334253700015746 /* XPM */ static char *viewforms_xpm[] = { /* width height num_colors chars_per_pixel */ " 19 17 4 1", /* colors */ ". c #000000", "# c #000080", "a c #none", "b c #ffffff", /* pixels */ "aaaaaaaaaaaaaaaaaaa", "aaaaaaa...........a", "aaaaaaa.#########.a", "aaaaaaa.bbbbbbbbb.a", "aaaa...........aa.a", "aaaa.#########.aa.a", "aaaa.bbbbbbbbb.aa.a", "a...........aa.aa.a", "a.#########.aa.aa.a", "a.bbbbbbbbb.aa....a", "a.baaaaaaaa.aa.aaaa", "a.baaaaaaaa.aa.aaaa", "a.baaaaaaaa....aaaa", "a.baaaaaaaa.aaaaaaa", "a.baaaaaaaa.aaaaaaa", "a...........aaaaaaa", "aaaaaaaaaaaaaaaaaaa" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/viewunits.xpm0000644000000000000000000000112207334252133015756 /* XPM */ static char *viewunits_xpm[] = { /* width height num_colors chars_per_pixel */ " 18 18 3 1", /* colors */ ". c #000000", "# c #none", "a c #ffffff", /* pixels */ "##################", "#######.......####", "#######.aaaaa..###", "####.......aa.a.##", "####.aaaaa..a....#", "#.......aa.a.aaa.#", "#.aaaaa..a....aa.#", "#.aaaaa.a.aaa.aa.#", "#.aaaaa....aa.aa.#", "#.aaaaaaaa.aa.aa.#", "#.aaaaaaaa.aa.aa.#", "#.aaaaaaaa.aa.aa.#", "#.aaaaaaaa.aa....#", "#.aaaaaaaa.aa.####", "#.aaaaaaaa....####", "#.aaaaaaaa.#######", "#..........#######", "##################" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/vpaned.xpm0000644000000000000000000000130507451066271015207 /* XPM */ static char *vpaned_xpm[]={ "21 21 9 1", "a c None", "g c #000080", "e c #0000c0", "# c #004000", "c c #404000", "d c #800000", "b c #dcdcdc", "f c #ff0000", ". c #ffffff", "....................#", ".aaaaaaaaaaaaaaaaaab#", ".aaaaaaaaaaaaaaaaaab#", ".aaaaaaaaaaaaaaaaaab#", ".aaaaaaaaaaaaaaaaaab#", ".aaaaaaaaaaaaaaaaaab#", ".aaaaaaaaaaaaaaaaaab#", ".aaaaaaaaaaacccccaab#", ".aaaaaaaaaaacddddcbb#", ".bbbbbbbbbbbcddddcbb#", "eeeeeeeeeeeecddffceg#", "............cddffc..#", ".aaaaaaaaaaaacccccbb#", ".aaaaaaaaaaaaaaaaaab#", ".aaaaaaaaaaaaaaaaaab#", ".aaaaaaaaaaaaaaaaaab#", ".aaaaaaaaaaaaaaaaaab#", ".aaaaaaaaaaaaaaaaaab#", ".aaaaaaaaaaaaaaaaaab#", ".bbbbbbbbbbbbbbbbbbb#", "#####################"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/vseparator.xpm0000644000000000000000000000126707252426564016133 /* XPM */ static char *vseparator_xpm[] = { /* columns rows colors chars-per-pixel */ "21 21 4 1", " c #7b7b7b", ". c Gray74", "X c Gray100", "o c None", /* pixels */ "ooooooooooooooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "oooooooooo Xooooooooo", "ooooooooooooooooooooo" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/wizard_wiz.xpm0000644000000000000000000000242507334252120016115 /* XPM */ char *wizard_wiz_xpm[] = { /* width height num_colors chars_per_pixel */ " 34 28 6 1", /* colors */ ". c #000000", "# c #0000ff", "a c #808080", "b c #c0c0c0", "c c #none", "w c #ffffff", /* pixels */ "cccccccc......cccccccccccccccccccc", "cccccc..........cccccccccccccccccc", "cccccc..wwwwww..cccccccccccccccccc", "c.....wwwwwwwwww................cc", "c.##..wwwwwwwwww..#######.b.b.b.ac", "c....wwwwwwwwwwww...............ac", "c.w..wwwwwwwwwwww..wwwwwwwwwwww.ac", "c.w..wwwwwwwwwwww..wwwwwwwwwwwa.ac", "c.w..wwwwaaaawwww..wwwwwwwwwwwa.ac", "c.w..wwwawwwwawww............wa.ac", "c.w..wwwwawwawwww..wwwwwwwwwwwa.ac", "c.ww..wwwawwawww..wwwwwwwwwwwwa.ac", "c.w...wwwawwawww.............wa.ac", "c.www..wwawwaww..wwwwwwwwwwwwwa.ac", "c.www..wwawwaww..wwwwwwwwwwwwwa.ac", "c.w.....wawwaw...............wa.ac", "c.wwww..wawwaw..wwwwwwwwwwwwwwa.ac", "c.wwww..wawwaw..wwwwwwwwwwwwwwa.ac", "c.w.....wawwaw...............wa.ac", "c.wwwww..bbba..wwwwwwwwwwwwwwwa.ac", "c.wwwww..bbba..wwwwwwwwwwwwwwwa.ac", "c.w......bbba................wa.ac", "c.wwwww..bbba..wwwwwwwwwwwwwwwa.ac", "c.wwwwww..bb..wwwwwwwwwwwwwwwwa.ac", "c.waaaaa......aaaaaaaaaaaaaaaaa.ac", "c...............................ac", "ccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac", "cccccccccccccccccccccccccccccccccc" }; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/wizard_wizh.xpm0000644000000000000000000000240407252426565016301 /* XPM */ char *wizard_wizh_xpm[] = { /* width height num_colors chars_per_pixel */ " 34 28 5 1", /* colors */ ". c green", "# c #0000ff", "a c #808080", "b c #c0c0c0", "c c #none", /* pixels */ "cccccccc......cccccccccccccccccccc", "cccccc..........cccccccccccccccccc", "cccccc..cccccc..cccccccccccccccccc", "c.....cccccccccc................cc", "c.##..cccccccccc..#######.b.b.b.ac", "c....cccccccccccc...............ac", "c.c..cccccccccccc..cccccccccccc.ac", "c.c..cccccccccccc..ccccccccccca.ac", "c.c..ccccaaaacccc..ccccccccccca.ac", "c.c..cccaccccaccc............ca.ac", "c.c..ccccaccacccc..ccccccccccca.ac", "c.cc..cccaccaccc..cccccccccccca.ac", "c.c...cccaccaccc.............ca.ac", "c.ccc..ccaccacc..ccccccccccccca.ac", "c.ccc..ccaccacc..ccccccccccccca.ac", "c.c.....caccac...............ca.ac", "c.cccc..caccac..cccccccccccccca.ac", "c.cccc..caccac..cccccccccccccca.ac", "c.c.....caccac...............ca.ac", "c.ccccc..bbba..ccccccccccccccca.ac", "c.ccccc..bbba..ccccccccccccccca.ac", "c.c......bbba................ca.ac", "c.ccccc..bbba..ccccccccccccccca.ac", "c.cccccc..bb..cccccccccccccccca.ac", "c.caaaaa......aaaaaaaaaaaaaaaaa.ac", "c...............................ac", "ccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac", "cccccccccccccccccccccccccccccccccc" };vdkbuilder2-2.4.0/vdkbuilder/pixmaps/class.xpm0000644000000000000000000000175207374501533015044 /* XPM */ static char * class_xpm[] = { "10 10 54 1", " c None", ". c #3A535A", "+ c #26363A", "@ c #40717E", "# c #8FDEF4", "$ c #48B7D5", "% c #105C7F", "& c #031C28", "* c #12A8F2", "= c #22CBFB", "- c #1998EE", "; c #001282", "> c #486060", ", c #405555", "' c #001527", ") c #0080E8", "! c #0473E5", "~ c #0220B2", "{ c #2D7E8C", "] c #8AF7F7", "^ c #48EFEF", "/ c #009898", "( c #003057", "_ c #002B75", ": c #000A4E", "< c #00D8D8", "[ c #00F5F5", "} c #00D7D7", "| c #006666", "1 c #71A0AD", "2 c #7EC2D5", "3 c #0E4E5F", "4 c #009393", "5 c #00B8B8", "6 c #008080", "7 c #004949", "8 c #177D9E", "9 c #42D1FB", "0 c #3BCFFB", "a c #1173E5", "b c #001313", "c c #008787", "d c #004D4D", "e c #0060AE", "f c #0994ED", "g c #0D66E2", "h c #001CD0", "i c #000000", "j c #004D8B", "k c #0070CB", "l c #0027C6", "m c #000C59", "n c #00233F", "o c #000F47", " .+ ", " @#$% ", " &*=-;>, ", " ')!~{]^/ ", " (_:<[}| ", " 1234567 ", " 890abcd ", " efghi ", " jklm ", " no "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/private.xpm0000644000000000000000000000065607374514442015416 /* XPM */ static char *private_xpm[]={ "16 16 4 1", ". c None", "# c #000000", "b c #800000", "a c #ff0000", "................", "................", "................", "..........##....", ".........#aa##..", "........#aaaaa#.", ".......#aaaaab#.", "....##.#bbaabb#.", "...#aa##bbbbbb#.", "..#aaaaa#bbbb#..", ".#aaaaab##bb#...", ".#bbaabb#.##....", ".#bbbbbb#.......", ".#bbbbb#........", "..##bb#.........", "....##.........."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/public.xpm0000644000000000000000000000065507374514442015221 /* XPM */ static char *public_xpm[]={ "16 16 4 1", ". c None", "# c #000000", "b c #008000", "a c #00ff00", "................", "................", "................", "..........##....", ".........#aa##..", "........#aaaaa#.", ".......#aaaaab#.", "....##.#bbaabb#.", "...#aa##bbbbbb#.", "..#aaaaa#bbbb#..", ".#aaaaab##bb#...", ".#bbaabb#.##....", ".#bbbbbb#.......", ".#bbbbb#........", "..##bb#.........", "....##.........."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/protected.xpm0000644000000000000000000000066007374514442015730 /* XPM */ static char *protected_xpm[]={ "16 16 4 1", ". c None", "# c #000000", "b c #808000", "a c #ffff00", "................", "................", "................", "..........##....", ".........#aa##..", "........#aaaaa#.", ".......#aaaaab#.", "....##.#bbaabb#.", "...#aa##bbbbbb#.", "..#aaaaa#bbbb#..", ".#aaaaab##bb#...", ".#bbaabb#.##....", ".#bbbbbb#.......", ".#bbbbb#........", "..##bb#.........", "....##.........."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/addfunc.xpm0000644000000000000000000000136307374275665015357 /* XPM */ static char * addfunc_xpm[] = { "23 21 9 1", " c None", ". c #808080", "+ c #000000", "@ c #000080", "# c #FCFC80", "$ c #FFFFFF", "% c #E0BC38", "& c #F0DC5C", "* c #FFFF00", ".......................", "..........++......@@...", ".........+##++....@@...", "........+#####+.@@@@@@.", "....$$$+#####%+.@@@@@@.", "....++$+&&##%%+...@@...", "...+##++&&&%%%+...@@...", "..+#####+&&%%++........", ".+#####%++&%+$+........", ".+&&##%%+$++$$+........", ".+&&&%%%+....$+........", ".+&&&%%+$$$$$$+........", ".+++&%+$$$+++++++......", ".+$.++++++.*.*.*.+.....", ".+*.+.*.*.*.*.*.*+.....", ".+$.+*.*.*.*.*.*+......", ".+*+*.*.*.*.*.*.+......", ".+$+.*.*.*.*.*.+.......", ".++.*.*.*.*.*.*+.......", "..+++++++++++++........", "......................."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/help.xpm0000644000000000000000000000442407452566232014672 /* XPM */ static char * help_xpm[] = { "16 16 106 2", " c None", ". c #000000", "+ c #0C0C0C", "@ c #272522", "# c #767371", "$ c #D8D5D1", "% c #F2F1ED", "& c #F2F1EB", "* c #E7E4DE", "= c #BAB7B5", "- c #646361", "; c #0B0A0A", "> c #E8A291", ", c #F0D2C7", "' c #E8E5E1", ") c #E4E3DF", "! c #ECEBE7", "~ c #EDEAE6", "{ c #E38C74", "] c #A83419", "^ c #E8B1A5", "/ c #F0AA97", "( c #D67D69", "_ c #C9BBB4", ": c #B4B3AD", "< c #C0BEB7", "[ c #E1E0DA", "} c #E8C9BF", "| c #E4512F", "1 c #DF4926", "2 c #6F2312", "3 c #010000", "4 c #1D1D1C", "5 c #51504E", "6 c #F1A998", "7 c #D76348", "8 c #943019", "9 c #645551", "0 c #1F1E1E", "a c #903F2D", "b c #EA7B61", "c c #E86141", "d c #CC4B2D", "e c #644E47", "f c #2E2C2B", "g c #E6E2E1", "h c #DEA191", "i c #BA4429", "j c #3B3938", "k c #C4624B", "l c #ED917C", "m c #E1B3A6", "n c #65615C", "o c #D0CFCB", "p c #A68E85", "q c #F4E9E3", "r c #E2DFDB", "s c #86837D", "t c #F3F0EA", "u c #D4D1CF", "v c #B1AEA8", "w c #F3F2EE", "x c #D8D7D3", "y c #75736E", "z c #E7E2DE", "A c #DDDBD8", "B c #CBCAC6", "C c #F0EDEB", "D c #CAC7C5", "E c #EAE6E3", "F c #E3BAAE", "G c #9B5B4C", "H c #D39382", "I c #D9B9B0", "J c #B6B3AF", "K c #3C3C3B", "L c #E38166", "M c #E97454", "N c #EE977F", "O c #C87561", "P c #D69383", "Q c #D36E56", "R c #CC4829", "S c #935D4E", "T c #454242", "U c #A8351B", "V c #DF5130", "W c #E96C4A", "X c #EEA895", "Y c #F2EEEB", "Z c #F5F2EE", "` c #F4E3DD", " . c #D06B53", ".. c #D44929", "+. c #912D16", "@. c #CA5535", "#. c #DCBCB1", "$. c #DDDCD6", "%. c #D4D3CF", "&. c #C8C7C3", "*. c #AD7868", "=. c #080605", "-. c #84817D", ";. c #7E7C75", ">. c #7E7D77", ",. c #595552", " . . . . . . . . + . . ", ". @ . # $ % & * = - ; . ", ". . > , ' ) ' ! ~ { ] . . ", " . ^ / ( _ : < [ } | 1 2 3 ", "4 5 6 7 8 9 0 . 5 a b c d e f ", ". g h i j . . k l m n . ", ". % o p j j q r s . ", ". t u v . . w x y . ", ". z A B j j C D y . ", ". = E F G . . H I J K . ", "; 5 L M N O . . . P Q R S T + ", " . U V W X Y Z ` ...+.+.. . ", ". . 2 @.#.$.%.&.*.+.+.. . . ", ". =.. 5 -.;.>.# ,.. . . . ", " . . . . . . . . . ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/options.xpm0000644000000000000000000000205007452567222015426 /* XPM */ static char * options_xpm[] = { "16 16 46 1", " c None", ". c #000000", "+ c #CAC8C1", "@ c #B1B1B1", "# c #EBEBE8", "$ c #D8D8D8", "% c #F9F8F8", "& c #313131", "* c #D2D0CC", "= c #F7F7F7", "- c #DEDBD6", "; c #303030", "> c #D3D2CF", ", c #E3E2E1", "' c #DFDEDC", ") c #DBDAD7", "! c #A4A19C", "~ c #1D1D1D", "{ c #292929", "] c #D2D1D0", "^ c #50504F", "/ c #494746", "( c #363636", "_ c #C8C7C6", ": c #6C6967", "< c #708295", "[ c #CFD6DD", "} c #7C91A7", "| c #D6D5D5", "1 c #8A8784", "2 c #7D8C9C", "3 c #788DA4", "4 c #7F99B3", "5 c #1F272F", "6 c #ECEBEA", "7 c #72706D", "8 c #8D99A5", "9 c #748AA2", "0 c #849EB9", "a c #4D5F73", "b c #D5D4D3", "c c #6B6A69", "d c #7D91A7", "e c #849EBA", "f c #525252", "g c #66798F", " ", " . . ", " .+. .@. ", " .#. .$. ", " . .%. &.. ", ".*..=-. .; ", " .>,')!.~{ ", " ....]^.~ ", " ../. ", " ...(._:. ", " .<[}. .|1. ", " .2[345 .67. ", ".8[90a. .bc. ", ".[dea. .]f ", ".dga. .. ", " ... "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/convert.xpm0000644000000000000000000000114607452603141015407 /* XPM */ static char * convert_xpm[] = { "16 16 16 1", " c None", ". c #000000", "+ c #9DB8D2", "@ c #2E3B46", "# c #4B6983", "$ c #7D98B6", "% c #323B4A", "& c #7590AE", "* c #7D98B4", "= c #202A34", "- c #EBB4A6", "; c #E47B63", "> c #DF421E", ", c #E77C64", "' c #E37B63", ") c #AA3116", " . ", " .+. ", " @+#. ... ", " .$+##. . ", " %&+###. . ", ".*&+####. ... ", "=&&+###. . ", " .&+##. ", " .+#. ", " .. ... ", " .-;>. ", " .,'>. ", " .>>). ", " ... ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/project16.xpm0000644000000000000000000000166207452603441015552 /* XPM */ static char * project16_xpm[] = { "16 16 38 1", " c None", ". c #000000", "+ c #DDDCDA", "@ c #EEEEEE", "# c #B2B2B0", "$ c #484641", "% c #9F9D96", "& c #888781", "* c #9D9C98", "= c #91908A", "- c #908E86", "; c #97958E", "> c #807D74", ", c #595854", "' c #605E57", ") c #898883", "! c #76746B", "~ c #43423F", "{ c #282724", "] c #363430", "^ c #6D6B63", "/ c #EEEEED", "( c #B6B5AF", "_ c #21201E", ": c #0A0908", "< c #181816", "[ c #E6E6E4", "} c #65635C", "| c #161614", "1 c #8C8B89", "2 c #DFDEDC", "3 c #B0AFA9", "4 c #D5D4D1", "5 c #93918B", "6 c #ABA9A3", "7 c #5D5C55", "8 c #494943", "9 c #42413C", " ", " ... ", " .. .+. .. ", " .@#.$%$.&.. ", " .*=%%%-;>$. ", " .%%,')>!. ", " ..$%'~{]%^$.. ", " ./(%,_:<[>}'. ", " ..$%)]|12}$.. ", " .3>([45}. ", " .(6%>>!!7$. ", " ..,.$!$.8.. ", " .. .9. .. ", " ... ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/debug.xpm0000644000000000000000000000640507452604350015023 /* XPM */ static char * debug_xpm[] = { "16 16 169 2", " c None", ". c #43483B", "+ c #835640", "@ c #50473B", "# c #575547", "$ c #4D4843", "% c #3C3930", "& c #2B2B29", "* c #737865", "= c #874227", "- c #A74720", "; c #B2401C", "> c #7E3C20", ", c #393929", "' c #202219", ") c #1C1B17", "! c #1B1E19", "~ c #434840", "{ c #433D3A", "] c #7C4426", "^ c #B4773C", "/ c #BB702C", "( c #B94C1E", "_ c #89371C", ": c #574B2E", "< c #625944", "[ c #24251E", "} c #20201B", "| c #494B3E", "1 c #9E9B8E", "2 c #575E47", "3 c #773E27", "4 c #BB8542", "5 c #C9B275", "6 c #B96C2E", "7 c #A54B22", "8 c #AC4B1E", "9 c #893E1E", "0 c #9B3C1E", "a c #793C22", "b c #543B24", "c c #32322B", "d c #4C4C42", "e c #5C483C", "f c #59301E", "g c #B75929", "h c #B75B24", "i c #AB4B1E", "j c #B74C1E", "k c #AE421C", "l c #A03E1B", "m c #74301C", "n c #592E19", "o c #67321B", "p c #4E321C", "q c #545640", "r c #1B1C19", "s c #22201C", "t c #944022", "u c #A44220", "v c #B94720", "w c #B74724", "x c #A4451E", "y c #85391E", "z c #5C321C", "A c #492C1B", "B c #4C2E1B", "C c #823E20", "D c #767256", "E c #3B352B", "F c #241C1E", "G c #44251B", "H c #90391E", "I c #B0451E", "J c #B74222", "K c #AC4520", "L c #77341C", "M c #5E2E19", "N c #542B1C", "O c #472C19", "P c #4B2C1C", "Q c #7E3B1C", "R c #7E7969", "S c #503020", "T c #623524", "U c #A43922", "V c #9C3E24", "W c #B43C22", "X c #AE391E", "Y c #74321E", "Z c #151712", "` c #171415", " . c #292215", ".. c #3B241E", "+. c #442E1E", "@. c #62321B", "#. c #777765", "$. c #6D3825", "%. c #803B1E", "&. c #A23920", "*. c #A43C22", "=. c #AC3C20", "-. c #A7391E", ";. c #471E14", ">. c #171412", ",. c #171712", "'. c #1E1915", "). c #39241B", "!. c #572E1C", "~. c #572E19", "{. c #8B8570", "]. c #523B2B", "^. c #743B22", "/. c #92391E", "(. c #9C3E20", "_. c #A03E22", ":. c #9B3C20", "<. c #622E1C", "[. c #141912", "}. c #151515", "|. c #242017", "1. c #3E2C1E", "2. c #6C3C20", "3. c #372C1E", "4. c #929085", "5. c #555840", "6. c #856B5B", "7. c #6E341E", "8. c #70341E", "9. c #993720", "0. c #8B371E", "a. c #77321C", "b. c #65321B", "c. c #322017", "d. c #2C2717", "e. c #39271C", "f. c #59391C", "g. c #7C593C", "h. c #424234", "i. c #734328", "j. c #703520", "k. c #7C3922", "l. c #62321C", "m. c #5E321E", "n. c #52321E", "o. c #472C20", "p. c #49301C", "q. c #603920", "r. c #72472E", "s. c #6B6759", "t. c #747868", "u. c #6A5440", "v. c #793522", "w. c #753420", "x. c #693722", "y. c #743520", "z. c #893E20", "A. c #62543C", "B. c #858475", "C. c #8A8E7E", "D. c #936548", "E. c #80482B", "F. c #7B4B2B", "G. c #77593E", "H. c #2B2B22", "I. c #888C7C", "J. c #949486", "K. c #504E39", "L. c #A3A39D", " . ", " + @ # $ % & * ", " = - ; > , ' ) ! ~ ", " { ] ^ / ( _ : < [ } | 1 2 ", " 3 4 5 6 7 8 9 0 a b c d ", " e f g h i j k l m n o p q ", " r s t u v w x y z A B C D ", " E F G H I J K L M N O P Q R ", " S T U V W X Y Z ` ...+.@.#. ", " $.%.&.*.=.-.;.>.,.'.).!.~.{. ", " ].^./.(._.:.<.[.}.|.1.2.3.4. ", "5.6.7.8.9.0.a.b.c.d.e.f.g.h. ", " i.j.k.l.m.n.o.p.q.r.s.t. ", " u.v.w.j.x.y.z.A.B.C. ", " D.E.F.G.H.I.J. ", " K. L. "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/edit.xpm0000644000000000000000000001022407452607160014656 /* XPM */ static char * edit_xpm[] = { "24 24 184 2", " c None", ". c #000000", "+ c #D3D3D3", "@ c #F6F6F6", "# c #FFFFFF", "$ c #F9F9F9", "% c #DADADA", "& c #585858", "* c #C7C7C7", "= c #D1D1D1", "- c #D6D6D6", "; c #FEFEFE", "> c #FDFDFD", ", c #C0C0C0", "' c #E1E1E1", ") c #F0F0F0", "! c #9B9B9B", "~ c #FBE73B", "{ c #F2B64D", "] c #FCFCFB", "^ c #FBFBFB", "/ c #AFAFAE", "( c #E9E9E9", "_ c #DEDEDE", ": c #FCEB3D", "< c #F7B544", "[ c #60532D", "} c #686868", "| c #6A6A6A", "1 c #9C9C9C", "2 c #C2C2C1", "3 c #7C7C7C", "4 c #505050", "5 c #808080", "6 c #FAFAF9", "7 c #F9F9F8", "8 c #A4A4A3", "9 c #FCE93B", "0 c #F7B545", "a c #6C5F34", "b c #F8F8F7", "c c #F8F7F6", "d c #9E9E9E", "e c #FAE43A", "f c #F4B244", "g c #504627", "h c #F7F6F5", "i c #F6F6F4", "j c #F3F2F1", "k c #F9DF39", "l c #F3AF42", "m c #5D5132", "n c #44423D", "o c #7F7F7F", "p c #747474", "q c #929291", "r c #797878", "s c #989897", "t c #F5F4F3", "u c #F9DC38", "v c #EFB44D", "w c #665A32", "x c #787876", "y c #67645D", "z c #F4F3F2", "A c #F3F3F1", "B c #F2F2F0", "C c #F8D837", "D c #F0A93F", "E c #655930", "F c #939291", "G c #979695", "H c #7D7971", "I c #F6F5F4", "J c #F5F5F3", "K c #F1F1EF", "L c #F6D236", "M c #EDA43E", "N c #5C5230", "O c #9C9B9A", "P c #AFAEAC", "Q c #B9B8B5", "R c #878279", "S c #868585", "T c #717170", "U c #707070", "V c #9F9F9E", "W c #CFCFCD", "X c #EFEEEC", "Y c #E9E8E6", "Z c #D7AE74", "` c #61562F", " . c #9C9B99", ".. c #AEADAB", "+. c #C6C5C3", "@. c #D8D6D3", "#. c #959086", "$. c #F0F0EE", "%. c #EFEFED", "&. c #F1F0EE", "*. c #EDECEA", "=. c #4F4115", "-. c #9E9D9C", ";. c #C8C7C4", ">. c #D9D8D5", ",. c #DFDDDA", "'. c #A49E93", "). c #EEEDEB", "!. c #ECEBE9", "~. c #E4E3E1", "{. c #9D9C9B", "]. c #9F9E9C", "^. c #B0AFAD", "/. c #C7C6C3", "(. c #D9D7D4", "_. c #DFDEDA", ":. c #E0DFDB", "<. c #A19C90", "[. c #EDEDEB", "}. c #797978", "|. c #747473", "1. c #6F6E6D", "2. c #898988", "3. c #434342", "4. c #7C7C7A", "5. c #A6A5A3", "6. c #A9A8A6", "7. c #B3B2B0", "8. c #CAC9C6", "9. c #DAD9D5", "0. c #DDDCD8", "a. c #DEDDD9", "b. c #A19B90", "c. c #EBEAE8", "d. c #E8E7E5", "e. c #E8E7E4", "f. c #E6E5E2", "g. c #D7D6D3", "h. c #BFBEBB", "i. c #B7B7B4", "j. c #C7C5C2", "k. c #D1D0CC", "l. c #DBDAD7", "m. c #DCDBD7", "n. c #E7E6E3", "o. c #E5E4E1", "p. c #E5E3E0", "q. c #D6D4D2", "r. c #D4D3D0", "s. c #DBD9D5", "t. c #D9D7D3", "u. c #9F998D", "v. c #E4E3E0", "w. c #E3E2DF", "x. c #E3E2DE", "y. c #E4E2DF", "z. c #E4E3DF", "A. c #E2E1DD", "B. c #E1E0DC", "C. c #DDDBD7", "D. c #DCDAD6", "E. c #D8D6D2", "F. c #9E988D", "G. c #EDEDED", "H. c #E1E0DD", "I. c #E1DFDC", "J. c #E0DEDA", "K. c #D8D6D1", "L. c #D7D5D1", "M. c #9D978B", "N. c #E1DFDB", "O. c #DEDCD8", "P. c #D7D6D1", "Q. c #D5D3CE", "R. c #9B958A", "S. c #999891", "T. c #A39E92", "U. c #A39D92", "V. c #A39D91", "W. c #A29C90", "X. c #A19B8F", "Y. c #9D978C", "Z. c #9B968A", "`. c #676359", " ", " . . . . . . . . . . . . . ", " . + @ # # # # # # # # $ % & . ", " . @ # # # # # # # # # # * = - . . . ", " . # # # # # # # ; # ; > , ' ) ! . . ~ { . ", " . # # # # # ; > ] > ] ^ / ( # _ . : < [ . ", " . # # } | 1 2 3 4 5 6 7 8 ) ; . 9 0 a . ", " . # ; > ] ^ 6 7 b 7 b c d . . e f g . . ", " . # ] ^ 6 7 b c h c h i j . k l m . n . ", " . # 6 o p q 8 i r s t j . u v w . x y . ", " . # b c h i t z A z B . C D E . F G H . ", " . # I J z z A B K K . L M N . O P Q R . ", " . # z S T U V W X Y . Z ` . ...+.@.#.. ", " . # z j B $.%.&.*.. =.. . -.P ;.>.,.'.. ", " . # $.%.%.X ).!.~.. . {.].^./.(._.:.<.. ", " . # [.}.|.1.1.2.3.4.5.6.7.8.9.0.a.0.b.. ", " . # c.Y Y d.e.f.g.h.i.j.k.l._.a.0.m.b.. ", " . # n.f.f.f.o.p.a.q.r.l._._.a.m.s.t.u.. ", " . $ v.w.x.y.z.A.A.:.B.:.B.a.C.D.t.E.F.. ", " . G.H.I.B.:.A.:.B.:.B._.J.C.D.t.K.L.M.. ", " . = N.J._.a.:.a.J.a.J.O.O.D.D.E.P.Q.R.. ", " . S.T.'.U.V.U.<.W.<.W.X.b.u.u.Y.Y.Z.`.. ", " . . . . . . . . . . . . . . . . . . ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/copy.xpm0000644000000000000000000000536307452611405014710 /* XPM */ static char * copy_xpm[] = { "24 24 94 2", " c None", ". c #000000", "+ c #B9B9B9", "@ c #FEFEFE", "# c #F9F9F9", "$ c #757575", "% c #F5F5E8", "& c #565651", "* c #FFFFFF", "= c #A0A0A0", "- c #939393", "; c #7C7C7C", "> c #CFC6A0", ", c #D7CEAA", "' c #4B483C", ") c #6D6D6D", "! c #6C6C6C", "~ c #A9A9A9", "{ c #3D3A30", "] c #979178", "^ c #8A793D", "/ c #C3BB9A", "( c #444236", "_ c #FAFAFA", ": c #EFEFEF", "< c #C7C7C7", "[ c #D8D8D8", "} c #D2D2D2", "| c #7B7B7B", "1 c #302E26", "2 c #89846C", "3 c #C4BC9A", "4 c #847235", "5 c #545042", "6 c #171612", "7 c #C5C5C5", "8 c #A7A7A7", "9 c #ADADAD", "0 c #9A9A9A", "a c #9B9B9B", "b c #868686", "c c #424242", "d c #12110E", "e c #21201A", "f c #847033", "g c #434034", "h c #B3B3B3", "i c #B4B4B4", "j c #5C5C5C", "k c #464646", "l c #3B3B3B", "m c #3F3F3F", "n c #D6D6D6", "o c #181713", "p c #826F33", "q c #434035", "r c #151410", "s c #13120F", "t c #8F8F8F", "u c #989898", "v c #C6C6C6", "w c #010101", "x c #806F33", "y c #7F6C32", "z c #39362D", "A c #636363", "B c #767676", "C c #7F6E32", "D c #413F34", "E c #141310", "F c #4C4C48", "G c #505050", "H c #343434", "I c #1F1F1F", "J c #2C2C2C", "K c #3D3D3D", "L c #161616", "M c #7D692E", "N c #191919", "O c #1C1B16", "P c #25241E", "Q c #282620", "R c #7F6B2E", "S c #010100", "T c #A19A7F", "U c #A39D81", "V c #806C2F", "W c #0F0E0B", "X c #A9A186", "Y c #0C0A04", "Z c #89783C", "` c #7A672D", " . c #766529", ".. c #78672B", " . . . . ", " . . . . . . + @ # $ . . . . . . ", " . % % % % % & * = - ; & % % % % > . ", " . % , , , , ' * ) ! ~ { ] , , , ^ . ", " . % / / / ( _ : < [ } | 1 2 / 3 4 . ", " . % , 5 6 7 8 8 9 0 a b c d e , f . ", " . % g h i j k l l l l l m i n o p . ", " . % q * * i i i i i i i i * * r p . ", " . % s * 8 t t u * v t * t v * w x . ", " . % r * * * * * * * * * * * * w y . ", " . % z * ) A * B t v * v t * * d C . ", " . % D * * * * * * * * * * * * E p . ", " . . . . F d G H I J K L t v * u t * d x . ", ". h * * * * * * * * * * n I * * * * * r M . ", ". * * * * * * * * * * * * N * * * * n O M . ", ". * 8 t t u * v t * t v * . P P P P Q , R . ", ". * * * * * * * * * * * * S T T T T T U V . ", ". * ) A * B t v * v t * * r , , , , , , y . ", ". * * * * * * * * * * * * W T T T T T X y . ", ". * 8 t t * t t v * u t * r , , , , , , V . ", ". * * * * * * * * * * * * Y V Z p p ` .... ", ". n * * * * * * * * * * n . . . . . . . . ", " . . . . . . . . . . . . ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/cut.xpm0000644000000000000000000000672307452611474014540 /* XPM */ static char * cut_xpm[] = { "24 24 140 2", " c None", ". c #000000", "+ c #B9B9B9", "@ c #FEFEFE", "# c #F9F9F9", "$ c #757575", "% c #F5F5E8", "& c #DCDCD0", "* c #565651", "= c #FFFFFF", "- c #A0A0A0", "; c #939393", "> c #7C7C7C", ", c #B1B1A8", "' c #CFC6A0", ") c #D7CEAA", "! c #C1B898", "~ c #3C3A30", "{ c #6D6D6D", "] c #6C6C6C", "^ c #A9A9A9", "/ c #3D3A30", "( c #87826B", "_ c #8A793D", ": c #C3BB9A", "< c #AFA78A", "[ c #444236", "} c #FAFAFA", "| c #EFEFEF", "1 c #C7C7C7", "2 c #D8D8D8", "3 c #D2D2D2", "4 c #7B7B7B", "5 c #302E26", "6 c #89846C", "7 c #C4BC9A", "8 c #847235", "9 c #4B483C", "0 c #C5C5C5", "a c #A7A7A7", "b c #ADADAD", "c c #9A9A9A", "d c #9B9B9B", "e c #868686", "f c #424242", "g c #847033", "h c #C9C09E", "i c #7B7660", "j c #464337", "k c #35332A", "l c #2D2B23", "m c #C6BE9D", "n c #826F33", "o c #ADA689", "p c #979178", "q c #181816", "r c #13120F", "s c #312F26", "t c #2A2921", "u c #2E2C24", "v c #1E1D18", "w c #8D876F", "x c #806F33", "y c #B3B3B3", "z c #D6D6D6", "A c #1A1914", "B c #7F6C32", "C c #383838", "D c #CFCFCF", "E c #11100D", "F c #B1AA8C", "G c #BBB394", "H c #7F6E32", "I c #878787", "J c #848484", "K c #969696", "L c #E7E7E7", "M c #484848", "N c #D48B43", "O c #2F2F2F", "P c #BABABA", "Q c #7A7A7A", "R c #AAAAAA", "S c #010101", "T c #F1DD8E", "U c #D68A3F", "V c #984621", "W c #212121", "X c #E2E2E2", "Y c #EFDE90", "Z c #F5E186", "` c #AC632D", " . c #A45B2F", ".. c #222222", "+. c #151410", "@. c #7D692E", "#. c #3D3D3D", "$. c #F1E28C", "%. c #EDE094", "&. c #F1DF8C", "*. c #B46E35", "=. c #BB6632", "-. c #C37B54", ";. c #464646", ">. c #0F0E0B", ",. c #A19A7F", "'. c #A7A083", "). c #BEBEBE", "!. c #252525", "~. c #1D1D1D", "{. c #3E3E3E", "]. c #A66133", "^. c #545454", "/. c #7F6B2E", "(. c #2E2E2E", "_. c #F3E08A", ":. c #A65F2F", "<. c #A8A8A8", "[. c #E4E4E4", "}. c #A39D81", "|. c #806C2F", "1. c #8D8D8D", "2. c #B4B4B4", "3. c #9D9D9D", "4. c #8F8F8F", "5. c #030302", "6. c #313131", "7. c #D18C48", "8. c #A56032", "9. c #A9A186", "0. c #A3A3A3", "a. c #EAEAEA", "b. c #9F9F9F", "c. c #8E8E8E", "d. c #F1F1F1", "e. c #0C0A04", "f. c #89783C", "g. c #7A672D", "h. c #766529", "i. c #78672B", " . . . . ", " . . . . . . + @ # $ . . . . . . ", " . % % % % & * = - ; > * , & % % ' . ", " . % ) ) ) ! ~ = { ] ^ / ( ! ) ) _ . ", " . % : : < [ } | 1 2 3 4 5 6 : 7 8 . ", " . % ) ) 9 0 a a b c d e f 9 ) ) g . ", " . % h : i j k l l l l l 5 6 : m n . ", " . % ) ) o p p p p p p p p o ) ) n . ", " . . . . q r s / / t / u v w : : : : m x . ", ". y = = = = = = = = = = = z A ) ) ) ) ) B . ", ". = = = = = = C D = = = = = E F F F F G H . ", ". = I J K L M N O P = Q R = S ) ) ) ) ) n . ", ". = = = = M T U V W D = = = S F F F F G x . ", ". = K X M Y Z U ` ...P = = +.) ) ) ) ) @.. ", ". = = #.$.%.&.U *.=.-.;.D = >.,.,.,.,.'.@.. ", ". = ).!.~.{.$.U ].. ^.C K = +.) ) ) ) ) /.. ", ". = = = = (._.U :.. <.<.[.= . ,.,.,.,.}.|.. ", ". = 1.2.= (.&.N ].. 3.4.= = 5.) ) ) ) ) B . ", ". = = = = 6.%.7.8.. <.[.= = >.,.,.,.,.9.B . ", ". = a 0.a.. . . . . b.c.4.= +.) ) ) ) ) |.. ", ". = = = = D <.<.<.<.<.d.= = e.f.n n g.h.i.. ", ". z = = = = d.d.d.d.d.d.= z . . . . . . . ", " . . . . . . . . . . . . . ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/paste.xpm0000644000000000000000000000644507452611601015052 /* XPM */ static char * paste_xpm[] = { "24 24 129 2", " c None", ". c #000000", "+ c #B9B9B9", "@ c #FEFEFE", "# c #F9F9F9", "$ c #757575", "% c #F5F5E8", "& c #565651", "* c #FFFFFF", "= c #A0A0A0", "- c #939393", "; c #7C7C7C", "> c #C5C5BB", ", c #CFC6A0", "' c #D7CEAA", ") c #ADA689", "! c #4B483C", "~ c #6D6D6D", "{ c #6C6C6C", "] c #A9A9A9", "^ c #3D3A30", "/ c #979178", "( c #C1B898", "_ c #8A793D", ": c #C3BB9A", "< c #AFA78A", "[ c #444236", "} c #FAFAFA", "| c #EFEFEF", "1 c #C7C7C7", "2 c #D8D8D8", "3 c #D2D2D2", "4 c #7B7B7B", "5 c #302E26", "6 c #89846C", "7 c #C4BC9A", "8 c #847235", "9 c #C5C5C5", "0 c #A7A7A7", "a c #ADADAD", "b c #9A9A9A", "c c #9B9B9B", "d c #868686", "e c #424242", "f c #847033", "g c #C9C09E", "h c #464337", "i c #35332A", "j c #2D2B23", "k c #C6BE9D", "l c #826F33", "m c #7F7964", "n c #4C493C", "o c #171612", "p c #13120F", "q c #3E3B31", "r c #282210", "s c #474438", "t c #B3B3B3", "u c #D6D6D6", "v c #B7AE90", "w c #B1AA8C", "x c #37352B", "y c #151410", "z c #C9C9C9", "A c #E5E5E5", "B c #C6C6C6", "C c #B9B293", "D c #11100D", "E c #313131", "F c #B3D2BA", "G c #7BA676", "H c #618159", "I c #434035", "J c #8D8D8D", "K c #B4B4B4", "L c #2E2E2E", "M c #AFD2B6", "N c #79A674", "O c #62825A", "P c #888888", "Q c #BABABA", "R c #AAA48B", "S c #A5A086", "T c #A19A7F", "U c #312F26", "V c #AED2B6", "W c #78A672", "X c #608158", "Y c #DEDEDE", "Z c #252525", "` c #1D1D1D", " . c #3E3E3E", ".. c #AFD2B7", "+. c #545454", "@. c #383838", "#. c #AFA88C", "$. c #050403", "%. c #3D3D3D", "&. c #688C60", "*. c #6B9061", "=. c #83A07A", "-. c #464646", ";. c #12110E", ">. c #ABABAB", ",. c #484848", "'. c #B1D2B8", "). c #ACD2B4", "!. c #618458", "~. c #618057", "{. c #2B2B2B", "]. c #A9A489", "^. c #A39E85", "/. c #B0D2B7", "(. c #57734A", "_. c #212121", ":. c #797979", "<. c #EBE7D0", "[. c #282828", "}. c #7AA674", "|. c #222222", "1. c #C0C0C0", "2. c #D2C9A5", "3. c #A29053", "4. c #8E7C3D", "5. c #88793B", "6. c #806C2F", "7. c #78652B", "8. c #251F0C", " . . . . ", " . . . . . . + @ # $ . . . . . . ", ". % % % % % & * = - ; & > % % % , . ", ". % ' ' ' ) ! * ~ { ] ^ / ( ' ' _ . ", ". % : : < [ } | 1 2 3 4 5 6 < 7 8 . ", ". % ' ' ! 9 0 0 a b c d e ! ) ' f . ", ". % g : 6 h i j j j j j 5 6 < k l . ", ". % ' ' ' / / / / / / / / ( ' ' l . ", ". % g : : : : m n o p p p p ^ q r . . . . ", ". % ' ' ' ' ' s t * * * * * * * * * * * u . ", ". % v w w w w x * * * * * * * * * * * * * . ", ". % ' ' ' ' ' y * 0 z A . . . . . * z B * . ", ". % C w w w w D * * * * E F G H . 1 * * * . ", ". % ' ' ' ' ' I * J K * L M N O . P Q * * . ", ". % R S T T T U * * * * L V W X . c * * * . ", ". % ' ' ' ' ' I * Y Z ` ...W O . +.@.z * . ", ". % #.S T T T $.* * %...F M W &.*.=.-.c * . ", ". % ' ' ' ' ' ;.* + >.,.'.).W !.~.{.d 1 * . ", ". % ].^.T T T U * * * 1 ,./.W (._.:.1 * * . ", ". <.' ' ' ' ' I * 0 z A 1 [.}.|.P B 1.0 * . ", ". 2.3.4.5.6.7.8.* * * * * 1 @.c 1 * * * * . ", " . . . . . . . u * * * * * * * * * * * u . ", " . . . . . . . . . . . . . ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/paste_others.xpm0000644000000000000000000000645107452621707016443 /* XPM */ static char *paste_others_xpm[]={ "24 24 129 2", "Qt c None", ".# c #000000", "#P c #050403", "#n c #11100d", "#U c #12110e", ".0 c #13120f", "#d c #151410", ".Z c #171612", "#t c #1d1d1d", "#S c #212121", "#X c #222222", "a. c #251f0c", "#s c #252525", ".2 c #282210", "#V c #282828", "#N c #2b2b2b", ".U c #2d2b23", "#f c #2e2e2e", ".F c #302e26", "#B c #312f26", "## c #313131", ".T c #35332a", "#. c #37352b", "#x c #383838", ".s c #3d3a30", "#C c #3d3d3d", ".1 c #3e3b31", "#u c #3e3e3e", ".P c #424242", "#r c #434035", ".y c #444236", ".S c #464337", "#G c #464646", ".3 c #474438", "#I c #484848", ".o c #4b483c", ".Y c #4c493c", "#w c #545454", ".f c #565651", "#R c #57734a", "#q c #608158", "#M c #618057", "#c c #618159", "#L c #618458", "#i c #62825a", "#D c #688c60", "#E c #6b9061", ".q c #6c6c6c", ".p c #6d6d6d", ".d c #757575", "#9 c #78652b", "#p c #78a672", "#T c #797979", "#h c #79a674", "#W c #7aa674", ".E c #7b7b7b", "#b c #7ba676", ".j c #7c7c7c", ".X c #7f7964", "#8 c #806c2f", ".W c #826f33", "#F c #83a07a", ".Q c #847033", ".I c #847235", ".O c #868686", "#7 c #88793b", "#j c #888888", ".G c #89846c", ".v c #8a793d", "#6 c #8e7c3d", ".i c #939393", ".t c #979178", ".M c #9a9a9a", ".N c #9b9b9b", ".h c #a0a0a0", "#A c #a19a7f", "#5 c #a29053", "#0 c #a39e85", "#z c #a5a086", ".K c #a7a7a7", "#Z c #a9a489", ".r c #a9a9a9", "#y c #aaa48b", "#H c #ababab", "#K c #acd2b4", ".n c #ada689", ".L c #adadad", "#o c #aed2b6", ".x c #afa78a", "#O c #afa88c", "#g c #afd2b6", "#v c #afd2b7", "#Q c #b0d2b7", ".9 c #b1aa8c", "#J c #b1d2b8", ".4 c #b3b3b3", "#a c #b3d2ba", "#e c #b4b4b4", ".8 c #b7ae90", "#m c #b9b293", ".a c #b9b9b9", "#k c #bababa", "#2 c #c00000", "#3 c #c0c000", "#Y c #c0c0c0", ".u c #c1b898", ".w c #c3bb9a", ".H c #c4bc9a", ".k c #c5c5bb", ".J c #c5c5c5", ".V c #c6be9d", "#l c #c6c6c6", ".B c #c7c7c7", ".R c #c9c09e", ".5 c #c9c9c9", ".l c #cfc6a0", "#4 c #d2c9a5", ".D c #d2d2d2", ".7 c #d6d6d6", ".m c #d7ceaa", ".C c #d8d8d8", ".6 c #e5e5e5", "#1 c #ebe7d0", ".A c #efefef", ".e c #f5f5e8", ".c c #f9f9f9", ".z c #fafafa", ".b c #fefefe", ".g c #ffffff", "QtQtQtQtQtQtQt.#.#.#.#QtQtQtQtQtQtQtQtQtQtQtQtQt", "Qt.#.#.#.#.#.#.a.b.c.d.#.#.#.#.#.#QtQtQtQtQtQtQt", ".#.e.e.e.e.e.f.g.h.i.j.f.k.e.e.e.l.#QtQtQtQtQtQt", ".#.e.m.m.m.n.o.g.p.q.r.s.t.u.m.m.v.#QtQtQtQtQtQt", ".#.e.w.w.x.y.z.A.B.C.D.E.F.G.x.H.I.#QtQtQtQtQtQt", ".#.e.m.m.o.J.K.K.L.M.N.O.P.o.n.m.Q.#QtQtQtQtQtQt", ".#.e.R.w.G.S.T.U.U.U.U.U.F.G.x.V.W.#QtQtQtQtQtQt", ".#.e.m.m.m.t.t.t.t.t.t.t.t.u.m.m.W.#QtQtQtQtQtQt", ".#.e.R.w.w.w.w.X.Y.Z.0.0.0.0.s.1.2.#.#.#.#QtQtQt", ".#.e.m.m.m.m.m.3.4.5.6.#.#.#.#.#.g.5.g.g.7.#QtQt", ".#.e.8.9.9.9.9#..g.g.g###a#b#c.#.B.g.g.g.g.#QtQt", ".#.e.m.m.m.m.m#d.g#e.g#f#g#h#i.##j#kQt#l.g.#QtQt", ".#.e#m.9.9.9.9#n.g.g.g#f#o#p#q.#.N.gQt.g.g.#QtQt", ".#.e.m.m.m.m.m#r.g#s#t#u#v#p#i.##w#xQt.g.g.#QtQt", ".#.e#y#z#A#A#A#B.g#C#v#a#g#p#D#E#F#GQt.g.g.#QtQt", ".#.e.m.m.m.m.m#r.g#H#I#J#K#p#L#M#N.OQt.5.g.#QtQt", ".#.e#O#z#A#A#A#P.g.g.B#I#Q#p#R#S#T.BQt.N.g.#QtQt", ".#.e.m.m.m.m.m#U.g.5.6.B#V#W#X#j#l#YQt.B.g.#QtQt", ".#.e#Z#0#A#A#A#B.g.g.g.g.B#x.N.B.g.gQt.g.g.#QtQt", ".##1.m.m.m.m.m#r.g.K#2#3Qt#2#3Qt#2#3Qt#2#3.#QtQt", ".##4#5#6#7#8#9a..g.g#2#3Qt#2#3Qt#2#3Qt#2#3.#QtQt", "Qt.#.#.#.#.#.#.#.7.g.g.g.g.g.g.g.g.g.g.g.7.#QtQt", "QtQtQtQtQtQtQtQt.#.#.#.#.#.#.#.#.#.#.#.#.#QtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/trash.xpm0000644000000000000000000000576507452752206015072 /* XPM */ static char * trash_xpm[] = { "16 16 152 2", " c None", ". c #0E0E0E", "+ c #424242", "@ c #4A4A4A", "# c #3E3E3E", "$ c #2C2C2C", "% c #000000", "& c #858371", "* c #F0EDD8", "= c #F2F1E9", "- c #EEEDE4", "; c #C7C6BA", "> c #535246", ", c #101010", "' c #C2C0A5", ") c #C1BFA5", "! c #7A7967", "~ c #484740", "{ c #272725", "] c #36352E", "^ c #878572", "/ c #A09E88", "( c #A3A18A", "_ c #A5A38C", ": c #2B2B2B", "< c #D3D1BC", "[ c #DCDAC4", "} c #E2E0CF", "| c #B9B7A2", "1 c #64625B", "2 c #393836", "3 c #3C3C33", "4 c #616053", "5 c #9A9883", "6 c #B7B59B", "7 c #B3B298", "8 c #A4A28B", "9 c #E8E4D3", "0 c #F4F1E9", "a c #F2F1E4", "b c #EAE9DA", "c c #E5E2D2", "d c #D5D2BE", "e c #C3C1A7", "f c #AFAD94", "g c #C0BEA4", "h c #C6C4AC", "i c #B8B69C", "j c #797766", "k c #8A8975", "l c #F1EDD2", "m c #FBF8E9", "n c #F9F5ED", "o c #F8F7EE", "p c #F8F7EC", "q c #F5F3E6", "r c #ECEAD9", "s c #DEDDCB", "t c #9D9B89", "u c #636254", "v c #58574A", "w c #525146", "x c #737165", "y c #9F9D91", "z c #E4E1C8", "A c #E9E5CF", "B c #E2E0CB", "C c #D1D1CB", "D c #8E8D7F", "E c #767564", "F c #686758", "G c #434238", "H c #292822", "I c #1F1F1B", "J c #343430", "K c #4B4944", "L c #686762", "M c #706F66", "N c #6B6B64", "O c #6E6C5D", "P c #58574B", "Q c #393931", "R c #171615", "S c #1A1A16", "T c #1F1E19", "U c #2A2A23", "V c #A0A095", "W c #4D4D40", "X c #363630", "Y c #2A2A26", "Z c #2F2F2A", "` c #0F0F0D", " . c #0B0B09", ".. c #10100D", "+. c #3E3E38", "@. c #34342B", "#. c #24241F", "$. c #2B2B24", "%. c #A5A499", "&. c #B7B6AE", "*. c #717067", "=. c #A1A192", "-. c #747363", ";. c #404035", ">. c #69695B", ",. c #39392F", "'. c #69695F", "). c #3F3F34", "!. c #262620", "~. c #2C2C25", "{. c #ADADA3", "]. c #D9D9D2", "^. c #8B8B7F", "/. c #D6D5CE", "(. c #88887B", "_. c #58574F", ":. c #939387", "<. c #4A4A3D", "[. c #78786B", "}. c #505042", "|. c #292922", "1. c #DADAD3", "2. c #8F8E81", "3. c #DDDDD4", "4. c #ACAB99", "5. c #5D5D52", "6. c #A0A093", "7. c #79796C", "8. c #7E7E75", "9. c #D8D8D1", "0. c #8D8D80", "a. c #DDDDD3", "b. c #444438", "c. c #282822", "d. c #272721", "e. c #43433D", "f. c #8E8E86", "g. c #5E5E55", "h. c #DADAD0", "i. c #949484", "j. c #5D5D53", "k. c #23231D", "l. c #060606", "m. c #42413A", "n. c #8F8F7B", "o. c #7A7A6C", "p. c #44443C", "q. c #6C6C5E", "r. c #35352C", "s. c #2E2E29", "t. c #0F0F0F", "u. c #050505", " . + @ # $ % ", " % % & * = - ; > % % ", " , ' ) ! ~ { ] ^ / ( _ % ", " : < [ } | 1 2 3 4 5 6 7 8 % ", " % 9 0 a b c d e f g h i j % ", " % k l m n o p q r s t u v % ", " % w x y z A B C D E F G H % ", " I J K L M N O P Q R S T ", " U V W X Y Z ` ...+.@.#. ", " $.%.&.*.=.-.;.>.,.'.).!. ", " ~.{.].^./.(._.:.<.[.}.|. ", " ~.{.1.2.3.4.5.6.W 7.}.|. ", " $.8.9.0.a.4.5.6.W [.b.c. ", " d.e.f.g.h.4.5.i.W j.c.k. ", " l.l.m.n.o.p.q.r.s.% ", " l.% t.u.% % "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/trash16.xpm0000644000000000000000000000576707452752266015251 /* XPM */ static char * trash16_xpm[] = { "16 16 152 2", " c None", ". c #0E0E0E", "+ c #424242", "@ c #4A4A4A", "# c #3E3E3E", "$ c #2C2C2C", "% c #000000", "& c #858371", "* c #F0EDD8", "= c #F2F1E9", "- c #EEEDE4", "; c #C7C6BA", "> c #535246", ", c #101010", "' c #C2C0A5", ") c #C1BFA5", "! c #7A7967", "~ c #484740", "{ c #272725", "] c #36352E", "^ c #878572", "/ c #A09E88", "( c #A3A18A", "_ c #A5A38C", ": c #2B2B2B", "< c #D3D1BC", "[ c #DCDAC4", "} c #E2E0CF", "| c #B9B7A2", "1 c #64625B", "2 c #393836", "3 c #3C3C33", "4 c #616053", "5 c #9A9883", "6 c #B7B59B", "7 c #B3B298", "8 c #A4A28B", "9 c #E8E4D3", "0 c #F4F1E9", "a c #F2F1E4", "b c #EAE9DA", "c c #E5E2D2", "d c #D5D2BE", "e c #C3C1A7", "f c #AFAD94", "g c #C0BEA4", "h c #C6C4AC", "i c #B8B69C", "j c #797766", "k c #8A8975", "l c #F1EDD2", "m c #FBF8E9", "n c #F9F5ED", "o c #F8F7EE", "p c #F8F7EC", "q c #F5F3E6", "r c #ECEAD9", "s c #DEDDCB", "t c #9D9B89", "u c #636254", "v c #58574A", "w c #525146", "x c #737165", "y c #9F9D91", "z c #E4E1C8", "A c #E9E5CF", "B c #E2E0CB", "C c #D1D1CB", "D c #8E8D7F", "E c #767564", "F c #686758", "G c #434238", "H c #292822", "I c #1F1F1B", "J c #343430", "K c #4B4944", "L c #686762", "M c #706F66", "N c #6B6B64", "O c #6E6C5D", "P c #58574B", "Q c #393931", "R c #171615", "S c #1A1A16", "T c #1F1E19", "U c #2A2A23", "V c #A0A095", "W c #4D4D40", "X c #363630", "Y c #2A2A26", "Z c #2F2F2A", "` c #0F0F0D", " . c #0B0B09", ".. c #10100D", "+. c #3E3E38", "@. c #34342B", "#. c #24241F", "$. c #2B2B24", "%. c #A5A499", "&. c #B7B6AE", "*. c #717067", "=. c #A1A192", "-. c #747363", ";. c #404035", ">. c #69695B", ",. c #39392F", "'. c #69695F", "). c #3F3F34", "!. c #262620", "~. c #2C2C25", "{. c #ADADA3", "]. c #D9D9D2", "^. c #8B8B7F", "/. c #D6D5CE", "(. c #88887B", "_. c #58574F", ":. c #939387", "<. c #4A4A3D", "[. c #78786B", "}. c #505042", "|. c #292922", "1. c #DADAD3", "2. c #8F8E81", "3. c #DDDDD4", "4. c #ACAB99", "5. c #5D5D52", "6. c #A0A093", "7. c #79796C", "8. c #7E7E75", "9. c #D8D8D1", "0. c #8D8D80", "a. c #DDDDD3", "b. c #444438", "c. c #282822", "d. c #272721", "e. c #43433D", "f. c #8E8E86", "g. c #5E5E55", "h. c #DADAD0", "i. c #949484", "j. c #5D5D53", "k. c #23231D", "l. c #060606", "m. c #42413A", "n. c #8F8F7B", "o. c #7A7A6C", "p. c #44443C", "q. c #6C6C5E", "r. c #35352C", "s. c #2E2E29", "t. c #0F0F0F", "u. c #050505", " . + @ # $ % ", " % % & * = - ; > % % ", " , ' ) ! ~ { ] ^ / ( _ % ", " : < [ } | 1 2 3 4 5 6 7 8 % ", " % 9 0 a b c d e f g h i j % ", " % k l m n o p q r s t u v % ", " % w x y z A B C D E F G H % ", " I J K L M N O P Q R S T ", " U V W X Y Z ` ...+.@.#. ", " $.%.&.*.=.-.;.>.,.'.).!. ", " ~.{.].^./.(._.:.<.[.}.|. ", " ~.{.1.2.3.4.5.6.W 7.}.|. ", " $.8.9.0.a.4.5.6.W [.b.c. ", " d.e.f.g.h.4.5.i.W j.c.k. ", " l.l.m.n.o.p.q.r.s.% ", " l.% t.u.% % "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/cut16.xpm0000644000000000000000000000273107452752341014701 /* XPM */ static char * cut16_xpm[] = { "16 16 75 1", " c None", ". c #000000", "+ c #8E8E8E", "@ c #E3E3E3", "# c #696969", "$ c #F1F0E1", "% c #ECE9D5", "& c #EDEBD8", "* c #2E2D29", "= c #7E7D76", "- c #5D5C58", "; c #53534F", "> c #21211E", ", c #79776C", "' c #EBE7D3", ") c #8C866C", "! c #C1B485", "~ c #343124", "{ c #ABA89E", "] c #EFECE0", "^ c #AEABA3", "/ c #6C6A66", "( c #26241A", "_ c #7A7251", ": c #988E69", "< c #353225", "[ c #26231A", "} c #302D21", "| c #333023", "1 c #6E674C", "2 c #7A7051", "3 c #58523D", "4 c #D8D0B3", "5 c #FFFFFF", "6 c #796F51", "7 c #050505", "8 c #D4D4D4", "9 c #796F50", "0 c #FAFAFA", "a c #070707", "b c #D48B43", "c c #020202", "d c #030303", "e c #F1DD8E", "f c #D68A3F", "g c #984621", "h c #010101", "i c #DDD7BE", "j c #786D4F", "k c #EFDE90", "l c #F5E186", "m c #AC632D", "n c #A45B2F", "o c #B0B0B0", "p c #786D4E", "q c #0A0A0A", "r c #F1DF8C", "s c #A66133", "t c #808080", "u c #796E4E", "v c #141414", "w c #EDE094", "x c #D18C48", "y c #A56032", "z c #929292", "A c #A39870", "B c #796E50", "C c #FEFEFE", "D c #6D6240", "E c #D2D2D2", "F c #ACACAC", "G c #AAAAAA", "H c #635935", "I c #685C3A", "J c #443B1F", " ... ", " ....+@#.... ", " .$%&*=-;>,').", " .'!~{]]^/(!_.", " .%!:<[}[|1!2.", "3..........4!42.", ".555555555.!:!6.", ".555578555.4!49.", ".505abc8507!:!2.", ".55defgh85.i!ij.", ".5aklfmnho.!:!p.", ".55qrbs.t8.4!4u.", ".55vwxy.z5.!A!B.", ".55.....oC.!!!D.", ".55EFGGG85.HIHJ.", "............... "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/copy16.xpm0000644000000000000000000000233307452752430015055 /* XPM */ static char * copy16_xpm[] = { "16 16 58 1", " c None", ". c #000000", "+ c #8E8E8E", "@ c #E3E3E3", "# c #696969", "$ c #F1F0E1", "% c #ECE9D5", "& c #EDEBD8", "* c #2E2D29", "= c #7E7D76", "- c #5D5C58", "; c #53534F", "> c #21211E", ", c #79776C", "' c #EBE7D3", ") c #8C866C", "! c #A8A597", "~ c #33312E", "{ c #818181", "] c #EDECE9", "^ c #BFBFBF", "/ c #ACABAA", "( c #5B5B5B", "_ c #252422", ": c #4D4833", "< c #FFFFFF", "[ c #474747", "} c #404040", "| c #444444", "1 c #B9B9B9", "2 c #838383", "3 c #7B7B7B", "4 c #585858", "5 c #B7B7B7", "6 c #363636", "7 c #757575", "8 c #5F5F5F", "9 c #686868", "0 c #616161", "a c #4F4F4F", "b c #494949", "c c #979797", "d c #2B2B2B", "e c #2F2F2F", "f c #7F7F7F", "g c #6D6D6D", "h c #595959", "i c #716E67", "j c #C1B485", "k c #A39870", "l c #796E50", "m c #868686", "n c #6D6240", "o c #DEDEDE", "p c #6A603C", "q c #685C3A", "r c #635935", "s c #443B1F", " ... ", " ....+@#.... ", " .$%&*=-;>,').", " .!.~{]^/(_.:.", " ..<<[}}}|1<..", " ..<2<3456}<..", " ..<<<<<<<<<..", " .........789<..", ".<<<<<<<<<.<<<..", ".<0 c #21211E", ", c #79776C", "' c #979487", ") c #8C866C", "! c #EBE7D3", "~ c #C1B485", "{ c #343124", "] c #ABA89E", "^ c #EFECE0", "/ c #AEABA3", "( c #6C6A66", "_ c #26241A", ": c #8F8663", "< c #7A7251", "[ c #988E69", "} c #353225", "| c #26231A", "1 c #302D21", "2 c #333023", "3 c #6E674C", "4 c #A69B72", "5 c #7A7051", "6 c #EBE8D4", "7 c #D8D0B3", "8 c #58523D", "9 c #E9E6D2", "0 c #FFFFFF", "a c #0C0C0C", "b c #0F0F0F", "c c #0B0B0B", "d c #0E0E0E", "e c #161616", "f c #DCDCDC", "g c #E9E6D1", "h c #141414", "i c #86AF83", "j c #9CB599", "k c #5A7E51", "l c #A9A9A9", "m c #E9E6D0", "n c #0A0A0A", "o c #85AF82", "p c #99B496", "q c #5C8054", "r c #9D9D9D", "s c #E8E5D0", "t c #A39870", "u c #1B1B1B", "v c #ADCAAB", "w c #83AF81", "x c #608058", "y c #6D8463", "z c #080808", "A c #BDBDBD", "B c #B8D1B8", "C c #9CB899", "D c #5D8155", "E c #090909", "F c #787878", "G c #EDEAD7", "H c #9BB798", "I c #E9E5CE", "J c #898267", "K c #746A45", "L c #6B623D", "M c #655A37", "N c #A3A3A3", " ... ", " ....+@#.... ", ".$%&*=-;>,'). ", ".!~{]^^/(_:<. ", ".%~[}|1|2345. ", ".6~~78......... ", ".9~[~.000000000.", ".9~~7.00abcdef0.", ".g~[~.00hijkhl0.", ".m~~7.00nopqcr0.", ".s~t~.0uvwpxyzA.", ".s~~7.0AdBCDEFA.", ".G~t~.00AuHaFA0.", ".I~~~.000AuFA00.", ".JKLM.0000Nf000.", " .............. "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/paste_others16.xpm0000644000000000000000000000645607452757327016627 /* XPM */ static char * paste_others16_xpm[] = { "24 24 129 2", " c None", ". c #000000", "+ c #B9B9B9", "@ c #FEFEFE", "# c #F9F9F9", "$ c #757575", "% c #F5F5E8", "& c #565651", "* c #FFFFFF", "= c #A0A0A0", "- c #939393", "; c #7C7C7C", "> c #C5C5BB", ", c #CFC6A0", "' c #D7CEAA", ") c #ADA689", "! c #4B483C", "~ c #6D6D6D", "{ c #6C6C6C", "] c #A9A9A9", "^ c #3D3A30", "/ c #979178", "( c #C1B898", "_ c #8A793D", ": c #C3BB9A", "< c #AFA78A", "[ c #444236", "} c #FAFAFA", "| c #EFEFEF", "1 c #C7C7C7", "2 c #D8D8D8", "3 c #D2D2D2", "4 c #7B7B7B", "5 c #302E26", "6 c #89846C", "7 c #C4BC9A", "8 c #847235", "9 c #C5C5C5", "0 c #A7A7A7", "a c #ADADAD", "b c #9A9A9A", "c c #9B9B9B", "d c #868686", "e c #424242", "f c #847033", "g c #C9C09E", "h c #464337", "i c #35332A", "j c #2D2B23", "k c #C6BE9D", "l c #826F33", "m c #7F7964", "n c #4C493C", "o c #171612", "p c #13120F", "q c #3E3B31", "r c #282210", "s c #474438", "t c #B3B3B3", "u c #C9C9C9", "v c #E5E5E5", "w c #D6D6D6", "x c #B7AE90", "y c #B1AA8C", "z c #37352B", "A c #313131", "B c #B3D2BA", "C c #7BA676", "D c #618159", "E c #151410", "F c #B4B4B4", "G c #2E2E2E", "H c #AFD2B6", "I c #79A674", "J c #62825A", "K c #888888", "L c #BABABA", "M c #C6C6C6", "N c #B9B293", "O c #11100D", "P c #AED2B6", "Q c #78A672", "R c #608158", "S c #434035", "T c #252525", "U c #1D1D1D", "V c #3E3E3E", "W c #AFD2B7", "X c #545454", "Y c #383838", "Z c #AAA48B", "` c #A5A086", " . c #A19A7F", ".. c #312F26", "+. c #3D3D3D", "@. c #688C60", "#. c #6B9061", "$. c #83A07A", "%. c #464646", "&. c #ABABAB", "*. c #484848", "=. c #B1D2B8", "-. c #ACD2B4", ";. c #618458", ">. c #618057", ",. c #2B2B2B", "'. c #AFA88C", "). c #050403", "!. c #B0D2B7", "~. c #57734A", "{. c #212121", "]. c #797979", "^. c #12110E", "/. c #282828", "(. c #7AA674", "_. c #222222", ":. c #C0C0C0", "<. c #A9A489", "[. c #A39E85", "}. c #EBE7D0", "|. c #C00000", "1. c #C0C000", "2. c #D2C9A5", "3. c #A29053", "4. c #8E7C3D", "5. c #88793B", "6. c #806C2F", "7. c #78652B", "8. c #251F0C", " . . . . ", " . . . . . . + @ # $ . . . . . . ", ". % % % % % & * = - ; & > % % % , . ", ". % ' ' ' ) ! * ~ { ] ^ / ( ' ' _ . ", ". % : : < [ } | 1 2 3 4 5 6 < 7 8 . ", ". % ' ' ! 9 0 0 a b c d e ! ) ' f . ", ". % g : 6 h i j j j j j 5 6 < k l . ", ". % ' ' ' / / / / / / / / ( ' ' l . ", ". % g : : : : m n o p p p p ^ q r . . . . ", ". % ' ' ' ' ' s t u v . . . . . * u * * w . ", ". % x y y y y z * * * A B C D . 1 * * * * . ", ". % ' ' ' ' ' E * F * G H I J . K L M * . ", ". % N y y y y O * * * G P Q R . c * * * . ", ". % ' ' ' ' ' S * T U V W Q J . X Y * * . ", ". % Z ` . . ...* +.W B H Q @.#.$.%. * * . ", ". % ' ' ' ' ' S * &.*.=.-.Q ;.>.,.d u * . ", ". % '.` . . .).* * 1 *.!.Q ~.{.].1 c * . ", ". % ' ' ' ' ' ^.* u v 1 /.(._.K M :. 1 * . ", ". % <.[. . . ...* * * * 1 Y c 1 * * * * . ", ". }.' ' ' ' ' S * 0 |.1. |.1. |.1. |.1.. ", ". 2.3.4.5.6.7.8.* * |.1. |.1. |.1. |.1.. ", " . . . . . . . w * * * * * * * * * * * w . ", " . . . . . . . . . . . . . ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/parent.xpm0000644000000000000000000000145007452760275015232 /* XPM */ static char * parent_xpm[] = { "16 16 29 1", " c None", ". c #2D2D2D", "+ c #000000", "@ c #CFDFCC", "# c #CDDECB", "$ c #ADC8AB", "% c #3C5235", "& c #AAC7A8", "* c #B0C7AE", "= c #5B7950", "- c #B4CBB2", "; c #B3CAB1", "> c #ADC6AB", ", c #B1C9B0", "' c #B5CEB5", ") c #B0C9B0", "! c #B9CEB7", "~ c #AEC7AC", "{ c #3B5035", "] c #BAD1BA", "^ c #AAC5A8", "/ c #BBD0B9", "( c #B2C9B0", "_ c #A9C4A7", ": c #7EAB78", "< c #698267", "[ c #678C63", "} c #4A6342", "| c #415639", " ", " . ", " +@+ ", " +#$%+ ", " +#&*=%+ ", " +#-;>==%+ ", " +#,')>===%+ ", " ++++!~&={++++ ", " +]^~={+ ", " +!^~={+ ", " +/~~={+ ", " +(_$={+ ", " +:<[}|+ ", " +++++++ ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/font16.xpm0000644000000000000000000000204707453560261015053 /* XPM */ static char * font16_xpm[] = { "16 16 46 1", " c None", ". c #70653B", "+ c #463F24", "@ c #6B6139", "# c #1B180D", "$ c #2C2818", "% c #595030", "& c #252112", "* c #292516", "= c #70643B", "- c #827544", "; c #3D3721", "> c #37311D", ", c #3E3721", "' c #302B1A", ") c #5C5331", "! c #010101", "~ c #1A170E", "{ c #1E1A10", "] c #403922", "^ c #584F2F", "/ c #16140C", "( c #1E1B10", "_ c #312B1A", ": c #0F0D07", "< c #2D2818", "[ c #322D1A", "} c #231F11", "| c #3C3620", "1 c #5A5230", "2 c #332E1B", "3 c #12100A", "4 c #4F472A", "5 c #413A23", "6 c #302B19", "7 c #342E1B", "8 c #4A4227", "9 c #6E633A", "0 c #080704", "a c #2F2919", "b c #4C4529", "c c #51472B", "d c #242113", "e c #322D1B", "f c #5E5432", "g c #211E12", " ", " .+ ", " @ # ", " $ ", " %&* ", " = * -;> ", " , ' )!~ ", " { !] ^!/ (_ ", " :<[ }| 1!2 c #307B7B", ", c #2B7F80", "' c #2F4B3F", ") c #8A795D", "! c #1B3D3C", "~ c #643424", "{ c #C76849", "] c #788F7B", "^ c #B4D6B8", "/ c #A9C9AD", "( c #9C8F72", "_ c #7C735C", ": c #5FA0A2", "< c #67AEAF", "[ c #3E686A", "} c #8D9279", "| c #A78B68", "1 c #639795", "2 c #579294", "3 c #7ACDCE", "4 c #6A7F6D", "5 c #808C75", "6 c #BCA17D", "7 c #4E4736", "8 c #334A48", "9 c #49797B", "0 c #7BCFD1", "a c #493522", "b c #926A43", "c c #685E4C", "d c #C2AB8B", "e c #A98C68", "f c #5E523F", "g c #504433", "h c #304645", "i c #5F8E8D", "j c #314A49", "k c #776B40", "l c #EED680", "m c #E2CB7A", "n c #B4A087", "o c #D9BE9B", "p c #CFB28D", "q c #A68B69", "r c #5A4E3D", "s c #4D6663", "t c #9AD0CB", "u c #567471", "v c #C7B16D", "w c #D8C1A4", "x c #E4CAAA", "y c #D9BA94", "z c #C9AB85", "A c #6A5A43", "B c #48564E", "C c #98CEC9", "D c #B69F6A", "E c #E6CEAF", "F c #DFC09A", "G c #D8B890", "H c #B4946D", "I c #6E5F48", "J c #5E7C78", "K c #A0D8D2", "L c #A08A6E", "M c #DDBB91", "N c #C19F76", "O c #8D7252", "P c #50402D", "Q c #090704", "R c #D0B18A", "S c #D2AE81", "T c #8C7150", " ", " ", " .+++@##@$$$% ", " &***#==#---; ", " &***#==#>,-; ", " .+++@##')!$% ", " ~{{{]^/(_:<[ ", " ~{{{]^}|123[ ", " ~{{{4567890[ ", " abbbcdefghij ", " kllmnopqrstu ", " kllvwxyzABCu ", " kllDEFGHIJKu ", " LMNOPQ ", " RST ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/widname.xpm0000644000000000000000000000367007453563413015367 /* XPM */ static char * widname_xpm[] = { "22 22 90 1", " c None", ". c #EBECED", "+ c #F4F5F6", "@ c #FAFBFB", "# c #CACFD3", "$ c #D8DCDE", "% c #E5E8EB", "& c #DADEE1", "* c #A1ABB1", "= c #B8C1C6", "- c #CDD4D8", "; c #000000", "> c #D0D7DC", ", c #BDC6CD", "' c #A6B3BB", ") c #71818D", "! c #8B9AA4", "~ c #DAE2E6", "{ c #DCE4E9", "] c #C3D0D8", "^ c #ACBCC7", "/ c #92A6B2", "( c #7A8F9C", "_ c #516B7B", ": c #6F8898", "< c #8EA4B2", "[ c #ADBFCB", "} c #CEDAE3", "| c #EAEFF3", "1 c #EAF0F4", "2 c #B0C5D4", "3 c #94AEBF", "4 c #7997A9", "5 c #5C7C90", "6 c #23465D", "7 c #2D526A", "8 c #486E86", "9 c #688CA3", "0 c #8FB2C8", "a c #D4E1EA", "b c #B2CCDC", "c c #7099B4", "d c #4D82A5", "e c #386785", "f c #335D78", "g c #24516E", "h c #295C7D", "i c #2E668B", "j c #74A2BF", "k c #99BCD3", "l c #78A9C9", "m c #538EB5", "n c #3577A2", "o c #327097", "p c #164462", "q c #1B4F71", "r c #22648E", "s c #256C9B", "t c #2774A5", "u c #3C87B5", "v c #3E8CBD", "w c #297EB3", "x c #297AAD", "y c #1F5A81", "z c #033C61", "A c #104C73", "B c #085281", "C c #156090", "D c #16689C", "E c #186FA7", "F c #1974AD", "G c #1A7AB7", "H c #1A77B4", "I c #135781", "J c #034873", "K c #095B8F", "L c #09639B", "M c #0A6AA5", "N c #0A6EAD", "O c #0B73B4", "P c #004471", "Q c #004E80", "R c #00548A", "S c #005D99", "T c #0068AA", "U c #006BB1", "V c #0063A3", "W c #005993", "X c #005185", "Y c #004B7C", " ", " ", " ", " .+@@@. ", " #$%+@@+%&# ", " *=-%+;;+%>,' ", " )!',~+;;+{]^/( ", " _:<[}|@@1}2345 ", " 678902a;;;b0cdef ", " 6ghidjk;;;lmnoih ", " pqhrstu;;vwxtsry ", " zABCDEF;;GHFEDCI ", " zJBKLMN;;OONMLKB ", " zPQRSTT;;UUTVSRQ ", " PQRWST;;TTTSWR ", " zJXW;;;;;;TSWX ", " JYR;;;;;;SWR ", " JYRWWSSWWR ", " QXRRRR ", " ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/repack.xpm0000644000000000000000000000131607453567333015210 /* XPM */ static char * repack_xpm[] = { "16 16 23 1", " c None", ". c #58636A", "+ c #1C1A1B", "@ c #FFE894", "# c #FDFBF1", "$ c #AA861A", "% c #F8C84B", "& c #F8C646", "* c #F9C74B", "= c #FACD58", "- c #FBD56A", "; c #FEE58C", "> c #F7C03A", ", c #F6BD32", "' c #FBD260", ") c #FEE388", "! c #F6BD33", "~ c #F5B725", "{ c #F8C546", "] c #FACF5C", "^ c #FEE286", "/ c #F9C84B", "( c #FBD161", " ", " ", " ......... ", " . ", " . +++++++++ ", " +@@@@@@@#+ ", " +@@@@@@@#$+ ", " +########$$+ ", " +%&*=-;@#$$+ ", " +>,>*')@#$$+ ", " +!~!{]^@#$+ ", " +>,>/()@#+ ", " +++++++++ . ", " . ", " ......... ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/calltip.xpm0000644000000000000000000000173207453567526015401 /* XPM */ static char * calltip_xpm[] = { "22 22 24 1", " c None", ". c #4A4A4A", "+ c #FDECC3", "@ c #FCEABD", "# c #FBE7B2", "$ c #FBE5AB", "% c #FAE09D", "& c #FCE8B7", "* c #FAE2A2", "= c #FADF98", "- c #F9DB8E", "; c #F9D883", "> c #F8D47A", ", c #000000", "' c #F7CF6A", ") c #F6CA5C", "! c #F7D16F", "~ c #F6CD63", "{ c #F5C750", "] c #F5C44A", "^ c #F9DC93", "/ c #F6C954", "( c #F4C343", "_ c #F4C13E", " ", " ", " ", " ", " ........ ", " ..+++++++@.. ", " .++++++@#$%. ", " .++++@&$*=-;>. ", " .++,,,,,,,,'). ", " .&$*=-;>!~){]. ", " .%^,,,,)/](__. ", " .;>!~){](____. ", " .'),,,,,_____. ", " .{]__________. ", " .__,,,,,,,,__. ", " .__________. ", " ..________.. ", " ........ ", " ", " ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/tag.xpm0000644000000000000000000000151707453567751014525 /* XPM */ static char * tag_xpm[] = { "22 22 15 1", " c None", ". c #4A4A4A", "+ c #707070", "@ c #000000", "# c #B9B9BA", "$ c #C0C0C0", "% c #9C9C9C", "& c #CCCCCC", "* c #D3D3D3", "= c #DCDCDC", "- c #E3E3E3", "; c #EBEBEB", "> c #F3F3F3", ", c #F8F8F7", "' c #FDFDFD", " ", " ", " ", " ......+@... ", " .####@+@$$.% ", " .##+@#+@&&.%% ", " .##+@$+@&*.... ", " .##+@&+@*==-;. ", " .##+@&+@=---;. ", " .$$&+@@==-;>,. ", " .&&&*++--;;,,. ", " .&**==-;;>,,'. ", " .**==-;;,,'''. ", " .==--;>,,''''. ", " .=-;>>,,'''''. ", " .-;;>,'''''''. ", " .;;,,''''''''. ", " .>,''''''''''. ", " .............. ", " ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/border.xpm0000644000000000000000000000105107453647163015214 /* XPM */ static char * border_xpm[] = { "16 16 12 1", " c None", ". c #4A4A4A", "+ c #BBBBBB", "@ c #C0C0C0", "# c #CBCACB", "$ c #D4D4D4", "% c #DBDBDB", "& c #E0E0DF", "* c #E3E3E3", "= c #EBEBEB", "- c #F3F3F3", "; c #FEFEFE", " ", " .............. ", " .............. ", " ..+++++@####.. ", " ..++@####$$%.. ", " ..###$$$%%%&.. ", " ..$$$%%***==.. ", " ..%&***==---.. ", " ..**==---;;;.. ", " ..=--;;;;;;;.. ", " ..;;;;;;;;;;.. ", " ..;;;;;;;;;;.. ", " ..;;;;;;;;;;.. ", " .............. ", " .............. ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/shadow.xpm0000644000000000000000000000064107453747163015231 /* XPM */ static char *shadow_xpm[]={ "16 16 3 1", ". c #000000", "a c #848484", "# c #ffffff", "...........####a", "###############a", ".#.#.#.#.#.#.#.a", "###############a", "#...####.......a", "####.###.......a", "#...###########a", "#.######.......a", "#.######.......a", "###############a", ".#.#.#.#.#.#.#.a", "###############a", ".............##a", "###############a", "...........####a", "###############a"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/rowspace.xpm0000644000000000000000000000071507453755237015572 /* XPM */ static char *rowspace_xpm[]={ "16 16 6 1", "a c None", "# c #303030", "d c #800000", "b c #ff0000", "c c #ffc0c0", ". c #ffffff", ".#a#a#a#a#a#a#a.", ".a.....bb.....#.", ".#....bcbd....#.", ".a.....bd.....#.", ".#.....cb.....#.", ".a.....bd.....#.", ".#....bcbb....#.", ".a.....bd.....#.", ".##############.", ".a............#.", ".#.b........b.#.", ".abcbcbcbcbcbb#.", ".#dbdbdbdbdbdb#.", ".a.b........b.#.", ".#............#.", ".a#############."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/rright.xpm0000644000000000000000000000142607454057565015246 /* XPM */ static char *rright_xpm[]={ "16 16 28 1", ". c None", "# c #000000", "k c #0f1308", "b c #303030", "x c #445b2c", "y c #506b46", "z c #585858", "s c #5b7950", "w c #6b9060", "d c #709867", "a c #77a16e", "r c #7f9f76", "v c #a4c3a2", "q c #a5c4a3", "u c #a8c6a5", "e c #a9c7a6", "p c #aac6a7", "j c #aac7a8", "o c #abc7a8", "t c #abc7aa", "c c #acc8a9", "l c #adc8ad", "n c #aec5a8", "g c #afc8ad", "h c #bdd3b8", "m c #c0ffc0", "i c #c2d7be", "f c #ffffc0", ".........#......", ".........##.....", ".........#a#....", "bbb#######cd#...", "befgfhfififjdk..", "bflmnmompmlmqr#.", "blmsstsusososvw#", "bfllsssssssssx#.", "blmsssyyyyssx#..", "bfllsssssssx#...", "blmssssbz#x#....", "bfllsssb.##.....", ".bmssssb.#......", "..blssb.........", "...bsb..........", "....b..........."}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/style.xpm0000644000000000000000000000120207454060000015051 /* XPM */ static char * style_xpm[] = { "16 16 18 1", " c None", ". c #000000", "+ c #FFFFFF", "@ c #A9ACAF", "# c #B1B4B7", "$ c #005D47", "% c #E2E4E5", "& c #6F1814", "* c #F1F2F3", "= c #ADB0B2", "- c #BABCBF", "; c #FAFBFB", "> c #B9BBBE", ", c #C9CBCE", "' c #002D5F", ") c #D8DADB", "! c #E9EAEB", "~ c #F8F7F8", " ", " ", " ........ ", " .++++++. ", " .++++@#... ", " .+$$++++%. ", " .+$$++&+*. ", " .++++&&&+. ", " .+=-++&;+. ", " .+>,++;++. ", " .+,++'+++. ", " .+)+'''++. ", " .+!~+++++. ", " .......... ", " ", " "}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/caption.xpm0000644000000000000000000000071407454251216015370 /* XPM */ static char *caption_xpm[]={ "16 16 6 1", ". c None", "c c #585858", "d c #800000", "a c #a0a0a0", "b c #c3c3c3", "# c #ffffff", "................", ".#############a.", ".#bbbbbbbbbbbac.", ".#b..........ac.", ".#b..........ac.", ".#bdddd..d...ac.", ".#bd..d..d...ac.", ".#bd..d..d...ac.", ".#bdddd..ddd.ac.", ".#bd..d..d..dac.", ".#bd..d..ddd.ac.", ".#b..........ac.", ".#b..........ac.", ".#aaaaaaaaaaaac.", ".accccccccccccc.", "................"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/relief.xpm0000644000000000000000000000065507454263215015207 /* XPM */ static char *relief_xpm[]={ "16 16 4 1", ". c None", "a c #000000", "b c #a0a0a0", "# c #ffffff", "................", "................", "..###########...", ".#...........#..", ".#.aaaaaaaaa.#..", ".#.aaaaaaaaa.#..", ".#...........#..", ".#...........#..", ".#.aaaaaaaaa.#..", ".#...........#..", ".#...........#..", ".#.b.b.b.b.b.#..", ".#...........#..", "..###########...", "................", "................"}; vdkbuilder2-2.4.0/vdkbuilder/pixmaps/dock.xpm0000644000000000000000000000656507455251654014674 /* XPM */ static char * dock_xpm[] = { "22 22 146 2", " c None", ". c #2D2D28", "+ c #252521", "@ c #47473E", "# c #C5C5B1", "$ c #000000", "% c #383833", "& c #4A4A43", "* c #BBBBA7", "= c #F6F6DC", "- c #E5E5CF", "; c #606059", "> c #3C3C36", ", c #606054", "' c #B9B9A7", ") c #E7E7CF", "! c #E2E2CB", "~ c #DFDFC5", "{ c #E9E9D2", "] c #D3D3BD", "^ c #3E3E39", "/ c #2A2A2A", "( c #3C3C3E", "_ c #949487", ": c #E7E7CD", "< c #E0E0C9", "[ c #D9D9C2", "} c #D8D8C2", "| c #DCDCC4", "1 c #E2E2CA", "2 c #EFEFD4", "3 c #9C9C8E", "4 c #0A0A0E", "5 c #575757", "6 c #8E8E8E", "7 c #86867B", "8 c #DBDBC2", "9 c #D9D9C1", "0 c #D8D8C0", "a c #E9E9D1", "b c #EEEED4", "c c #F7F7DD", "d c #E8E8D1", "e c #79796E", "f c #636363", "g c #FCFCFE", "h c #727270", "i c #A9A994", "j c #DCDCC6", "k c #D9D9C4", "l c #DFDFC7", "m c #292925", "n c #FFFFEF", "o c #FFFFE7", "p c #D1D1BB", "q c #404038", "r c #60605C", "s c #FFFFFF", "t c #757573", "u c #6D6D62", "v c #FFFFE5", "w c #FFFFEE", "x c #FFFFED", "y c #4D4D45", "z c #FFFFF7", "A c #FFFFEC", "B c #69695D", "C c #6F6F6C", "D c #BCBCB8", "E c #61615A", "F c #CDCDB4", "G c #21211E", "H c #53534C", "I c #FFFFFD", "J c #FFFFF2", "K c #5B5B51", "L c #3D3D34", "M c #C3C3AD", "N c #FEFEE4", "O c #21211D", "P c #525248", "Q c #EDEDD5", "R c #3F3F37", "S c #313130", "T c #C1C1B3", "U c #E7E7CE", "V c #EFEFD6", "W c #32322D", "X c #030303", "Y c #0C0C0A", "Z c #151513", "` c #67675D", " . c #FFFFF8", ".. c #FFFFE6", "+. c #2D2D29", "@. c #353531", "#. c #B8B8A9", "$. c #E9E9CF", "%. c #E7E7D0", "&. c #FFFFF3", "*. c #FFFFEB", "=. c #65655A", "-. c #FFFFE8", ";. c #E3E3CC", ">. c #888879", ",. c #141412", "'. c #636358", "). c #EDEDD4", "!. c #E4E4CC", "~. c #E8E8D0", "{. c #F3F3DA", "]. c #43433C", "^. c #DBDBC4", "/. c #484842", "(. c #5B5B57", "_. c #D1D1BD", ":. c #E8E8CF", "<. c #EBEBD2", "[. c #EEEED5", "}. c #FAFAE0", "|. c #FDFDE4", "1. c #F3F3DB", "2. c #B0B09E", "3. c #474741", "4. c #1B1B1E", "5. c #A1A192", "6. c #FDFDE3", "7. c #F0F0D7", "8. c #DDDDC5", "9. c #78786D", "0. c #4C4C44", "a. c #42423B", "b. c #CCCCB6", "c. c #F6F6DE", "d. c #F1F1D8", "e. c #F9F9E0", "f. c #FCFCE2", "g. c #C2C2AE", "h. c #46463E", "i. c #8E8E80", "j. c #FFFFE9", "k. c #EFEFD8", "l. c #767669", "m. c #24241E", "n. c #1A1A15", "o. c #252522", " ", " ", " . ", " + @ # $ ", " % & * = - ; ", " $ > , ' ) ! ~ { ] ^ ", " / ( _ : < [ } | 1 2 3 4 ", " 5 6 7 8 9 0 | a b c d e ", " f g h i j k l ) m n o p q ", " r s t u 9 v w x $ y z A B ", " C D E F G $ $ $ $ $ H I J K ", " $ L M N O $ $ $ $ $ $ P A Q R ", " S T U V W X Y Z $ $ ` ...n A +. ", " @.#.$.%.c A &.*.$ =. .v -.;.>.,. ", " '.).!.!.~.).{.].z -.o ^./.$ ", " (._.Q :.<.[.}.|.A 1.2.3. ", " 4.5.6.Q [.7.= v 8.9.0. ", " a.b.c.d.e.f.g.h. ", " $ i.6.j.k.l.m. ", " n.d !.o. ", " Y $ ", " "}; vdkbuilder2-2.4.0/example/0000777000000000000000000000000010052402421011066 5vdkbuilder2-2.4.0/example/hello/0000777000000000000000000000000010052402421012171 5vdkbuilder2-2.4.0/example/hello/hello.cc0000644000000000000000000000202007252426732013534 /* hello Application Main unit implementation file:hello.cc */ #include /* main program */ int main (int argc, char *argv[]) { HelloApp app(&argc, argv); app.Run(); return 0; } // Hello MAIN FORM CLASS /* main form constructor */ HelloForm::HelloForm(VDKApplication* app, char* title): VDKForm(app,title) { } /* main form destructor */ HelloForm::~HelloForm() { } /* main form setup */ void HelloForm::Setup(void) { GUISetup(); // vdkb gui setup // put your code below here } // Hello APPLICATION CLASS /* application constructor */ HelloApp::HelloApp(int* argc, char** argv): VDKApplication(argc,argv) { } /* application destructor */ HelloApp::~HelloApp() { } /* application setup */ void HelloApp::Setup(void) { MainForm = new HelloForm(this,NULL); MainForm->Setup(); MainForm->Visible = true; } /* response */ bool HelloForm::OnSayHelloClick(VDKObject* sender) { Label0->Caption = "Hello world !"; return true; } /* response */ bool HelloForm::OnQuitClick(VDKObject* sender) { Close(); return true; } vdkbuilder2-2.4.0/example/hello/hello.frm0000644000000000000000000000570207333305245013740 [hello] { class:form; hello.this:hello; hello.NormalBackground:nihil; hello.Foreground:nihil; hello.Font:"nihil"; hello.Cursor:nihil; hello.BackgroundPixmap:nihil; hello.FocusWidget:nihil; hello.Usize: 241, 104; hello.Title:"hello Main Form"; hello.OnFormActivate:nihil; hello.OnChildClosing:nihil; hello.OnConfigure:nihil; hello.OnExpose:nihil; hello.OnIconize:nihil; hello.OnMove:nihil; hello.OnRealize:nihil; hello.OnResize:nihil; hello.OnRestore:nihil; hello.OnShow:nihil; hello.CanClose:nihil; } [object] { this:Hbox2; class:VDKBox; parent:nihil; _justify:0; _Expand:1; _Fill:1; _Padding:0; Tag:nihil; declare_public:nihil; Usize:239,78; BorderWidth:1; mode:h_box; event-aware:nihil; } [object] { this:Label0; class:VDKLabel; parent:Hbox2; NormalBackground:nihil; PrelightBackground:nihil; InsensitiveBackground:nihil; ActiveBackground:nihil; SelectedBackground:nihil; Foreground:178,34,34; Font:"courier Bold 13"; Enabled:true; Cursor:nihil; Visible:true; Tip:"nihil"; _justify:0; _Expand:1; _Fill:1; _Padding:0; Tag:nihil; declare_public:nihil; Usize:131,76; Caption:" "; CaptionWrap:nihil; Justify:2; } [object] { this:Pixmap0; class:VDKPixmap; parent:Hbox2; NormalBackground:nihil; PrelightBackground:nihil; InsensitiveBackground:nihil; ActiveBackground:nihil; SelectedBackground:nihil; Foreground:nihil; Font:"nihil"; Enabled:true; Cursor:nihil; Visible:true; Tip:"nihil"; _justify:0; _Expand:1; _Fill:1; _Padding:0; Tag:nihil; declare_public:nihil; Usize:103,76; Glyph:proud.xpm; GlyphBydata:nihil; } [object] { this:Hbox4; class:VDKBox; parent:nihil; _justify:0; _Expand:1; _Fill:1; _Padding:0; Tag:nihil; declare_public:nihil; Usize:239,22; BorderWidth:0; mode:h_box; event-aware:nihil; } [object] { this:SayHello; class:VDKCustomButton; parent:Hbox4; NormalBackground:nihil; PrelightBackground:nihil; InsensitiveBackground:nihil; ActiveBackground:nihil; SelectedBackground:nihil; Foreground:nihil; Font:"nihil"; Enabled:true; Cursor:nihil; Visible:true; Tip:"nihil"; _justify:0; _Expand:1; _Fill:1; _Padding:2; Tag:nihil; declare_public:nihil; Usize:nihil; Caption:"_Say Hello"; CaptionWrap:nihil; Relief:nihil; Glyph:nihil; GlyphBydata:nihil; pixmapped:nihil; cbtype:16; labelpos:1; } [object] { this:Quit; class:VDKCustomButton; parent:Hbox4; NormalBackground:nihil; PrelightBackground:nihil; InsensitiveBackground:nihil; ActiveBackground:nihil; SelectedBackground:nihil; Foreground:nihil; Font:"nihil"; Enabled:true; Cursor:nihil; Visible:true; Tip:"nihil"; _justify:0; _Expand:1; _Fill:1; _Padding:2; Tag:nihil; declare_public:nihil; Usize:nihil; Caption:"_Quit"; CaptionWrap:nihil; Relief:nihil; Glyph:nihil; GlyphBydata:nihil; pixmapped:nihil; cbtype:16; labelpos:1; } [connect]{ sender:SayHello; signal:clicked_signal; slot:OnSayHelloClick; declare:1;} [connect]{ sender:Quit; signal:clicked_signal; slot:OnQuitClick; declare:1;}vdkbuilder2-2.4.0/example/hello/hello.h0000644000000000000000000000114207252426733013403 /* hello Application Main unit header file: hello.h */ #ifndef _hello_main_form_h_ #define _hello_main_form_h_ #include // Hello FORM CLASS class HelloForm: public VDKForm { // gui object declarations private: // vdkbuilder reserved gui construction void GUISetup(void); public: HelloForm(VDKApplication* app, char* title); ~HelloForm(); void Setup(void); /* gui setup include do not patch below here */ #include }; // Hello APPLICATION CLASS class HelloApp: public VDKApplication { public: HelloApp(int* argc, char** argv); ~HelloApp(); void Setup(void); }; #endif vdkbuilder2-2.4.0/example/hello/hello.prj0000644000000000000000000000032007334042005013727 #VDK Builder 0.1# project file# /mario/VDKBuilderProject/vdkbuilder-2/example/hello/hello.prj /mario/VDKBuilderProject/vdkbuilder-2/example/hello 0 /mario/VDKBuilderProject/vdkbuilder-2/example/hello/hello 3 vdkbuilder2-2.4.0/example/hello/hello.prj.opt0000644000000000000000000000061107334042005014533 /* !!! PLEASE DO NOT EDIT THIS FILE !! (or edit at your own risk) Let VDKBuilder do the job for you */ compilers{c_compiler:gcc;cc_compiler:g++;} link{lnk:g++;} compile_flags{c_flags:-g -Wall `vdk-config-2 --cflags`;} defines{def:-DNONE;} includes{include:-I./;} shared_libs{so_libs:`vdk-config-2 --libs`;} debugger{use_db:ddd;} program{args:;} package{ name:; version:0.0.1; nls_support:no;} vdkbuilder2-2.4.0/example/hello/hello_gui.cc0000644000000000000000000000236107334041772014406 #include /* defining signal and events dynamics tables */ DEFINE_SIGNAL_LIST(HelloForm,VDKForm); DEFINE_EVENT_LIST(HelloForm,VDKForm); /* defining signal static table */ DEFINE_SIGNAL_MAP(HelloForm,VDKForm) ON_SIGNAL(SayHello,clicked_signal,OnSayHelloClick), ON_SIGNAL(Quit,clicked_signal,OnQuitClick) END_SIGNAL_MAP /* main form setup */ void HelloForm::GUISetup(void) { SetSize(241,104); Title = "hello Main Form"; Hbox2 = new VDKBox(this,h_box); Hbox2->SetSize(239,78); Add(Hbox2,0,1,1,0); Hbox2->BorderWidth(1); Label0 = new VDKLabel(this," "); Label0->Foreground = VDKRgb(178,34,34); VDKFont* Label0_font = new VDKFont(this,"courier Bold 13"); Label0->Font = Label0_font; Label0->SetSize(131,76); Label0->Justify = (GtkJustification) 2; Hbox2->Add(Label0,0,1,1,0); Pixmap0 = new VDKPixmap(this,"proud.xpm"); Pixmap0->SetSize(103,76); Hbox2->Add(Pixmap0,0,1,1,0); Hbox4 = new VDKBox(this,h_box); Hbox4->SetSize(239,22); Add(Hbox4,0,1,1,0); Hbox4->BorderWidth(0); SayHello = new VDKCustomButton(this,(char*) NULL,"_Say Hello",16,(GtkPositionType) 1); Hbox4->Add(SayHello,0,1,1,2); Quit = new VDKCustomButton(this,(char*) NULL,"_Quit",16,(GtkPositionType) 1); Hbox4->Add(Quit,0,1,1,2); } // do not remove this mark: #!# // end of file:hello_gui.cc vdkbuilder2-2.4.0/example/hello/hello_gui.h0000644000000000000000000000076007334041772014251 /* hello gui header */ protected: VDKBox* Hbox2; protected: VDKLabel* Label0; protected: VDKPixmap* Pixmap0; protected: VDKBox* Hbox4; protected: VDKCustomButton* SayHello; protected: VDKCustomButton* Quit; public: DECLARE_SIGNAL_MAP(HelloForm); bool OnSayHelloClick(VDKObject* sender); bool OnQuitClick(VDKObject* sender); /* declaring signal and events dynamics tables */ DECLARE_SIGNAL_LIST(HelloForm); DECLARE_EVENT_LIST(HelloForm); // do not remove this mark: #!# // end of file:hello_gui.h vdkbuilder2-2.4.0/example/hello/proud.xpm0000644000000000000000000000765707252426734014030 /* XPM */ static char *proud[] = { /* width height num_colors chars_per_pixel */ " 100 31 43 1", /* colors */ ". c #ffffff", "# c #000073", "a c #101010", "b c #212121", "c c #313131", "d c #424242", "e c #525252", "f c #633131", "g c #636363", "h c #737373", "i c #848484", "j c #8c2121", "k c #949494", "l c #9c0000", "m c #a5a5a5", "n c #ad5a5a", "o c #b5b5b5", "p c #c62121", "q c #c6c6c6", "r c #d60000", "s c #d6d6d6", "t c #de1010", "u c #de2121", "v c #de3131", "w c #e71010", "x c #e72121", "y c #e73131", "z c #e74242", "A c #e75252", "B c #e76363", "C c #e77b7b", "D c #ef8484", "E c #ef9494", "F c #efadad", "G c #efbdbd", "H c #efefef", "I c #f79494", "J c #f7a5a5", "K c #f7bdbd", "L c #f7c6c6", "M c #f7dede", "N c #f7efef", "O c #000000", /* pixels */ "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "O..................................................................................................O", "O..................................................................................................O", "O..................................................................................................O", "O..................................................................................................O", "O..........JCK..GAzBL.NDyzD.NBzL.LF............###...................#..............#..............O", "O........MDrrC.Mtryrx.CrxtrEEvBA.BJ............#..#..................#....#.........#..............O", "O........DrrrD.Drz.rrKtrKDrzCzCzNxN............#..#.#.#..##..#..#..###...###..##....###...##.......O", "O........MLvrC.Crz.rrKrrLCrzDzDzJB.............###..##..#..#.#..#.#..#....#..#..#...#..#.#..#......O", "O..........zrD.Drz.rrKrrGDrzCzCzyK.............#....#...#..#.#..#.#..#....#..#..#...#..#.####......O", "O..........zrC.Crz.rrKrrLCrzMuwDxCry...........#....#...#..#.#..#.#..#....#..#..#...#..#.#.........O", "O..........zrD.Drz.rrKrrKDrz...DCrGrK..........#....#....##...###..###.....#..##....###...###......O", "O..........zrC.Crz.rrKrrLCrz...uNrLrL..............................................................O", "O..........zrD.Drz.rrKrrGDrz..Kz.rKrG..............................................................O", "O..........zrC.Mrryrx.BrxtrE..BE.tIrL.......................................................H......O", "O....qcde..njfk.flpBM.NDzzE...DN.JyD..................eOd.kio......gOd....................kdg......O", "O....oOOOs.bOOi.hdm..................................qOOk.dOi.....qOOi....................iOd......O", "O....oOOOksOOOh.kio.Hiddi..ihqd..kddgs..kedeo..mddgs.gOOkkaObk....eOOkoiohk.sgdgq..Hhddm..iOd......O", "O....oOOOekOOOi.dOi.dObbOg.OOaO.iOacOaHkOahOOsiOacOaHcOOhobOdo....cOOgiOaOiHaOhaas.dOecOo.qOi......O", "O....oOOcadOcOh.dOhqOOHshi.OOch.aOk.bOiiOOdis.aOk.bOioOO..cOh.....oOO.hOOhoiObhdOgqOOieOb.HOo......O", "O....oOOiOOddOi.dOioOO.....OOm..OOq.dOi.icOOaHOOq.dOioOO..dOi.....qOO.iOc..hOadddhqOOdddd..........O", "O....oOOqOOkcOh.cOhHaOiiOb.OOo..cOdmOOomchsOOodOdmOOooOO..dObo....oOO.hOc..oObHhciHaOqkdd.hOc......O", "O....oOO.bOsdOi.dOi.maOOao.OOo..qbOOOg.HcOOOg.sbOOOh.oOO..mOOh....qOO.iOd...hOOOcH.kaOOaq.iOd......O", "O.....................oo..........qoH....qos....qoH..........................Hoq.....oo............O", "O..................................................................................................O", "O.................................................................rrrrrrrrrrrrrrrrrrrrrrrrrrr......O", "O.................................................................rrrrrrrrrrrrrrrrrrrrrrrrrrr......O", "O..................................................................................................O", "O..................................................................................................O", "O..................................................................................................O", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO" };vdkbuilder2-2.4.0/example/hello/fuzzy.xpm0000644000000000000000000004730507334123647014056 /* XPM */ static char * fuzzy_xpm[] = { "94 94 129 2", " c None", ". c #DBDBDB", "+ c #EDEDED", "@ c #ACACAC", "# c #B9B9B9", "$ c #C5C5C5", "% c #A6A6A6", "& c #A5A5A5", "* c #9B9B9B", "= c #C1C1C1", "- c #B6B6B6", "; c #BFBFBF", "> c #BABABA", ", c #A1A1A1", "' c #DEDEDE", ") c #C2C2C2", "! c #DFDFDF", "~ c #E0E0E0", "{ c #C7C7C7", "] c #989898", "^ c #BDBDBD", "/ c #B5B5B5", "( c #D1D1D1", "_ c #B8B8B8", ": c #DADADA", "< c #EEEEEE", "[ c #ADADAD", "} c #BEBEBE", "| c #A9A9A9", "1 c #ECECEC", "2 c #B7B7B7", "3 c #A2A2A2", "4 c #DDDDDD", "5 c #D5D5D5", "6 c #CACACA", "7 c #C4C4C4", "8 c #D8D8D8", "9 c #BBBBBB", "0 c #C6C6C6", "a c #B0B0B0", "b c #DCDCDC", "c c #C8C8C8", "d c #B2B2B2", "e c #CDCDCD", "f c #E2E2E2", "g c #D9D9D9", "h c #B4B4B4", "i c #AFAFAF", "j c #E6E6E6", "k c #AAAAAA", "l c #949494", "m c #9F9F9F", "n c #ABABAB", "o c #A3A3A3", "p c #D0D0D0", "q c #CCCCCC", "r c #D4D4D4", "s c #BCBCBC", "t c #AEAEAE", "u c #E1E1E1", "v c #C3C3C3", "w c #A4A4A4", "x c #C9C9C9", "y c #A8A8A8", "z c #999999", "A c #CECECE", "B c #C0C0C0", "C c #D3D3D3", "D c #D6D6D6", "E c #A7A7A7", "F c #D2D2D2", "G c #B3B3B3", "H c #E7E7E7", "I c #959595", "J c #909090", "K c #E4E4E4", "L c #E5E5E5", "M c #9C9C9C", "N c #E3E3E3", "O c #9E9E9E", "P c #CFCFCF", "Q c #D7D7D7", "R c #B1B1B1", "S c #8F8F8F", "T c #CBCBCB", "U c #A0A0A0", "V c #9D9D9D", "W c #9A9A9A", "X c #EBEBEB", "Y c #939393", "Z c #979797", "` c #8E8E8E", " . c #E8E8E8", ".. c #F1F1F1", "+. c #929292", "@. c #F0F0F0", "#. c #F2F2F2", "$. c #E9E9E9", "%. c #EAEAEA", "&. c #F4F4F4", "*. c #F7F7F7", "=. c #878787", "-. c #888888", ";. c #828282", ">. c #F3F3F3", ",. c #7E7E7E", "'. c #EFEFEF", "). c #F5F5F5", "!. c #969696", "~. c #FBFBFB", "{. c #818181", "]. c #FAFAFA", "^. c #F6F6F6", "/. c #8D8D8D", "(. c #7A7A7A", "_. c #7B7B7B", ":. c #858585", "<. c #868686", "[. c #898989", "}. c #8A8A8A", "|. c #919191", "1. c #F8F8F8", "2. c #8B8B8B", "3. c #FCFCFC", "4. c #848484", "5. c #7F7F7F", "6. c #FFFFFF", "7. c #8C8C8C", "8. c #F9F9F9", ". + @ # $ % & + * = - ; > , ' ) ! ; ~ { ] ' ^ @ @ / ) ( _ : < [ } } | % 1 * = 2 ; # 3 4 = 5 ; 6 [ 7 8 9 0 a b c { d e = > _ } f g h , 6 i ! h _ j k l % e m n o : m p / ) 2 h ' p q [ i ' h ", "& r * } { # % 9 = a h s t u c ^ v ^ w % = = ; x { * @ ) x y ( z 9 A # m ; B [ / } a ! e s ~ B 5 0 # b C [ k D j | 7 6 E ; F B $ G 7 _ n : ; q # 7 H r . ; y I J $ F # n ( x c G n K t 8 = A ", "8 s . L w D 3 | F * c | p = # | 9 M = N A A D 3 = h p [ : 5 B ! L o 8 | , r O 0 E 5 B - | B # P Q 6 R ! d = S ; 2 | x 0 E > T o a ) p s p ^ 0 c ; $ $ 4 r m a ; d s ( - r T d E 0 v c C > { ", "Q H # 6 { # v 7 ~ @ B { U C h 2 R - V A 8 R c $ % } m k b . u _ x c h 7 $ 4 a s x W r _ h 7 R E q 5 / T P 0 Q 7 X x Y E d Z 7 w T 9 { e C u ) x w t K 2 e D ' 5 _ v . k b s , e ~ ^ 5 p K v ", "w ( 9 T 9 y : R p : ; j B { h ` # L B ^ B w e r C G @ ' ! w ( s A _ [ Q G F r 0 f 0 0 h J r n $ n F q A ; D r ! k x i { ( t c v h f p .^ F 9 [ ..= b c C L G i F a a } d ~ ( y 9 B > v q ^ ", "I } R 5 = O h b t q w 2 P P { ^ | 8 B w T 4 } P > 4 & | i Z } [ F ) U a 4 R P , / ( T $ ; > j L R ) h +.9 6 _ @.^ F P t q V Q v P 7 % c e M } : n R ( & k K @.( 2 { / g > c R # x B { e W ; ", "b y O ' y P | > { A | ' i T 5 3 N #.G ^ N e # $.b } ' } s ' w & ~ % 6 [ # 0 e E K @ T : z R : p ; e 3 M c - g 0 0 T ^ P 6 j ( $ F 4 R t ^ D g ( q g > l - h R Q w I * 3 x b v k u 6 C 9 8 b ", "8 , g 6 | ^ . } s / ) d p 6 ) K p + p 0 Q $ P 7 d | 4 @ $.8 o 5 6 | } b 9 ; G = h T P ; j ) = d $ s _ ] q z v * @ @ s d _ } ^ y . a q $ ~ a 5 t c f t L 2 a O = v j y o ^ / r ~ _ ^ A u R C ", "j * b . e 0 T s ^ & k y h = 7 { g 7 ] S 0 8 - R M @ q F C H * : ' P = e s B , | y - 7 = c , 5 $.0 > V ~ / a P G 6 | , 2 A 0 7 %.) - v 8 R p b ! p w H ( h * 5 8 7 N = r y k : ^ 2 z 9 G C b ", ") Q = j s / N ) % .r 7 a &.{ ) B ^ 0 C D k z ! o *.2 . p v D ) f = G H B U 1 r $ i #.x ) L C n % = , c @.i y O e @ p 2 ^ 0 Q n q { x 8 * > q B y = R t = O ~ } 5 > W ; N A A 8 3 = / Z G ( ", "G h g G ' d e P ^ } 3 =.o q F B = G %.7 & 7 C 4 ( t : ~ W h h g / g h T P = ^ 3 -.3 e ( ) d Y Q k F 3 u 5 & p * & D 9 9 # ;.H - t ( 7 e @ e i T ) u $ 9 6 2 $ # U I s g 7 C s V | 0 T n P [ ", "6 w T } ; s @.H 2 @ U D ' t $.p G ! P k s B ^ e _ # ~ ^ * { y 7 ; ) ; < H 2 y U C ! d j T o 8 q g [ R H k d ( R e 6 $.} - R | +.C T n 7 % D x p d / 6 B { r 5 $.Q q Q s & ( 1 @ f T o & 5 x ", "4 @ z 2 %.P k | e { p = s %.3 s _ | | @.t $ N ; } { 5 . D ! & O h .P | @ q T P = ^ H & } * 0 ^ T ( $ .E W H o h v r E a - [ x p o ! 7 G y t j w P ( # F $ h 3 G j c q 2 7 C $ ) B 1 _ k t ", ">.y | , e [ T s B v g k e $ 6 : ( 7 d &.c ) K P @ | > 3 ) < t k O p y P 2 = 0 D k q $ q 8 M G ( ; y = G @ { V ~ ^ 5 # U } f ( e : O = 2 q - Q : ^ u f U . & E e O x k e 7 s % s > F Q q a D ", ", c 2 } ( Q c h 6 w b # ; 0 q ; D i ,.G Q q R q / Q e n q & 7 / B T : { _ x w b 9 } $ p 9 2 h . @ , p M Z t A u c ~ E $ s n ! f 0 u q ) $ # - $ q V ! r A ) 9 6 - > 0 0 D Y y > F p d ) s G ", "3 P 2 . ; R V / @ [ '.i $ ~ 7 ^ 3 ; ! p .y ) 9 s * C G 1 3 p _ : v R I # [ n @.t { u ^ $ ) g 8 p f k z d 1 e n k 0 T P B } %.3 s W 0 ; x p $ $.y W L o / B 5 & / h n 6 F w ' ) 2 | n T P $ ", "{ U P - { q D ~ = c w G N # q 5 r 2 6 A $ 5 0 %.6 l [ n W x m A _ c q r f ) { w R f > q r 4 g - 7 5 n : B , 6 4 v P # b | k [ Z > h ( ; , G . i ( m h F P B ) s K N i B / +.} $ G ).B U d . ", "d x _ 0 x q w P f D k P - t ~ p . H @ = { s & T @ i s _ x t 6 ^ 0 v e | p ~ D n F h t L 6 B ; r s $ t x v { %.B s ^ H 6 ; .u / h ) $ H 8 , e i ) C x b i # G - b ! ( C C ; g h ~ t | 4 U T ", "9 R F 2 0 i L V ^ s : w 8 # ^ q = 7 & G } ) } $ s p 8 v c _ - q h 6 [ L * B > 8 & 8 9 # A : 6 + K i i U _ R q % D ! 7 5 ! m 2 R ; d s / e 7 # @.5 $ : { 7 7 t e . R % } d 8 x q ' i C c 0 ^ ", "N e A ) 4 r . a d G 6 2 } # g u $ 0 6 Q } < u T { 2 U w ' f e P $ f P b i d h A G } 2 g j P - ; i 5 > $ z $ ( ^ i >., d y | $ 2 > @ * n ; [ _ Y v h &.q ' 5 G 5 p ( = F A = r 2 _ F 0 } [ / ", "r { p ..! & [ @ k h E * W ~ 0 W ) T - a 3 s i v 0 ; ^ c B . 0 T + ! w t [ n a 3 3 !.! 0 * p & V D n 7 7 ^ C # / # 8 ^ $ { x 9 s v o @ M +.E : m > = - F %.> B = m 6 ^ ~.R 3 / W ~ G [ z 3 ~ ", "s T 6 f # # - > y k E ; P % F } A _ } ) } F ^ C c l ^ 0 O - T q L - 9 d > % a | ^ F % D # a 8 G o . f B d ' 8 ^ x , k d D B - $ K > W $ $ ) H C B @ # } C g d > h g P ~ & 7 $ T / R = B v f ", "! m i _ 8 / . h 6 P = _ E {.w q . @ = 2 1 } [ } Q ' 5 i g ~ W G R b - 4 / T e = > w ;.E T ( $ t !.r @ r o f 8 E P V , g 9 / 9 ;.j - h q ) e t A i T ; ! v s p d B > V !.; Q 0 p s U y x 6 R ", "c , - ~ 9 x Q ' g _ 7 : & ! } , I @ @ I { , A 2 0 T Q ! = { w d L - q ( ' : 2 ) g | . ^ w 0 ' v ( 9 4 E y a I 9 R F v , R ! @ p U h p A $ ; } N L R ) G I 9 { 2 ].9 r T a 6 U r 7 q { B ; ^ ", "o % & } f > S D 7 # $.U R 6 p * - !.F 2 ^.e A 9 a # v t 7 w % o s f s ` 5 $ 2 %.m - 6 e O 0 m 0 ! c 6 e s s ) ; F B p x l # $ O 9 x x L - # 2 _ % i | 9 P w C ; d C R o g ~ 7 / 4 Q B # 9 h ", "8 U % : ( B q o * 6 - b 0 $ c 7 E E Q [ 0 k # v A y N k A 5 o y b 5 > p 3 M c _ b s q 6 ) 6 0 .p = 8 g a a # 8 Q ( e g 2 Z h h G D w /.& O T b c E ~ T ( & $ K 7 Q . v , j _ v K v m m 3 6 ", "E p } m (.% 5 i s g & { c } $.> [ $.[ N 5 _ ' ; 2 r 0 B ; E ( ^ V _.E r a # b U $ T ^ 1 _ 6 9 a P 7 0 g ; y T Z J s s X p E Q . ^ U - d A = ' B ^ j ! 2 - / O c b t ) R %.v w 7 Q b 5 A = ' ", "C R .) * :.9 k 2 Q s ; k : s 8 .p n 8 w p D [ * 0 # P d D R L $ Z -.- t _ D 9 B @ Q s g d B A > % { i / *.0 { ( $ / T 6 ^ r > p 6 % ; 5 s ^ n : P 0 c e p [ . _ s D ^ R r G D n $ s D } > ", "2 D d . 2 q A $ 9 , <.& T C B d / %.v w B 5 ~ ( h D ' M h h . R 8 _ A q = = O [.w T ( 7 [ Z : y P o L 8 w P 3 o 8 2 _ h }.j h d A $ x [ q R T ) 4 0 s F a $ > O ` 7 D ) ( s m k 0 c G P [ e ", "T *.[ s R # > _ u $ } B o 6 r P W d A C G M B n y # l [ 5 A ).@ ; R s _ s u = } ) o x Q p 2 y ! u & ( s A _ % : G F g 7 ' 7 B 2 |.r [ 0 [ ( e e $ C Q : [ $ a c D y 6 7 d ! ( $.s 6 ^ t C P ", "R q i E f @ e i r 4 Q E c - 8 h >.= _ i > ! G k 0 T 9 ( # i T h % u E F n F u Q w v 9 D R R k L '.a ^ N A h + : ^ 4 9 B . y E g E { k _ 7 p | f [ T Q U k 8 P B A , * 0 > b ; { { c A B C o ", "d g / g - x F } s 3 -.o x C v a G X 7 & B F u ( R Q u W d h . G : 2 T ( B } m -.% T C ) d l b y C , K 8 w e m & 8 s # / <.H / h A c e @ ( @ q v ' $ > P h { # U S 7 D 7 p s V @ c 7 G e [ ( ", "6 B ; _ .. .# k m Q b d $.T y 5 A k ^ ; > T 2 9 b v W T , q B = 9 + $._ | O r ' [ %.q % 8 x : @ i K % - P G e c $.^ h d % I p 6 @ 7 w D c F G _ { ) $ r p + : e ( = y A 1 n K 0 | > T { ( G ", "% } & : d > ( ~ ^.Z / Q ~ O R p = v $.Q $.Y q ( q [ n - D E s o C _ 9 p ~ ].Z d Q L * h q P h * ; d | _ Y y . P ^.[ s h > s # u ) = s y A P P / @ ~ ' y p > x > [ 8 a P D 0 ~ v v - J 6 5 T ", ". ^ |.v 0 a 2 n ^._ , . h ^ B N < > @.0 ) s s m E j 0 0 ' . ; +.c = n 9 n ..> 3 u t B = L : X t ^ 1.y - a ; !.G F ' { = 2.}.^ + F $ U d ( ^ ; [ D !.g D q # D B > *.x c & 0 M C B n B r ^ s ", "c / B # . K F - _ d C s = W { ( , w . ~ T q { 4 C Q d i 2 { _ } / : %.P - > a D _ 0 Z B C ^ [ #.m G k % x R > i M G } k > Y $ - &.6 ' 5 - r P F v F C ^ D > G D c T ^ v a $ 9 9 = 6 ) d F Q ", "E v A C p m A U 3 6 0 r C > - } c Z q !.; '.g - !.h & O 2 | ; ( r C m T o * p = 5 F > ^ ) & b : s Y _ ) < # w V 2 = x , / { a d k B | A v B g s 3 ) 5 P r e } 3 B B . Q v C % D , G $ { } r ", "K D { ( . 2 i 2 r 4 e { . _ l 2 ) c o z c - ' B T 0 ; T x L 5 7 F g G a # Q b A p 8 / +.G 2 R r , l m U c b x E L c P | 0 H 0 C ' } 3 K d { N 7 3 C i d v . - { % D n i 2 r } r v _ 9 R 0 %.", "x ; # w r X ; *.{ u <.v U B } 0 q ^ ; # h ' P 6 | Q 7 k ^ 0 B _ m : .; >.{ u <._ E B ; 0 b _ g 9 3 B _ g / { v _ 9 ) o - B q - ^ K & ) 1 ( p - E f w s G D q ^ ' / 8 m _ T = 7 i ) 5 .Q q ", "o { U ' c p y ' - ~ R - $ V 7 E $ @.{ h G ) C = e # E R $ % 7 , ! $ C % ! / u d 9 B O v k ' d R n M B P - F > C r g N 4 s '.V & a 3 c @ . 9 F $ C s 7 8 ; - v ( ) 0 - !.~ ; w @ { Q ) g ; ( ", "^ s t Q l 8 Q A # A 7 ; &.x $ % F ~ 6 ^ /.}.9 < r 0 m G F ^ ; @ 5 Z Q D T _ C v s ~.= x & 0 ] r ) k $ /.A } B 0 D ( [ m : o 1.- b P = 8 B L ^ h f ) 3 X 8 ; R ^.q ^ .q t E s o $ #.k ) L ; ", "& * C $ 3 3.6 9 _ d ) | P * I N 7 } [ &.r 9 $ H , 5 u P .E ] Q $ o 1.T ; 2 R 7 w A z ] f h A n ) G 2 u 2 5 B x 5 X $.q + R / 9 T u k M > 4 f a ' n [ M N ' x 8 ; - ^ l k o 8 P _ d h - ' : ", "$ G | 0 $ ) y c b % v 0 ' , [ d ^ = 7 b 5 O R } R ^ r - 5 ) _ E 0 7 0 E $ 4 E $ c ' % @ G . + . c c c x [ c .! g = . B i ( / / n { / ] F 2 ..P P _ G / $ y x w % o B f ^ l C 7 _ .3 P 9 *.", "3 - x . .% n ' 7 ; 9 F #.^ 9 9 = & B % q k { @ f x 2 r . o - 6 g .3 n f 0 } / p >./ # ; r E E .A 0 ~ k ! B M C 3 E # k E Q < ^.a d } .^ t * h & p B P { * h } 8 _ o 4 ^ y Q b q 0 < 9 w ", "& Q o & ( W T n ( = 2 % B > P 8 F q 5 , $ a q 2 : 5 7 b H w Q w w 5 W e | e ) s k 9 > F 5 q d K h ) S _ 2 k 0 c y 9 7 % R 0 P ^ P s q T s { ) 4 P o t B / # p s ( 6 a n 0 0 $ , x g y } v c ", "P / + [ } . d 1 B n c / @ F T ~ } } T [ 8 c ~ i $ } / t F F i #.@ 0 r R '.) n c i [ D x N 8 G $ f s T } 6 / 7 ; p y 9 = B %.= # D a @.( ( F / d q d y 9 $ } ) p '.p $ 8 v q 7 G | f i q D 2 ", "H G > 4 $.[ s 0 B & 0 | i B R e . > L a # s W ; 6 C * k p N s 2 . L i 9 0 } & c @ t 9 _ { / $ } 7 6 6 % e ! : y r G [ f p } B r 9 c [ T } 6 @.} ; 9 .c } .f - G 0 0 N : 3 e [ = Q v v c 1 ", "5 v # # i y e #.= 4 A T Q $ 6 n i # ^ 4 _ 0 % D E R 2 r ^ 5 = 2 > i n e ..7 : A T Q c { i ) 7 m e ^ { _ ~ | v 2.i H A p s 5 ^ B 7 1.L 2 ! r 5 6 G 8 ! ; U G ) 3 } & A | c i 4 6 > 5 8 ! 5 ( ", "0 - d N v ( 0 t q |.^ b ] p v e _ ^ i 9 d ; d ; d { x / $ c d - u = ( x @ e /.) : Z ( { x 2 @ o / h ) x s ) c v D c p < ! o R n n h U & ] ! { Z q k U D | $ ; } r _ / 9 C = $ 7 A / = ] ' c ", "F f [ W R < C E | 6 q A B = H o W h t a < [ { ~ ; ^ 7 4 ( ( u n ] / %.A [ y A c A 7 s j w ^ W c B 6 A 0 .| Z X o G ; g & - h t 6 ( w b v h k [ %.3 p e s ( { # V _ K P { h $ r B $ = ) # E ", "} 7 $ T s ^ ; w n ] I o ' V 9 ^ P y M C @ 6 ; s D s a 9 5 ; x ) A - B 6 V n z Z w 4 m 9 ; G Q .> 9 { m { = ].i & d M b / d c b F %.% s u N # . a ! @ v B p 0 b ) v = A 8 E x V c 6 = u 4 # ", "$ 7 _ ! [ k = q &.s ; [ _ Q 2 y 0 2 s > !.w !.f ] n v D + $ ^ ^ . i E s A ^.^ 9 t s g h n T 6 ^ 6 # [ A R | 4 n e i r ' 8 & v } F _ i [ ! ..@ ; L T G %.4 ; : ^ = : & & : @ x [ h x T N @.h ", "_ . ! G : | [ M j g 6 : v } ^ J T 5 .$.P 1 a h } c j % * _ ~ ' a ' @ R W K . 6 D 0 h ^ +.| y Q ( - - t > 7 > a T ` p X = $ 3 q Z | P = 0 ) v _ > R g : r ^ ' v % .._ n A d 9 C = e $ v ) ; ", "c 3 - ) A ^ p s c 6 ; 7 B . P w 6 G K d = I s / & q c % ; $ w d 7 p # C # c T ^ { v 4 D U i s h s A # r { G | 7 $ v & 6 : & = T b % n h . 1 . 7 T $ T a 0 j u p $ 4 9 n C h s | 7 _ I ' + ~ ", "P @ d p N x ) o e P T s F ; - G 2 } { B D # v r ] 9 } } M ( t G p K { ; y A A q ; q v [ G r F G $ p R I q [ t v 2 q a B a i L n b u t ! b > ( $.m i } / 9 6 !.R { p { M R K P k a s { g s A ", ": < k s = w y 1 M ; _ ) 2 & : ) ! B b T M ' ; n n - } 8 / : X [ s B y E $.V s > ^ s , ' v r ^ 6 [ B g ^ 0 / 8 c { i P 0 / _ = f . h U T R b 2 - f t l & A V @ , : U A 2 ) 9 G ! p q n i 4 - ", "% D z } c # U } B - @ s a ~ T ^ v s % n _ $ 9 x c Z t = 0 E r W s q s U } = G [ ^ R 4 x v ' = ( { 2 N T i y C $.t c 6 3 ^ 5 ; $ R { 2 [ : B p / 0 f 8 : ^ n !.S $ ( # y ( q { R [ N i : ; 6 ", "g # f ~ | g & % p W T k P ; 9 y s W ) u p A 8 m $ - q / : g s ! f y D & y A W e y e 7 2 y s ^ P 8 x a N - ^ Y > h k x 6 w s 6 & i $ F ^ p ^ v e B $ $ b ( 3 [ B R } F _ Q 0 G y 7 0 $ F 9 q ", "8 K _ c v / v $ u @ } 0 W b R / [ > m q : a 0 x % s , & ! 5 ~ _ q c R 0 v ! [ > 0 O D _ G 0 [ | e D h 0 e T D $ X 6 l @ t !.0 3 e - 7 A D u = c o a ! ; x Q : : # v r @ 5 = o x ~ = F D . ) ", "E P # C # @ g R e b ; L 7 = d +._ f v ^ ; w P ( P _ k ~ ' % ( 9 e - a 5 h C D $ K B ) G |.5 [ { t p ( q 7 C 5 4 k q @ 7 C @ c $ G N C K 9 A = n ..7 b $ Q K / k F k 2 ; d ~ T n 9 ^ } 9 C 9 ", "Y ; i r ; o @ u [ q 3 - P p c s n g } w q Q ) F 9 4 n % i Z # d r 7 O d b n C O R D A $ ^ ^ f L R ; - l # x h ^.s ( A d $ w F v 6 c o T A V > : k R 5 y w j '.D - x d b / q d / 6 s q A z B ", ". @ U ! % x G G c q y f n T 5 3 f < R s K ( G %.: } : } ; b y , . | 6 @ # v P E L | e r , n b C } ( , W c > g = x T = 6 c $.D $ Q 8 h a 9 5 : p A Q - !./ d h C % l V 3 A Q x y K x ( 9 r : ", "g m Q T y } : } s h ; d e x $ K ( @.p 7 5 { P $ G y ' @ H g U g q | ; b ^ } h = d T p = j v = R 7 ^ > Z A ] { * | [ _ h ^ h ^ k 8 a A ) ! G C R c f G ' ^ t V = v N % U B R C N / = e K G C ", "j * ' . F ) e s B 3 n k h v B x : v ] S c 5 / G V t e r r j W b . P ) A > 7 O y k / ; 7 { U 8 H 0 9 W ~ - R A R T n w 2 T c { .) # = Q d F ~ . p & K D t W Q 8 7 u v Q & @ 8 9 2 l = i F ! ", "= 8 = u ; h L B 3 + F c n *.{ v } B $ Q r @ M 4 , ]./ . A = g = K } h L ^ o X C $ a @.A ; H A @ y } 3 0 1 [ y , e | A > } $ D k T 7 x . ] 2 q ; y ) G k { V . B r s W ; f p e 8 m 0 R W G p ", "h d . # g h T P ; ^ m -.y x r ; ; R '.B % ) C ! 5 a 8 f z h R : - : / T P B ^ 3 4., A p v d !.Q k A % f : y P z & Q = h s ;. .h G P v A i 6 / T B ~ $ ; x - 0 _ 3 ` ; b ^ D > m [ = A [ A i ", "6 & $ ; = 9 1 $._ [ 3 5 . a $.P # 4 P | > = ; q _ # ' ^ V c & c ; $ - ..1 h n U g b d H P , g 6 : t R K w G F G P T K ; / i & !.A T t v U . v ( R 9 { ) $ r ( %.. q D 9 n x '.[ ~ { E U . { ", "' n V h %.A t y T x q B ) ., ^ / k [ ..@ 0 u ^ } v : Q C b n * d H ( k % T x P } v j E > M x ^ 0 F 7 $.[ !.H o / } D w / G [ T ( o ~ = - w [ H w C T _ C x _ O G K ( 7 9 0 F ) = 0 X 2 % n ", "@.@ k , A [ T # ; c Q n c 0 q 8 C { [ ..P ; H p n k 9 3 { + [ k 3 e E P > } 0 r | e $ $ u !.R p } n v G @ 0 V ~ ^ 8 2 * ) f p 6 . W 0 / T 2 g C 9 ' $.% 5 k 3 P U c [ P = _ y ; # p D q / 8 ", "& $ # # ( 8 c _ A m ! > ) 7 A B r n 5.G r A [ 6 - r 6 R { y 7 2 ; P 8 c _ x o ~ > ^ 0 ( > # G b [ V ( W !.t p u { ' E 6 / @ N ~ { f q ^ $ # [ 6 A V ' e 5 ^ s 6 h } } $ 5 O o # r C [ $ 2 / ", "U ( h ' = t I - [ t @.[ { ~ = ; 3 ; f e .U q # 9 V F R X O C 2 . ) a !./ a k < t x u ^ B $ g 5 F ~ | W h 1 e t E 6 6 A { ^ H % > W c } 6 ( { H | W $.w R v 8 3 / h t T C O ~ v 2 w G 0 F { ", "{ U ( - 7 A g ' = x , / u 9 T r C 2 { P { Q v + q +.n [ z x m e 2 $ e : ! = x w R ~ ^ q C . g _ ) 8 n Q = , T . ) P 9 ! w n a Y } d ( 7 U R 4 t e U G ( p $ 9 ; N L R ; h !.s { / ).^ U / . ", "G $ > 7 T T y e ! Q [ P G t u F : X @ ^ v B E x n @ } # 0 h x > $ c T y P ! g % r R a ~ r s } D 9 { @ q ) 0 '.B B # L T ) j ~ - G $ { ~ ~ O q t = 8 7 u k 2 # h b ~ C A Q 9 f a ! n @ b O e ", "s R C / $ [ $.m B - Q y : > s { 0 ) O s > $ 9 { ^ r Q ) 6 G - A h x a L V ^ # ! U . ^ # { ' c < K @ G * / - 6 w Q u { e ~ , 2 a } h - 2 x 0 s #.r B Q 6 $ v [ e : G w = i 5 0 6 . G r { 0 } ", "G > !.s ( ~ $ ; S /.> < P q * 2 m ' h s 0 ' . < i > ~.n h - / * # p ' T } ` /._ ..D v m h r 2 = [ D Y 8 g T 2 ( 7 ^ ).7 T o 7 z 5 = [ ) 2.P ; s 0 D 8 | M 4 U 1.- . e } Q ) K B 2 u } +.A ^ ", "c 8 e 2 o B c r r 0 p y g , G ) / [ [ ; E P = } b 9 | > C e Q e } 3 v ) 5 D v 5 w D w _ v 0 B T ' ; : $ { ) } F v N R F 6.8 A ; 9 k t k i } 0 Q z k B - % d 8 n } F w 5 5 # 0 G = ' & k } $ ", "..j _ k , D . a %.T o 5 T : i i s 6 2 } : B V { U 6 = = ^ .%.# E o C b R $.A , g x . n i K | h e h p x .v R d y |.P q k { m g 0 p R 2 x v = r ( X . T A ^ [ q $.[ N 0 % 2 e { D % . c v 7 ", "( m a B h 9 C > F 6 / n $ ) $ o | i $ p } ( _ T e ^ = $ b 5 m i B d s F > ( c 2 | 7 7 $ w { ' k v { ' O d a ! %.4 0 6 x T @ x .! ( c 4 # @ r h / @ } _ ] r / ).p T s i - c y c , w | > t C ", "_ d 7 ) ; ; $ $ D 0 p < ~ & R n $ t P S = : ] p 7 q / i , _ d ) 0 ; } x = 8 x q ..! E a k t @ % , W ~ 6 !.e % m r n 0 ^ ) r 2 2 # Q } 0 ) p 2 ^ 6 m t Z z m f * > 9 9 D X d B B m p ^ 0 c 2 ", "| P Q 5 } B X 9 X V h 0 >.y n q [ h 6 s c ^ & 7 6 , { 6 R % ( : ( ; B H } .V - $ >.E [ q i G 1 ; _ ; 0 e w a - ! B e p T d F Q 7._ 6 A 1 ) ! & A 6 [ G T 8 ( 9 G @ _ I [ ; v . 6 8 '.X { ~ ", "a R ^ [ ~ 6 ; ! v P c - K 6 R & ] t = 0 | P O # q s o s v i a ^ i 4 A s N ) F { 2 ~ ( @ y r H @ q 6 U = F = v a x / i 5 7 c 2 { L r . } k I S $ ( _ & D x x a t K G M 4 F g x - a n R [ l J ", "{ t ( v _ # s K . G 3 q @ ! d 9 b v D ^ 6 a ; g 9 $ d : 0 6 t A ) ^ / ; f D d o A t . G ^ ~ @ Y 3 p O n w 8 3 ( h 7 _ - Q F T k 5 ) | ^ T 9 9 o Q X B ).c u :.= , B v 0 ' G ' 2 m = } $ ; 2 ", "} j y n *.8 } 6 s l {.y % @ t P > p 1 ) . > } 6 .$ - ..6 > .@ @ *.5 $ { $ !.,.y E k G q M R k ! v q a T D B 2 7 T b 4 C z } K - ; E >.'.x D C a {.t D T a q h g { @ x o { - } C 5 v '.c 8 ", "0 { n s m | . 8 K 2 x e h ) 0 f > T @ !.&.T 8 i > O e 5 a x 6 o B M % 4 g ~ G T { - ) ) L n 9 c * Q 2 G v 2 o T r / c T q r c $.q l @ [ I { O e _ v p Q ~ ) c 3 i j # q r ' 8 _ 7 r [ !.0 m ", "i ).x = %.6 t y ^ & $ X R | O q P ) Q = K ; R L 9 E %.D 0 @ 1.q } H p | k B 3 0 ..i [ * e | e # = v 8 k e = A b W - p = % ^ / t $ M N ^ r ^ m ; L ( e 5 3 7 / A - 8 8 9 N L w D w % ( r s m ", "R m 4 p Q c / d k / v h 8 s 6 - [ +.S $ F s & F q $ a a b G V g F 8 6 2 [ | - ) [ b # x _ c 9 G . # o { T T B @ G $ i d 6 ; 0 s & 7 { o x 6 t E e : e 0 ; H s %.M h 7 ).% k q R [ @.= { 6 t ", "*.7 ) H P [ k s w = ..n @ 3 x k v D $ N ; i j B w .5 7 G ^.x ) L A | E ; w $ ..t @ O A & P 9 = 7 g % A x { ! z d A } n ) R @ $ m 4 ; Q h m ) u F A D U = # c / . 8 } ! %.U Q & | A M 9 O s ", "# 8 / s B T n t v u 6 P * M # 2 6 %., | / } |.p C A h k # 9 5 2 } } ( [ [ v ~ { e W O - / 7 F > R y F s v 0 , 2 } v s { } ( : $ $ 2 / F # c | .O } s . 3 : ^ # T g 6 < ~ t d m 2 R q 2 c t ", "r % 5 E G 7 $ } q 4 } b = T ) s o ; 8 T r q s , ; 7 r : $ F E 5 & - v $ B P g s ' B P ; } ( $ ' d F 6.r e B _ y t | @ ) 7 8 * % v h O 2 D @ } ( % C ( - q / ) : & @ E i 0 a A 2 ) $ q Q @ ^ ", "s x / ! d d 9 U Q _ - k } x c G & L '.F ; c a u _ c h h 6 B 0 2 ' h i ^ m Q 9 2 [ _ T 6 d a %.9 i R ) $ p = ; _ d c c d v } ; p } d ; F v [ F ^ ^ 6 T { A 0 v t s s ; A x W n 6 i } o B n 8 ", "M t ^ @ 2 Y 7 # >.A ' Q / 5 p A $ P 9 t @., G % % ) 2 s n M a ^ t 2 l { # &.c ~ D - F r A v F r } F # _ p { c v $ n c > 9 B 7 ) C > 0 p ] 2 = } W F | R r f c = E ( { q B A ^ G - P r * - B ", "K 6 0 = 3.' G { a !.~ ^ 3 T } Q 3 @ D E 4 ! 8 ; > [.F Z > f p ) 7 ].K t x | m . ) o A # r . & = { q : ^ #.! 6 7 / , % 4 ~ q F = ! p b d d > 7 2 ; 2 b L p _ 9 R F # c M s 5 s t @., h a _ $ ", "$ i q / ) $ P C / > 2 .z , g 0 p E p F 2 A h ) b , @ & R $ [ P / 0 ; P D / - > .z U . c / o F s ( # @ !.g v s C g L p n 8 w P 5 a M $ 2 A - C R $.s z }.2 [ # r B } w ' > Q G $ P # > A # ", "C y s y r / # P ' 8.+.2 Q f !.# 7 0 B '.g 4 !.q r x d k _ F k # o r 2 > e f ~.l d Q u W R T ( h m ^ @ n h Z @ D P &.k } h - ; 2 u = } ; w T r e _ E f ~ o C > ( _ k Q - ( Q 0 f ) B 2 o e P "}; vdkbuilder2-2.4.0/example/hello/vdklogo.png0000644000000000000000000010274407343575736014325 PNG  IHDR2IgAMA abKGD pHYs  d_tIME4 2 IDATxy,iY!2w̧bmQ -Ңlm^8w5WDmھF[DJ*(3s!3#rΌEFDf :Z"222̈'$s>!==>qn]{Dvy{d6n] nLhoh3&]/Gz40knܷ|]qx>'?y[tw$8f`,3ڸ ^R}u-A jNgPKѣs^4jF˨=8;J&K{fiݻl3ϻ}:A>~=s p/o?KAJS|Rnx BY&n \n XTtm@(F2܆"Jlb{NVf'9n NO=݀YףPdFӠTpv7]m#(۱ṋo9S.rrIW9tK\! $m˛E5!H & BRڍ:`঑U>nA\PҙǻK6ݏߤ8^%wG/n *:= ia _|GXYT\Ug,OI*ZYf- Ԝk2kxZeҥŔT\?n;юt'Z#NZڐn%)W}ٳLY׷}F1Sox[^t[xXV~yTR;8lsVᤜa07RCB u* ?ahZy (>ǂ{X%XpF)XO4L#9 "7#$DJ{8Vq֘ \*4Cz2nDÝmUdGUSq;Hj@{OjKPfgnC&+1iKefTz!iH-'4ap 㤟KVeuy"D^7m ܨO|5}^+M+o";.OVBeuV:JUl3XPh9UI9I YK6vzvfIY*mIY 2ӌ HO8 $Q1!pv|=}s-Eb?v&;?}0??T{(Q]fᄏ=ߏ:LnoUz~շPu=8j Xc]qH#≓ F0lt) ,%)4Y$) ,Kn@AHXfF.Qtc19PYln7ZhoIَvT6Mdz'3\ ? zco߭8ב~Aq,qof<3YYH ц]oac"I]t4&4a*9@ѳ:x_9E6A&8{N:\i=eجyM䔷y|86'pas?7bY:CrPIJ6=fzhʻ~#쑌,DD ѺHYEHyh&6Rb $57o* 5'-MXvcN$%ς=@ި7y#~ǍgVc>w6~/pre7Py/Ua/"?oll兙9la9 Xۆ^FFXEL4q ֈ{0)$c[cB`F*M] ,+*nX Ra2ˊKNc[$'26nGwa^\63;?'?~zľӿx6qV@{كUQMo?? 1,Ƥ#o~|+f=4m= 1vh{zqq,&P PoyM mx禞gՃQfyvvG^4ȍUH+QoQ>.MkY 5h#\^_aǂ>7[8w]bGVؾǹmv4uN%Ot;𮽙Gp#ߘ ?BncɡZ=έ<[o[_yvXvnN,eMo&w|cm݊KJYx<*"eD6EYZo2Ɗ,V(~#"GۅQAArYt͔lÔ/9]6 h4T]9"zJPZ~^;>,.g{/8gXުSoҥ.|WnnQ[oico~^Dۉ#~~sWy׿­R6AN堀oMʫKqS6f3K]J^Ȧo{xɫ~brl14 |Dd󊊪%Rs 4R:~-k0RdLIADdqlµ 9Q/fsAR^sPENx^Ü!0hԺ4EzkFpR~/ \]'ѷ|%V:RfUFfTY$`[ Dr\R6 1g)/`LnTVC8&r1RYé7#Z!M\Pp^R~ ޿c i&E}ԹФiȫr"9nô{0^p{Xo~ͪŋp:gc2n`8~l!`Ry #TbbYjdM~}??m߿gf}wLCJ=szQ NhgWT<7"3w,Pq0\ L***FJD {P!"6*Zc"[BgdXT a^gkJ7iyc8 Sozƶ/:mC~߾'??pߨZۏ?c+E=ei 8o_+nqDi7ؕv|n،ki\J} ׺Mr봪 <2}mKh' !*aY**!k  ^gުߒn;JڨJ2ہydFeXw:% m"2WAfHŽ3fґ,KUb%U 4RT zx(5#l^"\rZҨdHs.$5IN7/{1_#|WrxKcTb"ҘT43=DljQ)JYCqzc6i0vyY*ɑo&)|iˈz3!0 abjJM`~y[jmuArj0r7\tڜ_{O7\1fCP6ۜAQ@f=jB{cՑ{?x$Գz6A{S?MR`.;58+]"j+ (m.u$Kkxi (p1rJh /[5ը􇐬"eIa`(M˦f$0l7mv3ZNn+ S@fnEh/Z."/`%[$0SZqЌ1^ Z1"Ud匁WP)YjN.|o?O5K3v +ace8 ygf cK>lj tF0 !G@)QҝFY(ȣ 9=iuvPs/,@8 ceg$xx)H y}ھT)h" 9x*7n XɆCx"[Kh',͇xŹy4s R"2Nj u_0Ggul>="eP[ȴvVʲVqz>+fDhx MiQ\C NJ*iƣFDoD*RË7 K 85kJf#=.:m>O}{a(gnH0fͳP-Ss(E1㷧o,~revռvS_+T+s,{}c\)[g1niQ1AAh_dA"GsU+}RlxǛo?گy&oZMu J%? -Nk,Ѻ1K# Ijݓ>sMeSCrƈ|&:V ij=My'E$ Պli=iB; ^un쇤nK,b/N(KgabkR`BՓq6`܉VHnw\~  +ݏ9#),,A  ,qq#ZQ $f@NϢ>Z c>+&ĺxɬ2?~߈i0BB8-#LIH͔?*F) K#0pӔ(씌bҚJ@j%$H7Azaۡ29굌#_ʑ/' :7 ?MN-fVqj<EKKD0 cVBBMԄfXZBf&Qi B;r$B?yg?uяGɯPZLdz& /iB6GTo nU0T TTBYybBb]mtK,ηUV-;Z zA8J`4(,;v6{]ZqivͧT~19OKY/?x[KJYg`XQMZ0J9 VH] @!Uo&B8? Pl H=KZ@t$vFbh6Qo'HXi47\7J8^[bn CFz {-&!qNLϻw]rq#'9 YlbiVȍ* ElL{t.f(\C, 7׺vWҪZ%K6pOEuDf罆kVNT_C,H*[f$+в8R0FL) 1R>N}Ir&yy܊!--[v/Aj~Ol墁떔qy3,'Q%42B 9ܚUDSobuz'`; W򒗄M"<\q" KO^ƶ{MAӥMISc܍dwd#;U.Lb^a{lfxAFY r\`(rDž sChZf9zRey~zCbyM?͝$9ZGQO/Gko%67!Clɼ&BK/esAx04Aa)&ttZ|AQV-% BK:j?ԔQ.F=q[hF~P/FwءHi+"[y!_ Ci{fwEo^$tౖGNp_XS@ڠueaey0`0\NZ`ōG\{8[:.\GqU:opUyb}•ϲ->?z1A4O ޸wA|}Yς*QbbK>#!<'4A!$6vTAj7 DJG6=gqte9F䶣+,`YTwbZ|ۈL$SȰ,it)Q.ZXSX>|b^#lVoCow*Ft_nIMlTl?_GD@v!NJbMij6^XÒp1!gGKoz¨;t2T(Y*Jw+8}6#I&k>vw~oC}'GףHVYLxd0oZ l lɁNQ&Bx9Ssz>K7 y&' 7yvY?tͦ}¤eix))Ӿ՛V)Q2IUF+Qjut iurr!Ip9CKg{d翊ow ll+ B*NANkyiz3AhxڏOq6Y9wP beYRBƵƊ B~v:E L 4}YO6 *NRÍv̳t@pSϱ"eļ4QQY$htx.Xy㥶EYf:vKATQ2 YIq(qi(%^Jz԰2^ Fȗdzs\Dfi=2S1&";Ew+K~~WZȰ+{]g|>w) 1S{%vyi3+m^O'ݾ9w?&ZFC< 5wd,R6Mmrz3"n!̙ wBr:)gc-z:y|2vܸݱ0g.h,- 3, {m,h 3uz>Se6&nQ9T-=eǃq݁aV1@CΔr 8ݩEiځ Jj`䍰w9S{›o^ijH객# IDATu+/~Y=VڡZ='^aeeDL"TYfрULIO5/#qVdh $˝9r`:|Ӑ'g`haX5< cf;x\u#%Eٟ'{1S yrQp9<Υ(|y+Ys\NÝZ\]ԝF ߫ӸA\uGbh{ %TXBHfrj̎Blj}fe _~G$)LWDpb.q>AfTXD(}m{'V~[vG)֪EcA~?=#V"1!J i&R/mD  A^O+X|#!LYpvãqmzm~OvjX5yUb4ZYČ&~!I2A^i%&+NfNχw'TUjĦXbyoi/Lg1/(4:k3 Iq/k`񐘀[z!5K$S@RJh^8Y3B?#_< x8ɔcGid~o{R8+FfĄV@ S9uqd{q+Y۫t/L|Xb@/@Pϰvy.;hrQ a$aC4@ݧG> /͐F);쌼ݣeaM^IS/≰ѺYf$1A`UջTaEc1^jEL}HȎQCg8E^KoIk)妦`\t}8q*mYǾ\cΒÍ#WIEc򺓼!㞘X?L*;bGm~?m.?zAg׍ 3Zė~ꅌ/09,iDbQɟF'xK L(1凵a3*H׃?($;L$f#t#2É}`*xk?%*NJd*Ur:pղiYc`G޽@q"2^qJaDzK 4>- RnΓNɘ>,nG~{~be/?l7ua^Dbq5LjXY؁,MrLe|lPbi91!ؠݪ``"C4R ^G\Z jm6T0ufZv/l# +/^ 1YK\ݑ""m3( '8QO0ӽw2,;q9 /_+L}Adz31(\, x uEIiuc>X~kaDbq6(mEX3!ycvaqk;a Pe5ů| ~rD3Ys'F*\ZZ%'R`moVs rjd >  M?zÙ ,'Y$$H,'L<g鱣+aEAbvNUQ)7:HN71pbN SJ%{/*s:cܒ;~vel婌ќDhgr*c*nExLS_P.0ڗ8ǧh6S eplͫjDb쭌cqS-^YZu=`}oI z*Lt{9$Pd0.7ؒF0Dqz C?*(Ik$SD=PckdbFrNGO7-|۫_2QޘnEX)7EF/|L3N#4kRiرkS:qT <.Ru\>읫(͒IE^YI$8^n9[4qi:ڱqK&}ozǫm8'_{ ]( (zYjg1~Ǟry9Kjzjd}884K& gj>@:AV Cvp90E4= xk'HljwEodHb116yﶙ'we'$m. cw0&0'&T7|_"&QXVF gJd֊~1L Hnx<.֧U}ߎw#zo&Ζz+k<ɏ8%L@V6-cH,JM0)qZxa}J˦Fc.sAKn Bq+k/Rً@9iG‹~7$&i1y kՇ C*)M:>ږ3knD` f' +iJf {MSgdce$v+'1FIƲ{x0)v{o![MÕaXo{k~3߯Φ2~wel.oO?u_{?=fœFza:L}ߟ?f/"_t |Z>Y|nnHp]+)W|)`2nkFnynD\Bٍ6\]v9KѤP`[fy{0#G!d\}NOMHcʇO,K5iD*Ef_ED7zw})2s<[F\In]kl <MLUŔ ~{ -=O MVp4{;x[^=zѫPD).>ME^Vbx𫿜a|?^羚++d5411EZRe/WF=+95E݉!w܃:/|P`s J6GզOm})$y例wCGW\Rx Y^rXTIR u+\J#^d93|4% .AO:=䜊?O5Ѻ~?e/b)BӣGp{>Aϥhl03J^o@sq.Bo^ ~B .gvTkKM=`0:v)MxE/⩟7[*Lݾ_Ȯ}*UIjgQC,=iPfBu< t\Kl /Ǿ!Y20sݬ ǥL7Pbgzi5I%5=.*Rl8NrtJ,%~fw`BY<|G>pB?;7Rފq kaH/u `_iേ\ܡO-i)9_݉*bCtX ܗm1{GUx׊X\ZoRn)PWZ9 ^f}aR(2,$BVbA-㡦 t{aAvo0p?]F*I톿a. _䁉ev#N0Q m7c?l{bQ{|'LV$)R`ZxQⷾ2&`+g2"iz@b:5[1bt?LV(p7/!am|:p"3Kl O]뢫Nh-?"3}܄wvK~AbB-5Ŝ|-9;d+ x(#%w?=}<؏#י/l''x]ChӒw8j~/ .Bq3Z ;:EPc*RݤvS z*Gi6:`?0rd>6 pDr i6#O//7Xq S&=R2 MVQ)K\i,_Y2ݷNCPaK5R0l>"U̦Ak) )~Ͼo[բ fW U F CqRϺ4O2h^ tvw^G=ԺW)L Ʒ$n奄pؕĦ0 AbQd2.CXr\x\M"ؖ%֥gdXh$$ ,|Vh9+6|틾9M̢A$%KߎI;ʖxGaaV/Q#Mf `Ld/?}qDd IbTY fOFl+4Ƽslcô1,oy+G$:QHm^K}%AA G߬T7 =A HlIr בJ+pTtTZI4Zߧhw{6%ICC9$gIFmt7!N(]rjR6}V 97_]Pd~O~8{vJR^ X/v޵»fҿ/e搡7$CVߪwKOpGpdzg.&+XT-"Y鵸/)@>99oAlU9A#o>Iŕʼn6{aRK9ܬܬ_NP?YAZR 55ߢh +JK w'|y(yh<]}U{z,aUÂR Y93f^fUJy'}q` JBNnܘ6gY5g4h `)F^vljFkxZH Kz'S@(xH)Vai}2s*RlN[Qba!$ahWd{9 ˗럦:~0":>R],K=aVe֘~pm2?=K] aaŊ<-+*A8Z?ejE="̻靚8 ͨb_YS诅=B-*k&O:"joգ}d'Bş I.}YgngY<7NzBn+bD䙫4d MM _#uCיYids|A3,Bv:zۦM,Pd>KDv!.AZi?,#,]G57cN80# *2Liڅ3/eic5™@F7^Z`i_U14櫣Q9ez=1R[_R"R:X"׹+O<3Ȗ_[Xre<} AmsxObo>JiPVo>FH8;Lt$sJ RRrV v^fcdu<3!{enɥ*D6  ٞV}rk^< ha@m.<&-pݑs 6 R!yoՙf N*,N`XEzfA20rtj[D䴐&]~:U,af\=|b $K =+NmബJkN-hdHz5~T(S\CgiF+Dhy"?O z K~jN^.~73X+gP7AKa H2x/蕌++d9jƕH.*ktkZ/& IVoQ‰vgu* U&ͅM6!ZEi6)lhun@"rs9pl{fRv0KYZ&f)/EǛ[y8 )}1J&LpR(0ZIL 1JɞJ`jXj9nau IKLOpwn0g(Coy=ĨG&Nj>G%?̮޸& I3߶]#Q0!՛Ht?. TWj8AT"uC4yS:C̳Zbp+\B{ ?za*lG%ҡe~TIVdfP 2+ U29+"/}yEf!r3 s0t*2Cc^әlXrsJX) +mgZ\C@Utif˜ foD c P.DW\fq!h\ K+xk(N$vVdWov`My,r1$ aRqU IDATwKꫴ N݀Cnoi{9N6ۃ/JMO W)H#) 8|Be.M6AFD lAR R^[\uI;WMuCQ7lqe#GEy*EI^g1哜XX4%v9 >8APQb>XJ,6c{" +5*l'fycq,mOS^oxI̥P}fA9;RMC3OB $%̍F3Ef*s08mV",A"BKmʦZn)M&˄>ձϥy+kǖ~F{eF-z'A^si",$'$Ah U@<,z|w'L=h+֕dw,XyִCq0%iJ˦ j=.YX 1}mc<19]NyJu4y2% P`ԐQ򔭱2jEG2E*l>-wLXZto?a?pԞ7v'O|"$%5`ZB_(pRBEHgC%$ ls:c*YעbY9})2w5ruО4O>,Hd2 u\d0o$T ֈ%~҈`A׺JAb^#dt|o-%z-Eoe*F>\N*V7CzgtcrH>zH|0K|3u"_0 +;R LB25r?CA6|Ä&0& 56bW ! ٨hbw"&R/f\.%T-^N7z$H}aad>'7 %c\C(NU. fm)M/4(2 yhFlh\}sqf릯P"e17K u7~q5:^$MiE"_kн|D,De)wg+7mih!>5o li6xjV^ahyjڜuG,e#OLdw"fnu/OHi~F Ýӧ,)Ac~rqWB+[?6mP9KTw`<8fc.|2.KV(8hԑR@6,d#$/e\b\bɨ< 1p -1<^ ơ弧S &PqEd{3Rf1nIIhp3->B@ Gݝ"uxx5T]mFJ,Ӭi֙o 6(91ȃ6f0{|k\Jl{f4ǧYʲb\T‹|}<$ !f:mʻ8214$qOLm;1:N^qUݐ&`~^1e${R +!4$y;Izs[Hb ˙UrfL^SFVGdM2PeSOFeN k¬~]?je Zq W3W8f^Ii;B +ɘK/}&"ZxkIiMb栶D.&J=8v/F7P`~[ų(7mVS_(hWi (BXqhLR{83׫zQo,ɖln08d/ a ¼& !@XN` cc[-Ynz(jlꫪk9uNugUJ֫_97k zFP(R#⑄o |8Qf-.#AOmf+y5"IuJÑ>C!1ٻnk\Z];cl$&ȫy<&V 硣2ق#%q9 ƨS4fG2KFuX2~2uU9D-6$6$ݙ]ZU1}EfJMp1zIWis$1F]t؅ &=NZNI"s Oic6NI/td#m#$ 㶚9T>U f!K[EJB,dBZSBOS# &JSB>Jb+%+NBq@x&o_LoDY>Pq&ʧUj$5զR-a8`#I1&GWtY*Ӻ[] dKZR;u5 h&粐ޱsIUUq9n˜AYH#t䥤&id~N.:|&B7kйc2k1t|&#\-iUR҆%#AjJLH`:]4e2MG%q6L(3ÎrjnڠWrI ڈ JDc1|x]Q'| 4;ղ],HrD)9RZ81JAhzU WnU%iYI(JSJcz$1RJ %F i6j aiUPS;`Q;J 鳖Д/>"A@*#KdP$ 1Zi xq6M :~_Jάl-Ҍfm(rq9]~I;rE5ij2|]2~LqimSWq &2'>4D|hqLfHOLf 54)Xue$ )Iȶ+E8s WNYF TK?tFNj]/P`f/KZ/HBIPzFc[$(KIj-~L%*e)gXPuI>raVZgI1SXͤ1GD3"%zJl#/bLݯ̇6My?̸>ƙ-$cl.tXl"JYi ;Y&.^#3{~G:LSƬZjohRqdDy}O0F\ mߤ=CIj4Pꑗ>%#=t3E^(Q_5Ib){(S1Y")+ҏ4LsJocF*S%aK"ZZJ2ӳi` Ӛ}ߋ$2=4( IIaZBR7R3I<~7*12"s0n|C'r|&+2&MQOPן0yG2)9HN(H0m HMVr^ @aR;G ]=trXDq*Mp$3P{<70ξ|^uJdZ֜8iXf@@1-^mz$0T&쬒X7NBaCV"&H?/&k֬PtTg`7&_\b^;SڲP d8=fӮ7'pm$,K VզdHdÏ1_ C>;8p>S+4DۻȆ.قw烌I :5iCc8_~RֽW(+Ť.G=ʺ Xxc{e( M5&Dj/b}Zs2C GcyX'-"ggZHT?DYdZr 䏘l* x+A^/ y1Ǥ]LԼBNVĜ{e{f!/.WٽKbb]z6rMtۏeFW(8ݙT2bb^a^?U(&em$7sh;$9dBC6*T\p#e1D" Fan;$r~cZ,TןIC6QJIXڲ0g5J`pBpP$A64ݽC$c0Z+z-1H۟'62-R[Wҏ ~'G6 IgPP4% 8ϽnYrJi,5L @/QK#l'Gv^B ;UE1QWÄJYU#T˪nP'J~ /EbTJ%zE9DŪ 8?u*k4k76Exo~\5%Ran Iq.er᤬v*R$JS 6zyxB%h˅Bq.&R$Bä#$2>6,YZ5ӌ5VAߋ=\C"0S`$A6%I%<Ckv6CG⤠ҿ6P? #媚{m#Bo|,b]mDhMnN}$ձZB$ЪܝQ"+ z6CL /CW@~K.tLI,~mL["2ۅ@)*Efy,[[]b⻾[vV.0<~j*+zT-f|V<>ڨ"5%IuZi4ONlͪp6JٱwhxixvRj7S sG?$a'566I 7M$"ߐH3ն\6"&YE5?$^KL6+ `O˹ د7u *&`TJj:&HȄ3'A&!+ Ãr%C(Wgv0&VZU: L0u{Jǔ.J LkKKbHaH|K4yԙCY%5y 6tɮJM~2+mLTztF^eЫTbw6Dnf,翐:BmI%$IϗS)L=”v[9M*MVxwl4Dwvz#a#Hȟ6y]BRu 6,|D2 I̜O˵*C9/`qzRCE$ 1eE(/IHd&$IJwt102\GOaֹ`"LoD@MDn~[S$)G$ϑuS$I&O Fh7z.3ʥA;rn bdqzwӻdk6›tm |B/ -c˾Zho:2 g]J47yRn.KjJ=IٝCI^*[J%yw1MNH6bvgt-Oc/{$ &tlbu\A\ijeg$JiLuq'a_> h{?&˜~jBM '|tYwS&&$C-8݇w2 EwA$4H:>]Q$I6LbBLsDSIAW2wv˓" H,t(u Ҋ̘<@?-۳JGjēNd Lf};tI $3 Z(ʖ"<~( \u=|=uȳn-,2>#FR)AVI_]{yu5gh}SR5{avBrӃ0l'f#pEz$IrHe#>!yf KZjJ)Y jz3̱!R9ϔ:"i*+ ԋ'K~#ۋ(ƚ^a l7y ǒ#o%l4D9@ĥ%=tj`yPNJHn61-UDby2AiROjV'μ%ﱁCmMHjcAIh⁤Lb;sCx"R39fz3; {O9hfЙ,7jIgҝT%]o=_#lo=q^]KU/уm& \u,q](I^ڙH! 5R̤!EA\ndsSY>9Ӆփ_;kGbJR@kHuT!ǹm}r@ Vf4Y0DC ,JBIT$ɴJҵBV^,W+H& K8-^Y㻆T+X6A|6+tF^BYv cԠH[޴DNYK=IG#{0yfKM9;v} c$9VBlsRߖcZܵV:JhO:)=M=MLz8-_ێg+d2F}yEVOK`boyRyKU$w靥v 8XP*D9IF};r~;LRL1{:)Y=nK vlpxP8^8V<qd3ebUU>"SsϪ>JRTO$T.7.'Km[z0p`rxz(G,JuUNvZk&lZ#Pe:`SU[~_ˬxuÄT"d:'ߥzL,<^\WJhʶc_q ~z׈7etvoTnCy}Ѿ޸:>Z>y^=HS9eoUԎ R-Dmz-Su{JYc$$P?oIJʥV2q<im[K_I_VI(ZGO))JcsDZ[ ~S&@e*l̚u8tTVyT}뫶M/CYW.7`@Ǟֳ(+YT0`늎X ;8IG;UO7n%|A*Z<_G%qRmli8^^ $9u/|u$X+"cѦ9}!.y'"`?qX9Dd6j%qvֲg6K< rڙe]'ӛe<\/ ZiZ鰙w؁D""16@ɦ/[!U >a(ί>[Iɬ__D Ji\l˗10,mq)! kL9|6T%i*cqWMl#$aT\jH]4{B8\"mm3g$6pL//iK4`_b4PlLb*[ ڙynUJbU%@7yYk= rݼdp ̡)74wRywmj0׭1Ch,kk͚p#ξqUʩ Y*Yx] /`o/rTW47꡵ ΘCr&:.{ $;)SYBUUk?U9 +etPb3TV*a}4&RNG^# ch_gؙUzϜ=j;z3zz8qlο;2xLv3ΑźU^%H;Vo*;fQ`LDCCAb:\Hdzk5>3oW:VVyYSGN5+C.MsXe}!IZ9qN 5R_ M\,lZ'[zi]|-dbq> FKy9JtZ$2-sCL[Dy#AO~ q;|uj. 1_(쩊G6@ xKV  Y%(}K@_KT`lyN>Un >_8mZ_40)!i눳i\crb,G㒒D6ZyNT4B,kJ?Z^[߼x)Kz]|M*-ͺOVj=wmO-RQvUlٶsTLάp/c_]+o e^cHc('r4I$靨6cXj" \ַȤ,}KeWJ*B:!gSJdcQ-*ԆSF(*tbUJf;UaQz^r /F^ZNu8U7[DәiQMHfѕ-M4H$ʮ 䠔rQTȪ)a6ڙK=rTJ=V`9$f rrPVH:e=KJE>֛n^TEʗ:P^Z Fy$_v{ezё%6 jSh{fP?ѣ1*ƎǞmyq2_X}K"}]K'UZ)ʴ0VӪ޾RrbCbk's0pa$VAeL,.V j%mY"+P'7O(ZM5ӨZ.-2=V2yVK~tL,_߀ Z>)EXJ= ZҒV'_^GZUZU*}uF1 %(ITI_s*iH둟Ld5W3:j%DGA_1aZ AӋ[mJ!F=JT7䯨bR~^i}AvEM=Zu{Q-=8"U%y( %\DD;k(1aZ'u: T>f\AF1^_$e)L7ؙ Ծ[]iyv,JiOR#[yW?<&oS$4sңHHu,Δ&Q#T/Q1`@ 2L~_uNZkQΔU+/]tc@7wNK /LR߳zU#s,{tD+9_trQKgj>{>+|jg=M{O%2XT$FL"H;<.|ZSmEF(b[Z􅲊꯭%%/^j']mJnq*iS۞;*} 8+E_PdQns6Or_-ycz꬞^ >%Tԯ>-{Q(.u%]g]E$2`lOp t$"C9yשRR 8NkPt\2}G&KT„iMx;F׶( 0eQBYXO:+ aRXRJ>Zwq:Rq\"1矨1%K d:ǖVeWhzj %K/ٖ٬hRjї\A.aWm`B rO0aʦ]K0zґR}lic A.٧ӋHSO4Gm9F%驩?63`i}J~-֭Zc>$EYȨTqWg(@ͦghf\d;sm kK֭Zǽ'7ˮU6IcuTs+glm݌ߙO-o^X+Ǫ:}2u3o-;VG5/4 \mv@=:_IL7:|Fӿ󾔂RԪ}P^玝Vx_'N֭[Yݶ^z=sl/ b bl@4S ¹^=J{ ^xin Kz3ν3o6~hW+IMeYr9/4;U@(X0Y1x'PXW.K8ܪ:.Gĉ\~P{]v9YG?<̬Öm^v5v"λnڕc>ģ;w9G2oαn$I+úUßK#vuaZV}G9t(r{} .',<yI'Γ ҿn)[nSO?wmv?=G^<{ Dx_+_`6er5*n2N>ne[oqF7S?{~/|`]սZjV K/`bl) ?<̍\=EO?C4ҋ垇~/s5W]u}Q/v= Vo#G>u}Tҟe*9]nvKAN$=92~ym2a |McR~ymuwwԗ=9督eRGwgq&S;w.=v~FVmc:ws3yT~ #ԹP]]=|ﺫgW{z3]]Ù{]nVP>dƍ߸Qv 7dRnaUr,{XjzI'c[oq.'_G⼅R`$vop{=_Y3r+>XeJSxo|v1U&ɏtهTO|&yǝo^pNS>g?ͥ~uA>]ԗWg|РjsP};U}{o.-|_~㏗;όCg˝wܙKP=7rsz_O>jomc~xեvYꋪmO?d~ơ3T 3!_{ѫog:Cuݧ|2?g~<&,~s_)W@?-W_T]wO>s?>?)tYƬZhFekv**TDp^y^y@~6Y;44ײß9GNKP⬅w$]yEJj_7{bzpWzf|ӄ"Lٗk>|Ie3mkI5䁻7KX0{U(o+=NJp(1ǜd]?žᠷAa5 VLR ix*=\z*I,uwts5Wrf DzH8Sf_OZWOw0QpؤFYuWq-stuܟĊuXߌf|1057cRr|cNeW6|iSoQ:>x~eÖ-qݪkL:7ߥYu~<;eB){Ȇ5k<&MWw"M8F>Qhl)b-o2mGrJQ>iB}Q !Sߺ[8n&fSD?u֍V?,?(xo91V̚#$RlڸCM8= ;:;wezs4ub]޼Î͡Sx'n]d]ģd=Z5+{d<\ʩ¼=p=\w"o>e{h:`4ŚMH&s^eqG 44 %|޾Qb!Z&5 ;oxټe'U;U1IDAT;[ч TO[]xر7- P кf=O< ?FIStiɺhݰ7Wlg(HK֖dZvd39w^xE6} ϗDZo܌SGsS= KXD.+~Nw2g'f>:wv||?~&k%hpo6)NdRS n77^wR8$#{{KYfrGٲm3$4OjG+WeWv/}y-Z?~Y}lYcO˄yټ5+>`w,ߟ#MGW[o`񒥪g5g%JC]3fVV?ʅ)njD.bmy1WxTfƍTWQS]bض*LLzVV6Gsuov<q~E֨E א<.LVYq]8+kh̪h~[֬`'4y2s܆d$`P_29M<5k8#8vp?LTA x>L;&Sx#>`zhnjp09=T:IogtfėO>AնgVt͙ӦCe[>Î8 N'n<.G99Meu hgy!\t|HO/nz}x>.Ʒа'ǴBlH\ ƽ800 2 |k+ >W  0pð0`ࠇAd 8azDf{a 0pÐ 0p 2 0̀=>"3aP Sw"#(p#瓁Ƭz62 0̀= "3``}0PHxSIENDB`vdkbuilder2-2.4.0/example/hello/wav.wav0000644000000000000000000002453007343757554013462 RIFFP)WAVEfmt ++data(|y}zzx{|~|{}y{|}}z{{yx|z|~yzxxv{|ztt~tvwsz{zsw|x}}~|vzxnuzzvsvzx~~y~xrwtsuusyzy|zxz~xz|}~||}v}yxyvu~{|}|}|uwwsqtwvqo{}~~}~}~~z{ztomsuuqputx{}|~~|~~wtvy~~{y|~~z}z||~{}|}~|zuw~~vux|vosty}{wrw~{suz{yurrz}wsplrx{}xppv}zutwyty}xxy~~{xy~z|{zuqoqtyttnit{}{xy{yyuy}yuqmhmqpofelqvy{{|{}{{{wwxrjllrurtutz~y{}}}|}xxvvyyxyz~zsrtsqoknsw|xwwsnfed```defjnuw|~{vrmmhecbdcddjru{}zttrqttz~|{vpllrtvy}wsnlllosyy}|yqd\[ZVSU[^_ejow}}qgffa[WTTWY_dglry}xvrkhghmruy~|vssssx|{slijlpptxzxwtnfa[YZ\caZ\dpw}{toie`XTMILNTX\cmx~xskfd][]`hkorxxmu}~pzemuqpywks{vqd]bhggkjhrz}wmhhkg\XXTR`e]cjghryxw{~}{ytsphkmfchhdipos||yww{~xslnrv~y{yrpgachnu|}~ykf_SIGECHMNW`epxueVPNHA@AGMNV]cuzulb\XPTb`dorz}nid]chjnry´ykaUOTRR[[]k{wd\UHHHA???BQ_ivy}iWMBC?4437BNU_ovz}ugde\VWWXclmy~xtopuzzxrkflsnornuysmggllkh`aebeedafkmtwqstuyzxwtkgicdg^W[Z\`_]`egmqqz~xusnptsx{w|zuxwvxqrxzlb`[XXROV]gu~{l^WMD?5/029DPYetyj\UK8/("'-2:EO\p~vhYL?:@GMTZev̿|kYPQQQWY^m}|mYHB@>?@AKZhy{k\KD>840.4>HUadqp[KC>60)!!-;GV^dsvnlg]TLGLV`hpvyqkjnry}~zoikomiiikt|{skkpsniebglqsidegjswokmov}{tpopspkc]]^__]WTW]afjikpywojiilnnpt{zurnidbgow{mc]WQJA@GQ^ir{riUFH8-2,'6CFSeo|xg]J6, -4>Rdy¹zf]N:64.2DJRmįqf\OKKF?DO[r¹m[K=9;900327DIM^oz~ync\XDLXW`phpyqpd]dfdp|{ƾnbea[^_XY\ewokfafdXRWV_qrmsvuy|wijnopmaVTU\ab\UTY_hnnmquzwwrmje^ehjuľ~ukaSLPV_gnt}̿oeQ7.()5<9:EShͮviW8",'$.9HcǺ{p`K>0 07J_iʿi^_NCB3,;IQbt|ïzpbQNMN[abio}¾vrvk\RE>EUahqrt~t_ORQLTUPTY`pyi`[RPI7/17BLZfhq}ueXNHHFDHIQ]i|˼vhXJEDMV[cjs~ueWNA45;DM\gjup`SKBB?425:IZhs|xkXIBDFC=7534=AIY_cqp`TOJ>/ +:MSVcr¼nXIC;/'+:JXdrɽzl^RHA;;BDL\aqŸueXQLMQV]cir|yxlaVLLQ\fgegly}mghloole]blt}}zqqz{{wpighhfc\Y\ahmpw{{{ndcU[QWRX_`rsŽ{s_d\Y[V\S\fsͺzjYGF@F@BJIZjʵxn`G>+"?NctƸxbS?0) #'4AX`lûy`\NE;251<=JQSgq­w|ruqkkajnw~{xvqqn{v~{xs{r{y}~xvrmvgk]^aTaUabewswktgVQ;=//63@ARZiw|~kTE3)"#$+8?P_lŰgTC70(.((5;Oaǯol`WR?;5ACRiewtx|sjujg^]VThhz}{z}zmgfZ\QSPPPILHYitzx|uqgc^VY\fkozyxsrjhd`cUUQTUVgnɼzpXD6 %2BEQlɸ{_G.  '/B\zxoa[UQO?9;777ERdwоhT<,!%(.-/2:L\p{½ľ~hf[SMB8)#.>FHGOYgv_PFEA@B;65=OexǷulffkqsvyz|vw{ztl^[dp¹vaRG:*'3AWlԾqX=%  +C_rĽqbULE?9.1035+*07DSdrμm]OE90**,5DP]jxdzyl^QDDFFKQRQ^inu~}vtojdcc^eghifjqvwx|sprrnjga][XYZ[[aglrv||smeb_VPOOT]dhpxȾ|qcVPIBCEIKS]bp}ȿsg^SK?5.+039?KS_oytcQC@=>;453;CP\_ekv{uprvsundciosyz}~vrne__^WX_clyƻ~qf^SF7+)+2??BEHVrƺ}zlZI92-*)#"%*9ITdnu~üxdWQPOPQNMOU]lyxttsty}~umlv~zhabee]LEBBKWbjloptztnaVOG>>?;;@>EOT]ht}yyqh`TGDHKT\binuƻzkeegjkiecgo}~zurrrprtwzyxzyy{~~~zusrrtx{yyrkimu|}mffflronhb]_digfebafginmmrx~}{|{}xroty}{|~|zyxwupnnnt}sc\XUQJCBCKX_ckrxlZQJGA2(% $/ $ gettextize -f . answer yes to the program prompt, if any. gettextize will add to your dir following file: ABOUT-NLS and will create ./po and ./intl subdirs with all necessary files. Once gettextize has finished it will leave you with the following message: "You should update your own `aclocal.m4' by adding the necessary macro packages gettext.m4, lcmessage.m4 and progtest.m4 from the directory `/aclocal'" aclocal.m4 is a file prepared by autogen and that now should be updated with above macro packages. You should know where aclocal packages are, generally they are either on /usr/share/aclocal or /usr/local/share/aclocal. Here we assume that are located into /usr/share/aclocal. So append to your aclocal.m4 macro packages contained into above suggested m4 files. $ cat /usr/share/aclocal/gettext.m4 > aclocal.m4 $ cat /usr/share/aclocal/lcmessage.m4 > aclocal.m4 $ cat /usr/share/aclocal/progtest.m4 > aclocal.m4 now update your project dir with aclocal program $ aclocal 4. EDITING AUTOCONF/AUTOMAKE FILES ---------------------------------- Now is necessary update manually some autoconf/automake generated files into your project dir. 4a) Editing ./configure.in ========================== Edit configure.in inserting these lines below AC_CANONICAL_HOST dnl ------------------------- dnl Gettext stuff ALL_LINGUAS="en " AM_GNU_GETTEXT dnl -------------------------- substitute with your languages prefix, as an example could be: ALL_LINGUAS="en it fr de es" thus meaning that program should be localized in en-english,it-italian, fr-french,de-german and es-spanish now insert these lines below AC_SUBST(CXXFLAGS) dnl ------------------------------------------------------------------------ dnl Set the location of the locale messages to be used in main.cc dnl This will substitute HELLO_LOCALE_DIR in config.h (from acconfig.h). if test "x$prefix" = "xNONE"; then HELLO_LOCALE_DIR=$ac_default_prefix/share/locale else HELLO_LOCALE_DIR=$prefix/share/locale fi AC_DEFINE_UNQUOTED(HELLO_LOCALE_DIR, "$HELLO_LOCALE_DIR") AC_DEFUN(FC_EXPAND_DIR, [ $1=$2 $1=`( test "x$prefix" = xNONE && prefix="$ac_default_prefix" test "x$exec_prefix" = xNONE && exec_prefix="${prefix}" eval echo \""[$]$1"\" )` ]) dnl ---------------------------------------------------------------------- now change line: AC_OUTPUT(Makefile) to read: AC_OUTPUT(Makefile po/Makefile.in intl/Makefile) Now save configure.in 4b) Editing Makefile.am ======================= Edit Makefile.am and change line: SUBDIRS = . to read: SUBDIRS = po intl Again save Makefile.am 4c) Editing acconfig.h ====================== Edit acconfig.h and add these lines: #undef ENABLE_NLS #undef HAVE_CATGETS #undef HAVE_GETTEXT #undef HAVE_LC_MESSAGES #undef HAVE_STPCPY #undef NETBUILDER_LOCALE_DIR Again save acconfig.h 5. CREATING po/POTFILES.in file -------------------------------- POTFILES.in file is used to know which source files should be scanned to search translatable strings. Create and save po/POTFILES.in putting a source file for each line: #============================ hello.cc hello_gui.cc #=========================== this file will be used by autogen to create the correct Makefile into po subdirectory. 6. RUNNING AUTOGEN AND MAKE --------------------------- Using Autoconf/Automake menu run: Make distclean to remove old files Autogen (recall DO NOT REGENERATE) Make You should receive following messages: Makefile.am:20: it in `ALL_LINGUAS' but po/it.po does not exist Makefile.am:20: en in `ALL_LINGUAS' but po/en.po does not exist make[2]: *** No rule to make target `en.po', needed by `en.gmo'. Stop. that are normal since constructing above files will be the next step. If you look into po subdir you will see file "hello.pot" that is the template file obtained from source scanning. 7. TRANSLATING INTO LOCALE LANGUAGES ------------------------------------ Copy hello.pot into en.po and whichever other prefix you defined into ALL_LINGUAS macro into configure.in. So with the xterm : $ cd po $ cp hello.pot en.po $ cp hello.pot .po Normally en.po do not need to be translated since all strings should be as in sources. What you translate are it.po and companions. Each po file appear in this format: #: hello_gui.cc:36 msgid "hello Main Form" msgstr "" where the first line shows which source line were scanned "msgid" shows original string and "msgstr" what you have to translate. Edit to read: #: hello_gui.cc:36 msgid "hello Main Form" msgstr "" and so on for all msgid/msgstr pairs into the file. NOTE: emacs editor recognizes po files and provides an easy way to edit this file with many nice features. If you use emacs just add to your .emacs file these lines: (setq auto-mode-alist ( cons '("\\.pox?\\'" . po-mode) auto-mode-alist)) (autoload 'po-mode "po-mode") 8. PREPARING YOUR SOURCE CODE TO NLS ------------------------------------ VDKBuilder support nls on the gui files side only, other sources are under your responsibility so you have to prepare them to support nls. 8a) Editing hello.cc ==================== At file header insert: //------------------------------- /* hello Plain VDK Application Main unit implementation file:hello.cc */ #if HAVE_CONFIG_H #include #endif #if !HAVE_GNOME #if ENABLE_NLS #include #define _(str) gettext(str) #define N_(str) str #else #define _(str) str #define N_(str) str #endif #endif //-------------------------------- #include (you will notice that same header is shown also in hello_gui.cc) now edit main() to read: /* main program */ int main (int argc, char *argv[]) { #if ENABLE_NLS bindtextdomain(PACKAGE,HELLO_LOCALE_DIR); textdomain(PACKAGE); #endif // makes application HelloApp app(&argc, argv); // runs application app.Run(); return 0; } 8b) Changing project options ============================= Use "project -> options" menu and edit the "defines field" to read: -DHAVE_CONFIG_H=1 -DHAVE_GNOME=1 9. BUILDING NSL AWARE APPLICATION --------------------------------- The first build should be made using an xterm and Makefile generated by automake: $ make this will make hello program and prepare translated files # make install this will install translated files to appropriate usr/share/locale directory so it can be correctly bound by bindtextdomain(). $ hello you should see that hello now shows button captions translated into your language. 10. ADDING MORE TRANSLATABLE STRINGS ------------------------------------ If you click on hello button you will see still "hello world" in english not in your language as you expect. This is because "hello world" was not marked for translation yet. As a general rule each string with _("a string") notation is marked for translation and will be parsed to be added to po files. Most likely you have established a signal response function on hello button clicked: //signal response method bool HelloForm::OnhelloButtonClick(VDKObject* sender) { label0->Caption = "Hello world"; return true; } Now change to read: label0->Caption = _("Hello world"); Adding a translatable string need to update po files and make-install again: $ cd po $ make update-po Edit .po and translate "hello world" # make install Now $ hello should show "Hello world" translated if you click on hello button. 11. FINAL NOTES --------------- a. As long as you do not add any translatable string, directly into source code or indirectly adding widgets with captions to gui, you can continue to use builder normal making-project facilities. But if you want see your newly added translatable strings you have to repeat the steps: $ cd po $ make update-po translate # make install b. A good further reading is GNU gettext manual that you can find at http://www.gnu.org vdkbuilder2-2.4.0/doc/0000777000000000000000000000000010052402422010201 5vdkbuilder2-2.4.0/doc/Makefile.in0000644000000000000000000002332110052401332012162 # Makefile.in generated by automake 1.7.8 from Makefile.am. # @configure_input@ # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GENCAT = @GENCAT@ GLIBC21 = @GLIBC21@ GMSGFMT = @GMSGFMT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLBISON = @INTLBISON@ INTLLIBS = @INTLLIBS@ INTLOBJS = @INTLOBJS@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PLUGINS_LIBDIR = @PLUGINS_LIBDIR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_NLS = @USE_NLS@ VDK_CFLAGS = @VDK_CFLAGS@ VDK_CONFIG = @VDK_CONFIG@ VDK_LIBS = @VDK_LIBS@ VDK_VERSION_MAJOR = @VDK_VERSION_MAJOR@ VDK_VERSION_MICRO = @VDK_VERSION_MICRO@ VDK_VERSION_MINOR = @VDK_VERSION_MINOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ vdkxdbpath = @vdkxdbpath@ EXTRA_DIST = \ vdkb2.1 man_MANS = vdkb2.1 subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = DIST_SOURCES = NROFF = nroff MANS = $(man_MANS) DIST_COMMON = $(srcdir)/Makefile.in Makefile.am all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: man1dir = $(mandir)/man1 install-man1: $(man1_MANS) $(man_MANS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(man1dir) @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ 1*) ;; \ *) ext='1' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ done uninstall-man1: @$(NORMAL_UNINSTALL) @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ 1*) ;; \ *) ext='1' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ rm -f $(DESTDIR)$(man1dir)/$$inst; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: $(mkinstalldirs) $(DESTDIR)$(man1dir) install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: info: info-am info-am: install-data-am: install-man install-exec-am: install-info: install-info-am install-man: install-man1 installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am uninstall-man uninstall-man: uninstall-man1 .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am install-info \ install-info-am install-man install-man1 install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-info-am uninstall-man uninstall-man1 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vdkbuilder2-2.4.0/doc/Makefile.am0000644000000000000000000000005407451373465012177 EXTRA_DIST = \ vdkb2.1 man_MANS = vdkb2.1 vdkbuilder2-2.4.0/doc/vdkb2.10000644000000000000000000000207107477074241011234 .TH VDK BUILDER 1 Version 2.0.3 .SH NAME vdkb2 - A C++ RAD Tool .SH SYNOPSIS .B vdkb2 [filename.prj] .SH DESCRIPTION .PP \fIvdkb2\fP is a RAD (Rapid Application Development) environment. It is developed with \fIVDK\fP and generates source code for it. .PP On the first run VDKBuilder will prepare a ~/.vdkb2 directory where some resource files will be copied. Those are local copies at user hand. For instance editing ~/.vdkb2/res/vdkbrc you can customize colors and fonts. .PP To set the language, use the LANG and friends variables. For the moment, \fIvdkb\fP supports only English (default), Italian and German. .PP .SH AUTHOR Mario Motta .SH VERSION 2.0.3 .SH LICENSE GPL (General Public License) .SH COPYRIGHT Copyright \(co 1999-2002 VDK Team Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation.